1 16 package com.blandware.atleap.webapp.taglib.core.grid; 17 18 import com.blandware.atleap.webapp.struts.ContentTilesRequestProcessor; 19 import com.blandware.atleap.webapp.taglib.core.grid.util.Grid; 20 import com.blandware.atleap.webapp.taglib.core.grid.util.SortField; 21 import com.blandware.atleap.webapp.taglib.core.util.TaglibConstants; 22 import com.blandware.atleap.webapp.util.core.RequestUtil; 23 import org.apache.commons.logging.Log; 24 import org.apache.commons.logging.LogFactory; 25 26 import javax.servlet.http.HttpServletRequest ; 27 import javax.servlet.http.HttpSession ; 28 import javax.servlet.jsp.JspException ; 29 import javax.servlet.jsp.PageContext ; 30 import javax.servlet.jsp.tagext.JspFragment ; 31 import javax.servlet.jsp.tagext.SimpleTagSupport ; 32 import java.io.IOException ; 33 import java.util.Collections ; 34 import java.util.HashMap ; 35 import java.util.Map ; 36 37 93 public class GridTag extends SimpleTagSupport { 94 95 protected transient final Log log = LogFactory.getLog(GridTag.class); 96 97 104 protected String name; 105 106 112 protected String pageUrl; 113 114 117 protected Map parameterMap; 118 119 122 protected Integer pageSize = new Integer (1000); 123 124 127 protected Integer currentPageNumber = new Integer (1); 128 129 132 protected Grid grid = null; 133 134 144 public String getName() { 145 return name; 146 } 147 148 154 public void setName(String name) { 155 this.name = name; 156 } 157 158 168 public String getPageUrl() { 169 return pageUrl; 170 } 171 172 178 public void setPageUrl(String pageUrl) { 179 this.pageUrl = pageUrl; 180 } 181 182 187 public Map getParameterMap() { 188 return parameterMap; 189 } 190 191 201 public Integer getPageSize() { 202 return pageSize; 203 } 204 205 211 public void setPageSize(Integer pageSize) { 212 this.pageSize = pageSize; 213 } 214 215 221 public Integer getCurrentPageNumber() { 222 return currentPageNumber; 223 } 224 225 231 public void setCurrentPageNumber(Integer currentPageNumber) { 232 this.currentPageNumber = currentPageNumber; 233 } 234 235 240 protected Grid getGrid() { 241 return grid; 242 } 243 244 250 public void doTag() throws JspException , IOException { 251 252 PageContext pageContext = (PageContext ) getJspContext(); 253 254 256 if ( name == null ) { 257 name = ((HttpServletRequest ) pageContext.getRequest()).getRequestURI(); 258 } 259 260 262 HttpServletRequest request = (HttpServletRequest ) pageContext.getRequest(); 263 String queryString = new String (); 264 if ( pageUrl == null ) { 265 pageUrl = (String ) request.getAttribute(ContentTilesRequestProcessor.PROCESSED_URL); 266 } 267 int k = pageUrl.indexOf('?'); 268 if ( k != -1 ) { 269 queryString = pageUrl.substring(k + 1); 270 pageUrl = pageUrl.substring(0, k); 271 } 272 273 if ( queryString == null ) { 274 queryString = new String (); 275 } 276 277 parameterMap = RequestUtil.getRequestParametersFromString(queryString); 278 279 281 HttpSession session = pageContext.getSession(); 282 Map grids = (Map ) session.getAttribute(TaglibConstants.GRIDS); 283 if ( grids == null ) { 284 grids = Collections.synchronizedMap(new HashMap ()); 285 session.setAttribute(TaglibConstants.GRIDS, grids); 286 } 287 288 289 grid = (Grid) grids.get(this.name); 290 291 if ( grid == null ) { 293 grid = new Grid(this.name); 294 } 295 296 grid.setTotal(new Integer (0)); 297 298 if ( request.getParameter("gridName") != null && request.getParameter("gridName").equalsIgnoreCase(this.name) ) { 300 if ( request.getParameter("sortField") != null ) { 301 String fieldName = request.getParameter("sortField"); 302 SortField sortField = grid.getSortFieldByFieldName(fieldName); 303 if ( sortField != null ) { 304 sortField.reverseOrder(); 305 } else { 306 sortField = new SortField(fieldName); 307 } 308 String rowIteratorsParam = new String (); 309 if ( request.getParameter("rowIterators") != null ) { 310 rowIteratorsParam = request.getParameter("rowIterators"); 311 } 312 String [] rowIterators = rowIteratorsParam.split(","); 313 for ( int i = 0; i < rowIterators.length; i++ ) { 314 sortField.addRowIterator(rowIterators[i].trim()); 315 } 316 String property = request.getParameter("property"); 317 if ( property != null && property.trim().length() > 0 ) { 318 sortField.setProperty(property); 319 } 320 grid.addSortField(sortField); 321 } 322 323 if ( request.getParameter("pageNumber") != null ) { 324 currentPageNumber = new Integer (Integer.parseInt(request.getParameter("pageNumber"))); 325 } 326 327 if ( request.getParameter("clearAllFilters") != null && request.getParameter("clearAllFilters").equalsIgnoreCase("true") ) { 328 grid.clearFilters(); 329 } 330 331 if ( request.getParameter("clearFilter") != null ) { 332 String fieldName = request.getParameter("clearFilter"); 333 grid.removeFilter(fieldName); 334 } 335 } 336 337 grid.setPageSize(pageSize); 338 339 JspFragment body = getJspBody(); 340 if ( body != null ) { 341 body.invoke(null); 342 } 343 344 grids.put(this.name, grid); 346 session.setAttribute(TaglibConstants.GRIDS, grids); 347 } 348 349 } 350 | Popular Tags |