annotate servlet/src/digilib/io/XMLMetaLoader.java @ 385:0155f1c3f505

forgot rgb icon
author hertzhaft
date Wed, 07 Dec 2005 16:07:29 +0100
parents d4c0c4d858a9
children 6dde90968cf1
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;
273
d4c0c4d858a9 Servlet version 1.21b3
robcast
parents: 246
diff changeset
26 import java.util.Map;
130
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
27
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
28 import javax.xml.parsers.ParserConfigurationException;
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
29 import javax.xml.parsers.SAXParser;
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
30 import javax.xml.parsers.SAXParserFactory;
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
31
181
afe7ff98bb71 Servlet version 1.18b1
robcast
parents: 151
diff changeset
32 import org.apache.log4j.Logger;
130
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
33 import org.xml.sax.Attributes;
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
34 import org.xml.sax.SAXException;
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
35 import org.xml.sax.helpers.DefaultHandler;
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
36
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
37 public class XMLMetaLoader {
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
38
181
afe7ff98bb71 Servlet version 1.18b1
robcast
parents: 151
diff changeset
39 private Logger logger = Logger.getLogger(this.getClass());
130
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
40 private String outerTag = "resource";
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
41 private String metaTag = "meta";
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
42 private String fileTag = "file";
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
43 private String fileNameTag = "name";
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
44 private String filePathTag = "path";
233
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
45 private String imgTag = "img";
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
46 private String collectTag = "context";
130
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
47
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
48 public XMLMetaLoader() {
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 /**
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
52 * inner class XMLMetaParser to be called by the parser
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
53 */
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
54 private class XMLMetaParser extends DefaultHandler {
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
55
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
56 private LinkedList tags;
273
d4c0c4d858a9 Servlet version 1.21b3
robcast
parents: 246
diff changeset
57 private Map files;
d4c0c4d858a9 Servlet version 1.21b3
robcast
parents: 246
diff changeset
58 private Map meta;
130
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
59 private StringBuffer content;
233
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
60 private boolean collecting;
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
61 private StringBuffer collectedContent;
130
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
62 private String fileName;
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
63 private String filePath;
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
64
139
11cfe4c89fdc Servlet version 1.11b1 with improved original-size.
robcast
parents: 130
diff changeset
65 /**
11cfe4c89fdc Servlet version 1.11b1 with improved original-size.
robcast
parents: 130
diff changeset
66 * 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
67 *
11cfe4c89fdc Servlet version 1.11b1 with improved original-size.
robcast
parents: 130
diff changeset
68 * @param ln localName
11cfe4c89fdc Servlet version 1.11b1 with improved original-size.
robcast
parents: 130
diff changeset
69 * @param qn qName
11cfe4c89fdc Servlet version 1.11b1 with improved original-size.
robcast
parents: 130
diff changeset
70 * @return element name
11cfe4c89fdc Servlet version 1.11b1 with improved original-size.
robcast
parents: 130
diff changeset
71 */
11cfe4c89fdc Servlet version 1.11b1 with improved original-size.
robcast
parents: 130
diff changeset
72 private String getName(String ln, String qn) {
11cfe4c89fdc Servlet version 1.11b1 with improved original-size.
robcast
parents: 130
diff changeset
73 if (ln != null) {
11cfe4c89fdc Servlet version 1.11b1 with improved original-size.
robcast
parents: 130
diff changeset
74 if (ln.length() > 0) {
11cfe4c89fdc Servlet version 1.11b1 with improved original-size.
robcast
parents: 130
diff changeset
75 return ln;
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 }
11cfe4c89fdc Servlet version 1.11b1 with improved original-size.
robcast
parents: 130
diff changeset
78 // else it's qName (or nothing)
11cfe4c89fdc Servlet version 1.11b1 with improved original-size.
robcast
parents: 130
diff changeset
79 return qn;
11cfe4c89fdc Servlet version 1.11b1 with improved original-size.
robcast
parents: 130
diff changeset
80 }
130
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
81
233
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
82 /**
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
83 * returns all attributes as a String
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
84 *
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
85 * @param attrs
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
86 * @return
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
87 */
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
88 private String getAttrString(Attributes attrs) {
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
89 StringBuffer s = new StringBuffer();
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
90 for (int i = 0; i < attrs.getLength(); i++) {
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
91 String key = getName(attrs.getLocalName(i), attrs.getQName(i));
246
aaf6eace011d Servlet version 1.19b4
robcast
parents: 233
diff changeset
92 s.append(" "+key+"=\""+attrs.getValue(i)+"\"");
233
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
93 }
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
94 return s.toString();
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
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
97
130
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
98 // Parser calls this once at the beginning of a document
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
99 public void startDocument() throws SAXException {
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
100 tags = new LinkedList();
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
101 files = new HashMap();
233
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
102 collecting = false;
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
103 collectedContent = null;
130
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
104 }
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
105
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
106 // Parser calls this for each element in a document
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
107 public void startElement(
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
108 String namespaceURI,
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
109 String localName,
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
110 String qName,
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
111 Attributes atts)
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
112 throws SAXException {
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
113
139
11cfe4c89fdc Servlet version 1.11b1 with improved original-size.
robcast
parents: 130
diff changeset
114 String name = getName(localName, qName);
130
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
115 // open a new tag
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
116 tags.addLast(name);
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
117 // start new content (no nesting of tags and content)
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
118 content = new StringBuffer();
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
119
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
120 if (name.equals(metaTag)) {
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
121 // new meta tag
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
122 meta = new HashMap();
233
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
123 collectedContent = new StringBuffer();
130
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
124 } else if (name.equals(fileTag)) {
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
125 // new file tag
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
126 fileName = null;
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
127 filePath = null;
139
11cfe4c89fdc Servlet version 1.11b1 with improved original-size.
robcast
parents: 130
diff changeset
128 meta = new HashMap();
233
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
129 collectedContent = new StringBuffer();
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
130 } else if (name.equals(collectTag)) {
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
131 // start collecting
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
132 collecting = true;
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
133 if (collectedContent == null) {
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
134 collectedContent = new StringBuffer();
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
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
138 // record mode
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
139 if (collecting) {
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
140 collectedContent.append("<"+name);
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
141 collectedContent.append(getAttrString(atts));
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
142 collectedContent.append(">");
130
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
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
146 // parser calls this for all tag content (possibly more than once)
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
147 public void characters(char[] ch, int start, int length)
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
148 throws SAXException {
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
149 // append data to current string buffer
233
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
150 if (content == null) {
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
151 content = new StringBuffer();
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
152 }
130
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
153 content.append(ch, start, length);
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
154 }
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
155
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
156 // parser calls this at the end of each element
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
157 public void endElement(
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
158 String namespaceURI,
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
159 String localName,
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
160 String qName)
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
161 throws SAXException {
151
bc8df0133c04 Servlet version 1.15b1
robcast
parents: 139
diff changeset
162
139
11cfe4c89fdc Servlet version 1.11b1 with improved original-size.
robcast
parents: 130
diff changeset
163 String name = getName(localName, qName);
130
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
164 // exit the tag
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
165 tags.removeLast();
233
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
166 String lastTag = (tags.isEmpty()) ? "" : (String) tags.getLast();
151
bc8df0133c04 Servlet version 1.15b1
robcast
parents: 139
diff changeset
167
bc8df0133c04 Servlet version 1.15b1
robcast
parents: 139
diff changeset
168 // was it a file/name tag?
233
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
169 if (name.equals(fileNameTag) && lastTag.equals(fileTag)) {
130
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
170 // save name as filename
151
bc8df0133c04 Servlet version 1.15b1
robcast
parents: 139
diff changeset
171 if ((content != null) && (content.length() > 0)) {
bc8df0133c04 Servlet version 1.15b1
robcast
parents: 139
diff changeset
172 fileName = content.toString().trim();
130
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
173 }
233
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
174 content = null;
130
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
175 return;
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
176 }
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
177
151
bc8df0133c04 Servlet version 1.15b1
robcast
parents: 139
diff changeset
178 // was it a file/path tag?
233
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
179 if (name.equals(filePathTag) && lastTag.equals(fileTag)) {
130
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
180 // save path as filepath
151
bc8df0133c04 Servlet version 1.15b1
robcast
parents: 139
diff changeset
181 if ((content != null) && (content.length() > 0)) {
bc8df0133c04 Servlet version 1.15b1
robcast
parents: 139
diff changeset
182 filePath = content.toString().trim();
130
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
183 }
233
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
184 content = null;
130
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
185 return;
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
186 }
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
187
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
188 // was it a file tag?
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
189 if (name.equals(fileTag)) {
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
190 // is there meta to save?
151
bc8df0133c04 Servlet version 1.15b1
robcast
parents: 139
diff changeset
191 if ((meta != null) && (meta.size() > 0)) {
bc8df0133c04 Servlet version 1.15b1
robcast
parents: 139
diff changeset
192 // file name is (optional file/path) / file/name
130
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
193 String fn = null;
151
bc8df0133c04 Servlet version 1.15b1
robcast
parents: 139
diff changeset
194
bc8df0133c04 Servlet version 1.15b1
robcast
parents: 139
diff changeset
195 if (fileName != null) {
bc8df0133c04 Servlet version 1.15b1
robcast
parents: 139
diff changeset
196 if (filePath != null) {
bc8df0133c04 Servlet version 1.15b1
robcast
parents: 139
diff changeset
197 fn = filePath + "/" + fileName;
bc8df0133c04 Servlet version 1.15b1
robcast
parents: 139
diff changeset
198 } else {
bc8df0133c04 Servlet version 1.15b1
robcast
parents: 139
diff changeset
199 fn = fileName;
bc8df0133c04 Servlet version 1.15b1
robcast
parents: 139
diff changeset
200 }
130
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
201 } else {
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
202 // no file name, no file
233
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
203 content = null;
130
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
204 return;
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
205 }
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
206 // save meta in file list
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
207 files.put(fn, meta);
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
208 }
233
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
209 content = null;
130
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
210 return;
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
211 }
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
212
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
213 // was it a meta tag outside a file tag?
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
214 if (name.equals(metaTag) && !tags.contains(fileTag)) {
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
215 // save meta as dir meta
151
bc8df0133c04 Servlet version 1.15b1
robcast
parents: 139
diff changeset
216 if ((meta != null) && (meta.size() > 0)) {
130
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
217 files.put("", meta);
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
218 }
233
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
219 content = null;
130
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
220 return;
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
221 }
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
222
233
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
223 // is this inside an digilib info (=img) tag?
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
224 if (lastTag.equals(imgTag)) {
130
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
225 // then add whatever this is
151
bc8df0133c04 Servlet version 1.15b1
robcast
parents: 139
diff changeset
226 if ((content != null) && (content.length() > 0)) {
bc8df0133c04 Servlet version 1.15b1
robcast
parents: 139
diff changeset
227 meta.put(name, content.toString().trim());
130
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
228 }
233
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
229 content = null;
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
230 return;
130
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
231 }
151
bc8df0133c04 Servlet version 1.15b1
robcast
parents: 139
diff changeset
232
233
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
233 // is this the end of collectTag?
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
234 if (name.equals(collectTag)) {
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
235 collecting = false;
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
236 collectedContent.append("</"+collectTag+">\n");
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
237 // store collected stuff
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
238 meta.put(collectTag, collectedContent.toString());
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
239 //logger.debug("collected: '"+collectedContent+"'");
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
240 content = null;
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
241 return;
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
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
244 // write collected content
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
245 if (collecting) {
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
246 String s = "";
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
247 if ((content != null) && (content.length() > 0)) {
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
248 s = content.toString().trim();
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
249 }
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
250 //logger.debug("collect:"+name+" = "+s);
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
251 collectedContent.append(s);
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
252 collectedContent.append("</"+name+">\n");
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
253 content = null;
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
254 return;
e40d8b2e3978 Servlet version 1.19b1 -- with context metadata
robcast
parents: 195
diff changeset
255 }
130
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 /**
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
261 * load and parse a file (as URL)
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
262 * returns HashMap with list data
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
263 */
273
d4c0c4d858a9 Servlet version 1.21b3
robcast
parents: 246
diff changeset
264 public Map loadURL(String path) throws SAXException, IOException {
195
f921735dc578 Servlet version 1.18b4
robcast
parents: 181
diff changeset
265 logger.debug("loading meta: "+path);
130
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
266 // Create a JAXP SAXParserFactory and configure it
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
267 SAXParserFactory spf = SAXParserFactory.newInstance();
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
268 spf.setNamespaceAware(true);
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
269
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
270 SAXParser parser = null;
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
271 try {
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
272 // Create a JAXP SAXParser
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
273 parser = spf.newSAXParser();
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
274
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
275 } catch (ParserConfigurationException e) {
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
276 throw new SAXException(e);
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
277 }
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
278
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
279 // create a list parser (keeps the data!)
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
280 XMLMetaParser listParser = new XMLMetaParser();
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
281
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
282 // Tell the SAXParser to parse the XML document
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
283 parser.parse(path, listParser);
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
284
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
285 return listParser.files;
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
286 }
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
287
c36944be0b58 Servlet Version 1.11a1with original size(!)
robcast
parents:
diff changeset
288 }