1 20 21 package com.jsptags.navigation.pager; 22 23 import javax.servlet.jsp.*; 24 import javax.servlet.jsp.tagext.*; 25 import com.jsptags.navigation.pager.parser.*; 26 27 public abstract class PageTagSupport extends PagerTagSupport { 28 29 private String export = null; 30 31 private PageTagExport pageTagExport = null; 32 private Object oldPageUrl = null; 33 private Object oldPageNumber = null; 34 private Object oldFirstItem = null; 35 private Object oldLastItem = null; 36 37 38 public final void setExport(String value) throws JspException { 39 if (export != value) { 40 try { 41 pageTagExport = TagExportParser.parsePageTagExport(value); 42 } catch (ParseException ex) { 43 throw new JspTagException(ex.getMessage()); 44 } 45 } 46 export = value; 47 } 48 49 public final String getExport() { 50 return export; 51 } 52 53 54 protected final void setPageAttributes(int page) { 55 if (pageTagExport == null) { 56 pageContext.setAttribute(PageTagExport.PAGE_URL, 57 pagerTag.getPageUrl(page)); 58 pageContext.setAttribute(PageTagExport.PAGE_NUMBER, 59 pagerTag.getPageNumber(page)); 60 } else { 61 String name; 62 63 if ((name = pageTagExport.getPageUrl()) != null) 64 pageContext.setAttribute(name, pagerTag.getPageUrl(page)); 65 66 if ((name = pageTagExport.getPageNumber()) != null) 67 pageContext.setAttribute(name, pagerTag.getPageNumber(page)); 68 69 int maxPageItems = pagerTag.getMaxPageItems(); 70 71 if ((name = pageTagExport.getFirstItem()) != null) { 72 int firstItem = (page * maxPageItems) + 1; 73 pageContext.setAttribute(name, new Integer (firstItem)); 74 } 75 76 if ((name = pageTagExport.getLastItem()) != null) { 77 int lastItem = Math.min((page + 1) * maxPageItems, 78 pagerTag.getItemCount()); 79 pageContext.setAttribute(name, new Integer (lastItem)); 80 } 81 } 82 } 83 84 protected final void setOffsetAttributes(int offset) { 85 if (pageTagExport == null) { 86 pageContext.setAttribute(PageTagExport.PAGE_URL, 87 pagerTag.getOffsetUrl(offset)); 88 pageContext.setAttribute(PageTagExport.PAGE_NUMBER, 89 pagerTag.getOffsetPageNumber(offset)); 90 } else { 91 String name; 92 93 if ((name = pageTagExport.getPageUrl()) != null) 94 pageContext.setAttribute(name, pagerTag.getOffsetUrl(offset)); 95 96 if ((name = pageTagExport.getPageNumber()) != null) 97 pageContext.setAttribute(name, 98 pagerTag.getOffsetPageNumber(offset)); 99 100 int maxPageItems = pagerTag.getMaxPageItems(); 101 102 if ((name = pageTagExport.getFirstItem()) != null) { 103 int firstItem = offset + 1; 104 pageContext.setAttribute(name, new Integer (firstItem)); 105 } 106 107 if ((name = pageTagExport.getLastItem()) != null) { 108 int lastItem = Math.min(offset + maxPageItems, 109 pagerTag.getItemCount()); 110 pageContext.setAttribute(name, new Integer (lastItem)); 111 } 112 } 113 } 114 115 116 protected final void removeAttributes() { 117 if (pageTagExport == null) { 118 pageContext.removeAttribute(PageTagExport.PAGE_URL); 119 pageContext.removeAttribute(PageTagExport.PAGE_NUMBER); 120 } else { 121 String name; 122 123 if ((name = pageTagExport.getPageUrl()) != null) 124 pageContext.removeAttribute(name); 125 126 if ((name = pageTagExport.getPageNumber()) != null) 127 pageContext.removeAttribute(name); 128 129 if ((name = pageTagExport.getFirstItem()) != null) 130 pageContext.removeAttribute(name); 131 132 if ((name = pageTagExport.getLastItem()) != null) 133 pageContext.removeAttribute(name); 134 } 135 } 136 137 public int doStartTag() throws JspException { 138 super.doStartTag(); 139 140 if (pageTagExport == null) { 141 oldPageUrl = pageContext.getAttribute(PageTagExport.PAGE_URL); 142 oldPageNumber = pageContext.getAttribute(PageTagExport.PAGE_NUMBER); 143 } else { 144 String name; 145 146 if ((name = pageTagExport.getPageUrl()) != null) 147 oldPageUrl = pageContext.getAttribute(name); 148 149 if ((name = pageTagExport.getPageNumber()) != null) 150 oldPageNumber = pageContext.getAttribute(name); 151 152 if ((name = pageTagExport.getFirstItem()) != null) 153 oldFirstItem = pageContext.getAttribute(name); 154 155 if ((name = pageTagExport.getLastItem()) != null) 156 oldLastItem = pageContext.getAttribute(name); 157 } 158 159 return EVAL_BODY_INCLUDE; 160 } 161 162 public int doEndTag() throws JspException { 163 164 if (pageTagExport == null) { 165 restoreAttribute(PageTagExport.PAGE_URL, oldPageUrl); 166 restoreAttribute(PageTagExport.PAGE_NUMBER, oldPageNumber); 167 oldPageUrl = null; 168 oldPageNumber = null; 169 } else { 170 String name; 171 172 if ((name = pageTagExport.getPageUrl()) != null) { 173 restoreAttribute(name, oldPageUrl); 174 oldPageUrl = null; 175 } 176 177 if ((name = pageTagExport.getPageNumber()) != null) { 178 restoreAttribute(name, oldPageNumber); 179 oldPageNumber = null; 180 } 181 182 if ((name = pageTagExport.getFirstItem()) != null) { 183 restoreAttribute(name, oldFirstItem); 184 oldFirstItem = null; 185 } 186 187 if ((name = pageTagExport.getLastItem()) != null) { 188 restoreAttribute(name, oldLastItem); 189 oldLastItem = null; 190 } 191 } 192 193 super.doEndTag(); 194 195 return EVAL_PAGE; 196 } 197 198 public void release() { 199 export = null; 200 pageTagExport = null; 201 oldPageUrl = null; 202 oldPageNumber = null; 203 oldFirstItem = null; 204 oldLastItem = null; 205 super.release(); 206 } 207 } 208 209 210 | Popular Tags |