root / trunk / libraries / libGPE-GML / src / org / gvsig / gpe / gml / writer / GPEGmlWriterHandler.java @ 11171
History | View | Annotate | Download (8.04 KB)
1 |
package org.gvsig.gpe.gml.writer; |
---|---|
2 |
|
3 |
import java.io.File; |
4 |
import java.io.FileWriter; |
5 |
import java.io.IOException; |
6 |
import java.io.Writer; |
7 |
|
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; |
17 |
import org.gvsig.gpe.xml.writer.GPEXmlWriterHandler; |
18 |
|
19 |
import sun.rmi.runtime.GetThreadPoolAction; |
20 |
|
21 |
/* gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
|
22 |
*
|
23 |
* Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
|
24 |
*
|
25 |
* This program is free software; you can redistribute it and/or
|
26 |
* modify it under the terms of the GNU General Public License
|
27 |
* as published by the Free Software Foundation; either version 2
|
28 |
* of the License, or (at your option) any later version.
|
29 |
*
|
30 |
* This program is distributed in the hope that it will be useful,
|
31 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
32 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
33 |
* GNU General Public License for more details.
|
34 |
*
|
35 |
* You should have received a copy of the GNU General Public License
|
36 |
* along with this program; if not, write to the Free Software
|
37 |
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,USA.
|
38 |
*
|
39 |
* For more information, contact:
|
40 |
*
|
41 |
* Generalitat Valenciana
|
42 |
* Conselleria d'Infraestructures i Transport
|
43 |
* Av. Blasco Ib??ez, 50
|
44 |
* 46010 VALENCIA
|
45 |
* SPAIN
|
46 |
*
|
47 |
* +34 963862235
|
48 |
* gvsig@gva.es
|
49 |
* www.gvsig.gva.es
|
50 |
*
|
51 |
* or
|
52 |
*
|
53 |
* IVER T.I. S.A
|
54 |
* Salamanca 50
|
55 |
* 46005 Valencia
|
56 |
* Spain
|
57 |
*
|
58 |
* +34 963163400
|
59 |
* dac@iver.es
|
60 |
*/
|
61 |
/* CVS MESSAGES:
|
62 |
*
|
63 |
* $Id: GPEGmlWriterHandler.java 11171 2007-04-12 17:06:44Z jorpiell $
|
64 |
* $Log$
|
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
|
69 |
* Add some writers and the GPEXml parser
|
70 |
*
|
71 |
*
|
72 |
*/
|
73 |
/**
|
74 |
* @author Jorge Piera LLodr? (jorge.piera@iver.es)
|
75 |
*/
|
76 |
public class GPEGmlWriterHandler extends GPEXmlWriterHandler{ |
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);
|
83 |
} |
84 |
|
85 |
/*
|
86 |
* (non-Javadoc)
|
87 |
* @see org.gvsig.gpe.xml.writer.GPEXmlWriterHandler#createOutputStream()
|
88 |
*/
|
89 |
protected Writer createWriter() throws IOException { |
90 |
return new FileWriter(getFile()); |
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 |
} |
295 |
|
296 |
|
297 |
} |