ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/projects/cms/source/util/uk/org/iscream/cms/util/XMLStringParser.java
Revision: 1.18
Committed: Sun Aug 1 10:41:08 2004 UTC (19 years, 8 months ago) by tdb
Branch: MAIN
CVS Tags: HEAD
Changes since 1.17: +3 -3 lines
Log Message:
Catch a lot of old URL's and update them. Also remove a couple of old files
that aren't used.

File Contents

# Content
1 /*
2 * i-scream central monitoring system
3 * http://www.i-scream.org
4 * Copyright (C) 2000-2002 i-scream
5 *
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public License
8 * as published by the Free Software Foundation; either version 2
9 * of the License, or (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19 */
20
21 //---PACKAGE DECLARATION---
22 package uk.org.iscream.cms.util;
23
24 //---IMPORTS---
25 import java.io.*;
26 import java.util.LinkedList;
27 import java.util.Iterator;
28 import org.xml.sax.*;
29 import org.xml.sax.helpers.*;
30 import javax.xml.parsers.*;
31
32 /**
33 * XMLStringParser - Used to assist in creating XMLPacket objects.
34 *
35 * @author $Author: tdb $
36 * @version $Id: XMLStringParser.java,v 1.17 2003/02/05 14:27:59 tdb Exp $
37 */
38 public class XMLStringParser extends DefaultHandler {
39
40 //---FINAL ATTRIBUTES---
41
42 /**
43 * The current CVS revision of this class
44 */
45 public final String REVISION = "$Revision: 1.17 $";
46
47 //---STATIC METHODS---
48
49 //---CONSTRUCTORS---
50
51 /**
52 * No-args constructor. Generally not used.
53 */
54 public XMLStringParser () {
55 _packet = new XMLPacket();
56 }
57
58 /**
59 * Constructor for accepting a reference to an XMLPacket
60 */
61 public XMLStringParser (XMLPacket packet) {
62 _packet = packet;
63 }
64
65 //---PUBLIC METHODS---
66
67 //===========================================================
68 // SAX DocumentHandler methods
69 //===========================================================
70
71 /**
72 * Add each tag's attribute to the XMLPacket.
73 * Note that all attributes within an opening tag are
74 * stored as "someroot.sometag.attributes.attribute_name"
75 * E.g. If <packet> is the root node, then:
76 * <packet machine_name="raptor">
77 * is stored as:
78 * "packet.attributes.machine_name"
79 * within the XMLPacket.
80 */
81 public void startElement (String uri, String name, String qName, Attributes atts) {
82 _tagList.addLast(qName);
83 if (atts != null) {
84 for (int i = 0; i < atts.getLength (); i++) {
85 _packet.addParam(getPath()+".attributes."+atts.getQName(i), atts.getValue(i));
86 }
87 }
88 }
89
90 /**
91 * When an XML element is finished with, we must remove
92 * the tag name from the tagList and decrement the indent
93 * level.
94 */
95 public void endElement (String uri, String name, String qName) {
96 _tagList.removeLast();
97 }
98
99 /**
100 * Any text falling within a pair of terminal tags must
101 * be added to the XMLPacket. Trim leading and trailing
102 * spaces and do not bother to add if there is no data
103 * specified within the tags.
104 */
105 public void characters (char[] buf, int offset, int len) throws SAXException {
106 String s = new String(buf, offset, len);
107 _packet.addParam(getPath(), s);
108 }
109
110 /**
111 * Overrides the {@link java.lang.Object#toString() Object.toString()}
112 * method to provide clean logging (every class should have this).
113 *
114 * This uses the uk.org.iscream.cms.server.util.NameFormat class
115 * to format the toString()
116 *
117 * @return the name of this class and its CVS revision
118 */
119 public String toString() {
120 return FormatName.getName(
121 _name,
122 getClass().getName(),
123 REVISION);
124 }
125
126 //---PRIVATE METHODS---
127
128 //===========================================================
129 // Helpers ...
130 //===========================================================
131
132 /**
133 * Return the heirarchical string to be used as a key value
134 * in the XMLPacket.
135 */
136 private String getPath () {
137 String path = "";
138 if (_tagList.size() > 0) {
139 Iterator i = _tagList.iterator();
140 path = (String) i.next();
141 while(i.hasNext()) {
142 path = path + "." + (String) i.next();
143 }
144 }
145 return path;
146 }
147
148 //---ACCESSOR/MUTATOR METHODS---
149
150 /**
151 * Accessor to the XMLPacket.
152 */
153 public XMLPacket getXMLPacket() {
154 return _packet;
155 }
156
157 //---ATTRIBUTES---
158
159 /**
160 * A LinkedList of tags
161 */
162 private LinkedList _tagList = new LinkedList();
163
164 /**
165 * A reference to the XMLPacket we are making
166 */
167 private XMLPacket _packet;
168
169 /**
170 * This is the friendly identifier of the
171 * component this class is running in.
172 * eg, a Filter may be called "filter1",
173 * If this class does not have an owning
174 * component, a name from the configuration
175 * can be placed here. This name could also
176 * be changed to null for utility classes.
177 */
178 private String _name = null;
179
180 //---STATIC ATTRIBUTES---
181
182 }