]> source.dussan.org Git - archiva.git/blob
b92debbe4a3df27cc3789507011e47d64862ce38
[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 File toFile( File basedir, String namespace, String projectId, String projectVersion )
42     {
43         return new File( basedir, toPath( namespace, projectId, projectVersion ) );
44     }
45
46     public String toPath( String namespace, String projectId, String projectVersion, String filename )
47     {
48         StringBuilder path = new StringBuilder();
49
50         appendNamespaceToProjectVersion( path, namespace, projectId, projectVersion );
51         path.append( PATH_SEPARATOR );
52         path.append( filename );
53
54         return path.toString();
55     }
56
57     private void appendNamespaceToProjectVersion( StringBuilder path, String namespace, String projectId,
58                                                   String projectVersion )
59     {
60         appendNamespaceAndProject( path, namespace, projectId );
61         path.append( projectVersion );
62     }
63
64     public String toPath( String namespace, String projectId, String projectVersion )
65     {
66         StringBuilder path = new StringBuilder();
67
68         appendNamespaceToProjectVersion( path, namespace, projectId, projectVersion );
69
70         return path.toString();
71     }
72
73     public String toPath( String namespace )
74     {
75         StringBuilder path = new StringBuilder();
76
77         appendNamespace( path, namespace );
78
79         return path.toString();
80     }
81
82     public String toPath( String namespace, String projectId )
83     {
84         StringBuilder path = new StringBuilder();
85
86         appendNamespaceAndProject( path, namespace, projectId );
87
88         return path.toString();
89     }
90
91     private void appendNamespaceAndProject( StringBuilder path, String namespace, String projectId )
92     {
93         appendNamespace( path, namespace );
94         path.append( projectId ).append( PATH_SEPARATOR );
95     }
96
97     private void appendNamespace( StringBuilder path, String namespace )
98     {
99         path.append( formatAsDirectory( namespace ) ).append( PATH_SEPARATOR );
100     }
101
102     public File toFile( File basedir, String namespace, String projectId )
103     {
104         return new File( basedir, toPath( namespace, projectId ) );
105     }
106
107     public File toFile( File basedir, String namespace )
108     {
109         return new File( basedir, toPath( namespace ) );
110     }
111
112     private String formatAsDirectory( String directory )
113     {
114         return directory.replace( GROUP_SEPARATOR, PATH_SEPARATOR );
115     }
116 }