Revision 11171 trunk/libraries/libGPE-GML/src/org/gvsig/gpe/gml/writer/GPEGmlWriterHandler.java

View differences:

GPEGmlWriterHandler.java
1 1
package org.gvsig.gpe.gml.writer;
2 2

  
3 3
import java.io.File;
4
import java.io.FileNotFoundException;
5
import java.io.FileOutputStream;
6 4
import java.io.FileWriter;
7 5
import java.io.IOException;
8
import java.io.OutputStream;
9
import java.io.OutputStreamWriter;
10 6
import java.io.Writer;
11 7

  
12
import org.gvsig.gpe.writer.GPEWriterHandler;
8
import org.apache.xml.utils.NameSpace;
9
import org.gvsig.gpe.GPEDefaults;
10
import org.gvsig.gpe.GPEErrorHandler;
11
import org.gvsig.gpe.gml.GMLTags;
12
import org.gvsig.gpe.gml.writer.features.ElementWriter;
13
import org.gvsig.gpe.gml.writer.features.FeatureMemberWriter;
14
import org.gvsig.gpe.gml.writer.geometries.BoxWriter;
15
import org.gvsig.gpe.gml.writer.geometries.LineStringWriter;
16
import org.gvsig.gpe.gml.writer.geometries.PointWriter;
13 17
import org.gvsig.gpe.xml.writer.GPEXmlWriterHandler;
14 18

  
19
import sun.rmi.runtime.GetThreadPoolAction;
20

  
15 21
/* gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
16 22
 *
17 23
 * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
......
56 62
 *
57 63
 * $Id$
58 64
 * $Log$
59
 * Revision 1.1  2007-04-12 10:23:41  jorpiell
65
 * Revision 1.2  2007-04-12 17:06:44  jorpiell
66
 * First GML writing tests
67
 *
68
 * Revision 1.1  2007/04/12 10:23:41  jorpiell
60 69
 * Add some writers and the GPEXml parser
61 70
 *
62 71
 *
......
65 74
 * @author Jorge Piera LLodr? (jorge.piera@iver.es)
66 75
 */
67 76
public class GPEGmlWriterHandler extends GPEXmlWriterHandler{
68

  
69
	public GPEGmlWriterHandler(String format, File file) throws IOException {
70
		super(format, file);		
77
	private boolean oneLayer = false;
78
	private String currentFeature = null;
79
	private String currentElement = null;
80
	
81
	public GPEGmlWriterHandler(String format, File file,GPEErrorHandler errorHandler) throws IOException {
82
		super(format, file, errorHandler);		
71 83
	}
72 84

  
73 85
	/*
......
77 89
	protected Writer createWriter() throws IOException {
78 90
		return new FileWriter(getFile());
79 91
	}
92
	
93
	/*
94
	 * (non-Javadoc)
95
	 * @see org.gvsig.gpe.writer.GPEWriterHandler#initialize()
96
	 */
97
	public void initialize(){
98
		try {
99
			writer.write("\n");
100
			writer.write("<" + GMLTags.GML_NAMESPACE + ":" + GMLTags.GML_FEATURCOLLECTION);
101
//			Write the local namespace
102
			String prefix = GPEDefaults.getProperty(GPEDefaults.NAMESPACE_PREFIX);
103
			String uri = GPEDefaults.getProperty(GPEDefaults.NAMESPACE_URI);
104
			if ((prefix != null) && (uri != null)){
105
				writer.write(" " + GMLTags.XML_NAMESPACE + ":" + prefix + "=\"");
106
				writer.write(uri + "\" ");				
107
			}
108
			writer.write(" " + GMLTags.NAMESPACE_GML);
109
			writer.write(" " + GMLTags.NAMESPACE_XML);
110
			if (uri != null){
111
				writer.write(" " + GMLTags.XML_XSI + ":" + GMLTags.XML_SCHEMA_LOCATION + "=\"");
112
				writer.write(uri + " " + "ESQUEMA.XSD" + "\"");
113
			}
114
			writer.write(">");
115
		} catch (IOException e) {
116
			getErrorHandler().addError(e);
117
		}		
118
	}
119
	
120
	/*
121
	 * (non-Javadoc)
122
	 * @see org.gvsig.gpe.writer.GPEWriterHandler#close()
123
	 */
124
	public void close(){
125
		try {
126
			writer.write("\n");
127
			writer.write("</" + GMLTags.GML_NAMESPACE + ":" + GMLTags.GML_FEATURCOLLECTION + ">");
128
			writer.flush();
129
			writer.close();
130
		} catch (IOException e) {
131
			getErrorHandler().addError(e);
132
		}
133
	}
134
	
135
	/*
136
	 * (non-Javadoc)
137
	 * @see org.gvsig.gpe.writer.GPEWriterHandler#startLayer(java.lang.String, java.lang.String, java.lang.String, java.lang.String)
138
	 */
139
	public void startLayer(String id, String name, String description, String srs) {
140
		//GML only can write one layer
141
		if (oneLayer){
142
			//TODO: EXCEPCION DE NO PUEDO CON MAS DE UN LAYER
143
		}
144
		oneLayer = true;		
145
		try {
146
			if (id != null){
147
				writer.write("\n");
148
				writer.write("<" + GMLTags.GML_NAMESPACE + ":" + GMLTags.GML_ID + ">");
149
				writer.write(id);
150
				writer.write("<" + GMLTags.GML_NAMESPACE + ":" + GMLTags.GML_ID + ">");
151
			}
152
			if (name != null){
153
				writer.write("\n");
154
				writer.write("<" + GMLTags.GML_NAMESPACE + ":" + GMLTags.GML_NAME + ">");
155
				writer.write(name);
156
				writer.write("<" + GMLTags.GML_NAMESPACE + ":" + GMLTags.GML_NAME + ">");
157
			}
158
			if (description != null){
159
				writer.write("\n");
160
				writer.write("<" + GMLTags.GML_NAMESPACE + ":" + GMLTags.GML_DESCRIPTION + ">");
161
				writer.write(description);
162
				writer.write("<" + GMLTags.GML_NAMESPACE + ":" + GMLTags.GML_DESCRIPTION + ">");
163
			}
164
			//TODO: EL SRS SE PIERDE DEBIDO A LA SEMANTICA DEL GML
165
		} catch (IOException e) {
166
			getErrorHandler().addError(e);
167
		}	
168
	}	
169
	
170
	/*
171
	 * (non-Javadoc)
172
	 * @see org.gvsig.gpe.writer.GPEWriterHandler#startFeature(java.lang.String, java.lang.String)
173
	 */
174
	public void startFeature(String name, String id) {
175
		currentFeature = name;
176
		try {
177
			FeatureMemberWriter.start(writer, name, getNamespacePrefix() , id);
178
		} catch (IOException e) {
179
			getErrorHandler().addError(e);
180
		}
181
	}
182
	
183
	/*
184
	 * (non-Javadoc)
185
	 * @see org.gvsig.gpe.writer.GPEWriterHandler#endFeature()
186
	 */
187
	public void endFeature() {
188
		try {
189
			FeatureMemberWriter.end(writer, currentFeature, getNamespacePrefix());
190
		} catch (IOException e) {
191
			getErrorHandler().addError(e);
192
		}
193
		currentFeature = null;
194
	}
195
	
196
	/*
197
	 * (non-Javadoc)
198
	 * @see org.gvsig.gpe.writer.GPEWriterHandler#startElement(java.lang.String, java.lang.Object, java.lang.Object)
199
	 */
200
	public void startElement(String name, Object value, Object type) {
201
		currentElement = name;
202
		try {
203
			ElementWriter.start(writer, name, getNamespacePrefix(), value, type);
204
		} catch (IOException e) {
205
			getErrorHandler().addError(e);
206
		}
207
		
208
	}
209
	
210
	/*
211
	 * (non-Javadoc)
212
	 * @see org.gvsig.gpe.writer.GPEWriterHandler#endElement()
213
	 */
214
	public void endElement() {
215
		try {
216
			ElementWriter.end(writer, currentElement, getNamespacePrefix());
217
		} catch (IOException e) {
218
			getErrorHandler().addError(e);
219
		}
220
		currentElement = null;		
221
	}
222
	
223
	/*
224
	 * (non-Javadoc)
225
	 * @see org.gvsig.gpe.writer.GPEWriterHandler#startPoint(java.lang.String, double, double, double, java.lang.String)
226
	 */
227
	public void startPoint(String id, double x, double y, double z, String srs) {
228
		try {
229
			PointWriter.start(writer, x, y, z, srs, id);
230
		} catch (IOException e) {
231
			getErrorHandler().addError(e);
232
		}		
233
	}
234
	
235
	/*
236
	 * (non-Javadoc)
237
	 * @see org.gvsig.gpe.writer.GPEWriterHandler#endPoint()
238
	 */
239
	public void endPoint() {
240
		try {
241
			PointWriter.end(writer);
242
		} catch (IOException e) {
243
			getErrorHandler().addError(e);
244
		}
245
		
246
	}
247
	
248
	/*
249
	 * (non-Javadoc)
250
	 * @see org.gvsig.gpe.writer.GPEWriterHandler#startLineString(java.lang.String, double[], double[], double[], java.lang.String)
251
	 */
252
	public void startLineString(String id, double[] x, double[] y, double[] z, String srs) {
253
		try {
254
			LineStringWriter.start(writer, x, y, z, srs, id);
255
		} catch (IOException e) {
256
			getErrorHandler().addError(e);
257
		}		
258
	}
259
	
260
	/*
261
	 * (non-Javadoc)
262
	 * @see org.gvsig.gpe.writer.GPEWriterHandler#endLineString()
263
	 */
264
	public void endLineString() {
265
		try {
266
			LineStringWriter.end(writer);
267
		} catch (IOException e) {
268
			getErrorHandler().addError(e);
269
		}		
270
	}
271
	
272
	/*
273
	 * (non-Javadoc)
274
	 * @see org.gvsig.gpe.writer.GPEWriterHandler#startBbox(java.lang.String, double[], double[], double[], java.lang.String)
275
	 */
276
	public void startBbox(String id, double[] x, double[] y, double[] z, String srs) {
277
		try {
278
			BoxWriter.start(writer, x, y, z, srs, id);
279
		} catch (IOException e) {
280
			getErrorHandler().addError(e);
281
		}		
282
	}
283
	
284
	/*
285
	 * (non-Javadoc)
286
	 * @see org.gvsig.gpe.writer.GPEWriterHandler#endBbox()
287
	 */
288
	public void endBbox() {
289
		try {
290
			BoxWriter.end(writer);
291
		} catch (IOException e) {
292
			getErrorHandler().addError(e);
293
		}			
294
	}
80 295

  
296

  
81 297
}

Also available in: Unified diff