]> source.dussan.org Git - archiva.git/blob
087814b838761ffe9c8395f8364bbdc290925eca
[archiva.git] /
1 package org.apache.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.archiva.configuration.ArchivaConfiguration;
24 import org.apache.archiva.configuration.Configuration;
25 import org.apache.archiva.configuration.IndeterminateConfigurationException;
26 import org.apache.archiva.configuration.RepositoryGroupConfiguration;
27 import org.springframework.context.annotation.Scope;
28 import org.springframework.stereotype.Controller;
29
30 import javax.inject.Inject;
31 import java.util.List;
32
33 /**
34  * SortRepositoriesAction
35  * FIXME remove access to archivaconfiguration
36  */
37 @Controller( "sortRepositoriesAction" )
38 @Scope( "prototype" )
39 public class SortRepositoriesAction
40     extends AbstractRepositoriesAdminAction
41 {
42
43     private String repoGroupId;
44
45     private String targetRepo;
46
47     @Inject
48     protected ArchivaConfiguration archivaConfiguration;
49
50     public String sortDown()
51     {
52         Configuration config = archivaConfiguration.getConfiguration();
53
54         List<String> repositories = getRepositoriesFromGroup();
55
56         int idx = findTargetRepository( repositories, targetRepo );
57
58         if ( idx >= 0 && validIndex( repositories, idx + 1 ) )
59         {
60             repositories.remove( idx );
61             repositories.add( idx + 1, targetRepo );
62         }
63
64         return saveConfiguration( config );
65     }
66
67     public String sortUp()
68     {
69         Configuration config = archivaConfiguration.getConfiguration();
70
71         List<String> repositories = getRepositoriesFromGroup();
72
73         int idx = findTargetRepository( repositories, targetRepo );
74
75         if ( idx >= 0 && validIndex( repositories, idx - 1 ) )
76         {
77             repositories.remove( idx );
78             repositories.add( idx - 1, targetRepo );
79         }
80
81         return saveConfiguration( config );
82     }
83
84 /**
85      * Save the configuration.
86      *
87      * @param configuration the configuration to save.
88      * @return the webwork result code to issue.
89      * @throws java.io.IOException                   thrown if unable to save file to disk.
90      * @throws org.apache.archiva.configuration.InvalidConfigurationException thrown if configuration is invalid.
91      * @throws org.apache.archiva.redback.components.registry.RegistryException             thrown if configuration subsystem has a problem saving the configuration to disk.
92      */
93     protected String saveConfiguration( Configuration configuration )
94     {
95         try
96         {
97             archivaConfiguration.save( configuration );
98             addActionMessage( "Successfully saved configuration" );
99         }
100         catch ( IndeterminateConfigurationException e )
101         {
102             addActionError( e.getMessage() );
103             return INPUT;
104         }
105         catch ( org.apache.archiva.redback.components.registry.RegistryException e )
106         {
107             addActionError( "Configuration Registry Exception: " + e.getMessage() );
108             return INPUT;
109         }
110
111         return SUCCESS;
112     }
113
114     public String getRepoGroupId()
115     {
116         return repoGroupId;
117     }
118
119     public void setRepoGroupId( String repoGroupId )
120     {
121         this.repoGroupId = repoGroupId;
122     }
123
124     public String getTargetRepo()
125     {
126         return targetRepo;
127     }
128
129     public void setTargetRepo( String targetRepo )
130     {
131         this.targetRepo = targetRepo;
132     }
133
134     private int findTargetRepository( List<String> repositories, String targetRepository )
135     {
136         int idx = ( -1 );
137
138         for ( int i = 0; i < repositories.size(); i++ )
139         {
140             if ( StringUtils.equals( targetRepository, repositories.get( i ) ) )
141             {
142                 idx = i;
143                 break;
144             }
145         }
146         return idx;
147     }
148
149     private List<String> getRepositoriesFromGroup()
150     {
151         Configuration config = archivaConfiguration.getConfiguration();
152         RepositoryGroupConfiguration repoGroup = config.findRepositoryGroupById( repoGroupId );
153         return repoGroup.getRepositories();
154     }
155
156     private boolean validIndex( List<String> repositories, int idx )
157     {
158         return ( idx >= 0 ) && ( idx < repositories.size() );
159     }
160
161     public ArchivaConfiguration getArchivaConfiguration()
162     {
163         return archivaConfiguration;
164     }
165
166     public void setArchivaConfiguration( ArchivaConfiguration archivaConfiguration )
167     {
168         this.archivaConfiguration = archivaConfiguration;
169     }
170 }