]> source.dussan.org Git - archiva.git/blob
d550f27c97720f1a962bd21f44f7f0c07d65aaec
[archiva.git] /
1 package org.apache.archiva.rest.api.model.v2;/*
2  * Licensed to the Apache Software Foundation (ASF) under one
3  * or more contributor license agreements.  See the NOTICE file
4  * distributed with this work for additional information
5  * regarding copyright ownership.  The ASF licenses this file
6  * to you under the Apache License, Version 2.0 (the
7  * "License"); you may not use this file except in compliance
8  * with the License.  You may obtain a copy of the License at
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  * Unless required by applicable law or agreed to in writing,
12  * software distributed under the License is distributed on an
13  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14  * KIND, either express or implied.  See the License for the
15  * specific language governing permissions and limitations
16  * under the License.
17  */
18
19 import io.swagger.v3.oas.annotations.media.Schema;
20
21 import javax.xml.bind.annotation.XmlRootElement;
22 import java.io.Serializable;
23 import java.util.ArrayList;
24 import java.util.List;
25 import java.util.Objects;
26
27 /**
28  * @author Martin Stockhammer <martin_s@apache.org>
29  */
30 @XmlRootElement(name="repositoryGroup")
31 @Schema(name="RepositoryGroup", description = "Information about a repository group, which combines multiple repositories as one virtual repository.")
32 public class RepositoryGroup implements Serializable
33 {
34     private static final long serialVersionUID = -7319687481737616081L;
35     private String id;
36     private final List<String> repositories = new ArrayList<>(  );
37     private String location;
38     MergeConfiguration mergeConfiguration;
39
40     public RepositoryGroup( )
41     {
42     }
43
44     public RepositoryGroup(String id) {
45         this.id = id;
46     }
47
48     public static RepositoryGroup of( org.apache.archiva.admin.model.beans.RepositoryGroup modelObj ) {
49         RepositoryGroup result = new RepositoryGroup( );
50         MergeConfiguration mergeConfig = new MergeConfiguration( );
51         result.setMergeConfiguration( mergeConfig );
52         result.setId( modelObj.getId() );
53         result.setLocation( modelObj.getLocation() );
54         result.setRepositories( modelObj.getRepositories() );
55         mergeConfig.setMergedIndexPath( modelObj.getMergedIndexPath() );
56         mergeConfig.setMergedIndexTtlMinutes( modelObj.getMergedIndexTtl( ) );
57         mergeConfig.setIndexMergeSchedule( modelObj.getCronExpression( ) );
58         return result;
59     }
60
61     @Schema(description = "The unique id of the repository group.")
62     public String getId( )
63     {
64         return id;
65     }
66
67     public void setId( String id )
68     {
69         this.id = id;
70     }
71
72     @Schema(description = "The list of ids of repositories which are member of the repository group.")
73     public List<String> getRepositories( )
74     {
75         return repositories;
76     }
77
78     public void setRepositories( List<String> repositories )
79     {
80         this.repositories.clear();
81         this.repositories.addAll( repositories );
82     }
83
84     public void addRepository(String repositoryId) {
85         if (!this.repositories.contains( repositoryId )) {
86             this.repositories.add( repositoryId );
87         }
88     }
89
90     @Schema(name="merge_configuration",description = "The configuration for index merge.")
91     public MergeConfiguration getMergeConfiguration( )
92     {
93         return mergeConfiguration;
94     }
95
96     public void setMergeConfiguration( MergeConfiguration mergeConfiguration )
97     {
98         this.mergeConfiguration = mergeConfiguration;
99     }
100
101     @Schema(description = "The storage location of the repository. The merged index is stored relative to this location.")
102     public String getLocation( )
103     {
104         return location;
105     }
106
107     public void setLocation( String location )
108     {
109         this.location = location;
110     }
111
112     @Override
113     public boolean equals( Object o )
114     {
115         if ( this == o ) return true;
116         if ( o == null || getClass( ) != o.getClass( ) ) return false;
117
118         RepositoryGroup that = (RepositoryGroup) o;
119
120         if ( !Objects.equals( id, that.id ) ) return false;
121         if ( !repositories.equals( that.repositories ) )
122             return false;
123         if ( !Objects.equals( location, that.location ) ) return false;
124         return Objects.equals( mergeConfiguration, that.mergeConfiguration );
125     }
126
127     @Override
128     public int hashCode( )
129     {
130         int result = id != null ? id.hashCode( ) : 0;
131         result = 31 * result + repositories.hashCode( );
132         result = 31 * result + ( location != null ? location.hashCode( ) : 0 );
133         result = 31 * result + ( mergeConfiguration != null ? mergeConfiguration.hashCode( ) : 0 );
134         return result;
135     }
136
137     @SuppressWarnings( "StringBufferReplaceableByString" )
138     @Override
139     public String toString( )
140     {
141         final StringBuilder sb = new StringBuilder( "RepositoryGroup{" );
142         sb.append( "id='" ).append( id ).append( '\'' );
143         sb.append( ", repositories=" ).append( repositories );
144         sb.append( ", location='" ).append( location ).append( '\'' );
145         sb.append( ", mergeConfiguration=" ).append( mergeConfiguration );
146         sb.append( '}' );
147         return sb.toString( );
148     }
149 }