View Javadoc

1   package comum.util;
2   
3   /**
4    * Classe responsável pela geração de arquivos XML, obedecendo os respectivos padrões. 
5    * @author rodrigo.hjort
6    */
7   public class XmlBuilder {
8   	
9       //nível no documento
10      private int level = 0;
11      
12      //texto temporário para o XML
13      private StringBuffer sb;
14      
15      /**
16       * Construtor da classe.
17       */
18      public XmlBuilder() {
19          sb = new StringBuffer();
20          sb.append("<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n");
21      }
22      
23      /**
24       * Retorna texto referente ao XML.<br>
25       * 
26       * @author N/C
27  	 * @since N/C
28  	 * @version N/C
29       * @return StringBuffer 	- texto referente ao XML
30       */
31      public StringBuffer toStringBuffer() {
32          return(sb);
33      }
34  
35      /**
36       * Inclui um novo nó, fechando-o em seguida. Ex:<p>
37       * <blockquote><pre>
38       *   &lt;periodo/&gt;
39  	 * </pre></blockquote>
40  	 * 
41  	 * @author N/C
42  	 * @since N/C
43  	 * @version N/C
44       * @param string name 		- nome do nó
45       */
46      public void addClosedNode(String name) {
47          sb.append(getTabs() + "<" + name + "/>\n");
48      }
49      
50      /**
51       * Inclui um novo nó com campos, fechando-o em seguida. Ex:<p>
52       * <blockquote><pre>
53       *   &lt;cabecalho data="03/01/2005" anoletivo="2005"/&gt;
54  	 * </pre></blockquote>
55  	 * 
56  	 * @author N/C
57  	 * @since N/C
58  	 * @version N/C
59       * @param String name 		- nome do nó
60       * @param String fields
61       */
62      public void addClosedNode(String name, String fields) {
63          sb.append(getTabs() + "<" + name + " " + fields + "/>\n");
64      }
65      
66      /**
67       * Inclui um novo nó e aumenta o nível no documento.<br>
68       * Ex:<p>
69       * <blockquote><pre>
70       *   &lt;dados&gt;
71  	 * </pre></blockquote>
72  	 * 
73  	 * @author N/C
74  	 * @since N/C
75  	 * @version N/C
76       * @param String name - nome do nó
77       */
78      public void addNode(String name) {
79          sb.append(getTabs() + "<" + name + ">\n");
80          level++;
81      }
82  
83      /**
84       * Inclui um novo nó com campos e aumenta o nível no documento. Ex:<p>
85       * <blockquote><pre>
86       *   &lt;turma codigo="3" nome="A"&gt;
87  	 * </pre></blockquote>
88  	 * 
89  	 * @author N/C
90  	 * @since N/C
91  	 * @version N/C
92       * @param String name - nome do nó
93       * @param String fields
94       */
95      public void addNode(String name, String fields) {
96          sb.append(getTabs() + "<" + name + " " + fields + ">\n");
97          level++;
98      }
99      
100     /**
101      * Inclui um novo nó com valor, fechando-o em seguida. Ex:<p>
102      * <blockquote><pre>
103      *   &lt;curso&gt;ENS MEDIO - E.J.A. Pressencial&lt;/curso&gt;
104 	 * </pre></blockquote>
105 	 * 
106 	 * @author N/C
107 	 * @since N/C
108 	 * @version N/C
109      * @param String name - nome do nó
110      * @param String value
111      */
112     public void addAndCloseNode(String name, String value) {
113         sb.append(getTabs() + "<" + name + ">" + value + "</" + name + ">\n");
114     }
115     
116     /**
117      * Fecha um novo nó e diminui o nível no documento. Ex:<p>
118      * <blockquote><pre>
119      *   &lt;/dados&gt;
120 	 * </pre></blockquote>
121 	 * 
122 	 * @author N/C
123 	 * @since N/C
124 	 * @version N/C
125      * @param String name - nome do nó
126      */
127     public void closeNode(String name) {
128         level--;
129         sb.append(getTabs() + "</" + name + ">\n");
130     }
131     
132     /**
133      * Uso interno.
134      * 
135      * @author N/C
136 	 * @since N/C
137 	 * @version N/C
138      * @return	String - o número de tabulações necessário de acordo com o nível no documento
139      */
140     private String getTabs() {
141         String ret = "";
142         for (int ii = 0; ii < level; ii++)
143             ret += "\t";
144         return(ret);
145     }
146     
147     /**
148      * Normaliza Chars:<br>
149 	 * Ex.:<br>
150 	 * de '<' para "&lt;"<br>
151 	 * 
152      * @author N/C
153 	 * @since N/C
154 	 * @version N/C
155      * @param String s
156      * @param StringBuffer str
157      * @param int i
158      */
159 	public void normalizeChars(String s, StringBuffer str, int i) {
160 		Util.normalizeChars(s, str, i);
161 	}
162 
163 	/**
164 	 * Normaliza Enter.<br>
165 	 * 
166 	 * @author N/C
167 	 * @since N/C
168 	 * @version N/C
169 	 * @param String s
170 	 * @param StringBuffer str
171 	 * @param int i
172 	 */
173 	public void normalizeEnter(String s, StringBuffer str, int i) {
174 		Util.normalizeEnter(s, str, i);
175 	}
176 
177 	/** Normaliza o String para apresenta-lo em HTML sem retirar o retorno de linha.
178 	 * 
179 	 * @author N/C
180 	 * @since N/C
181 	 * @version N/C
182 	 * @param String s
183 	 * @return String
184 	 */ 
185 	public String normalize(String s) {
186 		return Util.normalize(s);
187 	}
188     
189 }