Changeset 37514
- Timestamp:
- 2023-03-16T19:42:42+13:00 (8 days ago)
- Location:
- main/trunk/greenstone3/src/java/org/greenstone/gsdl3/action
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/action/BrowseAction.java
r28964 r37514 124 124 // add the format info into the response 125 125 Element format_elem = (Element) GSXML.getChildByTagName(format_response, GSXML.FORMAT_ELEM); 126 Element this_format = null; 126 127 if (format_elem != null) 127 128 { 128 129 // find the one for the classifier we are in 129 Elementthis_format = GSXML.getNamedElement(format_elem, GSXML.CLASSIFIER_ELEM, GSXML.NAME_ATT, top_id);130 this_format = GSXML.getNamedElement(format_elem, GSXML.CLASSIFIER_ELEM, GSXML.NAME_ATT, top_id); 130 131 if (this_format == null) 131 132 { … … 140 141 } 141 142 Element new_format = GSXML.duplicateWithNewName(doc, this_format, GSXML.FORMAT_ELEM, false); 142 // set t ehformat type143 // set the format type 143 144 new_format.setAttribute(GSXML.TYPE_ATT, "browse"); 144 145 145 146 page_response.appendChild(new_format); 146 getRequiredMetadataNames(new_format, metadata_names); 147 } 148 } 149 150 Element extraMetaListElem = (Element) GSXML.getChildByTagName(request, GSXML.EXTRA_METADATA + GSXML.LIST_MODIFIER); 151 if(extraMetaListElem != null) 152 { 153 NodeList extraMetaList = extraMetaListElem.getElementsByTagName(GSXML.EXTRA_METADATA); 154 for(int i = 0; i < extraMetaList.getLength(); i++) 155 { 156 metadata_names.add(((Element)extraMetaList.item(i)).getAttribute(GSXML.NAME_ATT)); 157 } 158 } 159 160 logger.info("extracted meta names, " + metadata_names.toString()); 147 } 148 } 149 getRequiredMetadataNames(metadata_names, this_format, request); 150 151 //logger.info("extracted meta names, " + metadata_names.toString()); 161 152 // get the browse structure for the selected node 162 153 Element classify_message = doc.createElement(GSXML.MESSAGE_ELEM); -
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/action/GS2BrowseAction.java
r31873 r37514 126 126 // add the format info into the response 127 127 Element format_elem = (Element) GSXML.getChildByTagName(format_response, GSXML.FORMAT_ELEM); 128 Element this_format = null; 128 129 if (format_elem != null) 129 130 { 130 // find the one for the classifier we are in 131 Element this_format = GSXML.getNamedElement(format_elem, GSXML.CLASSIFIER_ELEM, GSXML.NAME_ATT, top_id); 132 if (this_format == null) 133 { 134 this_format = (Element) GSXML.getChildByTagName(format_elem, GSXML.DEFAULT_ELEM); 135 } 136 137 if (this_format != null) 138 { 139 Element global_format_elem = (Element) GSXML.getChildByTagName(format_response, GSXML.GLOBAL_FORMAT_ELEM); 140 if (global_format_elem != null) 141 { 142 GSXSLT.mergeFormatElements(this_format, global_format_elem, false); 143 } 144 145 Element new_format = GSXML.duplicateWithNewName(doc, this_format, GSXML.FORMAT_ELEM, false); 146 extractMetadataNames(new_format, doc_meta_names, class_meta_names); 147 148 Element extraMetaListElem = (Element) GSXML.getChildByTagName(request, GSXML.EXTRA_METADATA + GSXML.LIST_MODIFIER); 149 if (extraMetaListElem != null) 150 { 151 NodeList extraMetaList = extraMetaListElem.getElementsByTagName(GSXML.EXTRA_METADATA); 152 for (int i = 0; i < extraMetaList.getLength(); i++) 153 { 154 doc_meta_names.add(((Element) extraMetaList.item(i)).getAttribute(GSXML.NAME_ATT)); 155 } 156 } 131 // find the one for the classifier we are in 132 this_format = GSXML.getNamedElement(format_elem, GSXML.CLASSIFIER_ELEM, GSXML.NAME_ATT, top_id); 133 if (this_format == null) 134 { 135 this_format = (Element) GSXML.getChildByTagName(format_elem, GSXML.DEFAULT_ELEM); 136 } 137 138 if (this_format != null) 139 { 140 Element global_format_elem = (Element) GSXML.getChildByTagName(format_response, GSXML.GLOBAL_FORMAT_ELEM); 141 if (global_format_elem != null) 142 { 143 GSXSLT.mergeFormatElements(this_format, global_format_elem, false); 144 } 145 146 Element new_format = GSXML.duplicateWithNewName(doc, this_format, GSXML.FORMAT_ELEM, false); 147 // set the format type 148 new_format.setAttribute(GSXML.TYPE_ATT, "browse"); 149 150 page_response.appendChild(new_format); 151 152 } 157 153 158 // set the format type 159 new_format.setAttribute(GSXML.TYPE_ATT, "browse"); 160 161 page_response.appendChild(new_format); 162 } 163 } 164 165 // find out if this classifier is horizontal at top 154 155 } 156 extractMetadataNames(doc_meta_names, class_meta_names, this_format, request); 157 158 // find out if this classifier is horizontal at top 166 159 Element class_list = (Element) GSXML.getChildByTagName(service_description, GSXML.CLASSIFIER_ELEM + GSXML.LIST_MODIFIER); 167 160 Element this_classifier = GSXML.getNamedElement(class_list, GSXML.CLASSIFIER_ELEM, GSXML.NAME_ATT, top_id); … … 481 474 } 482 475 483 protected void extractMetadataNames(Element new_format, HashSet<String> doc_meta_names, HashSet<String> class_meta_names)476 protected void extractMetadataNames(HashSet<String> doc_meta_names, HashSet<String> class_meta_names, Element new_format, Element request) 484 477 { 478 // for doc names, add the ones from extraMetadata 479 getRequiredMetadataNames(doc_meta_names, null, request); 480 485 481 NodeList templates = new_format.getElementsByTagNameNS(GSXML.GSF_NAMESPACE, "template"); 486 482 for (int i = 0; i < templates.getLength(); i++) … … 493 489 if (match.startsWith("documentNode")) 494 490 { 495 getRequiredMetadataNames(template, doc_meta_names);491 getRequiredMetadataNames(doc_meta_names, template, null); 496 492 } 497 493 else if (match.startsWith("classifierNode")) // not match.equals, as we want to match nodes like: classifierNode[@classifierStyle = 'VList'] 498 494 { 499 getRequiredMetadataNames(template, class_meta_names);495 getRequiredMetadataNames(class_meta_names, template, null); 500 496 } 501 497 } 502 498 else 503 499 { 504 getRequiredMetadataNames(template, doc_meta_names);505 getRequiredMetadataNames(template, class_meta_names);500 getRequiredMetadataNames(doc_meta_names, template, null); 501 getRequiredMetadataNames(class_meta_names, template, null); 506 502 } 507 503 } -
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/action/QueryAction.java
r33772 r37514 240 240 metadata_names.add("Title"); 241 241 // we already got the format element earlier 242 if (format_elem != null) 243 { 244 getRequiredMetadataNames(format_elem, metadata_names); 245 } 242 // find names from format and from extraMetadataList in the request 243 getRequiredMetadataNames(metadata_names, format_elem, request); 244 246 245 247 246 // paging of the results is done here - we filter the list to remove unwanted entries before retrieving metadata … … 261 260 Element mr_metadata_request = GSXML.createBasicRequest(doc, GSXML.REQUEST_TYPE_PROCESS, to, userContext); 262 261 mr_metadata_message.appendChild(mr_metadata_request); 263 264 // just get all for now - the receptionist should perhaps pass in some265 // metadata that it wants, and QueryAction should look through the format stuff to see if there is any other?266 267 Element extraMetaListElem = (Element) GSXML.getChildByTagName(request, GSXML.EXTRA_METADATA + GSXML.LIST_MODIFIER);268 if(extraMetaListElem != null)269 {270 NodeList extraMetaList = extraMetaListElem.getElementsByTagName(GSXML.EXTRA_METADATA);271 for(int i = 0; i < extraMetaList.getLength(); i++)272 {273 metadata_names.add(((Element)extraMetaList.item(i)).getAttribute(GSXML.NAME_ATT));274 }275 }276 262 277 263 Element dm_param_list = createMetadataParamList(doc,metadata_names);
Note:
See TracChangeset
for help on using the changeset viewer.