ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/projects/cms/source/client/javacli/XMLStreamParser.java
Revision: 1.1
Committed: Sun Jan 14 21:58:11 2001 UTC (23 years, 10 months ago) by pjm2
Branch: MAIN
CVS Tags: PROJECT_COMPLETION
Log Message:
Basic command line client to the server's clientinterface.
Currently displays machine name, ip and load values.

File Contents

# User Rev Content
1 pjm2 1.1 //---PACKAGE DECLARATION---
2    
3     //---IMPORTS---
4     import java.io.*;
5     import java.util.ArrayList;
6    
7     import org.xml.sax.*;
8     import javax.xml.parsers.SAXParserFactory;
9     import javax.xml.parsers.ParserConfigurationException;
10     import javax.xml.parsers.SAXParser;
11    
12     /**
13     * XMLStreamParser - Used to build XMLPacket objects.
14     *
15     * @author $Author: $
16     * @version $Id: $
17     */
18     public class XMLStreamParser extends HandlerBase {
19    
20     //---FINAL ATTRIBUTES---
21    
22     /**
23     * The current CVS revision of this class
24     */
25     public final String REVISION = "$Revision: $";
26    
27     //---STATIC METHODS---
28    
29     //---CONSTRUCTORS---
30    
31     /**
32     * Constructor for the XMLStreamParser.
33     */
34     public XMLStreamParser (XMLPacket packet) {
35     _packet = packet;
36     }
37    
38     //---PUBLIC METHODS---
39    
40    
41     public void startDocument () throws SAXException {
42     //System.out.println("Packet found");
43     }
44    
45     public void endDocument () throws SAXException {
46     //System.out.println("Packet Ended");
47     }
48    
49     /**
50     * Add each tag's attribute to the XMLPacket.
51     * Note that all attributes within an opening tag are
52     * stored as "someroot.sometag.attributes.attribute_name"
53     * E.g. If <packet> is the root node, then:
54     * <packet machine_name="raptor">
55     * is stored as:
56     * "packet.attributes.machine_name"
57     * within the XMLPacket.
58     */
59     public void startElement (String name, AttributeList attrs) throws SAXException {
60     _indentLevel++;
61     _tagList.add(name);
62     if (attrs != null) {
63     for (int i = 0; i < attrs.getLength (); i++) {
64     _packet.addParam(getPath()+".attributes."+attrs.getName(i), attrs.getValue(i));
65     }
66     }
67     }
68    
69     /**
70     * When an XML element is finished with, we must remove
71     * the tag name from the tagList and decrement the indent
72     * level.
73     */
74     public void endElement (String name) throws SAXException {
75     _tagList.remove(_tagList.size()-1);
76     _indentLevel--;
77     }
78    
79     /**
80     * Any text falling within a pair of terminal tags must
81     * be added to the XMLPacket. Trim leading and trailing
82     * spaces and do not bother to add if there is no data
83     * specified within the tags.
84     */
85     public void characters (char[] buf, int offset, int len) throws SAXException {
86     String s = new String(buf, offset, len);
87     if (!s.trim().equals("")) {
88     _packet.addParam(getPath(), s);
89     }
90     }
91    
92     //---PRIVATE METHODS---
93    
94     /**
95     * Return the heirarchical string to be used as a key value
96     * in the XMLPacket.
97     */
98     private String getPath () {
99     String path = (String)_tagList.get(0);
100     if (_tagList.size() > 0) {
101     for (int i = 1 ; i < _tagList.size() ; i++) {
102     path = path + "." + (String)_tagList.get(i);
103     }
104     }
105     return path;
106     }
107    
108     //---ACCESSOR/MUTATOR METHODS---
109    
110     //---ATTRIBUTES---
111    
112     private int _indentLevel = 0;
113     private ArrayList _tagList = new ArrayList();
114     private XMLPacket _packet;
115    
116     //---STATIC ATTRIBUTES---
117    
118     }