Changeset 32883
- Timestamp:
- 2019-03-08T11:40:31+13:00 (5 years ago)
- Location:
- gs3-extensions/iiif-servlet/trunk/src/gsdl-src/java/org/greenstone/gsdl3
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
gs3-extensions/iiif-servlet/trunk/src/gsdl-src/java/org/greenstone/gsdl3/IIIFServerBridge.java
r32875 r32883 86 86 } 87 87 88 89 90 88 /** 89 * initialise the class 90 */ 91 91 public void init(String site_name) throws UnavailableException, Exception 92 92 { 93 ////GlobalProperties.loadGlobalProperties(config.getServletContext().getRealPath(""));94 95 93 org.greenstone.util.GlobalProperties.loadGlobalProperties(""); 96 //org.greenstone.util.GlobalProperties.loadGlobalProperties(config.getServletContext().getRealPath(""));97 //org.greenstone.util.GlobalProperties.loadGlobalProperties("/home/osboxes/research/code/greenstone3-svn/web");98 94 java.io.InputStream in = Class.forName("org.greenstone.util.GlobalProperties").getClassLoader().getResourceAsStream("global.properties"); 99 95 100 //String gsdl3_writablehome = System.getProperty("gsdl3.writablehome");101 96 String tomcat_context = System.getProperty("tomcat.context"); 102 System.err.println("*** in = " + in);103 //System.err.println("*** gsdl3.writablehome = " + gsdl3_writablehome);104 System.err.println("*** tomcat.context = " + tomcat_context);105 97 106 98 // the receptionist -the servlet will talk to this … … 121 113 } // end of init() 122 114 115 /* 116 Written but never used/tested 117 */ 118 123 119 public void remote_init(String remote_site_name, String remote_site_type, String remote_site_address) throws UnavailableException 124 120 { … … 166 162 public String doGetDocumentMessage(String identifier) 167 163 { 168 // oai always requires the content type be text/xml169 //request.setCharacterEncoding("UTF-8");170 //response.setContentType("text/xml;charset=UTF-8");171 //PrintWriter out = response.getWriter();172 164 String result = ""; 173 165 … … 178 170 String verb = "GetRecord"; 179 171 Document response_doc = XMLConverter.newDOM(); 180 Element xml_response = IIIFXML.createBasicResponse(response_doc, verb, pairs);172 //Element xml_response = IIIFXML.createBasicResponse(response_doc, verb, pairs); 181 173 Element verb_elem = null; 182 174 … … 185 177 Element xml_message = request_doc.createElement(GSXML.MESSAGE_ELEM); 186 178 Element xml_request = request_doc.createElement(GSXML.REQUEST_ELEM); 187 // The type attribute is set to be 'oaiService' from OAIServer to OAIReceptionist.188 ////xml_request.setAttribute(GSXML.TYPE_ATT, OAIXML.OAI_SERVICE); // ****189 //xml_request.setAttribute(GSXML.LANG_ATT, lang);190 179 xml_request.setAttribute(GSXML.TO_ATT, verb); 191 180 addParams(xml_request, pairs); 192 181 193 //xml_request.setAttribute(GSXML.OUTPUT_ATT, output);????194 182 xml_message.appendChild(xml_request); 195 183 … … 199 187 logger.info("xml_result is null"); 200 188 verb_elem = IIIFXML.createErrorElement(response_doc, "Internal error", ""); 201 xml_response.appendChild(verb_elem);189 //xml_response.appendChild(verb_elem); 202 190 } 203 191 else … … 206 194 // 207 195 // All response elements are in the form (with a corresponding verb 208 // name): <message> <response> <verb> ... <resumptionToken> .. this 209 // is optional! </resumptionToken> </verb> </response> </message> 196 // name): <message> <response> <verb> ... </verb> </response> </message> 210 197 // 211 198 Node res = GSXML.getChildByTagName(xml_result, GSXML.RESPONSE_ELEM); … … 216 203 } 217 204 else { 218 System.err.println("*** res (verb_elem) = " + XMLConverter.getPrettyString(res));219 220 205 verb_elem = GSXML.getFirstElementChild(res); // GetRecord 221 206 Node record_node = GSXML.getFirstElementChild(verb_elem); // record 222 207 Element metadata_list_elem = (Element)GSXML.getChildByTagName(record_node,"metadata"); // metadata 223 208 224 System.err.println("*** metadata_list_elem = " + XMLConverter.getPrettyString(metadata_list_elem));225 226 209 Element assocfilepath_metadata_elem = (Element)GSXML.getChildByTagName(metadata_list_elem,"assocfilepath"); 227 210 String assocfilepath_metadata_val = GSXML.getNodeText(assocfilepath_metadata_elem); … … 233 216 } 234 217 235 // ****** 236 xml_response.appendChild(response_doc.importNode(verb_elem, true)); 237 /* 238 if ( verb_elem.getTagName().equals(IIIFXML.ERROR)) 239 { 240 xml_response.appendChild(response_doc.importNode(verb_elem, true)); 241 } 242 else if (IIIFXML.iiif_version.equals(IIIFXML.IIIF_VERSION2)) { 243 xml_response.appendChild(response_doc.importNode(verb_elem, true)); 244 } 245 else 246 { 247 GSXML.copyAllChildren(xml_response, verb_elem); 248 }*/ 249 } 250 /* 251 out.println("<?xml version='1.0' encoding='UTF-8' ?>"); 252 if (this.use_oai_stylesheet) 253 { 254 out.println("<?xml-stylesheet type='text/xsl' href='" + this.oai_stylesheet + "' ?>\n"); 255 } 256 out.println(XMLConverter.getPrettyString(xml_response)); 257 */ 258 259 //return XMLConverter.getPrettyString(xml_response); 218 //xml_response.appendChild(response_doc.importNode(verb_elem, true)); 219 } 260 220 return result; 261 //return xml_response;262 221 } 263 222 -
gs3-extensions/iiif-servlet/trunk/src/gsdl-src/java/org/greenstone/gsdl3/collection/IIIFCollection.java
r32860 r32883 128 128 protected boolean configureServiceRackList(Element service_rack_list, Element extra_info) 129 129 { 130 //logger.info("*** Away to call getNamedElement() for service_rack_list = " + XMLConverter.getPrettyString(service_rack_list));131 132 130 // find the IIIFPMH service 133 131 Element iiif_service_xml = GSXML.getNamedElement(service_rack_list, GSXML.SERVICE_CLASS_ELEM, GSXML.NAME_ATT, "IIIFPMH"); … … 143 141 144 142 if(this.iiif_service_rack == null) { 145 logger.info("*** away to call constructor to IIIFPMH");146 143 this.iiif_service_rack = new IIIFPMH(); 147 144 } … … 153 150 154 151 // pass the xml node to the service for configuration 155 logger.info("*** away to configure service rack IIIFPMH");156 157 152 if (this.iiif_service_rack.configure(iiif_service_xml, extra_info)) { 158 153 -
gs3-extensions/iiif-servlet/trunk/src/gsdl-src/java/org/greenstone/gsdl3/core/IIIFMessageRouter.java
r32860 r32883 75 75 76 76 // **** 77 // for oai, we don't do anything with the site config77 // for iiif, we don't do anything with the site config 78 78 // file. But we'll read it in and keep it in case need 79 // it later, e.g. for replace elements when retrieving 80 // metadata - which I don't think has been implemented 79 // it later 81 80 File configFile = new File(GSFile.siteConfigFile(this.site_home)); 82 81 -
gs3-extensions/iiif-servlet/trunk/src/gsdl-src/java/org/greenstone/gsdl3/core/IIIFReceptionist.java
r32860 r32883 136 136 if (!message.getTagName().equals(GSXML.MESSAGE_ELEM)) { 137 137 logger.error(" Invalid message. GSDL message should start with <"+GSXML.MESSAGE_ELEM+">, instead it starts with:"+message.getTagName()+"."); 138 return IIIFXML.createErrorMessage( OAIXML.BAD_ARGUMENT, "Internal messaging error");138 return IIIFXML.createErrorMessage(IIIFXML.BAD_ARGUMENT, "Internal messaging error"); 139 139 } 140 140 … … 143 143 if (request == null) { 144 144 logger.error(" message had no request!"); 145 return IIIFXML.createErrorMessage( OAIXML.BAD_ARGUMENT, "Internal messaging error");145 return IIIFXML.createErrorMessage(IIIFXML.BAD_ARGUMENT, "Internal messaging error"); 146 146 } 147 147 … … 150 150 if (!reset.equals("")) { 151 151 resetMessageRouter(); 152 // configureSetInfo(); // ****153 152 return IIIFXML.createResetResponse(true); 154 153 } … … 156 155 157 156 //At this stage, the value of 'to' attribute of the request must be the 'verb' 158 //The only thing that the oaireceptionist can be sure is that these verbs are valid, nothing else.157 //The only thing that the iiif receptionist can be sure is that these verbs are valid, nothing else. 159 158 String verb = request.getAttribute(GSXML.TO_ATT); 160 159 161 if (verb.equals( OAIXML.GET_RECORD)) {160 if (verb.equals(IIIFXML.GET_RECORD)) { 162 161 return doGetRecord(request); 163 162 } 164 163 165 164 // should never get here as verbs were checked in IIIFServerBridge 166 return IIIFXML.createErrorMessage( OAIXML.BAD_VERB, "Unexpected things happened");165 return IIIFXML.createErrorMessage(IIIFXML.BAD_VERB, "Unexpected things happened"); 167 166 168 167 } … … 174 173 Element get_record = doc.createElement(IIIFXML.GET_RECORD); 175 174 176 HashSet<String> valid_strs = new HashSet<String>();177 valid_strs.add(OAIXML.IDENTIFIER);178 valid_strs.add(OAIXML.METADATA_PREFIX);175 //HashSet<String> valid_strs = new HashSet<String>(); // **** 176 //valid_strs.add(IIIFXML.IDENTIFIER); 177 //valid_strs.add(IIIFXML.METADATA_PREFIX); 179 178 180 179 NodeList params = GSXML.getChildrenByTagName(req, GSXML.PARAM_ELEM); 181 180 HashMap<String, String> param_map = GSXML.getParamMap(params); 182 181 183 // Any need to check all params are valid, like OAI?? 184 185 String identifier = param_map.get( OAIXML.IDENTIFIER);182 // Any need to check all params are valid, like OAI?? // **** 183 184 String identifier = param_map.get(IIIFXML.IDENTIFIER); 186 185 187 186 // get the names … … 189 188 if(strs == null || strs.length < 2) { 190 189 logger.error("identifier is not in the form coll:id" + identifier); 191 return OAIXML.createErrorMessage(OAIXML.ID_DOES_NOT_EXIST, "");190 return IIIFXML.createErrorMessage(IIIFXML.ID_DOES_NOT_EXIST, ""); 192 191 } 193 192 String coll_name = strs[0]; … … 199 198 req.setAttribute(GSXML.TO_ATT, coll_name + "/" + verb); 200 199 // reset the identifier element 201 Element param = GSXML.getNamedElement(req, GSXML.PARAM_ELEM, GSXML.NAME_ATT, OAIXML.IDENTIFIER);200 Element param = GSXML.getNamedElement(req, GSXML.PARAM_ELEM, GSXML.NAME_ATT, IIIFXML.IDENTIFIER); 202 201 if (param != null) { 203 param.setAttribute(GSXML.NAME_ATT, OAIXML.OID);202 param.setAttribute(GSXML.NAME_ATT, IIIFXML.OID); 204 203 param.setAttribute(GSXML.VALUE_ATT, oid); 205 204 } -
gs3-extensions/iiif-servlet/trunk/src/gsdl-src/java/org/greenstone/gsdl3/service/IIIFPMH.java
r32874 r32883 23 23 import org.greenstone.gsdl3.util.GSXML; 24 24 import org.greenstone.gsdl3.util.IIIFXML; 25 //import org.greenstone.gsdl3.util.OAIXML; // ****26 25 import org.greenstone.gsdl3.util.OID; 27 26 import org.greenstone.gsdl3.util.GSFile; … … 67 66 // set this up during configure 68 67 protected Element list_sets_response = null; 69 70 protected Element meta_formats_definition = null; 71 protected HashMap<String, HashSet<String>> format_elements_map = null; 72 protected HashMap<String, Element> format_meta_elem_map = null; 73 74 protected String index_stem = ""; 68 69 protected String index_stem = ""; // **** 75 70 protected String infodb_type = ""; 76 71 … … 214 209 Element metadata_message = doc.createElement(IIIFXML.METADATA); 215 210 216 // the <oai:dc namespace...> element217 //Element prfx_str_elem = (Element)doc.importNode(this.format_meta_elem_map.get(prefix), true);218 //metadata.appendChild(prfx_str_elem);219 220 //Element meta_format_element = GSXML.getNamedElement(this.meta_formats_definition, OAIXML.METADATA_FORMAT, GSXML.NAME_ATT, prefix);221 //NodeList elements = meta_format_element.getElementsByTagName(OAIXML.ELEMENT);222 // for each element in the definition223 224 211 addFirstMetadata(metadata_message, "assocfilepath", info); 225 212 addFirstMetadata(metadata_message, "Image", info); 226 227 /* 228 Set<String> keys = info.getKeys(); 229 if (keys != null && keys.size()!=0) { 230 for (String metaname: keys) { 231 addMetadata(metadata_message, metaname, info); 232 } 233 } 234 */ 235 236 /* 237 for (int i=0; i<elements.getLength(); i++) { 238 Element e = (Element)elements.item(i); 239 240 // look up the element name 241 //addMetadata(prfx_str_elem, e.getAttribute(GSXML.NAME_ATT), info); 242 addMetadata(metadata, e.getAttribute(GSXML.NAME_ATT), info); 243 } 244 */ 245 246 // output any metadata that is not just a simple mapping 247 //addCustomMetadata(prfx_str_elem, prefix, info); // **** 213 248 214 return metadata_message; 249 215 } 250 216 251 217 /** a simple addMetadata where we look for meta_name metadata, and add as that name*/ 252 253 218 254 219 protected void addFirstMetadata(Element meta_list_elem, String meta_name, DBInfo info) { … … 261 226 262 227 263 /** more complicated addMetadata - can add multiple items. */264 /*265 protected void addMetadata(Element meta_list_elem, String new_meta_name, String select_type, String name_list, DBInfo info) {266 String[] names = name_list.split(",");267 for (int i=0; i<names.length; i++) {268 Vector<String> values;269 // some special words270 if (names[i].startsWith(OAIXML.GSF_LINK_PREFIX)) {271 values = new Vector<String>();272 String base_url = OAIXML.getBaseURL(); // e.g. e.g. http://host:port/greenstone3/oaiserver273 String link_url = null;274 if (names[i].equals(OAIXML.GSF_LINK_PREFIX+OAIXML.LINK_TYPE_DOCUMENT)) {275 link_url = base_url.replace("oaiserver", "library") + "/collection/" + this.coll_name + "/document/" + info.getInfo("Identifier");276 } else if (names[i].equals(OAIXML.GSF_LINK_PREFIX+OAIXML.LINK_TYPE_SOURCE)) {277 String srcfile = info.getInfo("srclinkFile");278 if (!srcfile.equals("")) {279 link_url = base_url.replace("oaiserver", "") + "sites/"280 + this.site_name281 + "/collect/" + this.coll_name + "/index/assoc/"282 + info.getInfo("assocfilepath") + "/" + srcfile;283 }284 }285 if (link_url !=null) {286 values.add(link_url);287 }288 } else {289 values = info.getMultiInfo(names[i]);290 }291 if (values == null || values.size()==0) {292 continue;293 }294 for (int j=0; j<values.size(); j++) {295 addMetadataElement(meta_list_elem, new_meta_name, values.get(j));296 if (select_type.equals(OAIXML.SELECT_SINGLE_VALUE)) {297 return; // only want to add one value298 }299 }300 if (select_type.equals(OAIXML.SELECT_FIRST_VALID_META)) {301 return; // we have added all values of this meta elem302 }303 // otherwise, we will keep going through the list and add them all.304 }305 }306 */307 308 // specific metadata formats might need to do some custom metadata that is not309 //just a standard mapping.310 /*311 protected void addCustomMetadata(Element meta_list_elem, String prefix, DBInfo info) {312 313 314 }315 */316 317 228 /** create the actual metadata element for the list */ 318 229 … … 331 242 332 243 Element identifier = doc.createElement(IIIFXML.IDENTIFIER); 333 GSXML.setNodeText(identifier, coll_name + ":" + oid); 244 GSXML.setNodeText(identifier, coll_name + ":" + oid); // **** OID 334 245 header.appendChild(identifier); 335 246 -
gs3-extensions/iiif-servlet/trunk/src/gsdl-src/java/org/greenstone/gsdl3/util/IIIFXML.java
r32874 r32883 56 56 // IIIF error codes 57 57 public static final String ID_DOES_NOT_EXIST = "idDoesNotExist"; 58 58 public static final String BAD_ARGUMENT = "badArgument"; 59 public static final String BAD_VERB = "badVerb"; 60 59 61 // General 60 62 public static final String IIIF_PMH = "IIIF-PMH"; // **** 61 public static final String RESPONSE_DATE = "responseDate"; // ****63 //public static final String RESPONSE_DATE = "responseDate"; // **** 62 64 public static final String REQUEST = "request"; 63 65 … … 71 73 public static final String METADATA = "metadata"; 72 74 73 //public static final String OAIPMH = "OAIPMH"; // **** 74 75 //public static final String OAI_SET_LIST = "oaiSetList"; // **** 76 //public static final String OAI_SERVICE_UNAVAILABLE = "OAI service unavailable"; 77 public static final String OID = "OID"; // **** 75 public static final String OID = "OID"; // **** 78 76 79 77 public static final String IIIF_SERVICE_RACK = "IIIFPMH"; 80 //system-dependent file separator, maybe '/' or '\' 81 //public static final String FILE_SEPARATOR = File.separator; 82 //public static final String OAI_VERSION1 = "1.0"; 83 //public static final String IIIF_VERSION2 = "2.1"; // **** 78 84 79 /*************************above are final values****************************/ 85 86 87 //initialized in getIIIFConfigXML() 80 88 81 public static Element iiif_config_elem = null; 89 82 90 83 public static final String iiif_version = "2.1"; // **** 91 84 public static String baseURL = ""; 92 85 … … 169 162 GSXML.setNodeText(request_elem, baseURL); 170 163 171 //Node resp_date = GSXML.getChildByTagName(response, RESPONSE_DATE); // ****172 173 164 return response; 174 165 } … … 211 202 } 212 203 213 // This is the response message sent when there's a request to activate/deactivate a non- OAIcollection214 // A request to activate a non-existent/non- OAIcollection is not invalid, it's just that we won't process it.204 // This is the response message sent when there's a request to activate/deactivate a non-IIIF collection 205 // A request to activate a non-existent/non-IIIF collection is not invalid, it's just that we won't process it. 215 206 // So we still return status code OK (OK status code is needed for servercontrol.pm of activate.pl to recognise 216 207 // that the command had been "successful" when it runs de/activate). … … 278 269 * escaped sequences (eg, '%3A'). 279 270 */ 271 /* 280 272 public static String iiifEncode(String original_str) { // **** 281 273 logger.info("iiifEncode() " + original_str); … … 287 279 return original_str; 288 280 } 289 281 */ 282 290 283 public static Element createResponseHeader(Document response_doc, String verb) { 291 //String tag_name = (iiif_version.equals(IIIF_VERSION2))? IIIF_PMH : verb; // **** 292 String tag_name = IIIF_PMH; 284 String tag_name = IIIF_PMH; 293 285 Element iiif = response_doc.createElement(tag_name); 294 //Element resp_date = response_doc.createElement(RESPONSE_DATE); // ****295 286 Element req = response_doc.createElement(REQUEST); 296 //oai.appendChild(resp_date);297 287 iiif.appendChild(req); 298 288 299 289 return iiif; 300 } 301 302 /* 303 public static Element createOAIIdentifierXML(Document doc, String repository_id, String sample_collection, String sample_doc_id) { 304 String xml = "<oai-identifier xmlns=\"http://www.openarchives.org/OAI/2.0/oai-identifier\"\n xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n xsi:schemaLocation=\"http://www.openarchives.org/OAI/2.0/oai-identifier\n http://www.openarchives.org/OAI/2.0/oai-identifier.xsd\">\n <scheme>oai</scheme>\n<repositoryIdentifier>" + repository_id + "</repositoryIdentifier>\n<delimiter>:</delimiter>\n<sampleIdentifier>oai:"+repository_id+":"+sample_collection+":"+sample_doc_id+"</sampleIdentifier>\n</oai-identifier>"; 305 306 Document xml_doc = converter.getDOM(xml); 307 return (Element)doc.importNode(xml_doc.getDocumentElement(), true); 308 309 310 } 311 */ 312 313 /* 314 public static Element createGSDLElement(Document doc) { 315 String xml = "<gsdl xmlns=\"http://www.greenstone.org/namespace/gsdl_oaiinfo/1.0/gsdl_oaiinfo\"\n xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n xsi:schemaLocation=\"http://www.greenstone.org/namespace/gsdl_oaiinfo/1.0/gsdl_oaiinfo\n http://www.greenstone.org/namespace/gsdl_oaiinfo/1.0/gsdl_oaiinfo.xsd\"></gsdl>"; 316 Document xml_doc = converter.getDOM(xml); 317 return (Element)doc.importNode(xml_doc.getDocumentElement(), true); 318 } 319 */ 320 290 } 321 291 } 322 292
Note:
See TracChangeset
for help on using the changeset viewer.