1 16 package com.blandware.atleap.webapp.action.core.grid; 17 18 import com.blandware.atleap.common.util.ConvertUtil; 19 import com.blandware.atleap.webapp.form.core.SetFilterForm; 20 import com.blandware.atleap.webapp.taglib.core.grid.util.FilterConditions; 21 import com.blandware.atleap.webapp.taglib.core.grid.util.Grid; 22 import com.blandware.atleap.webapp.taglib.core.grid.util.SetFilter; 23 import com.blandware.atleap.webapp.taglib.core.util.TaglibConstants; 24 import org.apache.struts.action.ActionForm; 25 import org.apache.struts.action.ActionForward; 26 import org.apache.struts.action.ActionMapping; 27 28 import javax.servlet.http.HttpServletRequest ; 29 import javax.servlet.http.HttpServletResponse ; 30 import javax.servlet.http.HttpSession ; 31 import java.util.HashMap ; 32 import java.util.Map ; 33 34 52 public final class SetFilterAction extends com.blandware.atleap.webapp.action.core.grid.BaseGridAction { 53 54 63 public ActionForward execute(ActionMapping mapping, ActionForm form, 64 HttpServletRequest request, HttpServletResponse response) { 65 66 67 HttpSession session = request.getSession(); 68 SetFilterForm setFilterForm = (SetFilterForm) form; 69 String fieldName = setFilterForm.getFieldName(); 70 String rowIterators = setFilterForm.getRowIterators(); 71 String gridName = setFilterForm.getGridName(); 72 Grid grid = getGridByName(gridName, session); 73 74 if ( grid == null ) { 75 if ( log.isErrorEnabled() ) { 76 String errorMessage = "No grid with name " + gridName + " could be found in session"; 77 log.error(errorMessage); 78 } 79 return mapping.findForward("filterError"); 80 } 81 82 SetFilter filter = new SetFilter(fieldName); 83 filter.setRowIterators(ConvertUtil.convertStringToList(rowIterators, ",", true)); 84 filter.setAvailableElements((Map ) session.getAttribute(SetFilter.AVAILABLE_ELEMENTS)); 85 86 89 if ( setFilterForm.getClearFilter() != null || (setFilterForm.getSelectedElements().size() == 0 && !setFilterForm.getFirstCondition().equalsIgnoreCase(FilterConditions.OBJECT_IS_NULL) && !setFilterForm.getFirstCondition().equalsIgnoreCase(FilterConditions.OBJECT_IS_NOT_NULL)) ) { 90 grid.removeFilter(filter); 91 if ( log.isDebugEnabled() ) { 92 log.debug("Filter for field '" + fieldName + "' was removed from grid"); 93 } 94 } else { 95 String firstCondition = setFilterForm.getFirstCondition(); 96 if ( !firstCondition.equalsIgnoreCase(FilterConditions.OBJECT_IS_NULL) && !firstCondition.equalsIgnoreCase(FilterConditions.OBJECT_IS_NOT_NULL) ) { 97 filter.setSelectedElements(setFilterForm.getSelectedElements()); 98 } else { 99 filter.setSelectedElements(new HashMap ()); 100 } 101 filter.createFirstClause(setFilterForm.getFirstCondition()); 102 grid.addFilter(filter); 103 if ( log.isDebugEnabled() ) { 104 log.debug("New SetFilter added to grid '" + gridName + "' for field '" + fieldName + "'. Clause is: " + filter.getClause()); 105 } 106 } 107 108 saveGrid(grid, session); 109 request.setAttribute(TaglibConstants.PAGE_URL, setFilterForm.getPageUrl()); 110 return mapping.findForward("filterReturn"); 111 } 112 } | Popular Tags |