001 /** 002 * Copyright 2005-2012 The Kuali Foundation 003 * 004 * Licensed under the Educational Community License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.opensource.org/licenses/ecl2.php 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016 package edu.sampleu.demo.kitchensink; 017 018 import javax.management.RuntimeErrorException; 019 import javax.servlet.http.HttpServletRequest; 020 import javax.servlet.http.HttpServletResponse; 021 022 import org.kuali.rice.krad.datadictionary.validation.ViewAttributeValueReader; 023 import org.kuali.rice.krad.service.DictionaryValidationService; 024 import org.kuali.rice.krad.service.KRADServiceLocatorWeb; 025 import org.kuali.rice.krad.uif.UifParameters; 026 import org.kuali.rice.krad.uif.component.Component; 027 import org.kuali.rice.krad.uif.container.CollectionGroup; 028 import org.kuali.rice.krad.uif.container.Container; 029 import org.kuali.rice.krad.uif.container.Group; 030 import org.kuali.rice.krad.uif.field.DataField; 031 import org.kuali.rice.krad.uif.field.FieldGroup; 032 import org.kuali.rice.krad.uif.field.InputField; 033 import org.kuali.rice.krad.uif.layout.StackedLayoutManager; 034 import org.kuali.rice.krad.uif.layout.TableLayoutManager; 035 import org.kuali.rice.krad.util.GlobalVariables; 036 import org.kuali.rice.krad.web.controller.UifControllerBase; 037 import org.kuali.rice.krad.web.form.UifFormBase; 038 import org.springframework.stereotype.Controller; 039 import org.springframework.validation.BindingResult; 040 import org.springframework.web.bind.annotation.ModelAttribute; 041 import org.springframework.web.bind.annotation.RequestMapping; 042 import org.springframework.web.bind.annotation.RequestMethod; 043 import org.springframework.web.servlet.ModelAndView; 044 045 import java.beans.PropertyEditor; 046 import java.util.Enumeration; 047 import java.util.List; 048 import java.util.Map; 049 import java.util.Properties; 050 import java.util.Random; 051 052 /** 053 * Controller for the Test UI Page 054 * 055 * @author Kuali Rice Team (rice.collab@kuali.org) 056 */ 057 @Controller 058 @RequestMapping(value = "/uicomponents") 059 public class UifComponentsTestController extends UifControllerBase { 060 061 /** 062 * @see org.kuali.rice.krad.web.controller.UifControllerBase#createInitialForm(javax.servlet.http.HttpServletRequest) 063 */ 064 @Override 065 protected UifComponentsTestForm createInitialForm(HttpServletRequest request) { 066 return new UifComponentsTestForm(); 067 } 068 069 @Override 070 @RequestMapping(params = "methodToCall=start") 071 public ModelAndView start(@ModelAttribute("KualiForm") UifFormBase form, BindingResult result, 072 HttpServletRequest request, HttpServletResponse response) { 073 UifComponentsTestForm uiTestForm = (UifComponentsTestForm) form; 074 form.setState("state1"); 075 //for generated view: 076 if(form.getView().getId().equals("UifGeneratedFields")){ 077 for(int i=0; i<100; i++){ 078 ((UifComponentsTestForm)form).getList1generated().add( 079 new UITestObject("A" + i, "B" + i, "C" + i, "D" + i)); 080 } 081 for(int i=0; i<100; i++){ 082 ((UifComponentsTestForm)form).getList2generated().add( 083 new UITestObject("A" + i, "B" + i, "C" + i, "D" + i)); 084 } 085 for(int i=0; i<10; i++){ 086 ((UifComponentsTestForm)form).getList3generated().add( 087 new UITestObject("A" + i, "B" + i, "C" + i, "D" + i)); 088 for(int j=0; j<10; j++){ 089 ((UifComponentsTestForm)form).getList3generated().get(i).getSubList().add( 090 new UITestObject("i" + i + "-" + j, "i" + i + "-" + j, "i" + i + "-" + j, "i" + i + "-" + j)); 091 } 092 } 093 } 094 095 GlobalVariables.getMessageMap().addGrowlMessage("Welcome!", "kitchenSink.welcome"); 096 097 return super.start(uiTestForm, result, request, response); 098 } 099 100 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=save") 101 public ModelAndView save(@ModelAttribute("KualiForm") UifComponentsTestForm uiTestForm, BindingResult result, 102 HttpServletRequest request, HttpServletResponse response) { 103 KRADServiceLocatorWeb.getViewValidationService().validateView(uiTestForm); 104 return getUIFModelAndView(uiTestForm); 105 } 106 107 108 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=close") 109 public ModelAndView close(@ModelAttribute("KualiForm") UifComponentsTestForm uiTestForm, BindingResult result, 110 HttpServletRequest request, HttpServletResponse response) { 111 112 return getUIFModelAndView(uiTestForm, "UifCompView-Page1"); 113 } 114 115 /** 116 * Handles menu navigation between view pages 117 */ 118 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=navigate") 119 public ModelAndView navigate(@ModelAttribute("KualiForm") UifFormBase form, BindingResult result, 120 HttpServletRequest request, HttpServletResponse response) { 121 String pageId = form.getActionParamaterValue(UifParameters.NAVIGATE_TO_PAGE_ID); 122 123 if (pageId.equals("UifCompView-Page8")) { 124 GlobalVariables.getMessageMap().putError("gField1", "serverTestError"); 125 GlobalVariables.getMessageMap().putError("gField1", "serverTestError2"); 126 GlobalVariables.getMessageMap().putError("gField2", "serverTestError"); 127 GlobalVariables.getMessageMap().putError("gField3", "serverTestError"); 128 GlobalVariables.getMessageMap().putWarning("gField1", "serverTestWarning"); 129 GlobalVariables.getMessageMap().putWarning("gField2", "serverTestWarning"); 130 GlobalVariables.getMessageMap().putInfo("gField2", "serverTestInfo"); 131 GlobalVariables.getMessageMap().putInfo("gField3", "serverTestInfo"); 132 } 133 // only refreshing page 134 form.setRenderFullView(false); 135 136 return getUIFModelAndView(form, pageId); 137 } 138 139 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=refreshProgGroup") 140 public ModelAndView refreshProgGroup(@ModelAttribute("KualiForm") UifComponentsTestForm uiTestForm, 141 BindingResult result, HttpServletRequest request, HttpServletResponse response) { 142 143 return getUIFModelAndView(uiTestForm); 144 } 145 146 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=refreshWithServerMessages") 147 public ModelAndView refreshWithServerMessages(@ModelAttribute("KualiForm") UifComponentsTestForm uiTestForm, 148 BindingResult result, HttpServletRequest request, HttpServletResponse response) { 149 GlobalVariables.getMessageMap().putError("field45", "serverTestError"); 150 GlobalVariables.getMessageMap().putWarning("field45", "serverTestWarning"); 151 GlobalVariables.getMessageMap().putInfo("field45", "serverTestInfo"); 152 153 return getUIFModelAndView(uiTestForm); 154 } 155 156 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=genCollectionServerMessages") 157 public ModelAndView genCollectionServerMessages(@ModelAttribute("KualiForm") UifComponentsTestForm uiTestForm, 158 BindingResult result, HttpServletRequest request, HttpServletResponse response) throws Exception { 159 GlobalVariables.getMessageMap().putError("list2[0].field1", "serverTestError"); 160 GlobalVariables.getMessageMap().putWarning("list2[0].field1", "serverTestWarning"); 161 GlobalVariables.getMessageMap().putInfo("list2[0].field1", "serverTestInfo"); 162 163 GlobalVariables.getMessageMap().putError("list3[0].field1", "serverTestError"); 164 GlobalVariables.getMessageMap().putWarning("list3[0].field1", "serverTestWarning"); 165 GlobalVariables.getMessageMap().putInfo("list3[0].field1", "serverTestInfo"); 166 167 GlobalVariables.getMessageMap().putError("list5[0].subList[0].field1", "serverTestError"); 168 GlobalVariables.getMessageMap().putWarning("list5[0].subList[0].field1", "serverTestWarning"); 169 GlobalVariables.getMessageMap().putInfo("list5[0].subList[0].field1", "serverTestInfo"); 170 return refresh(uiTestForm, result, request, response); 171 } 172 173 174 /** 175 * Adds errors to fields defined in the validationMessageFields array 176 */ 177 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=addErrors") 178 public ModelAndView addErrors(@ModelAttribute("KualiForm") UifFormBase form, BindingResult result, 179 HttpServletRequest request, HttpServletResponse response) { 180 181 if(form.getPostedView().getCurrentPageId().equals("Demo-ValidationLayout-SectionsPageSectionMessages")){ 182 GlobalVariables.getMessageMap().putError("Demo-ValidationLayout-Section1", "errorSectionTest"); 183 GlobalVariables.getMessageMap().putError("Demo-ValidationLayout-Section2", "errorSectionTest"); 184 } 185 else if(form.getPostedView().getCurrentPageId().equals("Demo-ValidationLayout-SectionsPageUnmatched")){ 186 GlobalVariables.getMessageMap().putError("badKey", "unmatchedTest"); 187 } 188 189 Map<String, PropertyEditor> propertyEditors = form.getPostedView().getViewIndex().getFieldPropertyEditors(); 190 for(String key: propertyEditors.keySet()){ 191 GlobalVariables.getMessageMap().putError(key, "error1Test"); 192 } 193 194 return getUIFModelAndView(form); 195 } 196 197 /** 198 * Adds warnings to fields defined in the validationMessageFields array 199 */ 200 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=addWarnings") 201 public ModelAndView addWarnings(@ModelAttribute("KualiForm") UifFormBase form, BindingResult result, 202 HttpServletRequest request, HttpServletResponse response) { 203 204 if(form.getPostedView().getCurrentPageId().equals("Demo-ValidationLayout-SectionsPageSectionMessages")){ 205 GlobalVariables.getMessageMap().putWarning("Demo-ValidationLayout-Section1", "warningSectionTest"); 206 GlobalVariables.getMessageMap().putWarning("Demo-ValidationLayout-Section2", "warningSectionTest"); 207 } 208 else if(form.getPostedView().getCurrentPageId().equals("Demo-ValidationLayout-SectionsPageUnmatched")){ 209 GlobalVariables.getMessageMap().putWarning("badKey", "unmatchedTest"); 210 } 211 212 Map<String, PropertyEditor> propertyEditors = form.getPostedView().getViewIndex().getFieldPropertyEditors(); 213 for(String key: propertyEditors.keySet()){ 214 GlobalVariables.getMessageMap().putWarning(key, "warning1Test"); 215 } 216 217 return getUIFModelAndView(form); 218 } 219 220 /** 221 * Adds infos to fields defined in the validationMessageFields array 222 */ 223 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=addInfo") 224 public ModelAndView addInfo(@ModelAttribute("KualiForm") UifFormBase form, BindingResult result, 225 HttpServletRequest request, HttpServletResponse response) { 226 227 if(form.getPostedView().getCurrentPageId().equals("Demo-ValidationLayout-SectionsPageSectionMessages")){ 228 GlobalVariables.getMessageMap().putInfo("Demo-ValidationLayout-Section1", "infoSectionTest"); 229 GlobalVariables.getMessageMap().putInfo("Demo-ValidationLayout-Section2", "infoSectionTest"); 230 } 231 else if(form.getPostedView().getCurrentPageId().equals("Demo-ValidationLayout-SectionsPageUnmatched")){ 232 GlobalVariables.getMessageMap().putInfo("badKey", "unmatchedTest"); 233 } 234 235 Map<String, PropertyEditor> propertyEditors = form.getPostedView().getViewIndex().getFieldPropertyEditors(); 236 for(String key: propertyEditors.keySet()){ 237 GlobalVariables.getMessageMap().putInfo(key, "info1Test"); 238 } 239 240 return getUIFModelAndView(form); 241 } 242 243 /** 244 * Adds all message types to fields defined in the validationMessageFields array 245 */ 246 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=addAllMessages") 247 public ModelAndView addAllMessages(@ModelAttribute("KualiForm") UifFormBase form, BindingResult result, 248 HttpServletRequest request, HttpServletResponse response) { 249 250 this.addErrors(form, result, request, response); 251 this.addWarnings(form, result, request, response); 252 this.addInfo(form, result, request, response); 253 254 return getUIFModelAndView(form); 255 } 256 257 /** 258 * Adds error and warning messages to fields defined in the validationMessageFields array 259 */ 260 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=addErrorWarnMessages") 261 public ModelAndView addErrorWarnMessages(@ModelAttribute("KualiForm") UifFormBase form, BindingResult result, 262 HttpServletRequest request, HttpServletResponse response) { 263 264 this.addErrors(form, result, request, response); 265 this.addWarnings(form, result, request, response); 266 267 return getUIFModelAndView(form); 268 } 269 270 /** 271 * Adds error and info messages to fields defined in the validationMessageFields array 272 */ 273 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=addErrorInfoMessages") 274 public ModelAndView addErrorInfoMessages(@ModelAttribute("KualiForm") UifFormBase form, BindingResult result, 275 HttpServletRequest request, HttpServletResponse response) { 276 277 this.addErrors(form, result, request, response); 278 this.addInfo(form, result, request, response); 279 280 return getUIFModelAndView(form); 281 } 282 283 /** 284 * Adds warning and info messages to fields defined in the validationMessageFields array 285 */ 286 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=addWarningInfoMessages") 287 public ModelAndView addWarnInfoMessages(@ModelAttribute("KualiForm") UifFormBase form, BindingResult result, 288 HttpServletRequest request, HttpServletResponse response) { 289 290 this.addWarnings(form, result, request, response); 291 this.addInfo(form, result, request, response); 292 293 return getUIFModelAndView(form); 294 } 295 296 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=gotoState2") 297 public ModelAndView gotoState2(@ModelAttribute("KualiForm") UifFormBase form, BindingResult result, 298 HttpServletRequest request, HttpServletResponse response) { 299 300 KRADServiceLocatorWeb.getViewValidationService().validateView(form.getPostedView(), form, "state2"); 301 if(!GlobalVariables.getMessageMap().hasErrors()){ 302 form.setState("state2"); 303 } 304 305 return getUIFModelAndView(form); 306 } 307 308 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=gotoState3") 309 public ModelAndView gotoState3(@ModelAttribute("KualiForm") UifFormBase form, BindingResult result, 310 HttpServletRequest request, HttpServletResponse response) { 311 312 KRADServiceLocatorWeb.getViewValidationService().validateView(form.getPostedView(), form, "state3"); 313 if(!GlobalVariables.getMessageMap().hasErrors()){ 314 form.setState("state3"); 315 } 316 317 return getUIFModelAndView(form); 318 } 319 320 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=gotoState4") 321 public ModelAndView gotoState4(@ModelAttribute("KualiForm") UifFormBase form, BindingResult result, 322 HttpServletRequest request, HttpServletResponse response) { 323 324 KRADServiceLocatorWeb.getViewValidationService().validateView(form.getPostedView(), form, "state4"); 325 if(!GlobalVariables.getMessageMap().hasErrors()){ 326 form.setState("state4"); 327 } 328 329 return getUIFModelAndView(form); 330 } 331 332 333 334 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=successCheck") 335 public ModelAndView successCheck(@ModelAttribute("KualiForm") UifFormBase form, BindingResult result, 336 HttpServletRequest request, HttpServletResponse response) { 337 338 return getUIFModelAndView(form); 339 } 340 341 342 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=errorCheck") 343 public ModelAndView errorCheck(@ModelAttribute("KualiForm") UifFormBase form, BindingResult result, 344 HttpServletRequest request, HttpServletResponse response) { 345 346 if(true) { 347 throw new RuntimeException("Generate fake incident report"); 348 } 349 350 return getUIFModelAndView(form); 351 } 352 353 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=redirectCheck") 354 public ModelAndView redirectCheck(@ModelAttribute("KualiForm") UifFormBase form, BindingResult result, 355 HttpServletRequest request, HttpServletResponse response) { 356 Properties props = new Properties(); 357 props.put(UifParameters.VIEW_ID, form.getViewId()); 358 props.put(UifParameters.FORM_KEY, form.getFormKey()); 359 return performRedirect(form, "http://localhost:8080/kr-dev", props); 360 } 361 362 363 }