1 package org.apache.continuum.web.action.admin;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import com.opensymphony.xwork2.Preparable;
23 import org.apache.continuum.model.repository.DirectoryPurgeConfiguration;
24 import org.apache.continuum.model.repository.DistributedDirectoryPurgeConfiguration;
25 import org.apache.continuum.model.repository.RepositoryPurgeConfiguration;
26 import org.apache.continuum.purge.PurgeConfigurationService;
27 import org.apache.continuum.repository.RepositoryService;
28 import org.apache.maven.continuum.model.project.Schedule;
29 import org.apache.maven.continuum.security.ContinuumRoleConstants;
30 import org.apache.maven.continuum.web.action.ContinuumConfirmAction;
31 import org.apache.struts2.ServletActionContext;
32 import org.codehaus.plexus.redback.rbac.Resource;
33 import org.codehaus.redback.integration.interceptor.SecureAction;
34 import org.codehaus.redback.integration.interceptor.SecureActionBundle;
35 import org.codehaus.redback.integration.interceptor.SecureActionException;
36 import org.slf4j.Logger;
37 import org.slf4j.LoggerFactory;
38
39 import java.util.Collection;
40 import java.util.HashMap;
41 import java.util.List;
42 import java.util.Map;
43
44
45
46
47
48
49 public class PurgeAction
50 extends ContinuumConfirmAction
51 implements Preparable, SecureAction
52 {
53 private static final Logger logger = LoggerFactory.getLogger( PurgeConfigurationAction.class );
54
55 private static final String DISTRIBUTED_BUILD_SUCCESS = "distributed-build-success";
56
57 private static final String PURGE_TYPE_REPOSITORY = "repository";
58
59 private static final String PURGE_TYPE_DIRECTORY = "directory";
60
61 private static final String PURGE_DIRECTORY_RELEASES = "releases";
62
63 private static final String PURGE_DIRECTORY_BUILDOUTPUT = "buildOutput";
64
65 private static final String PURGE_DIRECTORY_WORKING = "working";
66
67 private Map<Integer, String> repositories;
68
69 private Map<Integer, String> schedules;
70
71 private List<RepositoryPurgeConfiguration> repoPurgeConfigs;
72
73 private List<DirectoryPurgeConfiguration> dirPurgeConfigs;
74
75 private List<DistributedDirectoryPurgeConfiguration> distributedDirPurgeConfigs;
76
77 private List<String> directoryTypes;
78
79
80
81
82 private PurgeConfigurationService purgeConfigService;
83
84
85
86
87 private RepositoryService repositoryService;
88
89 private Schedule sched = null;
90
91 public String display()
92 throws Exception
93 {
94 if ( schedules == null )
95 {
96 schedules = new HashMap<Integer, String>();
97
98 Collection<Schedule> allSchedules = getContinuum().getSchedules();
99
100 for ( Schedule schedule : allSchedules )
101 {
102 schedules.put( schedule.getId(), schedule.getName() );
103 }
104 }
105 if ( getContinuum().getConfiguration().isDistributedBuildEnabled() )
106 {
107 String errorMessage = ServletActionContext.getRequest().getParameter( "errorMessage" );
108
109 if ( errorMessage != null )
110 {
111 addActionError( getText( errorMessage ) );
112 }
113 distributedDirPurgeConfigs = purgeConfigService.getAllDistributedDirectoryPurgeConfigurations();
114
115 return DISTRIBUTED_BUILD_SUCCESS;
116 }
117 else
118 {
119
120 String errorMessage = ServletActionContext.getRequest().getParameter( "errorMessage" );
121
122 if ( errorMessage != null )
123 {
124 addActionError( getText( errorMessage ) );
125 }
126
127 repoPurgeConfigs = purgeConfigService.getAllRepositoryPurgeConfigurations();
128 dirPurgeConfigs = purgeConfigService.getAllDirectoryPurgeConfigurations();
129
130 return SUCCESS;
131 }
132 }
133
134 public SecureActionBundle getSecureActionBundle()
135 throws SecureActionException
136 {
137 SecureActionBundle bundle = new SecureActionBundle();
138 bundle.setRequiresAuthentication( true );
139 bundle.addRequiredAuthorization( ContinuumRoleConstants.CONTINUUM_MANAGE_PURGING, Resource.GLOBAL );
140
141 return bundle;
142 }
143
144 public Map<Integer, String> getRepositories()
145 {
146 return repositories;
147 }
148
149 public void setRepositories( Map<Integer, String> repositories )
150 {
151 this.repositories = repositories;
152 }
153
154 public List<RepositoryPurgeConfiguration> getRepoPurgeConfigs()
155 {
156 return repoPurgeConfigs;
157 }
158
159 public void setRepoPurgeConfigs( List<RepositoryPurgeConfiguration> repoPurgeConfigs )
160 {
161 this.repoPurgeConfigs = repoPurgeConfigs;
162 }
163
164 public List<DirectoryPurgeConfiguration> getDirPurgeConfigs()
165 {
166 return dirPurgeConfigs;
167 }
168
169 public void setDirPurgeConfigs( List<DirectoryPurgeConfiguration> dirPurgeConfigs )
170 {
171 this.dirPurgeConfigs = dirPurgeConfigs;
172 }
173
174 public List<DistributedDirectoryPurgeConfiguration> getDistributedDirPurgeConfigs()
175 {
176 return distributedDirPurgeConfigs;
177 }
178
179 public void setDistributedDirPurgeConfigs( List<DistributedDirectoryPurgeConfiguration> distributedDirPurgeConfigs )
180 {
181 this.distributedDirPurgeConfigs = distributedDirPurgeConfigs;
182 }
183
184 public List<String> getDirectoryTypes()
185 {
186 return directoryTypes;
187 }
188
189 public void setDirectoryTypes( List<String> directoryTypes )
190 {
191 this.directoryTypes = directoryTypes;
192 }
193
194 public PurgeConfigurationService getPurgeConfigService()
195 {
196 return purgeConfigService;
197 }
198
199 public void setPurgeConfigService( PurgeConfigurationService purgeConfigService )
200 {
201 this.purgeConfigService = purgeConfigService;
202 }
203 }