]> source.dussan.org Git - archiva.git/blob
14732f956cf9bcbdbbfa28dc666986054ca57179
[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 com.opensymphony.xwork2.Preparable;
23 import com.opensymphony.xwork2.Validateable;
24 import org.apache.archiva.admin.model.RepositoryAdminException;
25 import org.apache.archiva.admin.model.managed.ManagedRepository;
26 import org.apache.commons.lang.StringUtils;
27 import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
28 import org.codehaus.redback.components.scheduler.CronExpressionValidator;
29 import org.springframework.context.annotation.Scope;
30 import org.springframework.stereotype.Controller;
31
32 import java.io.File;
33
34 /**
35  * AddManagedRepositoryAction
36  *
37  * @version $Id$
38  */
39 @Controller( "editManagedRepositoryAction" )
40 @Scope( "prototype" )
41 public class EditManagedRepositoryAction
42     extends AbstractManagedRepositoriesAction
43     implements Preparable, Validateable
44 {
45
46     private ManagedRepository repository;
47
48     private ManagedRepository stagingRepository;
49
50     private String repoid;
51
52     private final String action = "editRepository";
53
54     private boolean stageNeeded;
55
56
57     // FIXME better error message
58     public void prepare()
59         throws RepositoryAdminException
60     {
61         if ( StringUtils.isNotBlank( repoid ) )
62         {
63             repository = getManagedRepositoryAdmin().getManagedRepository( repoid );
64             stagingRepository = getManagedRepositoryAdmin().getManagedRepository( repoid + "-stage" );
65         }
66         else if ( repository != null )
67         {
68             repository.setReleases( false );
69             repository.setScanned( false );
70         }
71     }
72
73     public String input()
74     {
75         if ( repository == null )
76         {
77             addActionError( "Edit failure, unable to edit a repository with a blank repository id." );
78             return ERROR;
79         }
80
81         return INPUT;
82     }
83
84     public String confirmUpdate()
85     {
86         // location was changed
87         return save( true );
88     }
89
90     // FIXME olamy use ManagedRepositoryAdmin rather tha, directly archivaConfiguration
91     public String commit()
92     {
93         ManagedRepositoryConfiguration existingConfig =
94             archivaConfiguration.getConfiguration().findManagedRepositoryById( repository.getId() );
95         boolean resetStats = false;
96
97         // check if the location was changed
98         repository.setLocation( getRepositoryCommonValidator().removeExpressions( repository.getLocation() ) );
99
100         if ( !StringUtils.equalsIgnoreCase( existingConfig.getLocation().trim(), repository.getLocation().trim() ) )
101         {
102             resetStats = true;
103
104             File dir = new File( repository.getLocation() );
105             if ( dir.exists() )
106             {
107                 return CONFIRM;
108             }
109         }
110
111         return save( resetStats );
112     }
113
114     private String save( boolean resetStats )
115     {
116
117         String result = SUCCESS;
118         try
119         {
120             getManagedRepositoryAdmin().updateManagedRepository( repository, stageNeeded, getAuditInformation(),
121                                                                  resetStats );
122         }
123         catch ( RepositoryAdminException e )
124         {
125             addActionError( "Repository Administration Exception: " + e.getMessage() );
126             result = ERROR;
127         }
128
129         return result;
130     }
131
132
133     @Override
134     public void validate()
135     {
136         CronExpressionValidator validator = new CronExpressionValidator();
137
138         if ( !validator.validate( repository.getCronExpression() ) )
139         {
140             addFieldError( "repository.refreshCronExpression", "Invalid cron expression." );
141         }
142
143         trimAllRequestParameterValues();
144     }
145
146     private void trimAllRequestParameterValues()
147     {
148         if ( StringUtils.isNotEmpty( repository.getId() ) )
149         {
150             repository.setId( repository.getId().trim() );
151         }
152
153         if ( StringUtils.isNotEmpty( repository.getName() ) )
154         {
155             repository.setName( repository.getName().trim() );
156         }
157
158         if ( StringUtils.isNotEmpty( repository.getLocation() ) )
159         {
160             repository.setLocation( repository.getLocation().trim() );
161         }
162
163         if ( StringUtils.isNotEmpty( repository.getIndexDirectory() ) )
164         {
165             repository.setIndexDirectory( repository.getIndexDirectory().trim() );
166         }
167     }
168
169     public String getRepoid()
170     {
171         return repoid;
172     }
173
174     public void setRepoid( String repoid )
175     {
176         this.repoid = repoid;
177     }
178
179
180     public boolean isStageNeeded()
181     {
182         return stageNeeded;
183     }
184
185     public void setStageNeeded( boolean stageNeeded )
186     {
187
188         this.stageNeeded = stageNeeded;
189     }
190
191     public String getAction()
192     {
193         return action;
194     }
195
196     public ManagedRepository getRepository()
197     {
198         return repository;
199     }
200
201     public void setRepository( ManagedRepository repository )
202     {
203         this.repository = repository;
204     }
205
206     public ManagedRepository getStagingRepository()
207     {
208         return stagingRepository;
209     }
210
211     public void setStagingRepository( ManagedRepository stagingRepository )
212     {
213         this.stagingRepository = stagingRepository;
214     }
215 }