001 /**
002 * Copyright 2005-2014 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 java.util.Properties;
019 import java.util.Set;
020
021 import javax.servlet.http.HttpServletRequest;
022 import javax.servlet.http.HttpServletResponse;
023
024 import org.kuali.rice.krad.service.KRADServiceLocatorWeb;
025 import org.kuali.rice.krad.uif.UifConstants;
026 import org.kuali.rice.krad.uif.UifParameters;
027 import org.kuali.rice.krad.util.GlobalVariables;
028 import org.kuali.rice.krad.web.bind.RequestAccessible;
029 import org.kuali.rice.krad.web.controller.MethodAccessible;
030 import org.kuali.rice.krad.web.controller.UifControllerBase;
031 import org.kuali.rice.krad.web.form.UifFormBase;
032 import org.springframework.stereotype.Controller;
033 import org.springframework.validation.BindingResult;
034 import org.springframework.web.bind.annotation.ModelAttribute;
035 import org.springframework.web.bind.annotation.RequestMapping;
036 import org.springframework.web.bind.annotation.RequestMethod;
037 import org.springframework.web.servlet.ModelAndView;
038
039 /**
040 * Controller for the Test UI Page
041 *
042 * @author Kuali Rice Team (rice.collab@kuali.org)
043 */
044 @Controller
045 @RequestMapping(value = "/uicomponents")
046 public class UifComponentsTestController extends UifControllerBase {
047
048 /**
049 * @see org.kuali.rice.krad.web.controller.UifControllerBase#createInitialForm(javax.servlet.http.HttpServletRequest)
050 */
051 @Override
052 protected UifComponentsTestForm createInitialForm(HttpServletRequest request) {
053 return new UifComponentsTestForm();
054 }
055
056 @Override
057 @RequestMapping(params = "methodToCall=start")
058 public ModelAndView start(@ModelAttribute("KualiForm") UifFormBase form, HttpServletRequest request,
059 HttpServletResponse response) {
060 UifComponentsTestForm uiTestForm = (UifComponentsTestForm) form;
061 form.setState("state1");
062 //for generated view:
063 if (form.getView().getId().equals("UifGeneratedFields")) {
064 for (int i = 0; i < 100; i++) {
065 ((UifComponentsTestForm) form).getList1generated().add(new UITestObject("A" + i, "B" + i, "C" + i,
066 "D" + i));
067 }
068 for (int i = 0; i < 100; i++) {
069 ((UifComponentsTestForm) form).getList2generated().add(new UITestObject("A" + i, "B" + i, "C" + i,
070 "D" + i));
071 }
072 for (int i = 0; i < 10; i++) {
073 ((UifComponentsTestForm) form).getList3generated().add(new UITestObject("A" + i, "B" + i, "C" + i,
074 "D" + i));
075 for (int j = 0; j < 10; j++) {
076 ((UifComponentsTestForm) form).getList3generated().get(i).getSubList().add(new UITestObject(
077 "i" + i + "-" + j, "i" + i + "-" + j, "i" + i + "-" + j, "i" + i + "-" + j));
078 }
079 }
080 }
081
082 GlobalVariables.getMessageMap().addGrowlMessage("Welcome!", "kitchenSink.welcome");
083
084 return super.start(uiTestForm, request, response);
085 }
086
087 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=save")
088 public ModelAndView save(@ModelAttribute("KualiForm") UifComponentsTestForm uiTestForm, BindingResult result,
089 HttpServletRequest request, HttpServletResponse response) {
090 KRADServiceLocatorWeb.getViewValidationService().validateView(uiTestForm);
091
092 return getUIFModelAndView(uiTestForm);
093 }
094
095 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=close")
096 public ModelAndView close(@ModelAttribute("KualiForm") UifComponentsTestForm uiTestForm, BindingResult result,
097 HttpServletRequest request, HttpServletResponse response) {
098
099 return getUIFModelAndView(uiTestForm, "UifCompView-Page1");
100 }
101
102 /**
103 * Handles menu navigation between view pages
104 */
105 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=navigate")
106 public ModelAndView navigate(@ModelAttribute("KualiForm") UifFormBase form, BindingResult result,
107 HttpServletRequest request, HttpServletResponse response) {
108 String pageId = form.getActionParamaterValue(UifParameters.NAVIGATE_TO_PAGE_ID);
109
110 if (pageId.equals("UifCompView-Page8")) {
111 GlobalVariables.getMessageMap().putError("gField1", "serverTestError");
112 GlobalVariables.getMessageMap().putError("gField1", "serverTestError2");
113 GlobalVariables.getMessageMap().putError("gField2", "serverTestError");
114 GlobalVariables.getMessageMap().putError("gField3", "serverTestError");
115 GlobalVariables.getMessageMap().putWarning("gField1", "serverTestWarning");
116 GlobalVariables.getMessageMap().putWarning("gField2", "serverTestWarning");
117 GlobalVariables.getMessageMap().putInfo("gField2", "serverTestInfo");
118 GlobalVariables.getMessageMap().putInfo("gField3", "serverTestInfo");
119 }
120
121 return getUIFModelAndView(form, pageId);
122 }
123
124 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=refreshProgGroup")
125 public ModelAndView refreshProgGroup(@ModelAttribute("KualiForm") UifComponentsTestForm uiTestForm,
126 BindingResult result, HttpServletRequest request, HttpServletResponse response) {
127
128 return getUIFModelAndView(uiTestForm);
129 }
130
131 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=refreshWithServerMessages")
132 public ModelAndView refreshWithServerMessages(@ModelAttribute("KualiForm") UifComponentsTestForm uiTestForm,
133 BindingResult result, HttpServletRequest request, HttpServletResponse response) {
134 GlobalVariables.getMessageMap().putError("field45", "serverTestError");
135 GlobalVariables.getMessageMap().putWarning("field45", "serverTestWarning");
136 GlobalVariables.getMessageMap().putInfo("field45", "serverTestInfo");
137
138 return getUIFModelAndView(uiTestForm);
139 }
140
141 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=genCollectionServerMessages")
142 public ModelAndView genCollectionServerMessages(@ModelAttribute("KualiForm") UifComponentsTestForm uiTestForm,
143 BindingResult result, HttpServletRequest request, HttpServletResponse response) throws Exception {
144 GlobalVariables.getMessageMap().putError("list2[0].field1", "serverTestError");
145 GlobalVariables.getMessageMap().putWarning("list2[0].field1", "serverTestWarning");
146 GlobalVariables.getMessageMap().putInfo("list2[0].field1", "serverTestInfo");
147
148 GlobalVariables.getMessageMap().putError("list3[0].field1", "serverTestError");
149 GlobalVariables.getMessageMap().putWarning("list3[0].field1", "serverTestWarning");
150 GlobalVariables.getMessageMap().putInfo("list3[0].field1", "serverTestInfo");
151
152 GlobalVariables.getMessageMap().putError("list5[0].subList[0].field1", "serverTestError");
153 GlobalVariables.getMessageMap().putWarning("list5[0].subList[0].field1", "serverTestWarning");
154 GlobalVariables.getMessageMap().putInfo("list5[0].subList[0].field1", "serverTestInfo");
155 return refresh(uiTestForm, result, request, response);
156 }
157
158 /**
159 * Adds errors to fields defined in the validationMessageFields array
160 */
161 @MethodAccessible
162 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=addErrors")
163 public ModelAndView addErrors(@ModelAttribute("KualiForm") UifFormBase form, BindingResult result,
164 HttpServletRequest request, HttpServletResponse response) {
165
166 if (form.getPageId().equals("Demo-ValidationLayout-SectionsPageSectionMessages")) {
167 GlobalVariables.getMessageMap().putError("Demo-ValidationLayout-Section1", "errorSectionTest");
168 GlobalVariables.getMessageMap().putError("Demo-ValidationLayout-Section2", "errorSectionTest");
169 } else if (form.getPageId().equals("Demo-ValidationLayout-SectionsPageUnmatched")) {
170 GlobalVariables.getMessageMap().putError("badKey", "unmatchedTest");
171 } else if (form.getPageId().equals("Demo-ValidationLayout-SubSectionsPage")) {
172 GlobalVariables.getMessageMap().putError("Uif-ValidationLayout-SubGroup", "errorSectionTest");
173 }
174
175 if (form.getViewPostMetadata().getId().equals("RichMessagesView")) {
176 GlobalVariables.getMessageMap().putError("Demo-BasicMessagesSection", "richValidationMessageTest");
177 GlobalVariables.getMessageMap().putError("field5", "richValidationMessageTest2");
178 }
179
180 Set<String> inputFieldIds = form.getViewPostMetadata().getInputFieldIds();
181 for (String id : inputFieldIds) {
182 if (form.getViewPostMetadata().getComponentPostData(id, UifConstants.PostMetadata.PATH) != null) {
183 String key = (String) form.getViewPostMetadata().getComponentPostData(id,
184 UifConstants.PostMetadata.PATH);
185 GlobalVariables.getMessageMap().putError(key, "error1Test");
186 }
187 }
188
189 return getUIFModelAndView(form);
190 }
191
192 /**
193 * Adds warnings to fields defined in the validationMessageFields array
194 */
195 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=addWarnings")
196 public ModelAndView addWarnings(@ModelAttribute("KualiForm") UifFormBase form, BindingResult result,
197 HttpServletRequest request, HttpServletResponse response) {
198
199 if (form.getPageId().equals("Demo-ValidationLayout-SectionsPageSectionMessages")) {
200 GlobalVariables.getMessageMap().putWarning("Demo-ValidationLayout-Section1", "warningSectionTest");
201 GlobalVariables.getMessageMap().putWarning("Demo-ValidationLayout-Section2", "warningSectionTest");
202 } else if (form.getPageId().equals("Demo-ValidationLayout-SectionsPageUnmatched")) {
203 GlobalVariables.getMessageMap().putWarning("badKey", "unmatchedTest");
204 }
205
206 Set<String> inputFieldIds = form.getViewPostMetadata().getInputFieldIds();
207 for (String id : inputFieldIds) {
208 if (form.getViewPostMetadata().getComponentPostData(id, UifConstants.PostMetadata.PATH) != null) {
209 String key = (String) form.getViewPostMetadata().getComponentPostData(id,
210 UifConstants.PostMetadata.PATH);
211 GlobalVariables.getMessageMap().putWarning(key, "warning1Test");
212 }
213 }
214
215 return getUIFModelAndView(form);
216 }
217
218 /**
219 * Adds infos to fields defined in the validationMessageFields array
220 */
221 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=addInfo")
222 public ModelAndView addInfo(@ModelAttribute("KualiForm") UifFormBase form, BindingResult result,
223 HttpServletRequest request, HttpServletResponse response) {
224
225 if (form.getPageId().equals("Demo-ValidationLayout-SectionsPageSectionMessages")) {
226 GlobalVariables.getMessageMap().putInfo("Demo-ValidationLayout-Section1", "infoSectionTest");
227 GlobalVariables.getMessageMap().putInfo("Demo-ValidationLayout-Section2", "infoSectionTest");
228 } else if (form.getPageId().equals("Demo-ValidationLayout-SectionsPageUnmatched")) {
229 GlobalVariables.getMessageMap().putInfo("badKey", "unmatchedTest");
230 }
231
232 Set<String> inputFieldIds = form.getViewPostMetadata().getInputFieldIds();
233 for (String id : inputFieldIds) {
234 if (form.getViewPostMetadata().getComponentPostData(id, UifConstants.PostMetadata.PATH) != null) {
235 String key = (String) form.getViewPostMetadata().getComponentPostData(id,
236 UifConstants.PostMetadata.PATH);
237 GlobalVariables.getMessageMap().putInfo(key, "info1Test");
238 }
239 }
240
241 return getUIFModelAndView(form);
242 }
243
244 /**
245 * Adds all message types to fields defined in the validationMessageFields array
246 */
247 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=addAllMessages")
248 public ModelAndView addAllMessages(@ModelAttribute("KualiForm") UifFormBase form, BindingResult result,
249 HttpServletRequest request, HttpServletResponse response) {
250
251 this.addErrors(form, result, request, response);
252 this.addWarnings(form, result, request, response);
253 this.addInfo(form, result, request, response);
254
255 return getUIFModelAndView(form);
256 }
257
258 /**
259 * Adds error and warning messages to fields defined in the validationMessageFields array
260 */
261 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=addErrorWarnMessages")
262 public ModelAndView addErrorWarnMessages(@ModelAttribute("KualiForm") UifFormBase form, BindingResult result,
263 HttpServletRequest request, HttpServletResponse response) {
264
265 this.addErrors(form, result, request, response);
266 this.addWarnings(form, result, request, response);
267
268 return getUIFModelAndView(form);
269 }
270
271 /**
272 * Adds error and info messages to fields defined in the validationMessageFields array
273 */
274 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=addErrorInfoMessages")
275 public ModelAndView addErrorInfoMessages(@ModelAttribute("KualiForm") UifFormBase form, BindingResult result,
276 HttpServletRequest request, HttpServletResponse response) {
277
278 this.addErrors(form, result, request, response);
279 this.addInfo(form, result, request, response);
280
281 return getUIFModelAndView(form);
282 }
283
284 /**
285 * Adds only 1 error message for testing
286 */
287 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=addSingleErrorMessage")
288 public ModelAndView addSingleErrorMessage(@ModelAttribute("KualiForm") UifFormBase form, BindingResult result,
289 HttpServletRequest request, HttpServletResponse response) {
290
291 if (form.getPageId().equals("Demo-ValidationLayout-SubSectionsPage")) {
292 GlobalVariables.getMessageMap().putError("Uif-ValidationLayout-SubGroup", "errorSectionTest");
293 } else {
294 GlobalVariables.getMessageMap().putError("Demo-ValidationLayout-Section1", "errorSectionTest");
295 }
296
297 return getUIFModelAndView(form);
298 }
299
300 /**
301 * Adds warning and info messages to fields defined in the validationMessageFields array
302 */
303 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=addWarnInfoMessages")
304 public ModelAndView addWarnInfoMessages(@ModelAttribute("KualiForm") UifFormBase form, BindingResult result,
305 HttpServletRequest request, HttpServletResponse response) {
306
307 this.addWarnings(form, result, request, response);
308 this.addInfo(form, result, request, response);
309
310 return getUIFModelAndView(form);
311 }
312
313 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=gotoState2")
314 public ModelAndView gotoState2(@ModelAttribute("KualiForm") UifFormBase form, BindingResult result,
315 HttpServletRequest request, HttpServletResponse response) {
316
317 KRADServiceLocatorWeb.getViewValidationService().validateView(form, "state2");
318 if (!GlobalVariables.getMessageMap().hasErrors()) {
319 form.setState("state2");
320 }
321
322 return getUIFModelAndView(form);
323 }
324
325 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=gotoState3")
326 public ModelAndView gotoState3(@ModelAttribute("KualiForm") UifFormBase form, BindingResult result,
327 HttpServletRequest request, HttpServletResponse response) {
328
329 KRADServiceLocatorWeb.getViewValidationService().validateView(form, "state3");
330 if (!GlobalVariables.getMessageMap().hasErrors()) {
331 form.setState("state3");
332 }
333
334 return getUIFModelAndView(form);
335 }
336
337 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=gotoState4")
338 public ModelAndView gotoState4(@ModelAttribute("KualiForm") UifFormBase form, BindingResult result,
339 HttpServletRequest request, HttpServletResponse response) {
340
341 KRADServiceLocatorWeb.getViewValidationService().validateView(form, "state4");
342 if (!GlobalVariables.getMessageMap().hasErrors()) {
343 form.setState("state4");
344 }
345
346 return getUIFModelAndView(form);
347 }
348
349 /**
350 * Generates a fake incident report to test for errorCallback
351 *
352 * @param form
353 * @param result
354 * @param request
355 * @param response
356 * @return ModelAndView model and view
357 */
358 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=errorCheck")
359 public ModelAndView errorCheck(@ModelAttribute("KualiForm") UifFormBase form, BindingResult result,
360 HttpServletRequest request, HttpServletResponse response) {
361
362 if (true) {
363 throw new RuntimeException("Generate fake incident report");
364 }
365
366 return getUIFModelAndView(form);
367 }
368
369 /**
370 * Test controller method to check for ajax redirect functionality. Redirects to the portal main page
371 *
372 * @param form
373 * @param result
374 * @param request
375 * @param response
376 * @return ModelAndView model and view
377 */
378 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=redirectCheck")
379 public ModelAndView redirectCheck(@ModelAttribute("KualiForm") UifFormBase form, BindingResult result,
380 HttpServletRequest request, HttpServletResponse response) {
381 Properties props = new Properties();
382 props.put(UifParameters.VIEW_ID, form.getViewId());
383 props.put(UifParameters.FORM_KEY, form.getFormKey());
384 return performRedirect(form, "http://localhost:8080/kr-dev", props);
385 }
386
387 @Override
388 public ModelAndView addLine(@ModelAttribute("KualiForm") UifFormBase uifForm, BindingResult result,
389 HttpServletRequest request, HttpServletResponse response) {
390 GlobalVariables.getMessageMap().addGrowlMessage("Greetings!", "kitchenSink.welcome");
391 if (uifForm.getPageId().equals("Demo-ValidationLayout-CollectionsErrorPage")) {
392 GlobalVariables.getMessageMap().putError("Demo-ValidationLayout-CollectionErrorSection",
393 "errorSectionTest");
394 GlobalVariables.getMessageMap().putErrorForSectionId("Demo-ValidationLayout-CollectionErrorSection",
395 "errorSectionTest");
396 }
397 return super.addLine(uifForm, result, request, response);
398 }
399
400 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=customLineAction")
401 public ModelAndView customLineAction(@ModelAttribute("KualiForm") UifFormBase uifForm, BindingResult result,
402 HttpServletRequest request, HttpServletResponse response) {
403
404 String actionParm1 = uifForm.getActionParamaterValue("field1");
405 String actionParm2 = uifForm.getActionParamaterValue("field2");
406
407 GlobalVariables.getMessageMap().addGrowlMessage("Action Parameters", "actionParms.message", actionParm1,
408 actionParm2);
409
410 return super.deleteLine(uifForm, result, request, response);
411 }
412
413 /**
414 * Performs custom line action for collection 4 in kitchen sink collection demo.
415 * Just puts out a growl message and returns.
416 *
417 * @param uifForm
418 * @param result
419 * @param request
420 * @param response
421 * @return
422 */
423 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=updateOfficial")
424 public ModelAndView updateOfficial(@ModelAttribute("KualiForm") UifFormBase uifForm, BindingResult result,
425 HttpServletRequest request, HttpServletResponse response) {
426
427 String actionParm1 = uifForm.getActionParamaterValue("field1");
428
429 GlobalVariables.getMessageMap().addGrowlMessage("Action Parameters", "customLineAction.message", actionParm1);
430
431 return getUIFModelAndView(uifForm);
432 }
433
434 /**
435 * Changes the view to readOnly and returns.
436 *
437 * @param uifForm
438 * @param result
439 * @param request
440 * @param response
441 * @return readOnly View
442 */
443 @RequestMapping(method = RequestMethod.POST, params = "methodToCall=makeReadOnly")
444 public ModelAndView makeReadOnly(@ModelAttribute("KualiForm") UifFormBase uifForm, BindingResult result,
445 HttpServletRequest request, HttpServletResponse response) {
446 //set View to readOnly
447 uifForm.getView().setReadOnly(true);
448 return getUIFModelAndView(uifForm);
449 }
450 }