KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > openi > web > controller > admin > ConfigureOverviewFormController


1 /*********************************************************************************
2  * The contents of this file are subject to the OpenI Public License Version 1.0
3  * ("License"); You may not use this file except in compliance with the
4  * License. You may obtain a copy of the License at
5  * http://www.openi.org/docs/LICENSE.txt
6  *
7  * Software distributed under the License is distributed on an "AS IS" basis,
8  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
9  * the specific language governing rights and limitations under the License.
10  *
11  * The Original Code is: OpenI Open Source
12  *
13  * The Initial Developer of the Original Code is Loyalty Matrix, Inc.
14  * Portions created by Loyalty Matrix, Inc. are
15  * Copyright (C) 2005 Loyalty Matrix, Inc.; All Rights Reserved.
16  *
17  * Contributor(s): ______________________________________.
18  *
19  ********************************************************************************/

20 package org.openi.web.controller.admin;
21
22 import org.apache.log4j.Logger;
23 import org.openi.analysis.Analysis;
24 import org.openi.menu.AnalysisCollectionMenuVisitor;
25 import org.openi.project.AnalysisFormItem;
26 import org.openi.project.DirectoryLister;
27 import org.openi.project.Overview;
28 import org.openi.project.ProjectContext;
29 import org.openi.security.Permission;
30 import org.openi.util.*;
31 import org.openi.xml.*;
32 import org.springframework.validation.BindException;
33 import org.springframework.validation.Errors;
34 import org.springframework.validation.ObjectError;
35 import org.springframework.web.servlet.ModelAndView;
36 import org.springframework.web.servlet.mvc.SimpleFormController;
37 import java.io.*;
38 import java.util.*;
39
40 import javax.servlet.http.HttpServletRequest JavaDoc;
41 import javax.servlet.http.HttpServletResponse JavaDoc;
42 import javax.servlet.http.HttpSession JavaDoc;
43
44
45 /**
46  * Controller to configure dashboard
47  */

48 public class ConfigureOverviewFormController extends SimpleFormController {
49     private static Logger logger = Logger.getLogger(ConfigureOverviewFormController.class);
50     // private ProjectContext projectContext = null;
51

52
53     private String JavaDoc selectOverviewFormView;
54     private String JavaDoc configureOverviewFormView;
55     
56
57     /**
58      * This method will create the command object and set it in its initial state.
59      * This method is called before the user is directed to the first page of the wizard
60      *
61      * @param request HttpServletRequest
62      * @return Object
63      * @throws Exception
64      *
65      */

66     protected Object JavaDoc formBackingObject(HttpServletRequest JavaDoc request)
67         throws Exception JavaDoc {
68         logger.debug("handling formBackingObject, request: " + request.getParameterMap());
69         ProjectContext projectContext = (ProjectContext) request.getSession()
70                                           .getAttribute("projectContext");
71
72         logger.debug("test config for select view: " + this.getSelectOverviewFormView());
73         logger.debug("test config for configure view: " + this.getConfigureOverviewFormView());
74
75         if(!projectContext.hasPermission(Permission.CONFIGURE_DASHBOARD)){
76             throw new SecurityException JavaDoc("User does not have appropriate permission");
77         }
78         
79         //not just using the projectContext as a command object b/c it does not handle
80
// state (and shouldn't), should extend the AbstractWizardFormController?
81
Map model = new HashMap();
82         // just using projectContext on the list page now
83
// model.put("overviews", projectContext.getProject().getOverviews());
84
// projectContext.getProject().setOverviews(this.getMockOverviewMap());
85
// model.put("overviews", this.getMockOverviewMap());
86
return model;
87     }
88
89     
90     /**
91      * Submit callback with all parameters. Called in case of submit without
92      * errors reported by the registered validator, or on every submit if no validator.
93      * @param request HttpServletRequest
94      * @param response HttpServletResponse
95      * @param command Object
96      * @param errors BindException
97      * @return ModelAndView
98      * @throws Exception
99      */

100     protected ModelAndView onSubmit(HttpServletRequest JavaDoc request,
101         HttpServletResponse JavaDoc response, Object JavaDoc command, BindException errors)
102     throws Exception JavaDoc
103         {
104         
105             // logger.debug(request.getParameterMap());
106
ProjectContext projectContext = (ProjectContext)request.getSession().getAttribute("projectContext");
107             
108             if(!projectContext.hasPermission(Permission.CONFIGURE_DASHBOARD)){
109                 throw new SecurityException JavaDoc("User does not have appropriate permission");
110          }
111             
112             Map model = (Map)command;
113             logger.debug("command map: " + model);
114     
115             String JavaDoc action = request.getParameter("action");
116             logger.debug("action=" + action);
117             
118             if("configure".equalsIgnoreCase(action)){
119                 //populate select form based on current overview
120
String JavaDoc overviewKey = (String JavaDoc)request.getParameter("overviewKey");
121                 model.put("overviewKey", overviewKey);
122                 logger.debug("selecting overview key: " + overviewKey);
123                 Overview overview = projectContext.getProject().getOverview(overviewKey);
124                 // logger.debug(overview);
125
model.put("targetOverview", overview);
126
127                 //populate an analysis list
128
AnalysisCollectionMenuVisitor visitor = new AnalysisCollectionMenuVisitor(projectContext);
129                 projectContext.buildMenu().accept(visitor);
130                 model.put("analyses", wrap(visitor.getAnalyses(), overview));
131                 
132                 return new ModelAndView(this.getConfigureOverviewFormView(), model);
133             }else if("save".equalsIgnoreCase(action)){
134                 logger.debug("save action");
135                 String JavaDoc overviewKey = request.getParameter("overviewKey");
136                 
137                 // have to null check for the entire overview map
138
if(projectContext.getProject().getOverviews()==null){
139                     projectContext.getProject().setOverviews(new HashMap());
140                 }
141                 
142                 Overview overview = projectContext.getProject().getOverview(overviewKey);
143                 // create a new overview
144
if(overview == null){
145                     overview = new Overview();
146                     Map overviews = projectContext.getProject().getOverviews();
147                     overviews.put(overviewKey, overview);
148                 }
149                 
150                 //thumbnail size
151
String JavaDoc widthParam = request.getParameter("thumbnailWidth");
152                 if(widthParam !=null && widthParam.length() > 0){
153                     overview.setThumbnailWidth(this.parseInt(widthParam, 320));
154                 }
155                 
156                 String JavaDoc heightParam = request.getParameter("thumbnailHeight");
157                 if(heightParam !=null && heightParam.length() > 0){
158                     overview.setThumbnailHeight(this.parseInt(heightParam, 240));
159                 }
160                 
161                 // if there was an old one with a different name, remove it
162

163                 
164                 model.put("targetOverview", overview);
165                 
166                 
167                 String JavaDoc[] analyses = request.getParameterValues("analyses");
168                 List links = new LinkedList();
169                 for(int i=0; analyses!=null && i < analyses.length; i++){
170                     links.add(analyses[i]);
171                 }
172                 overview.setLinks(links);
173                 
174                 projectContext.saveProject();
175             }else if("new".equalsIgnoreCase(action)){
176                 // display the configuration form, with an emtpy overview name
177
// no analyses checked
178
logger.debug("new action");
179                 
180                 Overview overview = new Overview();
181                 model.put("targetOverview", overview);
182                 
183                 AnalysisCollectionMenuVisitor visitor = new AnalysisCollectionMenuVisitor(projectContext);
184                 projectContext.buildMenu().accept(visitor);
185                 model.put("analyses", wrap(visitor.getAnalyses(), overview));
186                 
187                 return new ModelAndView(this.getConfigureOverviewFormView(), model);
188             }else if("delete".equalsIgnoreCase(action)){
189                 // display the configuration form, with an emtpy overview name
190
// no analyses checked
191
logger.debug("delete action");
192                 Map overviews = projectContext.getProject().getOverviews();
193                 String JavaDoc overviewKey = request.getParameter("overviewKey");
194                 if(overviews.get(overviewKey) != null){
195                     overviews.remove(overviewKey);
196                     projectContext.saveProject();
197                 }
198                 
199                 return new ModelAndView(this.getSelectOverviewFormView(), "model", model);
200             }
201
202             return super.onSubmit(request, response, command, errors);
203     }
204
205
206     private int parseInt(String JavaDoc parameter, int defaultValue) {
207         int retVal = defaultValue;
208         try{
209             if(parameter != null && parameter.length() > 0 ){
210                 retVal = Integer.parseInt(parameter);
211             }
212             
213             if(retVal == 0){
214                 retVal = defaultValue;
215             }
216         }catch(Exception JavaDoc e){
217             
218         }
219         return retVal;
220     }
221
222
223     private Map wrap(Map analyses, Overview targetOverview) {
224         Map wrapped = new HashMap();
225         Iterator keys = analyses.keySet().iterator();
226         while(keys.hasNext()){
227             String JavaDoc key = (String JavaDoc)keys.next();
228             Analysis value = (Analysis)analyses.get(key);
229             AnalysisFormItem formItem = new AnalysisFormItem(value);
230             formItem.setSelected(targetOverview.getLinks().contains(key));
231             wrapped.put(key, formItem);
232         }
233         return wrapped;
234     }
235
236
237     public String JavaDoc getConfigureOverviewFormView() {
238         return configureOverviewFormView;
239     }
240     public void setConfigureOverviewFormView(String JavaDoc configureOverviewFormView) {
241         this.configureOverviewFormView = configureOverviewFormView;
242     }
243     public String JavaDoc getSelectOverviewFormView() {
244         return selectOverviewFormView;
245     }
246     public void setSelectOverviewFormView(String JavaDoc selectOverviewFormView) {
247         this.selectOverviewFormView = selectOverviewFormView;
248     }
249 }
250
Popular Tags