Changeset 22786 for main/trunk/greenstone3/src/java/org/greenstone/gsdl3/core/TransformingReceptionist.java
- Timestamp:
- 2010-08-25T16:45:27+12:00 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/core/TransformingReceptionist.java
r22085 r22786 159 159 // transform the page using xslt 160 160 Node transformed_page = transformPage(page); 161 162 return transformed_page; 161 162 // if the user has specified they want only a part of the full page then subdivide it 163 boolean subdivide = false; 164 String excerptID = null; 165 String excerptTag = null; 166 Element request = (Element)GSXML.getChildByTagName(page, GSXML.PAGE_REQUEST_ELEM); 167 Element cgi_param_list = (Element)GSXML.getChildByTagName(request, GSXML.PARAM_ELEM+GSXML.LIST_MODIFIER); 168 if (cgi_param_list != null) { 169 HashMap params = GSXML.extractParams(cgi_param_list, false); 170 if((excerptID = (String)params.get("excerptid")) != null) 171 { 172 subdivide = true; 173 } 174 if((excerptTag = (String)params.get("excerpttag")) != null) 175 { 176 subdivide = true; 177 } 178 } 179 180 if(subdivide) 181 { 182 Node subdivided_page = subdivide(transformed_page, excerptID, excerptTag); 183 if(subdivided_page != null) 184 { 185 return subdivided_page; 186 } 187 } 188 189 return transformed_page; 190 } 191 192 protected Node subdivide(Node transformed_page, String excerptID, String excerptTag) 193 { 194 if(excerptID != null) 195 { 196 Node selectedElement = getNodeByIdRecursive(transformed_page, excerptID); 197 return selectedElement; 198 } 199 else if(excerptTag != null) 200 { 201 Node selectedElement = getNodeByTagRecursive(transformed_page, excerptTag); 202 return selectedElement; 203 } 204 return transformed_page; 205 } 206 207 protected Node getNodeByIdRecursive(Node parent, String id) 208 { 209 if(parent.hasAttributes() && ((Element)parent).getAttribute("id").equals(id)) 210 { 211 return parent; 212 } 213 214 NodeList children = parent.getChildNodes(); 215 for(int i = 0; i < children.getLength(); i++) 216 { 217 Node result = null; 218 if((result = getNodeByIdRecursive(children.item(i), id)) != null) 219 { 220 return result; 221 } 222 } 223 return null; 224 } 225 226 protected Node getNodeByTagRecursive(Node parent, String tag) 227 { 228 if(parent.getNodeType() == Node.ELEMENT_NODE && ((Element)parent).getTagName().equals(tag)) 229 { 230 return parent; 231 } 232 233 NodeList children = parent.getChildNodes(); 234 for(int i = 0; i < children.getLength(); i++) 235 { 236 Node result = null; 237 if((result = getNodeByTagRecursive(children.item(i), tag)) != null) 238 { 239 return result; 240 } 241 } 242 return null; 163 243 } 164 244 … … 171 251 protected Node transformPage(Element page) { 172 252 173 logger.debug("page before transfo mring:");253 logger.debug("page before transforming:"); 174 254 logger.debug(this.converter.getPrettyString(page)); 175 255
Note:
See TracChangeset
for help on using the changeset viewer.