1 package org.jahia.clipbuilder.html.struts; 2 3 import java.util.*; 4 5 import javax.servlet.http.*; 6 7 import org.jahia.clipbuilder.html.*; 8 import org.jahia.clipbuilder.html.bean.*; 9 import org.jahia.clipbuilder.html.struts.Util.*; 10 import org.jahia.clipbuilder.html.web.html.*; 11 import org.jahia.clipbuilder.html.web.html.Impl.ExtractorFilter.*; 12 import org.apache.struts.action.*; 13 14 15 20 public class SelectPartAction extends AbstractWizardAction { 21 private boolean errorHasOccured = false; 22 private static org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger(SelectPartAction.class); 23 24 25 30 public int getFormId() { 31 return Constants.SELECTPART; 32 } 33 34 35 40 public Map getKeyMethodMap() { 41 Map map = super.getKeyMethodMap(); 42 map.put("select.changeClippingMethod", "changeClippingMethod"); 43 map.put("wizard.selectPart", "view"); 44 map.put("edit.button.extract", "doExtract"); 45 map.put("edit.chew.preview", "chewPreview"); 46 map.put("select.editParams", "goToEditParams"); 47 map.put("edit.button.chew.cut", "chewCut"); 48 map.put("edit.button.chew.autoCut", "chewCut"); 49 50 map.put("edit.button.rules.config", "rulesConfig"); 51 52 return map; 53 } 54 55 56 65 public ActionForward view(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { 66 logger.debug("[ View ]"); 67 AbstractWizardForm form = (AbstractWizardForm) actionForm; 68 SessionManager.getWebBrowserForm(httpServletRequest).setShow(Constants.WEB_BROWSER_SHOW_LAST_DOCUMENT); 69 70 return actionMapping.getInputForward(); 71 } 72 73 74 75 84 public ActionForward doExtract(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest request, HttpServletResponse response) { 85 SelectPartForm selectPartForm = (SelectPartForm) actionForm; 86 ClipperBean bean = SessionManager.getClipperBean(request); 88 89 String selectedContent = selectPartForm.getSelectedContent(); 91 92 94 HTMLDocument doc = bean.getLastRecordedUrlBean().getDocument(); 96 97 ExtractorFilter filter = buildFilter(request,selectPartForm, selectedContent, doc); 99 100 logger.debug("[ Selected content is " + selectedContent + " ]"); 101 setClipperFilterBean(request, filter); 102 103 return actionMapping.findForward("preview"); 104 } 105 106 107 108 117 public ActionForward chewPreview(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest request, HttpServletResponse httpServletResponse) { 118 SelectPartForm selectPartForm = (SelectPartForm) actionForm; 119 HttpSession session = request.getSession(); 120 session.setAttribute(Constants.PREVIEW_FORM, new PreviewForm()); 122 123 String selectedContent = "view filter not available"; 125 selectPartForm.setSelectedContent(selectedContent); 126 127 ChewExtractorFilter filter = buildChewFilter(request, selectPartForm); 129 130 setClipperFilterBean(request, filter); 132 133 return actionMapping.findForward("preview"); 134 } 135 136 137 146 public ActionForward chewCut(ActionMapping mapping, ActionForm actionForm, HttpServletRequest request, HttpServletResponse response) { 147 logger.debug("[ Action = chew cut ]"); 148 SelectPartForm selectPartForm = (SelectPartForm) actionForm; 149 150 ChewExtractorFilter filter = new ChewExtractorFilter(); 152 filter.setTagNameKey(selectPartForm.getWebClippingTagName()); 153 setClipperFilterBean(request, filter); 154 155 boolean success = initTargetUrl(mapping, actionForm, request); 157 if (!success) { 158 return mapping.findForward("description"); 159 } 160 161 SessionManager.getWebBrowserForm(request).setShow(Constants.WEB_BROWSER_SHOW_CHEW); 162 163 return mapping.getInputForward(); 164 } 165 166 167 176 public ActionForward changeClippingMethod(ActionMapping actionMapping, 177 ActionForm actionForm, 178 HttpServletRequest 179 httpServletRequest, 180 HttpServletResponse 181 httpServletResponse) { 182 logger.debug("[change clippingMethod ]"); 183 SelectPartForm selectPartForm = (SelectPartForm) actionForm; 184 selectPartForm.getClippingMethod(); 185 186 SessionManager.getWebBrowserForm(httpServletRequest).setShow(Constants.WEB_BROWSER_SHOW_LAST_DOCUMENT); 191 192 return actionMapping.getInputForward(); 193 } 194 195 196 205 public ActionForward goToEditParams(ActionMapping actionMapping, 206 ActionForm actionForm, 207 HttpServletRequest httpServletRequest, 208 HttpServletResponse httpServletResponse) { 209 SelectPartForm selectPartForm = (SelectPartForm) actionForm; 210 return actionMapping.findForward("editParams"); 211 } 212 213 214 223 public ActionForward init(ActionMapping actionMapping, ActionForm actionForm, 224 HttpServletRequest httpServletRequest, 225 HttpServletResponse httpServletResponse) { 226 SelectPartForm selectPartForm = (SelectPartForm) actionForm; 227 super.init(actionMapping, actionForm, httpServletRequest, httpServletResponse); 228 SessionManager.getWebBrowserForm(httpServletRequest).setShow(Constants.WEB_BROWSER_SHOW_LAST_DOCUMENT); 229 230 logger.debug("[ Select part - Action = view ]"); 231 boolean success = initTargetUrl(actionMapping, actionForm, 232 httpServletRequest); 233 if (!success) { 234 return actionMapping.findForward("description"); 235 } 236 237 251 return actionMapping.getInputForward(); 252 } 253 254 255 261 private void setClipperFilterBean(HttpServletRequest request, ExtractorFilter filter) { 262 263 FilterBean filterBean = new FilterBean(); 265 filterBean.setKeyMap(filter.getKeyMap()); 266 filterBean.setMode(filter.getMode()); 267 filterBean.setName(filter.getName()); 268 SessionManager.getClipperBean(request).setFilterBean(filterBean); 269 } 270 271 272 280 private ExtractorFilter buildFilter(HttpServletRequest request,SelectPartForm selectPartForm, String selectedContent, HTMLDocument doc) { 281 ExtractorFilter filter = null; 282 logger.debug("[ Selected filter is: " + selectPartForm.getWebClippingTypeContent() + "]"); 283 String typeFilter = selectPartForm.getClippingMethod(); 284 String typeContent = selectPartForm.getWebClippingTypeContent(); 285 String enableCss = selectPartForm.getWebClippingShowCss(); 286 287 288 if (typeFilter.equalsIgnoreCase("0")) { 290 if (typeContent.equalsIgnoreCase("0")) { 291 filter = new StringTreeExtractorFilter(doc, selectedContent); 293 } 294 else if (typeContent.equalsIgnoreCase("1")) { 295 filter = new SimpleExtractorFilter(selectedContent); 297 } 298 } 299 else if (typeFilter.equalsIgnoreCase("1")) { 301 filter =this.buildChewFilter(request,selectPartForm); 302 } 303 else if (typeFilter.equalsIgnoreCase("3")) { 305 filter = new FormExtractorFilter(); 306 } 307 else if (typeFilter.equalsIgnoreCase("4")) { 309 filter = new XPathExtractorFilter(); 310 String xPath = selectPartForm.getWebClippingXPath(); 311 ((XPathExtractorFilter) filter).setXPahKey(xPath); 312 } 313 else if (typeFilter.equalsIgnoreCase("5")) { 315 filter = new FullWebPageExtractorFilter(); 316 } 317 318 else { 320 logger.error("[Unexpected value " + selectPartForm.getWebClippingTypeContent() + " ]"); 321 } 322 323 if (enableCss == null) { 325 filter.setMode(ExtractorFilter.MODE_WHITOUT_CSS); 326 } 327 else { 328 filter.setMode(ExtractorFilter.MODE_CSS); 329 } 330 331 332 return filter; 333 } 334 335 336 343 private ChewExtractorFilter buildChewFilter(HttpServletRequest request, SelectPartForm selectPartForm) { 344 ChewExtractorFilter filter = new ChewExtractorFilter(); 345 String hashKey = request.getParameter(ChewExtractorFilter.NAME_INPUT_PARAM); 347 String tagName = selectPartForm.getWebClippingTagName(); 348 String enableCss = selectPartForm.getWebClippingShowCss(); 349 if (enableCss == null) { 350 filter.setMode(ExtractorFilter.MODE_WHITOUT_CSS); 351 } 352 else { 353 filter.setMode(ExtractorFilter.MODE_CSS); 354 } 355 filter.setHashKey(hashKey); 356 filter.setTagNameKey(tagName); 357 logger.debug("Selected Element: " + hashKey); 358 return filter; 359 } 360 361 362 363 371 private boolean initTargetUrl(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest) { 372 SelectPartForm selectPartForm = (SelectPartForm) actionForm; 373 374 ClipperBean bean = SessionManager.getClipperBean(httpServletRequest); 376 377 if (bean == null) { 379 errorHasOccured = true; 380 logger.error("ClipperBean error: Not found"); 381 return false; 382 } 383 384 logger.debug("[Init targetUrl property]"); 386 String sourceUrl = bean.getLastRecordedUrlValue(); 387 logger.debug("[Last recorded url is " + sourceUrl + " ]"); 388 selectPartForm.setTargetUrl(sourceUrl); 389 return true; 390 } 391 392 } 393 | Popular Tags |