]> source.dussan.org Git - archiva.git/blob
37374298e3d1d43c8047ec97d5bf8d79e56bd181
[archiva.git] /
1 package org.apache.archiva.repository.content.base;
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.archiva.repository.content.ItemSelector;
23 import org.apache.commons.lang3.StringUtils;
24
25 import java.util.Collections;
26 import java.util.HashMap;
27 import java.util.Map;
28
29 /**
30  * Item selector for querying artifacts and other content items.
31  */
32 public class ArchivaItemSelector implements ItemSelector
33 {
34
35     private String projectId = null;
36     private String version = null;
37     private String artifactVersion = null;
38     private String artifactId = null;
39     private String namespace = "";
40     private String type = null;
41     private String classifier = null;
42     private String extension = null;
43     private Map<String, String> attributes;
44     private boolean searchRelatedArtifacts = false;
45     private boolean searchSubNamespaces = false;
46
47
48     private ArchivaItemSelector( )
49     {
50
51     }
52
53     public static Builder builder( )
54     {
55         return new Builder( );
56     }
57
58     public static class Builder
59     {
60         private final ArchivaItemSelector selector = new ArchivaItemSelector( );
61
62         public Builder withNamespace( String namespace )
63         {
64             selector.namespace = namespace;
65             return this;
66         }
67
68
69         public Builder withProjectId( String projectId )
70         {
71             selector.projectId = projectId;
72             return this;
73         }
74
75
76         public Builder withVersion( String version )
77         {
78             selector.version = version;
79             return this;
80         }
81
82
83         public Builder withArtifactVersion( String artifactVersion )
84         {
85             selector.artifactVersion = artifactVersion;
86             return this;
87         }
88
89
90         public Builder withArtifactId( String artifactId )
91         {
92             selector.artifactId = artifactId;
93             return this;
94         }
95
96
97         public Builder withType( String type )
98         {
99             selector.type = type;
100             return this;
101         }
102
103
104         public Builder withClassifier( String classifier )
105         {
106             selector.classifier = classifier;
107             return this;
108         }
109
110
111         public Builder withAttribute( String key, String value )
112         {
113             selector.setAttribute( key, value );
114             return this;
115         }
116
117         public Builder withExtension( String extension )
118         {
119             selector.extension = extension;
120             return this;
121         }
122
123         public Builder enableSearchRelatedArtifacts() {
124             selector.searchRelatedArtifacts = true;
125             return this;
126         }
127
128         public Builder enableSearchSubNamespaces() {
129             selector.searchSubNamespaces = true;
130             return this;
131         }
132
133         public ArchivaItemSelector build( )
134         {
135             return selector;
136         }
137     }
138
139     private void setAttribute( String key, String value )
140     {
141         if ( this.attributes == null )
142         {
143             this.attributes = new HashMap<>( );
144         }
145         this.attributes.put( key, value );
146     }
147
148     @Override
149     public String getProjectId( )
150     {
151         return projectId;
152     }
153
154     @Override
155     public String getNamespace( )
156     {
157         return namespace;
158     }
159
160     @Override
161     public String getVersion( )
162     {
163         return version;
164     }
165
166     @Override
167     public String getArtifactVersion( )
168     {
169         return artifactVersion;
170     }
171
172     @Override
173     public String getArtifactId( )
174     {
175         return artifactId;
176     }
177
178     @Override
179     public String getType( )
180     {
181         return type;
182     }
183
184     @Override
185     public String getClassifier( )
186     {
187         return classifier;
188     }
189
190     @Override
191     public String getAttribute( String key )
192     {
193         if ( this.attributes == null || !this.attributes.containsKey( key ) )
194         {
195
196             return "";
197         }
198         else
199         {
200             return this.attributes.get( key );
201         }
202     }
203
204     @Override
205     public String getExtension(  )
206     {
207         return extension;
208     }
209
210     @Override
211     public Map<String, String> getAttributes( )
212     {
213         if ( this.attributes == null )
214         {
215             return Collections.emptyMap( );
216         }
217         else
218         {
219             return Collections.unmodifiableMap( this.attributes );
220         }
221     }
222
223     @Override
224     public boolean searchSubNamespaces( )
225     {
226         return searchSubNamespaces;
227     }
228
229     @Override
230     public boolean findRelatedArtifacts( )
231     {
232         return searchRelatedArtifacts;
233     }
234
235     @Override
236     public boolean hasAttributes( )
237     {
238         return attributes != null && attributes.size( ) > 0;
239     }
240
241     @Override
242     public boolean hasExtension( )
243     {
244         return StringUtils.isNotEmpty( extension );
245     }
246 }