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, 9 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

# User Rev Content
1 tdb 1.15 /*
2     * i-scream central monitoring system
3 tdb 1.18 * http://www.i-scream.org
4 tdb 1.15 * 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 ajm 1.5 //---PACKAGE DECLARATION---
22 tdb 1.17 package uk.org.iscream.cms.util;
23 ajm 1.5
24     //---IMPORTS---
25     import java.io.*;
26 tdb 1.12 import java.util.LinkedList;
27     import java.util.Iterator;
28 ajm 1.5 import org.xml.sax.*;
29 tdb 1.8 import org.xml.sax.helpers.*;
30 tdb 1.10 import javax.xml.parsers.*;
31 ajm 1.5
32     /**
33     * XMLStringParser - Used to assist in creating XMLPacket objects.
34     *
35 tdb 1.15 * @author $Author: tdb $
36 tdb 1.18 * @version $Id: XMLStringParser.java,v 1.17 2003/02/05 14:27:59 tdb Exp $
37 ajm 1.5 */
38 tdb 1.8 public class XMLStringParser extends DefaultHandler {
39 ajm 1.5
40     //---FINAL ATTRIBUTES---
41    
42     /**
43     * The current CVS revision of this class
44     */
45 tdb 1.18 public final String REVISION = "$Revision: 1.17 $";
46 ajm 1.5
47     //---STATIC METHODS---
48    
49     //---CONSTRUCTORS---
50    
51     /**
52     * No-args constructor. Generally not used.
53     */
54     public XMLStringParser () {
55 tdb 1.9 _packet = new XMLPacket();
56 ajm 1.5 }
57    
58     /**
59     * Constructor for accepting a reference to an XMLPacket
60     */
61     public XMLStringParser (XMLPacket packet) {
62 tdb 1.9 _packet = packet;
63 ajm 1.5 }
64    
65     //---PUBLIC METHODS---
66    
67     //===========================================================
68     // SAX DocumentHandler methods
69     //===========================================================
70    
71 tdb 1.9 /**
72     * Add each tag's attribute to the XMLPacket.
73 ajm 1.5 * 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 tdb 1.9 public void startElement (String uri, String name, String qName, Attributes atts) {
82 tdb 1.14 _tagList.addLast(qName);
83 tdb 1.9 if (atts != null) {
84     for (int i = 0; i < atts.getLength (); i++) {
85 tdb 1.14 _packet.addParam(getPath()+".attributes."+atts.getQName(i), atts.getValue(i));
86 ajm 1.5 }
87     }
88     }
89 tdb 1.10
90 ajm 1.5 /**
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 tdb 1.9 public void endElement (String uri, String name, String qName) {
96 tdb 1.12 _tagList.removeLast();
97 ajm 1.5 }
98 tdb 1.10
99 ajm 1.5 /**
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 tdb 1.9 _packet.addParam(getPath(), s);
108 ajm 1.5 }
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 tdb 1.13 * This uses the uk.org.iscream.cms.server.util.NameFormat class
115 ajm 1.5 * 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 tdb 1.12 String path = "";
138 tdb 1.9 if (_tagList.size() > 0) {
139 tdb 1.12 Iterator i = _tagList.iterator();
140     path = (String) i.next();
141     while(i.hasNext()) {
142     path = path + "." + (String) i.next();
143 ajm 1.5 }
144     }
145     return path;
146     }
147    
148     //---ACCESSOR/MUTATOR METHODS---
149 tdb 1.10
150     /**
151     * Accessor to the XMLPacket.
152     */
153     public XMLPacket getXMLPacket() {
154     return _packet;
155     }
156 ajm 1.5
157     //---ATTRIBUTES---
158 tdb 1.6
159     /**
160 tdb 1.12 * A LinkedList of tags
161 tdb 1.6 */
162 tdb 1.12 private LinkedList _tagList = new LinkedList();
163 tdb 1.6
164     /**
165     * A reference to the XMLPacket we are making
166     */
167 tdb 1.9 private XMLPacket _packet;
168 ajm 1.5
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     }