Changeset 4080
- Timestamp:
- 2003-04-02T15:59:59+12:00 (21 years ago)
- Location:
- trunk/gsdl3/src/java/org/greenstone/gsdl3/action
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/gsdl3/src/java/org/greenstone/gsdl3/action/BrowseAction.java
r3998 r4080 10 10 11 11 import java.util.HashMap; 12 import java.util.Vector; 12 13 import java.io.File; 13 14 … … 115 116 } 116 117 117 118 118 // create a classifier elem to return in the page 119 119 Element page_classifier = doc_.createElement(GSXML.CLASSIFIER_ELEM); … … 123 123 String top_id = OID.getTop(classifier_node); 124 124 page_classifier.setAttribute(GSXML.NAME_ATT, top_id); 125 125 126 // add in the format info into the stylesheet 127 System.out.println("transforming format:"+converter_.getString(format_response)); 128 Element format_elem = getAndTransformFormat(format_response); 129 System.out.println("transformed format:"+converter_.getString(format_elem)); 130 if (format_elem != null) { 131 Element this_format = GSXML.getNamedElement(format_elem, GSXML.CLASSIFIER_ELEM, GSXML.NAME_ATT, top_id); 132 if (this_format != null) { 133 GSXSLT.mergeStylesheets(style_doc, this_format); 134 } 135 } 136 126 137 // get the browse structure for the selected node 127 138 Element classify_message = doc_.createElement(GSXML.MESSAGE_ELEM); … … 183 194 } 184 195 196 185 197 // get the metadata for each classifier node, 186 198 // then for each document node 199 187 200 Element metadata_message = doc_.createElement(GSXML.MESSAGE_ELEM); 188 201 … … 190 203 boolean did_documents = false; 191 204 192 // Create a parameter list to specify the required metadata information 193 // for now get Title 194 Element meta_param_list = doc_.createElement(GSXML.PARAM_ELEM+GSXML.LIST_MODIFIER); 195 Element meta_param = doc_.createElement(GSXML.PARAM_ELEM); 196 meta_param_list.appendChild(meta_param); 197 meta_param.setAttribute(GSXML.NAME_ATT, "metadata"); 198 meta_param.setAttribute(GSXML.VALUE_ATT, "Source"); 199 meta_param = doc_.createElement(GSXML.PARAM_ELEM); 200 meta_param_list.appendChild(meta_param); 201 meta_param.setAttribute(GSXML.NAME_ATT, "metadata"); 202 meta_param.setAttribute(GSXML.VALUE_ATT, "Keyword"); 203 meta_param = doc_.createElement(GSXML.PARAM_ELEM); 204 meta_param_list.appendChild(meta_param); 205 meta_param.setAttribute(GSXML.NAME_ATT, "metadata"); 206 meta_param.setAttribute(GSXML.VALUE_ATT, "Title"); 207 208 // if there are classifier nodes (I think there always will be) 205 206 // if there are classifier nodes 209 207 // create a metadata request for the classifier, and add it to 210 208 // the the message 211 209 cl_nodes = page_classifier.getElementsByTagName(GSXML.CLASS_NODE_ELEM); 212 210 213 211 if (cl_nodes.getLength() > 0) { 214 212 did_classifier = true; … … 219 217 cl_meta_request.setAttribute(GSXML.LANG_ATT, lang); 220 218 221 cl_meta_request.appendChild(meta_param_list);222 223 219 Element new_cl_nodes_list = doc_.createElement(GSXML.CLASS_NODE_ELEM+GSXML.LIST_MODIFIER); 224 220 cl_meta_request.appendChild(new_cl_nodes_list); … … 230 226 new_cl_nodes_list.appendChild(cl); 231 227 } 232 } 233 228 229 // create and add in the param list 230 Vector classifier_metadata = GSXSLT.extractWantedMetadata(style_doc, GSXML.CLASS_NODE_ELEM); 231 if (classifier_metadata.isEmpty()) { 232 System.err.println("BrowseAction: no classifier metadata specified!!"); 233 did_classifier = false; 234 metadata_message.removeChild(cl_meta_request); 235 } else { 236 Element meta_param_list = GSXML.createMetadataParamList(doc_, classifier_metadata); 237 cl_meta_request.appendChild(meta_param_list); 238 } 239 240 } 241 234 242 // if there are document nodes in the classification (happens 235 243 // sometimes), create a second request for document metadata and … … 244 252 doc_meta_request.setAttribute(GSXML.LANG_ATT, lang); 245 253 246 // for now, use the same metadata list - this will probably change once we look at format statements247 doc_meta_request.appendChild(meta_param_list.cloneNode(true));248 249 254 Element doc_list = doc_.createElement(GSXML.DOC_NODE_ELEM+GSXML.LIST_MODIFIER); 250 255 doc_meta_request.appendChild(doc_list); … … 257 262 } 258 263 259 } 260 264 // create and add in the param list 265 Vector doc_metadata = GSXSLT.extractWantedMetadata(style_doc, GSXML.DOC_NODE_ELEM); 266 if (doc_metadata.isEmpty()) { 267 System.err.println("BrowseAction: no document metadata specified!!"); 268 did_documents = false; 269 metadata_message.removeChild(doc_meta_request); 270 } else { 271 Element meta_param_list = GSXML.createMetadataParamList(doc_, doc_metadata); 272 doc_meta_request.appendChild(meta_param_list); 273 } 274 275 276 } 277 261 278 // process the metadata requests 262 279 Element metadata_response = (Element)mr_.process(metadata_message); … … 288 305 } 289 306 290 // add in the format info 291 Element format_elem = getAndTransformFormat(format_response); 292 if (format_elem != null) { 293 Element this_format = GSXML.getNamedElement(format_elem, GSXML.CLASSIFIER_ELEM, GSXML.NAME_ATT, top_id); 294 if (this_format != null) { 295 GSXSLT.mergeStylesheets(style_doc, this_format); 296 } 297 } 298 299 System.out.println("(BrowseAction) Page:\n" + converter_.getPrettyString(page)); 307 308 //System.out.println("(BrowseAction) Page:\n" + converter_.getPrettyString(page)); 300 309 301 310 // transform the page -
trunk/gsdl3/src/java/org/greenstone/gsdl3/action/QueryAction.java
r3999 r4080 11 11 12 12 import java.util.HashMap; 13 import java.util.Vector; 13 14 import java.util.Map; 14 15 import java.util.Iterator; … … 155 156 } 156 157 158 // add in the format info to the stylesheet if there is any 159 Element format_elem = getAndTransformFormat(format_response); 160 if (format_elem != null) { 161 GSXSLT.mergeStylesheets(style_doc, format_elem); 162 } 163 164 157 165 // do the query 158 166 Element mr_query_message = doc_.createElement(GSXML.MESSAGE_ELEM); … … 163 171 Element query_param_list = (Element)doc_.importNode(cgi_param_list, true); 164 172 mr_query_request.appendChild(query_param_list); 173 174 // do the query 165 175 Element mr_query_response = (Element)mr_.process(mr_query_message); 166 176 … … 169 179 if (query_result_metadata_list == null) { 170 180 System.err.println("QueryAction: Warning: No query result metadata.\n"); 171 } 181 } else { // add it into the page response 182 page_response.appendChild(doc_.importNode(query_result_metadata_list, true)); 183 } 184 172 185 path = GSPath.appendLink(GSXML.RESPONSE_ELEM, GSXML.TERM_ELEM+GSXML.LIST_MODIFIER); 173 186 Element query_term_info_list = (Element) GSXML.getNodeByPath(mr_query_response, path); 174 187 if (query_term_info_list == null) { 175 188 System.err.println("QueryAction: Warning: No query term information.\n"); 176 } 177 178 // this result is the list of docs. 179 // now take that list, and get the Titles 180 // for now, just create a whole new request 181 189 } else { // add it into the page response 190 page_response.appendChild(doc_.importNode(query_term_info_list, true)); 191 } 192 182 193 // check that there are some documents - for now check the list, but later should use a numdocs metadata elem 183 194 path = GSPath.appendLink(GSXML.RESPONSE_ELEM, GSXML.DOC_NODE_ELEM+GSXML.LIST_MODIFIER); … … 187 198 // documentList not present if no docs found 188 199 if (document_list == null) { 189 190 //Element result_response = (Element)GSXML.getChildByTagName(mr_query_response, GSXML.RESPONSE_ELEM);191 192 //page.appendChild(doc_.importNode(result_response, true));193 200 GSXSLT.absoluteIncludePaths(style_doc, config_); 194 201 return (Element)transformer_.transform(style_doc, page); … … 196 203 } 197 204 198 // add in the format info 199 Element format_elem = getAndTransformFormat(format_response); 200 if (format_elem != null) { 201 GSXSLT.mergeStylesheets(style_doc, format_elem); 202 } 203 204 // we have a doc list, so get the metadata - for now, get title. 205 // can we dynamically decide what metadata to get? 205 206 // we have a doc list, so get the metadata - look through the stylesheet to determine what metadata to ask for 207 208 Vector document_metadata = GSXSLT.extractWantedMetadata(style_doc, GSXML.DOC_NODE_ELEM); 209 if (document_metadata.isEmpty()) { 210 System.err.println("no document metadata specified!!"); 211 // we dont need to do the metadata request, just append the original doc list and return the page 212 page_response.appendChild(doc_.importNode(document_list, true)); 213 GSXSLT.absoluteIncludePaths(style_doc, config_); 214 return (Element)transformer_.transform(style_doc, page); 215 216 } 217 // we have to do the metadata request 218 206 219 Element mr_metadata_message = doc_.createElement(GSXML.MESSAGE_ELEM); 207 220 Element mr_metadata_request = doc_.createElement(GSXML.REQUEST_ELEM); … … 213 226 mr_metadata_request.setAttribute(GSXML.TO_ATT, to); 214 227 215 // Create a parameter list to specify the required metadata information 216 Element dm_param_list = doc_.createElement(GSXML.PARAM_ELEM+GSXML.LIST_MODIFIER); 228 Element dm_param_list = GSXML.createMetadataParamList(doc_, document_metadata); 217 229 mr_metadata_request.appendChild(dm_param_list); 218 Element dm_param = doc_.createElement(GSXML.PARAM_ELEM); 219 dm_param_list.appendChild(dm_param); 220 dm_param.setAttribute(GSXML.NAME_ATT, "metadata"); 221 dm_param.setAttribute(GSXML.VALUE_ATT, "Title"); 222 230 231 232 // add in the doc node list too 223 233 mr_metadata_request.appendChild(doc_.importNode(document_list, true)); 224 234 Element mr_metadata_response = (Element) mr_.process(mr_metadata_message); … … 229 239 if (query_result_document_list != null) { 230 240 page_response.appendChild(doc_.importNode(query_result_document_list, true)); 231 }232 // If there is some metadata about the query results, add it in233 if (query_result_metadata_list != null) {234 page_response.appendChild(doc_.importNode(query_result_metadata_list, true));235 }236 // If there is some metadata about the query results, add it in237 if (query_term_info_list != null) {238 page_response.appendChild(doc_.importNode(query_term_info_list, true));239 241 } 240 242
Note:
See TracChangeset
for help on using the changeset viewer.