1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.kuali.rice.krad.web.controller;
17
18 import java.util.Map;
19
20 import javax.servlet.http.HttpServletRequest;
21 import javax.servlet.http.HttpServletResponse;
22
23 import org.apache.commons.lang.StringUtils;
24 import org.apache.log4j.Logger;
25 import org.kuali.rice.core.api.CoreApiServiceLocator;
26 import org.kuali.rice.krad.service.KRADServiceLocatorWeb;
27 import org.kuali.rice.krad.uif.UifConstants;
28 import org.kuali.rice.krad.uif.UifParameters;
29 import org.kuali.rice.krad.uif.component.Component;
30 import org.kuali.rice.krad.uif.lifecycle.ViewLifecycle;
31 import org.kuali.rice.krad.uif.lifecycle.ViewPostMetadata;
32 import org.kuali.rice.krad.uif.service.ViewService;
33 import org.kuali.rice.krad.uif.util.UifRenderHelperMethods;
34 import org.kuali.rice.krad.uif.view.View;
35 import org.kuali.rice.krad.util.KRADConstants;
36 import org.kuali.rice.krad.util.KRADUtils;
37 import org.kuali.rice.krad.web.form.UifFormBase;
38 import org.springframework.web.servlet.ModelAndView;
39
40
41
42
43
44
45
46
47 public class UifControllerHelper {
48 private static final Logger LOG = Logger.getLogger(UifControllerHelper.class);
49
50 private UifControllerHelper() {}
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69 public static String getViewIdFromRequest(HttpServletRequest request) {
70 String viewId = request.getParameter(UifParameters.VIEW_ID);
71
72 if (StringUtils.isBlank(viewId)) {
73 String viewTypeName = request.getParameter(UifParameters.VIEW_TYPE_NAME);
74
75 UifConstants.ViewType viewType = null;
76 if (StringUtils.isNotBlank(viewTypeName)) {
77 viewType = UifConstants.ViewType.valueOf(viewTypeName);
78 }
79
80 if (viewType != null) {
81 @SuppressWarnings("unchecked") Map<String, String> parameterMap =
82 KRADUtils.translateRequestParameterMap(request.getParameterMap());
83 viewId = getViewService().getViewIdForViewType(viewType, parameterMap);
84 }
85 }
86
87 if (StringUtils.isNotBlank(viewId)) {
88 request.setAttribute(UifParameters.VIEW_ID, viewId);
89 }
90
91 return viewId;
92 }
93
94
95
96
97
98
99
100
101
102
103 public static ModelAndView getUIFModelAndView(UifFormBase form, String pageId) {
104 if (StringUtils.isNotBlank(pageId)) {
105 form.setPageId(pageId);
106 }
107
108
109 ModelAndView modelAndView = new ModelAndView();
110 modelAndView.addObject(UifConstants.DEFAULT_MODEL_NAME, form);
111 modelAndView.setViewName(UifConstants.SPRING_VIEW_ID);
112
113 return modelAndView;
114 }
115
116
117
118
119
120
121
122
123
124
125
126 public static void postControllerHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
127 ModelAndView modelAndView) throws Exception {
128 if (modelAndView == null) {
129 return;
130 }
131
132 Object model = modelAndView.getModelMap().get(UifConstants.DEFAULT_MODEL_NAME);
133 if (!(model instanceof UifFormBase)) {
134 return;
135 }
136
137 UifFormBase form = (UifFormBase) model;
138
139 if (!form.isRequestRedirected()) {
140 prepareViewForRendering(request, response, form);
141 }
142
143
144 modelAndView.addObject(UifParameters.REQUEST, request);
145 modelAndView.addObject(KRADConstants.USER_SESSION_KEY, request.getSession().getAttribute(
146 KRADConstants.USER_SESSION_KEY));
147
148 Map<String, String> properties = CoreApiServiceLocator.getKualiConfigurationService().getAllProperties();
149 modelAndView.addObject(UifParameters.CONFIG_PROPERTIES, properties);
150
151 modelAndView.addObject(UifParameters.RENDER_HELPER_METHODS, new UifRenderHelperMethods());
152 }
153
154
155
156
157
158
159
160
161 public static void prepareViewForRendering(HttpServletRequest request, HttpServletResponse response,
162 UifFormBase form) {
163
164 if (form.isUpdateComponentRequest() || form.isUpdateDialogRequest() || (form.isJsonRequest() && StringUtils
165 .isNotBlank(form.getUpdateComponentId()))) {
166 String refreshComponentId = form.getUpdateComponentId();
167
168 Component updateComponent = ViewLifecycle.performComponentLifecycle(form.getView(), form, request, response,
169 form.getViewPostMetadata(), refreshComponentId);
170 form.setUpdateComponent(updateComponent);
171 } else {
172
173 View view = form.getView();
174 if (view != null) {
175 Map<String, String> parameterMap = KRADUtils.translateRequestParameterMap(request.getParameterMap());
176 parameterMap.putAll(form.getViewRequestParameters());
177
178
179 ViewPostMetadata postMetadata = ViewLifecycle.buildView(view, form, request, response, parameterMap);
180 form.setViewPostMetadata(postMetadata);
181
182 if (form.isUpdatePageRequest()) {
183 Component updateComponent = form.getView().getCurrentPage();
184 form.setUpdateComponent(updateComponent);
185 }
186
187
188 form.setPageId(view.getCurrentPageId());
189 } else {
190 LOG.warn("View in form was null: " + form);
191 }
192 }
193 }
194
195 protected static ViewService getViewService() {
196 return KRADServiceLocatorWeb.getViewService();
197 }
198
199 }