Révision 4016

TXM/trunk/bundles/org.txm.core/src/java/org/txm/scripts/importer/StaxStackWriter.java (revision 4016)
26 26
	boolean debug = false;
27 27
	
28 28
	public StaxStackWriter(File file) throws FileNotFoundException, XMLStreamException {
29
		
29 30
		this(new BufferedOutputStream(new FileOutputStream(file)));
30 31
	}
31 32
	
32 33
	public StaxStackWriter(File file, String encoding) throws FileNotFoundException, XMLStreamException {
34
		
33 35
		this(new BufferedOutputStream(new FileOutputStream(file)), encoding);
34 36
	}
35 37
	
36 38
	public StaxStackWriter(OutputStream output) throws XMLStreamException {
39
		
37 40
		this(output, "UTF-8");//create a new file
38 41
	}
39 42
	
40 43
	public StaxStackWriter(OutputStream output, String encoding) throws XMLStreamException {
44
		
41 45
		XMLOutputFactory factory = XMLOutputFactory.newInstance();
42 46
		this.output = output;
43 47
		this.writer = factory.createXMLStreamWriter(output, encoding);//create a new file
......
45 49
	
46 50
	Charset UTF8 = Charset.forName("UTF-8");
47 51
	public void write(String txt) throws IOException {
52
		
48 53
		output.write(txt.getBytes(UTF8));
49 54
	}
50 55
	
......
68 73
	 * @throws XMLStreamException 
69 74
	 */
70 75
	public void writeStartElements(List<Object> tagsToWrite) throws XMLStreamException {
76
		
71 77
		for (Object tag : tagsToWrite) {
72 78
			if (tag instanceof String) {
73 79
				writeStartElement((String)tag);
......
84 90
	}
85 91
	
86 92
	public List<List<List>> getTagStack() {
93
		
87 94
		return events;
88 95
	}
89 96
	
90 97
	@Override
91 98
	public void close () throws XMLStreamException {
99
		
92 100
		writer.close();
93 101
		try {
94 102
			output.close();
......
101 109
	
102 110
	@Override
103 111
	public void flush () throws XMLStreamException {
112
		
104 113
		writer.flush();
105 114
	}
106 115
	
107 116
	@Override
108 117
	public NamespaceContext getNamespaceContext() {
118
		
109 119
		return writer.getNamespaceContext();
110 120
	}
111 121
	
112 122
	@Override
113 123
	public String getPrefix (String uri) throws XMLStreamException {
124
		
114 125
		return writer.getPrefix(uri);
115 126
	}
116 127
	
117 128
	@Override
118 129
	public Object getProperty (String name) throws IllegalArgumentException {
130
		
119 131
		return writer.getProperty(name);
120 132
	}
121 133
	
122 134
	@Override
123 135
	public void setDefaultNamespace (String uri) throws XMLStreamException {
136
		
124 137
		writer.setDefaultNamespace(uri);
125 138
	}
126 139
	
127 140
	@Override
128
	public void setNamespaceContext(NamespaceContext context)
129
	throws XMLStreamException {
141
	public void setNamespaceContext(NamespaceContext context) throws XMLStreamException {
142
		
130 143
		writer.setNamespaceContext(context);
131 144
	}
132 145
	
133 146
	@Override
134 147
	public void setPrefix (String prefix, String uri) throws XMLStreamException {
148
		
135 149
		writer.setPrefix(prefix, uri);
136 150
	}
137 151
	
138 152
	@Override
139 153
	public void writeAttribute (String localName, String value) throws XMLStreamException {
140
		if (value == null) return;
154
		
155
		if (value == null) return; // skip if value is null
156
		if (localName == null) return; // skip if localName is null
141 157
		writer.writeAttribute(localName, value);
142 158
		
143 159
		if (events.size() > 0) events.get(events.size()-1).get(1).add(Arrays.asList(localName, value));
......
145 161
	
146 162
	@Override
147 163
	public void writeAttribute (String namespaceURI, String localName, String value) throws XMLStreamException {
148
		if (value == null) return;
164
		
165
		if (value == null) return; // skip if value is null
166
		if (localName == null) return; // skip if localName is null
149 167
		writer.writeAttribute(namespaceURI, localName, value);
150 168
		
151 169
		if (events.size() > 0) events.get(events.size()-1).get(1).add(Arrays.asList(localName, value));
......
153 171
	
154 172
	@Override
155 173
	public void writeAttribute (String prefix, String namespaceURI, String localName, String value) throws XMLStreamException {
156
		if (value == null) return;
174
		
175
		if (value == null) return; // skip if value is null
176
		if (localName == null) return; // skip if localName is null
157 177
		writer.writeAttribute(prefix, namespaceURI, localName, value);
158 178
		
159 179
		if (events.size() > 0) events.get(events.size()-1).get(1).add(Arrays.asList(localName, value));
......
161 181
	
162 182
	@Override
163 183
	public void writeCData (String data) throws XMLStreamException {
184
		
185
		if (data == null) return;
164 186
		writer.writeCData(data);
165 187
	}
166 188
	
167 189
	@Override
168 190
	public void writeCharacters (String text) throws XMLStreamException {
191
		
192
		if (text == null) return;
169 193
		writer.writeCharacters(text);
170 194
	}
171 195
	
172 196
	@Override
173 197
	public void writeCharacters (char[] text, int start, int len) throws XMLStreamException {
198
		
199
		if (text == null) return;
174 200
		writer.writeCharacters(text, start, len);
175 201
	}
176 202
	
177 203
	@Override
178 204
	public void writeComment (String data) throws XMLStreamException {
205
		
206
		if (data == null) return;
179 207
		writer.writeComment(data);
180 208
	}
181 209
	
182 210
	@Override
183 211
	public void writeDTD (String dtd) throws XMLStreamException {
212
		
213
		if (dtd == null) return;
184 214
		writer.writeDTD(dtd);
185 215
	}
186 216
	
187 217
	@Override
188
	public void writeDefaultNamespace(String namespaceURI)
189
	throws XMLStreamException {
218
	public void writeDefaultNamespace(String namespaceURI) throws XMLStreamException {
219
		
190 220
		writer.writeDefaultNamespace(namespaceURI);
191 221
	}
192 222
	
......
196 226
	 * @param text
197 227
	 * @throws XMLStreamException
198 228
	 */
199
	public void writeElement (String localName, String text) throws XMLStreamException {
229
	public void writeElement(String localName, String text) throws XMLStreamException {
230
		
200 231
		if (text != null && text.length() > 0) {
201 232
			writer.writeStartElement(localName);
202 233
			writer.writeCharacters(text);
......
206 237
		}
207 238
	}
208 239
	
209
	public void writeElement (String localName, HashMap map, String text) throws XMLStreamException {
240
	public void writeElement(String localName, HashMap map, String text) throws XMLStreamException {
241
		
210 242
		if (text != null && text.length() > 0) {
211 243
			writer.writeStartElement(localName);
212 244
			
......
217 249
					writeAttribute(key.toString(), map.get(key).toString());
218 250
				}
219 251
			}
220
			writer.writeCharacters(text);
252
			if (text != null) writer.writeCharacters(text);
221 253
			writer.writeEndElement();
222 254
			
223 255
			events.remove(events.size()-1);
......
228 260
	
229 261
	@Override
230 262
	public void writeEmptyElement (String localName) throws XMLStreamException {
263
		
231 264
		writer.writeEmptyElement(localName);
232 265
	}
233 266
	
234 267
	public void writeEmptyElement (String localName, HashMap map) throws XMLStreamException {
268
		
235 269
		writer.writeEmptyElement(localName);
236 270
		events.add(new ArrayList(Arrays.asList(localName, new ArrayList()))); // must be done or else writeAttribute will insert the attribute in the previous element
237 271
		for (Object key : map.keySet()) {
......
243 277
	}
244 278
	
245 279
	@Override
246
	public void writeEmptyElement(String namespaceURI, String localName)
247
	throws XMLStreamException {
280
	public void writeEmptyElement(String namespaceURI, String localName) throws XMLStreamException {
281
		
248 282
		writer.writeEmptyElement(namespaceURI, localName);
249 283
	}
250 284
	
251 285
	@Override
252 286
	public void writeEmptyElement (String prefix, String localName, String namespaceURI) throws XMLStreamException {
287
		
253 288
		writer.writeEmptyElement(prefix, localName, namespaceURI);
254 289
	}
255 290
	
256 291
	@Override
257 292
	public void writeEndDocument () throws XMLStreamException {
293
		
258 294
		writer.writeEndDocument();
259 295
	}
260 296
	
261 297
	@Override
262 298
	public void writeEndElement () throws XMLStreamException {
299
		
263 300
		writer.writeEndElement();
264 301
		events.remove(events.size()-1);
265 302
		if (debug) System.out.println("END: "+events);
......
267 304
	
268 305
	@Override
269 306
	public void writeEntityRef (String name) throws XMLStreamException {
307
		
270 308
		writer.writeEntityRef(name);
271 309
	}
272 310
	
273 311
	@Override
274
	public void writeNamespace(String prefix, String namespaceURI)
275
	throws XMLStreamException {
312
	public void writeNamespace(String prefix, String namespaceURI) throws XMLStreamException {
313
		
276 314
		writer.writeNamespace(prefix, namespaceURI);
277 315
	}
278 316
	
279 317
	@Override
280
	public void writeProcessingInstruction(String target)
281
	throws XMLStreamException {
318
	public void writeProcessingInstruction(String target) throws XMLStreamException {
319
		
282 320
		writer.writeProcessingInstruction(target);
283 321
	}
284 322
	
285 323
	@Override
286
	public void writeProcessingInstruction(String target, String data)
287
	throws XMLStreamException {
324
	public void writeProcessingInstruction(String target, String data) throws XMLStreamException {
325
		
288 326
		writer.writeProcessingInstruction(target, data);
289 327
	}
290 328
	
291 329
	@Override
292 330
	public void writeStartDocument () throws XMLStreamException {
331
		
293 332
		writer.writeStartDocument();
294 333
	}
295 334
	
296 335
	@Override
297 336
	public void writeStartDocument (String version) throws XMLStreamException {
337
		
298 338
		writer.writeStartDocument(version);
299 339
	}
300 340
	
301 341
	@Override
302
	public void writeStartDocument(String encoding, String version)
303
	throws XMLStreamException {
342
	public void writeStartDocument(String encoding, String version) throws XMLStreamException {
343
		
304 344
		writer.writeStartDocument(encoding, version);
305 345
	}
306 346
	
307 347
	@Override
308 348
	public void writeStartElement (String localName) throws XMLStreamException {
349
		
309 350
		writer.writeStartElement(localName);
310 351
		events.add(new ArrayList(Arrays.asList(localName, new ArrayList())));
311 352
		if (debug) System.out.println("START "+localName+" "+events);
312 353
	}
313 354

  
314 355
	public void writeStartElement (String localName, HashMap map) throws XMLStreamException {
356
		
315 357
		writeStartElement(localName);
316 358
		
317 359
		for (Object key : map.keySet()) {
......
323 365
	}
324 366
	
325 367
	@Override
326
	public void writeStartElement(String namespaceURI, String localName)
327
	throws XMLStreamException {
368
	public void writeStartElement(String namespaceURI, String localName) throws XMLStreamException {
369
		
328 370
		writer.writeStartElement(namespaceURI, localName);
329 371
		events.add(new ArrayList(Arrays.asList(localName, new ArrayList())));
330 372
		
......
332 374
	}
333 375
	
334 376
	@Override
335
	public void writeStartElement(String prefix, String localName,
336
			String namespaceURI) throws XMLStreamException {
377
	public void writeStartElement(String prefix, String localName, String namespaceURI) throws XMLStreamException {
378
		
337 379
		writer.writeStartElement(prefix, localName, namespaceURI);
338 380
		events.add(new ArrayList(Arrays.asList(localName, new ArrayList())));
339 381
		if (debug) System.out.println("START "+prefix+" "+localName+" "+events);

Formats disponibles : Unified diff