annotate servlet/src/digilib/io/XMLMetaLoader.java @ 233:e40d8b2e3978

Servlet version 1.19b1 -- with context metadata - reads and caches context tags from index meta file - for use in dlContext-xml.jsp
author robcast
date Sat, 17 Jul 2004 19:25:26 +0200
parents f921735dc578
children aaf6eace011d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
130
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
1 /* XMLMetaLoader -- Load an XML format metadata into a Hashtable
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
2
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
3 Digital Image Library servlet components
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
4
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
5 Copyright (C) 2003 Robert Casties (robcast@mail.berlios.de)
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
6
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
7 This program is free software; you can redistribute it and/or modify it
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
8 under the terms of the GNU General Public License as published by the
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
9 Free Software Foundation; either version 2 of the License, or (at your
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
10 option) any later version.
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
11
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
12 Please read license.txt for the full details. A copy of the GPL
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
13 may be found at http://www.gnu.org/copyleft/lgpl.html
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
14
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
15 You should have received a copy of the GNU General Public License
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
16 along with this program; if not, write to the Free Software
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
17 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
18
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
19 */
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
20
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
21 package digilib.io;
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
22
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
23 import java.io.IOException;
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
24 import java.util.HashMap;
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
25 import java.util.LinkedList;
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
26
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
27 import javax.xml.parsers.ParserConfigurationException;
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
28 import javax.xml.parsers.SAXParser;
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
29 import javax.xml.parsers.SAXParserFactory;
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
30
181
afe7ff98bb71 Servlet version 1.18b1
robcast
parents: 151
diff changeset
31 import org.apache.log4j.Logger;
130
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
32 import org.xml.sax.Attributes;
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
33 import org.xml.sax.SAXException;
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
34 import org.xml.sax.helpers.DefaultHandler;
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
35
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
36 public class XMLMetaLoader {
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
37
181
afe7ff98bb71 Servlet version 1.18b1
robcast
parents: 151
diff changeset
38 private Logger logger = Logger.getLogger(this.getClass());
130
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
39 private String outerTag = "resource";
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
40 private String metaTag = "meta";
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
41 private String fileTag = "file";
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
42 private String fileNameTag = "name";
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
43 private String filePathTag = "path";
233
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
44 private String imgTag = "img";
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
45 private String collectTag = "context";
130
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
46
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
47 public XMLMetaLoader() {
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
48 }
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
49
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
50 /**
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
51 * inner class XMLMetaParser to be called by the parser
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
52 */
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
53 private class XMLMetaParser extends DefaultHandler {
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
54
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
55 private LinkedList tags;
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
56 private HashMap files;
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
57 private HashMap meta;
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
58 private StringBuffer content;
233
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
59 private boolean collecting;
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
60 private StringBuffer collectedContent;
130
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
61 private String fileName;
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
62 private String filePath;
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
63
139
11cfe4c89fdc Servlet version 1.11b1 with improved original-size.
robcast
parents: 130
diff changeset
64 /**
11cfe4c89fdc Servlet version 1.11b1 with improved original-size.
robcast
parents: 130
diff changeset
65 * extracts the elements name from either localName ln or qName qn.
11cfe4c89fdc Servlet version 1.11b1 with improved original-size.
robcast
parents: 130
diff changeset
66 *
11cfe4c89fdc Servlet version 1.11b1 with improved original-size.
robcast
parents: 130
diff changeset
67 * @param ln localName
11cfe4c89fdc Servlet version 1.11b1 with improved original-size.
robcast
parents: 130
diff changeset
68 * @param qn qName
11cfe4c89fdc Servlet version 1.11b1 with improved original-size.
robcast
parents: 130
diff changeset
69 * @return element name
11cfe4c89fdc Servlet version 1.11b1 with improved original-size.
robcast
parents: 130
diff changeset
70 */
11cfe4c89fdc Servlet version 1.11b1 with improved original-size.
robcast
parents: 130
diff changeset
71 private String getName(String ln, String qn) {
11cfe4c89fdc Servlet version 1.11b1 with improved original-size.
robcast
parents: 130
diff changeset
72 if (ln != null) {
11cfe4c89fdc Servlet version 1.11b1 with improved original-size.
robcast
parents: 130
diff changeset
73 if (ln.length() > 0) {
11cfe4c89fdc Servlet version 1.11b1 with improved original-size.
robcast
parents: 130
diff changeset
74 return ln;
11cfe4c89fdc Servlet version 1.11b1 with improved original-size.
robcast
parents: 130
diff changeset
75 }
11cfe4c89fdc Servlet version 1.11b1 with improved original-size.
robcast
parents: 130
diff changeset
76 }
11cfe4c89fdc Servlet version 1.11b1 with improved original-size.
robcast
parents: 130
diff changeset
77 // else it's qName (or nothing)
11cfe4c89fdc Servlet version 1.11b1 with improved original-size.
robcast
parents: 130
diff changeset
78 return qn;
11cfe4c89fdc Servlet version 1.11b1 with improved original-size.
robcast
parents: 130
diff changeset
79 }
130
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
80
233
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
81 /**
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
82 * returns all attributes as a String
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
83 *
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
84 * @param attrs
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
85 * @return
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
86 */
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
87 private String getAttrString(Attributes attrs) {
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
88 StringBuffer s = new StringBuffer();
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
89 for (int i = 0; i < attrs.getLength(); i++) {
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
90 String key = getName(attrs.getLocalName(i), attrs.getQName(i));
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
91 s.append(" "+key+"=\""+attrs.getValue(i));
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
92 }
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
93 return s.toString();
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
94 }
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
95
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
96
130
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
97 // Parser calls this once at the beginning of a document
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
98 public void startDocument() throws SAXException {
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
99 tags = new LinkedList();
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
100 files = new HashMap();
233
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
101 collecting = false;
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
102 collectedContent = null;
130
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
103 }
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
104
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
105 // Parser calls this for each element in a document
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
106 public void startElement(
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
107 String namespaceURI,
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
108 String localName,
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
109 String qName,
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
110 Attributes atts)
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
111 throws SAXException {
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
112
139
11cfe4c89fdc Servlet version 1.11b1 with improved original-size.
robcast
parents: 130
diff changeset
113 String name = getName(localName, qName);
130
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
114 // open a new tag
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
115 tags.addLast(name);
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
116 // start new content (no nesting of tags and content)
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
117 content = new StringBuffer();
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
118
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
119 if (name.equals(metaTag)) {
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
120 // new meta tag
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
121 meta = new HashMap();
233
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
122 collectedContent = new StringBuffer();
130
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
123 } else if (name.equals(fileTag)) {
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
124 // new file tag
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
125 fileName = null;
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
126 filePath = null;
139
11cfe4c89fdc Servlet version 1.11b1 with improved original-size.
robcast
parents: 130
diff changeset
127 meta = new HashMap();
233
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
128 collectedContent = new StringBuffer();
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
129 } else if (name.equals(collectTag)) {
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
130 // start collecting
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
131 collecting = true;
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
132 if (collectedContent == null) {
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
133 collectedContent = new StringBuffer();
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
134 }
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
135 }
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
136
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
137 // record mode
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
138 if (collecting) {
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
139 collectedContent.append("<"+name);
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
140 collectedContent.append(getAttrString(atts));
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
141 collectedContent.append(">");
130
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
142 }
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
143 }
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
144
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
145 // parser calls this for all tag content (possibly more than once)
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
146 public void characters(char[] ch, int start, int length)
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
147 throws SAXException {
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
148 // append data to current string buffer
233
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
149 if (content == null) {
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
150 content = new StringBuffer();
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
151 }
130
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
152 content.append(ch, start, length);
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
153 }
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
154
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
155 // parser calls this at the end of each element
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
156 public void endElement(
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
157 String namespaceURI,
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
158 String localName,
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
159 String qName)
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
160 throws SAXException {
151
bc8df0133c04 Servlet version 1.15b1
robcast
parents: 139
diff changeset
161
139
11cfe4c89fdc Servlet version 1.11b1 with improved original-size.
robcast
parents: 130
diff changeset
162 String name = getName(localName, qName);
130
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
163 // exit the tag
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
164 tags.removeLast();
233
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
165 String lastTag = (tags.isEmpty()) ? "" : (String) tags.getLast();
151
bc8df0133c04 Servlet version 1.15b1
robcast
parents: 139
diff changeset
166
bc8df0133c04 Servlet version 1.15b1
robcast
parents: 139
diff changeset
167 // was it a file/name tag?
233
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
168 if (name.equals(fileNameTag) && lastTag.equals(fileTag)) {
130
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
169 // save name as filename
151
bc8df0133c04 Servlet version 1.15b1
robcast
parents: 139
diff changeset
170 if ((content != null) && (content.length() > 0)) {
bc8df0133c04 Servlet version 1.15b1
robcast
parents: 139
diff changeset
171 fileName = content.toString().trim();
130
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
172 }
233
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
173 content = null;
130
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
174 return;
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
175 }
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
176
151
bc8df0133c04 Servlet version 1.15b1
robcast
parents: 139
diff changeset
177 // was it a file/path tag?
233
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
178 if (name.equals(filePathTag) && lastTag.equals(fileTag)) {
130
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
179 // save path as filepath
151
bc8df0133c04 Servlet version 1.15b1
robcast
parents: 139
diff changeset
180 if ((content != null) && (content.length() > 0)) {
bc8df0133c04 Servlet version 1.15b1
robcast
parents: 139
diff changeset
181 filePath = content.toString().trim();
130
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
182 }
233
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
183 content = null;
130
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
184 return;
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
185 }
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
186
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
187 // was it a file tag?
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
188 if (name.equals(fileTag)) {
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
189 // is there meta to save?
151
bc8df0133c04 Servlet version 1.15b1
robcast
parents: 139
diff changeset
190 if ((meta != null) && (meta.size() > 0)) {
bc8df0133c04 Servlet version 1.15b1
robcast
parents: 139
diff changeset
191 // file name is (optional file/path) / file/name
130
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
192 String fn = null;
151
bc8df0133c04 Servlet version 1.15b1
robcast
parents: 139
diff changeset
193
bc8df0133c04 Servlet version 1.15b1
robcast
parents: 139
diff changeset
194 if (fileName != null) {
bc8df0133c04 Servlet version 1.15b1
robcast
parents: 139
diff changeset
195 if (filePath != null) {
bc8df0133c04 Servlet version 1.15b1
robcast
parents: 139
diff changeset
196 fn = filePath + "/" + fileName;
bc8df0133c04 Servlet version 1.15b1
robcast
parents: 139
diff changeset
197 } else {
bc8df0133c04 Servlet version 1.15b1
robcast
parents: 139
diff changeset
198 fn = fileName;
bc8df0133c04 Servlet version 1.15b1
robcast
parents: 139
diff changeset
199 }
130
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
200 } else {
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
201 // no file name, no file
233
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
202 content = null;
130
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
203 return;
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
204 }
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
205 // save meta in file list
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
206 files.put(fn, meta);
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
207 }
233
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
208 content = null;
130
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
209 return;
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
210 }
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
211
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
212 // was it a meta tag outside a file tag?
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
213 if (name.equals(metaTag) && !tags.contains(fileTag)) {
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
214 // save meta as dir meta
151
bc8df0133c04 Servlet version 1.15b1
robcast
parents: 139
diff changeset
215 if ((meta != null) && (meta.size() > 0)) {
130
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
216 files.put("", meta);
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
217 }
233
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
218 content = null;
130
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
219 return;
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
220 }
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
221
233
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
222 // is this inside an digilib info (=img) tag?
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
223 if (lastTag.equals(imgTag)) {
130
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
224 // then add whatever this is
151
bc8df0133c04 Servlet version 1.15b1
robcast
parents: 139
diff changeset
225 if ((content != null) && (content.length() > 0)) {
bc8df0133c04 Servlet version 1.15b1
robcast
parents: 139
diff changeset
226 meta.put(name, content.toString().trim());
130
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
227 }
233
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
228 content = null;
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
229 return;
130
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
230 }
151
bc8df0133c04 Servlet version 1.15b1
robcast
parents: 139
diff changeset
231
233
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
232 // is this the end of collectTag?
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
233 if (name.equals(collectTag)) {
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
234 collecting = false;
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
235 collectedContent.append("</"+collectTag+">\n");
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
236 // store collected stuff
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
237 meta.put(collectTag, collectedContent.toString());
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
238 //logger.debug("collected: '"+collectedContent+"'");
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
239 content = null;
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
240 return;
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
241 }
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
242
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
243 // write collected content
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
244 if (collecting) {
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
245 String s = "";
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
246 if ((content != null) && (content.length() > 0)) {
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
247 s = content.toString().trim();
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
248 }
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
249 //logger.debug("collect:"+name+" = "+s);
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
250 collectedContent.append(s);
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
251 collectedContent.append("</"+name+">\n");
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
252 content = null;
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
253 return;
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
254 }
130
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
255 }
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
256
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
257 }
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
258
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
259 /**
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
260 * load and parse a file (as URL)
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
261 * returns HashMap with list data
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
262 */
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
263 public HashMap loadURL(String path) throws SAXException, IOException {
195
f921735dc578 Servlet version 1.18b4
robcast
parents: 181
diff changeset
264 logger.debug("loading meta: "+path);
130
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
265 // Create a JAXP SAXParserFactory and configure it
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
266 SAXParserFactory spf = SAXParserFactory.newInstance();
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
267 spf.setNamespaceAware(true);
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
268
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
269 SAXParser parser = null;
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
270 try {
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
271 // Create a JAXP SAXParser
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
272 parser = spf.newSAXParser();
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
273
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
274 } catch (ParserConfigurationException e) {
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
275 throw new SAXException(e);
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
276 }
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
277
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
278 // create a list parser (keeps the data!)
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
279 XMLMetaParser listParser = new XMLMetaParser();
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
280
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
281 // Tell the SAXParser to parse the XML document
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
282 parser.parse(path, listParser);
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
283
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
284 return listParser.files;
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
285 }
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
286
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
287 }