KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > jaspersoft > jasperserver > war > action > RepoAdminAction


1 /*
2  * Copyright (C) 2006 JasperSoft http://www.jaspersoft.com
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation; either version 2 of the License, or
7  * (at your option) any later version.
8  *
9  * This program is distributed WITHOUT ANY WARRANTY; and without the
10  * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
11  * See the GNU General Public License for more details.
12  *
13  * You should have received a copy of the GNU General Public License
14  * along with this program; if not, see http://www.gnu.org/licenses/gpl.txt
15  * or write to:
16  *
17  * Free Software Foundation, Inc.,
18  * 59 Temple Place - Suite 330,
19  * Boston, MA USA 02111-1307
20  */

21 package com.jaspersoft.jasperserver.war.action;
22
23 import java.util.ArrayList JavaDoc;
24 import java.util.List JavaDoc;
25 import java.util.Map JavaDoc;
26 import java.util.StringTokenizer JavaDoc;
27
28 import org.apache.commons.logging.Log;
29 import org.apache.commons.logging.LogFactory;
30 import org.springframework.webflow.Event;
31 import org.springframework.webflow.RequestContext;
32 import org.springframework.webflow.action.FormAction;
33
34 import com.jaspersoft.jasperserver.api.metadata.common.domain.Folder;
35 import com.jaspersoft.jasperserver.api.metadata.common.domain.client.FolderImpl;
36 import com.jaspersoft.jasperserver.api.metadata.common.service.RepositoryService;
37 import com.jaspersoft.jasperserver.api.metadata.view.domain.FilterCriteria;
38
39 public class RepoAdminAction extends FormAction {
40
41     protected final Log log = LogFactory.getLog(this.getClass());
42
43     private Map JavaDoc resourceTypes;
44     
45     private RepositoryService repository;
46     private String JavaDoc flowAttributeFolder;
47
48     /*
49      * method to get the reposervice object arguments: none returns:
50      * RepositoryService
51      */

52     public RepositoryService getRepository() {
53         return repository;
54     }
55
56     /*
57      * method to set the reposervice object arguments: RepositoryService
58      * returns: void
59      */

60     public void setRepository(RepositoryService repository) {
61         this.repository = repository;
62     }
63
64     /**
65      * @return Returns the resourceTypes.
66      */

67     public Map JavaDoc getResourceTypes() {
68         return resourceTypes;
69     }
70
71     /**
72      * @param resourceTypes The resourceTypes to set.
73      */

74     public void setResourceTypes(Map JavaDoc resourceTypes) {
75         this.resourceTypes = resourceTypes;
76     }
77
78     public RepoAdminAction()
79     {
80 // setFormObjectClass(CreateReportWizardDTO.class);
81
// // custom form backing object class
82
// setFormObjectName(FORM_OBJECT_KEY);
83
// setFormObjectScope(ScopeType.FLOW); // this is a multi-page wizard!
84
// setValidator(new CreateReportFlowValidator());
85
}
86
87     public Event initAction(RequestContext context)
88     {
89         String JavaDoc folderURI = context.getRequestParameters().get("folder");
90         
91         if (folderURI == null)
92         {
93             folderURI = context.getFlowScope().getString(getFlowAttributeFolder());
94             if (folderURI == null)
95             {
96                 folderURI = "/";
97             }
98         }
99         else
100         {
101             context.getFlowScope().put(getFlowAttributeFolder(), folderURI);
102         }
103         
104         List JavaDoc pathFolders = getPathFolders(folderURI);
105         context.getRequestScope().put("pathFolders", pathFolders);
106
107         FilterCriteria criteria = FilterCriteria.createFilter();
108         criteria.addFilterElement(FilterCriteria.createParentFolderFilter(folderURI));
109         
110         List JavaDoc folders = repository.getSubFolders(null, folderURI);
111         context.getRequestScope().put("folders", folders);
112 /*
113         ResourceLookup[] resources = repository.findResource(null, criteria);
114         context.getRequestScope().put("resources", Arrays.asList(resources));
115 */

116         context.getRequestScope().put("resources", repository.loadResourcesList(criteria));
117         
118         context.getRequestScope().put("resourceTypes", getResourceTypes());
119         
120         return success();
121     }
122
123     public Event remove(RequestContext context)
124     {
125         //FIXME simplify this with context.getRequestParameters().getArray(key)
126
// when upgrading Spring Weblow
127

128         String JavaDoc[] selectedFolders = null;
129         String JavaDoc[] selectedResources = null;
130         
131         if (context.getRequestParameters().contains("selectedResources"))
132         {
133             Object JavaDoc parameter = context.getRequestParameters().getMap().get("selectedResources");
134             if (parameter instanceof String JavaDoc)
135                 selectedResources = new String JavaDoc[]{(String JavaDoc)parameter};
136             else
137                 selectedResources = (String JavaDoc[])parameter;
138         }
139         
140         if (context.getRequestParameters().contains("selectedFolders"))
141         {
142             Object JavaDoc parameter = context.getRequestParameters().getMap().get("selectedFolders");
143             if (parameter instanceof String JavaDoc)
144                 selectedFolders = new String JavaDoc[]{(String JavaDoc)parameter};
145             else
146                 selectedFolders = (String JavaDoc[])parameter;
147         }
148
149         try {
150             repository.delete(null, selectedResources, selectedFolders);
151         }
152         catch (Exception JavaDoc e) {
153             log.error("Failed to remove resource.", e);
154             return error();
155         }
156         
157         return success();
158     }
159
160     protected List JavaDoc getPathFolders(String JavaDoc uri)
161     {
162         List JavaDoc pathFolders = new ArrayList JavaDoc();
163         
164         Folder parentFolder = null;
165         
166         StringTokenizer JavaDoc tkzer = new StringTokenizer JavaDoc(uri, Folder.SEPARATOR, false);
167         while(tkzer.hasMoreTokens())
168         {
169             String JavaDoc token = tkzer.nextToken();
170
171             Folder folder = new FolderImpl();
172             folder.setName(token);
173             folder.setParentFolder(parentFolder);
174             
175             pathFolders.add(folder);
176
177             parentFolder = folder;
178         }
179         
180         return pathFolders;
181     }
182
183     public String JavaDoc getFlowAttributeFolder() {
184         return flowAttributeFolder;
185     }
186
187     public void setFlowAttributeFolder(String JavaDoc flowAttributeFolder) {
188         this.flowAttributeFolder = flowAttributeFolder;
189     }
190 }
191
Popular Tags