Changeset 8574 for trunk/gsdl3/src/java
- Timestamp:
- 2004-11-16T16:15:38+13:00 (20 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/gsdl3/src/java/org/greenstone/gsdl3/service/GS2Retrieve.java
r6873 r8574 79 79 protected Element config_info = null; // the xml from the config file 80 80 81 protected ArrayList replacements = null; 81 protected GS2MacroResolver macro_resolver = null; 82 82 83 /** constructor */ 83 84 protected GS2Retrieve() 84 85 { 85 86 this.gdbm_src = new GDBMWrapper(); 87 this.macro_resolver = new GS2MacroResolver(); 86 88 } 87 89 … … 114 116 System.err.println("GS2Retrieve Error: Could not open GDBM database!"); 115 117 return false; 118 } 119 120 // look for document display format 121 String path = GSPath.appendLink(GSXML.DISPLAY_ELEM, GSXML.FORMAT_ELEM); 122 Element display_format = (Element)GSXML.getNodeByPath(extra_info, path); 123 if (display_format != null) { 124 this.format_info_map.put(DOCUMENT_CONTENT_RETRIEVE_SERVICE, this.doc.importNode(display_format, true)); 125 // shoudl we make a copy? 126 } 127 128 // set up the macro resolver 129 Element replacement_elem = (Element)GSXML.getChildByTagName(extra_info, "replaceList"); 130 if (replacement_elem != null) { 131 NodeList replaces = replacement_elem.getElementsByTagName("replace"); 132 for (int i=0; i<replaces.getLength(); i++) { 133 Element e = (Element)replaces.item(i); 134 String from = e.getAttribute("macro"); 135 String to = e.getAttribute("text"); 136 if (to.equals("")) { 137 String key = e.getAttribute("key"); 138 String bundle = e.getAttribute("bundle"); 139 macro_resolver.addMacro(from, bundle, key); 140 } else { 141 macro_resolver.addMacro(from, to); 142 } 143 } 116 144 } 117 145 … … 181 209 } 182 210 183 // look for document display format184 String path = GSPath.appendLink(GSXML.DISPLAY_ELEM, GSXML.FORMAT_ELEM);185 Element display_format = (Element)GSXML.getNodeByPath(extra_info, path);186 if (display_format != null) {187 this.format_info_map.put(DOCUMENT_CONTENT_RETRIEVE_SERVICE, this.doc.importNode(display_format, true));188 // shoudl we make a copy?189 }190 191 // set up the replacement list192 Element replacement_elem = (Element)GSXML.getChildByTagName(extra_info, "replaceList");193 if (replacement_elem != null) {194 this.replacements = new ArrayList();195 NodeList replaces = replacement_elem.getElementsByTagName("replace");196 for (int i=0; i<replaces.getLength(); i++) {197 Element e = (Element)replaces.item(i);198 String from = e.getAttribute("from");199 String to = e.getAttribute("to");200 System.out.println("replace "+from+" with "+to);201 this.replacements.add(from);202 this.replacements.add(to);203 }204 }205 211 return true; 206 212 } … … 510 516 result.setAttribute(GSXML.TYPE_ATT, GSXML.REQUEST_TYPE_PROCESS); 511 517 512 518 String lang = request.getAttribute(GSXML.LANG_ATT); 513 519 Element query_doc_list = (Element) GSXML.getChildByTagName(request, node_name+GSXML.LIST_MODIFIER); 514 520 if (query_doc_list == null) { … … 689 695 690 696 String node_name; 691 697 String lang = request.getAttribute(GSXML.LANG_ATT); 692 698 String service_name; 693 699 if (type==DOCUMENT) { … … 763 769 String key = (String)it.next(); 764 770 String value = info.getInfo(key); 765 GSXML.addMetadata(this.doc, node_meta_list, key, replaceMacros(value));771 GSXML.addMetadata(this.doc, node_meta_list, key, this.macro_resolver.resolveMacros(value, lang)); 766 772 } 767 773 } else { // just get the selected ones … … 769 775 for (int m = 0; m < metadata_list.size(); m++) { 770 776 String metadata = (String) metadata_list.get(m); 771 String value = getMetadata(node_id, info, metadata );777 String value = getMetadata(node_id, info, metadata, lang); 772 778 if (!value.equals("")) { 773 779 GSXML.addMetadata(this.doc, node_meta_list, metadata, value); … … 781 787 782 788 protected String getMetadata(String node_id, DBInfo info, 783 String metadata ) {789 String metadata, String lang) { 784 790 boolean multiple = false; 785 791 String relation = ""; … … 788 794 if (pos ==-1) { 789 795 // just a plain meta entry eg dc.Title 790 return replaceMacros((String)info.getInfo(metadata));796 return macro_resolver.resolveMacros((String)info.getInfo(metadata), lang); 791 797 } 792 798 … … 848 854 849 855 if (!multiple) { 850 result.append( replaceMacros(relation_info.getInfo(metadata)));856 result.append(this.macro_resolver.resolveMacros(relation_info.getInfo(metadata), lang)); 851 857 } else { 852 858 // we have multiple meta … … 860 866 result.append(separator); 861 867 } 862 result.append( replaceMacros((String)values.elementAt(i)));868 result.append(this.macro_resolver.resolveMacros((String)values.elementAt(i), lang)); 863 869 } 864 870 } … … 877 883 if (!multiple) { 878 884 result.insert(0, separator); 879 result.insert(0, replaceMacros(relation_info.getInfo(metadata)));885 result.insert(0, this.macro_resolver.resolveMacros(relation_info.getInfo(metadata), lang)); 880 886 } else { 881 887 Vector values = relation_info.getMultiInfo(metadata); … … 883 889 for (int i=values.size()-1; i>=0; i--) { 884 890 result.insert(0, separator); 885 result.insert(0, replaceMacros((String)values.elementAt(i)));891 result.insert(0, this.macro_resolver.resolveMacros((String)values.elementAt(i), lang)); 886 892 } 887 893 } … … 894 900 } 895 901 896 897 protected String replaceMacros(String text) {898 if (this.replacements == null) {899 return text;900 }901 for (int i=0; i<this.replacements.size()-1; i+=2) {902 String from = (String)this.replacements.get(i);903 String to = (String)this.replacements.get(i+1);904 text = text.replaceAll(from, to);905 }906 return text;907 }908 902 /** Retrieve the content of a document - implemented by concrete subclasses */ 909 903 protected abstract Element processDocumentContentRetrieve(Element request);
Note:
See TracChangeset
for help on using the changeset viewer.