]> source.dussan.org Git - archiva.git/blob
8d352cab9ecae28e1545206b6b40f6e431b50f6b
[archiva.git] /
1 package org.apache.archiva.metadata.repository.storage.maven2;
2
3 import java.io.File;
4
5 import org.apache.archiva.metadata.repository.storage.RepositoryPathTranslator;
6
7 /*
8  * Licensed to the Apache Software Foundation (ASF) under one
9  * or more contributor license agreements.  See the NOTICE file
10  * distributed with this work for additional information
11  * regarding copyright ownership.  The ASF licenses this file
12  * to you under the Apache License, Version 2.0 (the
13  * "License"); you may not use this file except in compliance
14  * with the License.  You may obtain a copy of the License at
15  *
16  *   http://www.apache.org/licenses/LICENSE-2.0
17  *
18  * Unless required by applicable law or agreed to in writing,
19  * software distributed under the License is distributed on an
20  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
21  * KIND, either express or implied.  See the License for the
22  * specific language governing permissions and limitations
23  * under the License.
24  */
25
26 /**
27  * @plexus.component role="org.apache.archiva.metadata.repository.storage.RepositoryPathTranslator" role-hint="maven2"
28  */
29 public class Maven2RepositoryPathTranslator
30     implements RepositoryPathTranslator
31 {
32     private static final char PATH_SEPARATOR = '/';
33
34     private static final char GROUP_SEPARATOR = '.';
35
36     public File toFile( File basedir, String namespace, String projectId, String projectVersion, String filename )
37     {
38         return new File( basedir, toPath( namespace, projectId, projectVersion, filename ) );
39     }
40
41     public String toPath( String namespace, String projectId, String projectVersion, String filename )
42     {
43         StringBuilder path = new StringBuilder();
44
45         appendNamespaceAndProject( path, namespace, projectId );
46         path.append( projectVersion ).append( PATH_SEPARATOR );
47         path.append( filename );
48
49         return path.toString();
50     }
51
52     public String toPath( String namespace )
53     {
54         StringBuilder path = new StringBuilder();
55
56         appendNamespace( path, namespace );
57
58         return path.toString();
59     }
60
61     public String toPath( String namespace, String projectId )
62     {
63         StringBuilder path = new StringBuilder();
64
65         appendNamespaceAndProject( path, namespace, projectId );
66
67         return path.toString();
68     }
69
70     private void appendNamespaceAndProject( StringBuilder path, String namespace, String projectId )
71     {
72         appendNamespace( path, namespace );
73         path.append( projectId ).append( PATH_SEPARATOR );
74     }
75
76     private void appendNamespace( StringBuilder path, String namespace )
77     {
78         path.append( formatAsDirectory( namespace ) ).append( PATH_SEPARATOR );
79     }
80
81     public File toFile( File basedir, String namespace, String projectId )
82     {
83         return new File( basedir, toPath( namespace, projectId ) );
84     }
85
86     public File toFile( File basedir, String namespace )
87     {
88         return new File( basedir, toPath( namespace ) );
89     }
90
91     private String formatAsDirectory( String directory )
92     {
93         return directory.replace( GROUP_SEPARATOR, PATH_SEPARATOR );
94     }
95 }