]> source.dussan.org Git - archiva.git/blob
920b68dc4e11293b38652c43a0b0c0b311413bb8
[archiva.git] /
1 package org.apache.maven.archiva.repository;
2
3 /*
4  * Licensed to the Apache Software Foundation (ASF) under one
5  * or more contributor license agreements.  See the NOTICE file
6  * distributed with this work for additional information
7  * regarding copyright ownership.  The ASF licenses this file
8  * to you under the Apache License, Version 2.0 (the
9  * "License"); you may not use this file except in compliance
10  * with the License.  You may obtain a copy of the License at
11  *
12  *  http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing,
15  * software distributed under the License is distributed on an
16  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17  * KIND, either express or implied.  See the License for the
18  * specific language governing permissions and limitations
19  * under the License.
20  */
21
22 import org.apache.maven.artifact.Artifact;
23 import org.apache.maven.artifact.metadata.ArtifactMetadata;
24 import org.apache.maven.artifact.repository.ArtifactRepository;
25 import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy;
26 import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
27
28 /**
29  * Repository 
30  *
31  * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
32  * @version $Id$
33  */
34 public class Repository
35     implements ArtifactRepository
36 {
37     protected String id;
38
39     protected String name;
40
41     protected String source;
42
43     protected RepositoryURL url;
44
45     protected ArtifactRepositoryLayout layout;
46
47     protected ArtifactRepositoryPolicy releases;
48
49     protected ArtifactRepositoryPolicy snapshots;
50
51     protected boolean blacklisted;
52
53     /* .\ Constructor \.__________________________________________________ */
54
55     /**
56      * Construct a Repository.
57      * 
58      * @param id the unique identifier for this repository.
59      * @param name the name for this repository.
60      * @param url the base URL for this repository (this should point to the top level URL for the entire repository)
61      * @param layout the layout technique for this repository.
62      */
63     public Repository( String id, String name, String url, ArtifactRepositoryLayout layout )
64     {
65         this.id = id;
66         this.name = name;
67         this.url = new RepositoryURL( url );
68         this.layout = layout;
69     }
70
71     /* .\ Information \.__________________________________________________ */
72
73     /**
74      * Get the unique ID for this repository.
75      * 
76      * @return the unique ID for this repository.
77      */
78     public String getId()
79     {
80         return id;
81     }
82
83     /**
84      * Get the Name of this repository.
85      * This is usually the human readable name for the repository.
86      * 
87      * @return the name of this repository.
88      */
89     public String getName()
90     {
91         return name;
92     }
93
94     public String getUrl()
95     {
96         return url.toString();
97     }
98
99     public void setLayout( ArtifactRepositoryLayout layout )
100     {
101         this.layout = layout;
102     }
103
104     public ArtifactRepositoryLayout getLayout()
105     {
106         return layout;
107     }
108
109     public void setSource( String source )
110     {
111         this.source = source;
112     }
113
114     public String getSource()
115     {
116         return source;
117     }
118
119     /* .\ Tasks \.________________________________________________________ */
120
121     public String pathOf( Artifact artifact )
122     {
123         return getLayout().pathOf( artifact );
124     }
125
126     /* .\ State \.________________________________________________________ */
127
128     public void setBlacklisted( boolean blacklisted )
129     {
130         this.blacklisted = blacklisted;
131     }
132
133     public boolean isBlacklisted()
134     {
135         return blacklisted;
136     }
137
138     public boolean isManaged()
139     {
140         return this.url.getProtocol().equals( "file" );
141     }
142
143     public boolean isRemote()
144     {
145         return !this.url.getProtocol().equals( "file" );
146     }
147
148     public void setSnapshots( ArtifactRepositoryPolicy snapshots )
149     {
150         this.snapshots = snapshots;
151     }
152
153     public ArtifactRepositoryPolicy getSnapshots()
154     {
155         return snapshots;
156     }
157
158     public void setReleases( ArtifactRepositoryPolicy releases )
159     {
160         this.releases = releases;
161     }
162
163     public ArtifactRepositoryPolicy getReleases()
164     {
165         return releases;
166     }
167
168     public boolean equals( Object other )
169     {
170         return ( other == this || ( ( other instanceof Repository ) && ( (Repository) other ).getId().equals( getId() ) ) );
171     }
172
173     public int hashCode()
174     {
175         return getId().hashCode();
176     }
177
178     /* .\ ArtifactRepository Requirements \.______________________________ */
179
180     public String getBasedir()
181     {
182         return url.getPath();
183     }
184
185     public String getKey()
186     {
187         return getId();
188     }
189
190     public String getProtocol()
191     {
192         return url.getProtocol();
193     }
194
195     public boolean isUniqueVersion()
196     {
197         // TODO: Determine Importance
198         return false;
199     }
200
201     public String pathOfRemoteRepositoryMetadata( ArtifactMetadata artifactMetadata )
202     {
203         return layout.pathOfRemoteRepositoryMetadata( artifactMetadata );
204     }
205
206     public String pathOfLocalRepositoryMetadata( ArtifactMetadata metadata, ArtifactRepository repository )
207     {
208         return layout.pathOfLocalRepositoryMetadata( metadata, repository );
209     }
210
211 }