KickJava   Java API By Example, From Geeks To Geeks.

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


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.StringTokenizer JavaDoc;
26
27 import org.apache.commons.logging.Log;
28 import org.apache.commons.logging.LogFactory;
29 import org.springframework.webflow.Event;
30 import org.springframework.webflow.RequestContext;
31 import org.springframework.webflow.action.FormAction;
32
33 import com.jaspersoft.jasperserver.api.metadata.common.domain.ContentResource;
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.jasperreports.domain.ReportUnit;
38 import com.jaspersoft.jasperserver.api.metadata.olap.domain.OlapUnit;
39 import com.jaspersoft.jasperserver.api.metadata.view.domain.FilterCriteria;
40
41 public class RepositoryAction extends FormAction {
42
43     protected final Log log = LogFactory.getLog(this.getClass());
44
45 // protected void initBinder(RequestContext context, DataBinder binder) {
46
// binder.registerCustomEditor(byte[].class,
47
// new ByteArrayMultipartFileEditor());
48
// }
49

50     private RepositoryService repository;
51     private String JavaDoc flowAttributeFolder;
52
53     /*
54      * method to get the reposervice object arguments: none returns:
55      * RepositoryService
56      */

57     public RepositoryService getRepository() {
58         return repository;
59     }
60
61     /*
62      * method to set the reposervice object arguments: RepositoryService
63      * returns: void
64      */

65     public void setRepository(RepositoryService repository) {
66         this.repository = repository;
67     }
68
69     public RepositoryAction()
70     {
71 // setFormObjectClass(CreateReportWizardDTO.class);
72
// // custom form backing object class
73
// setFormObjectName(FORM_OBJECT_KEY);
74
// setFormObjectScope(ScopeType.FLOW); // this is a multi-page wizard!
75
// setValidator(new CreateReportFlowValidator());
76
}
77
78     public Event initAction(RequestContext context)
79     {
80         String JavaDoc folderURI = context.getRequestParameters().get("folder");
81         
82         if (folderURI == null)
83         {
84             folderURI = context.getFlowScope().getString(getFlowAttributeFolder());
85             if (folderURI == null)
86             {
87                 folderURI = "/";
88             }
89         }
90         else
91         {
92             context.getFlowScope().put(getFlowAttributeFolder(), folderURI);
93         }
94         
95         List JavaDoc pathFolders = getPathFolders(folderURI);
96         context.getRequestScope().put("pathFolders", pathFolders);
97
98         List JavaDoc folders = repository.getSubFolders(null, folderURI);
99         context.getRequestScope().put("folders", folders);
100
101         FilterCriteria reportUnitCriteria = FilterCriteria.createFilter(ReportUnit.class);
102         reportUnitCriteria.addFilterElement(FilterCriteria.createParentFolderFilter(folderURI));
103         //ResourceLookup[] reportUnits = repository.findResource(null, reportUnitCriteria);
104
List JavaDoc reportUnits = repository.loadResourcesList(reportUnitCriteria);
105
106         FilterCriteria olapUnitCriteria = FilterCriteria.createFilter(OlapUnit.class);
107         olapUnitCriteria.addFilterElement(FilterCriteria.createParentFolderFilter(folderURI));
108         //ResourceLookup[] olapUnits = repository.findResource(null, olapUnitCriteria);
109
List JavaDoc olapUnits = repository.loadResourcesList(olapUnitCriteria);
110
111         FilterCriteria contentResourceCriteria = FilterCriteria.createFilter(ContentResource.class);
112         contentResourceCriteria.addFilterElement(FilterCriteria.createParentFolderFilter(folderURI));
113         //ResourceLookup[] contentResources = repository.findResource(null, contentResourceCriteria);
114
List JavaDoc contentResources = repository.loadResourcesList(contentResourceCriteria);
115
116         List JavaDoc resources = new ArrayList JavaDoc();
117         resources.addAll(reportUnits);
118         resources.addAll(olapUnits);
119         resources.addAll(contentResources);
120         
121         context.getRequestScope().put("resources", resources);
122         
123         return success();
124     }
125
126     public Event remove(RequestContext context)
127     {
128         //FIXME simplify this with context.getRequestParameters().getArray(key)
129
// when upgrading Spring Weblow
130

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