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

File Contents

# User Rev Content
1 tdb 1.7 /*
2     * i-scream central monitoring system
3 tdb 1.8 * http://www.i-scream.org.uk
4 tdb 1.7 * 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 ab11 1.1 //---PACKAGE DECLARATION---
22    
23     //---IMPORTS---
24     import java.util.*;
25    
26     /**
27     * Formats data into valid XML
28 ab11 1.6 * By calling either addElement() or addNest() you can use
29     * this class to create valid xml. When all elements have
30     * been added calling returnXML() will return a string
31     * containing the xml.
32 ab11 1.1 *
33     *
34 tdb 1.8 * @author $Author: tdb $
35     * @version $Id: XMLFormatter.java,v 1.7 2002/05/18 18:15:57 tdb Exp $
36 ab11 1.1 */
37     class XMLFormatter {
38    
39     //---FINAL ATTRIBUTES---
40    
41     /**
42     * The current CVS revision of this class
43     */
44 tdb 1.8 public final String REVISION = "$Revision: 1.7 $";
45 ab11 1.1
46     //---STATIC METHODS---
47    
48     //---CONSTRUCTORS---
49    
50     /**
51     * Public Constructor for the class
52     * Takes in one arguement which can contain any valid non xml character ( "<",">" )
53     * an example for rootInfo would be "Host"
54     */
55 ab11 1.4 public XMLFormatter(String rootInfo, String attributes){
56    
57     myStack = new Stack();
58     xmlData = new String();
59     xmlData = "<"+rootInfo+" "+attributes+">";
60     hostInfo = rootInfo;
61     }
62    
63     /**
64     * Public Constructor for the class
65     * Takes in one arguement which can contain any valid non xml character ( "<",">" )
66     * an example for rootInfo would be "Host"
67     */
68 ab11 1.1 public XMLFormatter(String rootInfo){
69     myStack = new Stack();
70     xmlData = new String();
71     xmlData = "<"+rootInfo+">";
72     hostInfo = rootInfo;
73     }
74    
75     /**
76     * Public no-arg Constructor for the class
77     * Does not enclose the XML in <data></data> where data is a wrapper
78     */
79     public XMLFormatter(){
80     myStack = new Stack();
81     xmlData = new String();
82     hostInfo = null;
83     }
84    
85     //---PUBLIC METHODS---
86 ab11 1.4
87     /**
88     * addEement, adds an element to the XML string with attributes
89     *
90     */
91     public void addElement(String name, String attributes, String value){
92     // check that the strings contain valid data first
93     if (( name.length() != 0 ) && ( value.length() != 0 )){
94     xmlData += "<"+name+" "+attributes+">"+value+"</"+name+">";
95     }
96     }
97 ab11 1.1
98     /**
99     * addEement, adds an element to the XML string
100     *
101     */
102     public void addElement(String name, String value){
103     // check that the strings contain valid data first
104     if (( name.length() != 0 ) && ( value.length() != 0 )){
105     xmlData += "<"+name+">"+value+"</"+name+">";
106     }
107     }
108    
109     /**
110     * addNest, adds a nest to the XML and all objects (elements or nests) that
111     * are added will be contained within this nest until closeNest() is called
112     *
113     */
114     public void addNest(String name){
115     xmlData += "<"+name+">";
116     myStack.push(name);
117     }
118 ab11 1.2
119     /**
120     * addString, adds a string into the XML packet no further processing is carried out
121     */
122     public void addString(String name){
123     xmlData += name;
124     }
125    
126 ab11 1.1
127     /**
128     * closeNest will close the currently opened nest (by writing </nest name> to
129     * the xml string.
130     * If already at the root nest then this command is ignored
131     *
132     */
133     public void closeNest(){
134    
135     if ( !myStack.empty() ){
136     String tmp = (String) myStack.pop();
137     xmlData += "</"+tmp+">";
138     }
139    
140     }
141    
142     /**
143     * ReturnXML returns a valid XML string made out of all elements and nests
144     * added since this objects construction.
145     * Will close any currently open nests before returning.
146     */
147     public String returnXML(){
148    
149     // remember to close any open nests first =)
150     while ( !myStack.empty() ){
151     closeNest();
152     }
153    
154     // add on HOSTinfo if it is defined
155     if ( hostInfo != null ){
156     xmlData += "</"+hostInfo+">";
157     }
158    
159     return xmlData;
160    
161     }
162    
163     //---PRIVATE METHODS---
164    
165     //---ACCESSOR/MUTATOR METHODS---
166    
167     //---ATTRIBUTES---
168    
169     // the string that will be returned in the end
170     private String xmlData;
171     // a stack object to hold the opened nest object
172     private Stack myStack;
173     // a string to hold the hostInfo
174     private String hostInfo;
175    
176    
177     //---STATIC ATTRIBUTES---
178    
179     } // class