1 package org.jahia.clipbuilder.html.struts; 2 3 import org.jahia.clipbuilder.html.struts.Util.*; 4 import org.apache.struts.action.*; 5 import javax.servlet.http.*; 6 import java.util.*; 7 import org.jahia.clipbuilder.html.bean.*; 8 9 import org.apache.struts.action.*; 10 import org.jahia.clipbuilder.html.struts.Util.*; 11 import javax.servlet.http.*; 12 import org.jahia.clipbuilder.html.bean.*; 13 import java.util.*; 14 import org.jahia.clipbuilder.html.web.Constant.WebConstants; 15 import org.jahia.clipbuilder.html.SessionManager; 16 import org.jahia.clipbuilder.html.struts.webBrowser.*; 17 import org.jahia.clipbuilder.html.struts.webBrowser.*; 18 import org.jahia.clipbuilder.html.RequestParameterManager; 19 20 25 public class TestClipperAction extends AbstractWizardAction { 26 private static org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger(TestClipperAction.class); 27 28 29 34 public Map getKeyMethodMap() { 35 Map map = super.getKeyMethodMap(); 36 map.put("testClipper.view.change", "changeView"); 37 map.put("testClipper.button.go", "go"); 38 return map; 39 } 40 41 42 47 public int getFormId() { 48 return Constants.TEST; 49 } 50 51 52 61 public ActionForward init(ActionMapping actionMapping, ActionForm actionForm, 62 HttpServletRequest request, 63 HttpServletResponse response) { 64 try { 65 logger.debug("[ Init ]"); 66 TestClipperForm form = (TestClipperForm) actionForm; 68 69 removeBeanForm(request, Constants.PREVIEW); 71 SessionManager.removeHTMLDocumentBuilder(request); 72 73 WebBrowserForm wbf = SessionManager.getWebBrowserForm(request); 75 if (wbf != null) { 76 wbf = new WebBrowserForm(); 77 SessionManager.setWebBrowserForm(request, wbf); 78 } 79 else { 80 SessionManager.setWebBrowserForm(request, new WebBrowserForm()); 81 } 82 83 activateParamsList(form, request); 85 } 86 catch (Exception ex) { 87 ex.printStackTrace(); 88 } 89 90 return actionMapping.getInputForward(); 91 } 92 93 94 104 public ActionForward changeView(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception { 105 try { 106 logger.debug("[ changeView ]"); 107 108 TestClipperForm form = (TestClipperForm) actionForm; 109 110 int posUrl = Integer.parseInt(form.getOldSelectedUrl()); 112 UrlBean uBean = SessionManager.getClipperBean(httpServletRequest).getUrlBean(posUrl); 113 if (uBean == null) { 114 logger.debug("[ Last url ]"); 115 } 116 else { 117 updateQueryParamsValue(httpServletRequest, uBean); 118 } 119 form.setOldSelectedUrl(form.getSelectedUrl()); 120 121 activateParamsList(form, httpServletRequest); 123 } 124 catch (NumberFormatException ex) { 125 ex.printStackTrace(); 126 } 127 catch (Exception ex) { 128 ex.printStackTrace(); 129 } 130 finally { 131 return actionMapping.getInputForward(); 132 } 133 134 } 135 136 137 147 public ActionForward go(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest request, HttpServletResponse httpServletResponse) throws Exception { 148 logger.debug("[ DOVIEW ] new Session"); 149 TestClipperForm form = (TestClipperForm) actionForm; 150 151 try { 152 String resetCache = request.getParameter("resetCache"); 154 form.setResetCache(resetCache); 155 if (resetCache != null && resetCache.equalsIgnoreCase("true")) { 156 String nameSpace = RequestParameterManager.getNameSpace(request); 157 String remoteUser = request.getRemoteUser(); 158 ClipperBean cBean = SessionManager.getClipperBean(request); 159 WebBrowserAction.removeObjectFromCache(nameSpace, remoteUser, cBean); 160 } 161 162 String url = form.getSelectedUrl(); 163 int posUrl = Integer.parseInt(url); 164 updateQueryParamsValue(request, SessionManager.getClipperBean(request).getUrlBean(posUrl)); 165 166 if (checkUserQueryParameters(request)) { 168 return actionMapping.getInputForward(); 169 } 170 171 SessionManager.getWebBrowserForm(request).setWebBrowserSimulatorMode(form.getWebBrowserSimulatorMode()); 173 174 } 175 catch (Exception ex) { 176 ex.printStackTrace(); 177 } 178 logger.debug("[ Go to preview ]"); 179 return actionMapping.findForward("previewTest"); 180 } 181 182 183 189 private boolean checkUserQueryParameters(HttpServletRequest request) { 190 boolean foundErros = false; 191 ActionErrors errors = new ActionErrors(); 192 ClipperBean cBean = SessionManager.getClipperBean(request); 193 List urlBeanList = cBean.getUrlListBean(); 194 195 for (int i = 0; i < urlBeanList.size(); i++) { 197 List queryParamBeanList = cBean.getAllQueryParam(i); 198 199 for (int j = 0; j < queryParamBeanList.size(); j++) { 201 QueryParamBean currentQueryBean = (QueryParamBean) queryParamBeanList.get(j); 202 203 if (currentQueryBean.getDefaultValue() == null) { 204 UrlBean uBean = (UrlBean) cBean.getUrlBean(i); 206 String urlMessage[] = {"URL: " + uBean.getPosition() + ":" + uBean.getAbsoluteURL()}; 207 ActionError urlActionMessage = new ActionError("test.param.urlMessage", urlMessage); 208 errors.add("test.param.urlMessage", urlActionMessage); 209 210 String [] queryParamMessage = {"Parameter :" + currentQueryBean.getName()}; 211 ActionError queryParamActionMessage = new ActionError("test.param.urlMessage", queryParamMessage); 212 errors.add("test.param.urlMessage", queryParamActionMessage); 213 214 foundErros = true; 216 } 217 } 218 } 219 220 saveErrors(request, errors); 222 return foundErros; 223 } 224 225 226 232 private void updateQueryParamsValue(HttpServletRequest request, UrlBean uBean) { 233 logger.debug("[ Set query param ]"); 234 Map queryParamDefaultValue = buildQueryMap(request, uBean); 235 236 UrlBean nextUrlBean = SessionManager.getClipperBean(request).getNextRecordedUrlBean(uBean); 238 if (nextUrlBean != null) { 240 List queryParamBeanList = nextUrlBean.getQueryParamBeanList(); 241 logger.debug("[ Query param size: " + queryParamBeanList.size() + " ]"); 242 for (int i = 0; i < queryParamBeanList.size(); i++) { 243 QueryParamBean qBean = (QueryParamBean) queryParamBeanList.get(i); 244 String value = (String ) queryParamDefaultValue.get(qBean.getName()); 245 if (value != null) { 247 qBean.setDefaultValue(value); 248 logger.debug("[ Query param " + qBean.getName() + " is set whith value " + value + " ]"); 249 } 250 else { 251 logger.error("[ No value found for Query param " + qBean.getName() + ".]"); 252 } 253 } 254 } 255 } 256 257 258 259 266 private Map buildQueryMap(HttpServletRequest request, UrlBean uBean) { 267 Map queryParamDefaultValue = new TreeMap(); 268 Map params = getParam(request); 269 String [] values = ((String []) params.get("usedValue")); 271 if (values == null) { 272 return queryParamDefaultValue; 273 } 274 logger.debug("[ URL: " + uBean.getAbsoluteUrlValue() + " ]"); 275 logger.debug("[ Request param size " + values.length + " ]"); 276 logger.debug("[ Form param size " + uBean.getFormParamBeanList().size() + " ]"); 277 for (int j = 0; j < values.length; j++) { 278 logger.debug("[ Looking for param at position " + j + " ]"); 279 FormParamBean fBean = (FormParamBean) uBean.getFormParamBeanList().get(j); 281 String name = fBean.getName(); 282 logger.debug("[ Param found whith name " + name + " ]"); 283 String paramValues = values[j]; 285 queryParamDefaultValue.put(name, paramValues); 287 } 288 return queryParamDefaultValue; 289 } 290 291 292 299 private void activateParamsList(TestClipperForm form, HttpServletRequest request) throws Exception { 300 ClipperBean bean = SessionManager.getClipperBean(request); 301 302 logger.debug("[ Url list size == " + bean.getUrlListBean().size() + " ]"); 303 304 String position = form.getSelectedUrl(); 305 306 if (position == null) { 308 position = "0"; 310 form.setOldSelectedUrl(position); 311 form.setSelectedUrl(position); 312 logger.debug("[ First url selected autommatically]"); 313 } 314 315 int posUrl = Integer.parseInt(position); 317 List fList = bean.getAllFormParam(posUrl); 318 if (fList.isEmpty()) { 319 logger.debug("[ Form Param list is empty ]"); 320 } 321 for (int i = 0; i < fList.size(); i++) { 322 logger.debug(" [ Form Param value " + fList.get(i) + " ] "); 323 } 324 form.setActifFormParamsList(fList); 325 logger.debug("[ Actif Parameters List is set from first url at position " + posUrl + " ]"); 326 327 List qList = bean.getAllQueryParam(posUrl); 329 if (qList.isEmpty()) { 330 logger.debug("[ Query param list is empty ]"); 331 } 332 333 form.setActifQueryParamsList(qList); 334 335 } 336 337 } 338 | Popular Tags |