ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/projects/cms/source/client/javacli/XMLStreamParser.java
Revision: 1.3
Committed: Tue May 21 16:47:11 2002 UTC (22 years, 6 months ago) by tdb
Branch: MAIN
Changes since 1.2: +5 -4 lines
Log Message:
Added URL to GPL headers.

File Contents

# Content
1 /*
2 * i-scream central monitoring system
3 * http://www.i-scream.org.uk
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
23 //---IMPORTS---
24 import java.io.*;
25 import java.util.ArrayList;
26
27 import org.xml.sax.*;
28 import javax.xml.parsers.SAXParserFactory;
29 import javax.xml.parsers.ParserConfigurationException;
30 import javax.xml.parsers.SAXParser;
31
32 /**
33 * XMLStreamParser - Used to build XMLPacket objects.
34 *
35 * @author $Author: tdb $
36 * @version $Id: XMLStreamParser.java,v 1.2 2002/05/18 18:15:56 tdb Exp $
37 */
38 public class XMLStreamParser extends HandlerBase {
39
40 //---FINAL ATTRIBUTES---
41
42 /**
43 * The current CVS revision of this class
44 */
45 public final String REVISION = "$Revision: 1.2 $";
46
47 //---STATIC METHODS---
48
49 //---CONSTRUCTORS---
50
51 /**
52 * Constructor for the XMLStreamParser.
53 */
54 public XMLStreamParser (XMLPacket packet) {
55 _packet = packet;
56 }
57
58 //---PUBLIC METHODS---
59
60
61 public void startDocument () throws SAXException {
62 //System.out.println("Packet found");
63 }
64
65 public void endDocument () throws SAXException {
66 //System.out.println("Packet Ended");
67 }
68
69 /**
70 * Add each tag's attribute to the XMLPacket.
71 * Note that all attributes within an opening tag are
72 * stored as "someroot.sometag.attributes.attribute_name"
73 * E.g. If <packet> is the root node, then:
74 * <packet machine_name="raptor">
75 * is stored as:
76 * "packet.attributes.machine_name"
77 * within the XMLPacket.
78 */
79 public void startElement (String name, AttributeList attrs) throws SAXException {
80 _indentLevel++;
81 _tagList.add(name);
82 if (attrs != null) {
83 for (int i = 0; i < attrs.getLength (); i++) {
84 _packet.addParam(getPath()+".attributes."+attrs.getName(i), attrs.getValue(i));
85 }
86 }
87 }
88
89 /**
90 * When an XML element is finished with, we must remove
91 * the tag name from the tagList and decrement the indent
92 * level.
93 */
94 public void endElement (String name) throws SAXException {
95 _tagList.remove(_tagList.size()-1);
96 _indentLevel--;
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 if (!s.trim().equals("")) {
108 _packet.addParam(getPath(), s);
109 }
110 }
111
112 //---PRIVATE METHODS---
113
114 /**
115 * Return the heirarchical string to be used as a key value
116 * in the XMLPacket.
117 */
118 private String getPath () {
119 String path = (String)_tagList.get(0);
120 if (_tagList.size() > 0) {
121 for (int i = 1 ; i < _tagList.size() ; i++) {
122 path = path + "." + (String)_tagList.get(i);
123 }
124 }
125 return path;
126 }
127
128 //---ACCESSOR/MUTATOR METHODS---
129
130 //---ATTRIBUTES---
131
132 private int _indentLevel = 0;
133 private ArrayList _tagList = new ArrayList();
134 private XMLPacket _packet;
135
136 //---STATIC ATTRIBUTES---
137
138 }