Statistics
| Revision:

root / trunk / libraries / libGPE-KML / src / org / gvsig / gpe / kml / writer / GPEKmlWriterHandler.java @ 11211

History | View | Annotate | Download (7.71 KB)

1
package org.gvsig.gpe.kml.writer;
2

    
3
import java.io.File;
4
import java.io.FileWriter;
5
import java.io.IOException;
6

    
7
import org.gvsig.gpe.GPEErrorHandler;
8
import org.gvsig.gpe.gml.GMLTags;
9
import org.gvsig.gpe.kml.KmlTags;
10
import org.gvsig.gpe.kml.writer.features.DocumentWriter;
11
import org.gvsig.gpe.kml.writer.features.FolderWriter;
12
import org.gvsig.gpe.kml.writer.features.PlaceMarkWriter;
13
import org.gvsig.gpe.kml.writer.geometries.InnerBoundaryIs;
14
import org.gvsig.gpe.kml.writer.geometries.LineStringWriter;
15
import org.gvsig.gpe.kml.writer.geometries.LinearRingWriter;
16
import org.gvsig.gpe.kml.writer.geometries.PointWriter;
17
import org.gvsig.gpe.kml.writer.geometries.PolygonWriter;
18
import org.gvsig.gpe.xml.writer.GPEXmlWriterHandler;
19
import org.gvsig.gpe.xml.writer.Writer;
20

    
21

    
22
/* gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
23
 *
24
 * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
25
 *
26
 * This program is free software; you can redistribute it and/or
27
 * modify it under the terms of the GNU General Public License
28
 * as published by the Free Software Foundation; either version 2
29
 * of the License, or (at your option) any later version.
30
 *
31
 * This program is distributed in the hope that it will be useful,
32
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
33
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
34
 * GNU General Public License for more details.
35
 *
36
 * You should have received a copy of the GNU General Public License
37
 * along with this program; if not, write to the Free Software
38
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
39
 *
40
 * For more information, contact:
41
 *
42
 *  Generalitat Valenciana
43
 *   Conselleria d'Infraestructures i Transport
44
 *   Av. Blasco Ib??ez, 50
45
 *   46010 VALENCIA
46
 *   SPAIN
47
 *
48
 *      +34 963862235
49
 *   gvsig@gva.es
50
 *      www.gvsig.gva.es
51
 *
52
 *    or
53
 *
54
 *   IVER T.I. S.A
55
 *   Salamanca 50
56
 *   46005 Valencia
57
 *   Spain
58
 *
59
 *   +34 963163400
60
 *   dac@iver.es
61
 */
62
/* CVS MESSAGES:
63
 *
64
 * $Id: GPEKmlWriterHandler.java 11211 2007-04-14 16:08:07Z jorpiell $
65
 * $Log$
66
 * Revision 1.4  2007-04-14 16:08:07  jorpiell
67
 * Kml writing support added
68
 *
69
 * Revision 1.3  2007/04/13 13:16:21  jorpiell
70
 * Add KML reading support
71
 *
72
 * Revision 1.2  2007/04/12 17:06:43  jorpiell
73
 * First GML writing tests
74
 *
75
 * Revision 1.1  2007/04/12 10:21:52  jorpiell
76
 * Add the writers
77
 *
78
 *
79
 */
80
/**
81
 * @author Jorge Piera LLodr? (jorge.piera@iver.es)
82
 */
83
public class GPEKmlWriterHandler extends GPEXmlWriterHandler{
84
        private int layerLevel = 0;
85
                
86
        public GPEKmlWriterHandler(String format, GPEErrorHandler errorHandler) {
87
                super(format, errorHandler);                
88
        }
89

    
90
        /*
91
         * (non-Javadoc)
92
         * @see org.gvsig.gpe.xml.writer.GPEXmlWriterHandler#createOutputStream()
93
         */
94
        protected Writer createWriter() throws IOException {
95
                if(getFile().getName().toUpperCase().endsWith("KMZ")){
96
                        //TODO: Create the KMZ outputStream
97
                }
98
                return new Writer(new FileWriter(getFile()));         
99
        }
100
        
101
        /*
102
         * (non-Javadoc)
103
         * @see org.gvsig.gpe.writer.GPEWriterHandler#initialize()
104
         */
105
        public void initialize(){
106
                try {
107
                        writer.write("\n");
108
                        writer.write("<" + KmlTags.ROOT);
109
                        writer.write(" " + GMLTags.XML_NAMESPACE + "=\"" + KmlTags.NAMESPACE_21 + "\"");
110
                        writer.write(">");
111
                } catch (IOException e) {
112
                        getErrorHandler().addError(e);
113
                }
114
        }
115
        
116
        /*
117
         * (non-Javadoc)
118
         * @see org.gvsig.gpe.writer.GPEWriterHandler#close()
119
         */
120
        public void close(){
121
                try {
122
                        writer.write("\n");
123
                        writer.write("</" + KmlTags.ROOT + ">");
124
                        writer.flush();
125
                        writer.close();
126
                } catch (IOException e) {
127
                        getErrorHandler().addError(e);
128
                }
129
        }
130
        
131
        /*
132
         * (non-Javadoc)
133
         * @see org.gvsig.gpe.writer.GPEWriterHandler#startLayer(java.lang.String, java.lang.String, java.lang.String, java.lang.String)
134
         */
135
        public void startLayer(String id, String name, String description, String srs) {
136
                try{
137
                        if (layerLevel == 0){
138
                                DocumentWriter.start(writer, name, description);
139
                        }else{
140
                                FolderWriter.start(writer, name, description);
141
                        }                        
142
                } catch (IOException e) {
143
                        getErrorHandler().addError(e);
144
                }
145
                layerLevel++;
146
        }
147
        
148
        /*
149
         * (non-Javadoc)
150
         * @see org.gvsig.gpe.writers.GPEWriterHandler#endLayer()
151
         */
152
        public void endLayer() {
153
                layerLevel--;
154
                try{
155
                        if (layerLevel == 0){
156
                                DocumentWriter.end(writer);
157
                        }else{
158
                                FolderWriter.end(writer);
159
                        }
160
                } catch (IOException e) {
161
                        getErrorHandler().addError(e);
162
                }                
163
        }
164
        
165
        /*
166
         * (non-Javadoc)
167
         * @see org.gvsig.gpe.writers.GPEWriterHandler#startFeature(java.lang.String, java.lang.String)
168
         */
169
        public void startFeature(String name, String id) {
170
                try{
171
                        PlaceMarkWriter.start(writer, name, id);
172
                } catch (IOException e) {
173
                        getErrorHandler().addError(e);
174
                }        
175
        }
176
        
177
        /*
178
         * (non-Javadoc)
179
         * @see org.gvsig.gpe.writers.GPEWriterHandler#endFeature()
180
         */
181
        public void endFeature() {
182
                try{
183
                        PlaceMarkWriter.end(writer);
184
                } catch (IOException e) {
185
                        getErrorHandler().addError(e);
186
                }        
187
        }
188
        
189
        /*
190
         * (non-Javadoc)
191
         * @see org.gvsig.gpe.writer.GPEWriterHandler#startPoint(java.lang.String, double, double, double, java.lang.String)
192
         */
193
        public void startPoint(String id, double x, double y, double z, String srs) {
194
                try {
195
                        PointWriter.start(writer, x, y, z, srs, id);
196
                } catch (IOException e) {
197
                        getErrorHandler().addError(e);
198
                }                
199
        }
200
        
201
        /*
202
         * (non-Javadoc)
203
         * @see org.gvsig.gpe.writer.GPEWriterHandler#endPoint()
204
         */
205
        public void endPoint() {
206
                try {
207
                        PointWriter.end(writer);                        
208
                } catch (IOException e) {
209
                        getErrorHandler().addError(e);
210
                }                
211
        }
212
        
213
        /*
214
         * (non-Javadoc)
215
         * @see org.gvsig.gpe.writers.GPEWriterHandler#startLineString(java.lang.String, double[], double[], double[], java.lang.String)
216
         */
217
        public void startLineString(String id, double[] x, double[] y, double[] z, String srs) {
218
                try {
219
                        LineStringWriter.start(writer, x, y, z);                        
220
                } catch (IOException e) {
221
                        getErrorHandler().addError(e);
222
                }
223
        }
224
        
225
        /*
226
         * (non-Javadoc)
227
         * @see org.gvsig.gpe.writers.GPEWriterHandler#endLineString()
228
         */
229
        public void endLineString() {
230
                try {
231
                        LineStringWriter.end(writer);                        
232
                } catch (IOException e) {
233
                        getErrorHandler().addError(e);
234
                }
235
        }
236
        
237
        /*
238
         * (non-Javadoc)
239
         * @see org.gvsig.gpe.writers.GPEWriterHandler#startLinearRing(java.lang.String, double[], double[], double[], java.lang.String)
240
         */
241
        public void startLinearRing(String id, double[] x, double[] y, double[] z, String srs) {
242
                try {
243
                        LinearRingWriter.start(writer, x, y, z);                        
244
                } catch (IOException e) {
245
                        getErrorHandler().addError(e);
246
                }
247
        }
248
        
249
        /*
250
         * (non-Javadoc)
251
         * @see org.gvsig.gpe.writers.GPEWriterHandler#endLinearRing()
252
         */
253
        public void endLinearRing() {
254
                try {
255
                        LinearRingWriter.end(writer);                        
256
                } catch (IOException e) {
257
                        getErrorHandler().addError(e);
258
                }
259
        }
260
        
261
        /*
262
         * (non-Javadoc)
263
         * @see org.gvsig.gpe.writers.GPEWriterHandler#startPolygon(java.lang.String, double[], double[], double[], java.lang.String)
264
         */
265
        public void startPolygon(String id, double[] x, double[] y, double[] z, String srs) {
266
                try {
267
                        PolygonWriter.start(writer, x, y, z);                        
268
                } catch (IOException e) {
269
                        getErrorHandler().addError(e);
270
                }
271
        }
272
        
273
        /*
274
         * (non-Javadoc)
275
         * @see org.gvsig.gpe.writers.GPEWriterHandler#endPolygon()
276
         */
277
        public void endPolygon() {
278
                try {
279
                        PolygonWriter.end(writer);                        
280
                } catch (IOException e) {
281
                        getErrorHandler().addError(e);
282
                }
283
        }
284
        
285
        /*
286
         * (non-Javadoc)
287
         * @see org.gvsig.gpe.writers.GPEWriterHandler#startInnerBoundary(java.lang.String, double[], double[], double[], java.lang.String)
288
         */
289
        public void startInnerBoundary(String id, double[] x, double[] y, double[] z, String srs) {
290
                try {
291
                        InnerBoundaryIs.start(writer, x, y, z);                        
292
                } catch (IOException e) {
293
                        getErrorHandler().addError(e);
294
                }
295
        }
296
        
297
        /*
298
         * (non-Javadoc)
299
         * @see org.gvsig.gpe.writers.GPEWriterHandler#endInnerBoundary()
300
         */
301
        public void endInnerBoundary() {
302
                try {
303
                        InnerBoundaryIs.end(writer);                        
304
                } catch (IOException e) {
305
                        getErrorHandler().addError(e);
306
                }
307
        }
308
}