]> source.dussan.org Git - archiva.git/blob
7e39a3d80db39d55460a665b07b09e991e5fb4a2
[archiva.git] /
1 package org.apache.archiva.admin.model.beans;
2 /*
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  */
20
21 import javax.xml.bind.annotation.XmlRootElement;
22 import java.io.Serializable;
23 import java.util.ArrayList;
24 import java.util.List;
25
26 import static org.apache.archiva.indexer.ArchivaIndexManager.DEFAULT_INDEX_PATH;
27
28 /**
29  * @author Olivier Lamy
30  * @since 1.4-M1
31  */
32 @XmlRootElement(name = "repositoryGroup")
33 public class RepositoryGroup
34     implements Serializable
35 {
36     /**
37      * repository group Id
38      */
39     private String id;
40
41     /**
42      * repositories ids
43      */
44     private List<String> repositories;
45
46     /**
47      * The path of the merged index.
48      */
49     private String mergedIndexPath = DEFAULT_INDEX_PATH;
50
51     /**
52      * The TTL (time to live) of the repo group's merged index.
53      */
54     private int mergedIndexTtl = -1;
55
56     /**
57      * default model value is empty so none
58      * @since 2.0.0
59      */
60     private String cronExpression;
61
62     private String location;
63
64     public RepositoryGroup()
65     {
66         // no op
67     }
68
69     public RepositoryGroup( String id, List<String> repositories )
70     {
71         this.id = id;
72         this.repositories = repositories;
73     }
74
75     /**
76      * Method addRepository.
77      *
78      * @param string
79      */
80     public void addRepository( String string )
81     {
82         getRepositories().add( string );
83     }
84
85     /**
86      * Get the id of the repository group.
87      *
88      * @return String
89      */
90     public String getId()
91     {
92         return this.id;
93     }
94
95     /**
96      * Method getRepositories.
97      *
98      * @return List
99      */
100     public List<String> getRepositories()
101     {
102         if ( this.repositories == null )
103         {
104             this.repositories = new ArrayList<>( 0 );
105         }
106
107         return this.repositories;
108     }
109
110     /**
111      * Method removeRepository.
112      *
113      * @param string
114      */
115     public void removeRepository( String string )
116     {
117         getRepositories().remove( string );
118     }
119
120     /**
121      * Set the id of the repository group.
122      *
123      * @param id
124      */
125     public void setId( String id )
126     {
127         this.id = id;
128     }
129
130     /**
131      * Set the list of repository ids under the group.
132      *
133      * @param repositories
134      */
135     public void setRepositories( List<String> repositories )
136     {
137         this.repositories = repositories;
138     }
139
140     public String getMergedIndexPath()
141     {
142         return mergedIndexPath;
143     }
144
145     public void setMergedIndexPath( String mergedIndexPath )
146     {
147         this.mergedIndexPath = mergedIndexPath;
148     }
149
150     public int getMergedIndexTtl() {
151         return mergedIndexTtl;
152     }
153
154     /**
155      * Set the TTL of the repo group's merged index.
156      *
157      * @param mergedIndexTtl
158      */
159     public void setMergedIndexTtl(int mergedIndexTtl) {
160         this.mergedIndexTtl = mergedIndexTtl;
161     }
162
163     public RepositoryGroup mergedIndexPath( String mergedIndexPath ) {
164         this.mergedIndexPath = mergedIndexPath;
165         return this;
166     }
167
168     public RepositoryGroup mergedIndexTtl( int mergedIndexTtl ) {
169         this.mergedIndexTtl = mergedIndexTtl;
170         return this;
171     }
172
173     public String getCronExpression()
174     {
175         return cronExpression;
176     }
177
178     public void setCronExpression( String cronExpression )
179     {
180         this.cronExpression = cronExpression;
181     }
182
183     public RepositoryGroup cronExpression( String mergedIndexCronExpression )
184     {
185         this.cronExpression = mergedIndexCronExpression;
186         return this;
187     }
188
189     public String getLocation( )
190     {
191         return location;
192     }
193
194     public void setLocation( String location )
195     {
196         this.location = location;
197     }
198
199     @Override
200     public boolean equals( Object other )
201     {
202         if ( this == other )
203         {
204             return true;
205         }
206
207         if ( !( other instanceof RepositoryGroup ) )
208         {
209             return false;
210         }
211
212         RepositoryGroup that = (RepositoryGroup) other;
213         boolean result = true;
214         result = result && ( getId() == null ? that.getId() == null : getId().equals( that.getId() ) );
215         return result;
216     }
217
218     @Override
219     public int hashCode()
220     {
221         int result = 17;
222         result = 37 * result + ( id != null ? id.hashCode() : 0 );
223         return result;
224     }
225
226     @Override
227     public String toString()
228     {
229         final StringBuilder sb = new StringBuilder( "RepositoryGroup{" );
230         sb.append( "id='" ).append( id ).append( '\'' );
231         sb.append( ", repositories=" ).append( repositories );
232         sb.append( ", mergedIndexPath='" ).append( mergedIndexPath ).append( '\'' );
233         sb.append( ", mergedIndexTtl=" ).append( mergedIndexTtl );
234         sb.append( ", cronExpression='" ).append( cronExpression ).append( '\'' );
235         sb.append( '}' );
236         return sb.toString();
237     }
238 }