]> source.dussan.org Git - archiva.git/blob
25fa66c2a7ed9d92b5dd0abdae17b3efaf753955
[archiva.git] /
1 package org.apache.maven.archiva.web.action.admin.repositories;
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.commons.lang.StringUtils;
23 import org.apache.maven.archiva.configuration.Configuration;
24 import org.apache.maven.archiva.configuration.RepositoryGroupConfiguration;
25 import org.springframework.context.annotation.Scope;
26 import org.springframework.stereotype.Controller;
27
28 import java.util.List;
29
30 /**
31  * SortRepositoriesAction
32  *
33  * @version plexus.component role="com.opensymphony.xwork2.Action" role-hint="sortRepositoriesAction" instantiation-strategy="per-lookup"
34  */
35 @Controller( "sortRepositoriesAction" )
36 @Scope( "prototype" )
37 public class SortRepositoriesAction
38     extends AbstractRepositoriesAdminAction
39 {
40     private String repoGroupId;
41
42     private String targetRepo;
43
44     public String sortDown()
45     {
46         Configuration config = archivaConfiguration.getConfiguration();
47
48         List<String> repositories = getRepositoriesFromGroup();
49
50         int idx = findTargetRepository( repositories, targetRepo );
51
52         if ( idx >= 0 && validIndex( repositories, idx + 1 ) )
53         {
54             repositories.remove( idx );
55             repositories.add( idx + 1, targetRepo );
56         }
57
58         return saveConfiguration( config );
59     }
60
61     public String sortUp()
62     {
63         Configuration config = archivaConfiguration.getConfiguration();
64
65         List<String> repositories = getRepositoriesFromGroup();
66
67         int idx = findTargetRepository( repositories, targetRepo );
68
69         if ( idx >= 0 && validIndex( repositories, idx - 1 ) )
70         {
71             repositories.remove( idx );
72             repositories.add( idx - 1, targetRepo );
73         }
74
75         return saveConfiguration( config );
76     }
77
78     public String getRepoGroupId()
79     {
80         return repoGroupId;
81     }
82
83     public void setRepoGroupId( String repoGroupId )
84     {
85         this.repoGroupId = repoGroupId;
86     }
87
88     public String getTargetRepo()
89     {
90         return targetRepo;
91     }
92
93     public void setTargetRepo( String targetRepo )
94     {
95         this.targetRepo = targetRepo;
96     }
97
98     private int findTargetRepository( List<String> repositories, String targetRepository )
99     {
100         int idx = ( -1 );
101
102         for ( int i = 0; i < repositories.size(); i++ )
103         {
104             if ( StringUtils.equals( targetRepository, repositories.get( i ) ) )
105             {
106                 idx = i;
107                 break;
108             }
109         }
110         return idx;
111     }
112
113     private List<String> getRepositoriesFromGroup()
114     {
115         Configuration config = archivaConfiguration.getConfiguration();
116         RepositoryGroupConfiguration repoGroup = config.findRepositoryGroupById( repoGroupId );
117         return repoGroup.getRepositories();
118     }
119
120     private boolean validIndex( List<String> repositories, int idx )
121     {
122         return ( idx >= 0 ) && ( idx < repositories.size() );
123     }
124 }