Statistics
| Revision:

root / trunk / libraries / libGPE-GML / src / org / gvsig / gpe / gml / writer / GPEGmlWriterHandlerImplementor.java @ 12418

History | View | Annotate | Download (17.7 KB)

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

    
3
import java.io.FileWriter;
4
import java.io.IOException;
5
import java.util.Stack;
6

    
7
import org.gvsig.gpe.GPEDefaults;
8
import org.gvsig.gpe.gml.GMLTags;
9
import org.gvsig.gpe.gml.writer.features.DescriptionWriter;
10
import org.gvsig.gpe.gml.writer.features.ElementWriter;
11
import org.gvsig.gpe.gml.writer.features.FeatureMemberWriter;
12
import org.gvsig.gpe.gml.writer.features.NameWriter;
13
import org.gvsig.gpe.gml.writer.geometries.BoundedByWriter;
14
import org.gvsig.gpe.gml.writer.geometries.GeometryMemberWriter;
15
import org.gvsig.gpe.gml.writer.geometries.InnerBoundaryIs;
16
import org.gvsig.gpe.gml.writer.geometries.LineStringMemberWriter;
17
import org.gvsig.gpe.gml.writer.geometries.LineStringWriter;
18
import org.gvsig.gpe.gml.writer.geometries.LinearRingWriter;
19
import org.gvsig.gpe.gml.writer.geometries.MultiGeometryWriter;
20
import org.gvsig.gpe.gml.writer.geometries.MultiLineStringWriter;
21
import org.gvsig.gpe.gml.writer.geometries.MultiPointWriter;
22
import org.gvsig.gpe.gml.writer.geometries.MultiPolygonWriter;
23
import org.gvsig.gpe.gml.writer.geometries.PointMemberWriter;
24
import org.gvsig.gpe.gml.writer.geometries.PointWriter;
25
import org.gvsig.gpe.gml.writer.geometries.PolygonMemberWriter;
26
import org.gvsig.gpe.gml.writer.geometries.PolygonWriter;
27
import org.gvsig.gpe.warnings.NotSupportedElementWarning;
28
import org.gvsig.gpe.xml.writer.GPEXmlWriterHandler;
29
import org.gvsig.gpe.xml.writer.Writer;
30
import org.gvsig.xmlschema.som.IXSElementDeclaration;
31

    
32
/* gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
33
 *
34
 * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
35
 *
36
 * This program is free software; you can redistribute it and/or
37
 * modify it under the terms of the GNU General Public License
38
 * as published by the Free Software Foundation; either version 2
39
 * of the License, or (at your option) any later version.
40
 *
41
 * This program is distributed in the hope that it will be useful,
42
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
43
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
44
 * GNU General Public License for more details.
45
 *
46
 * You should have received a copy of the GNU General Public License
47
 * along with this program; if not, write to the Free Software
48
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
49
 *
50
 * For more information, contact:
51
 *
52
 *  Generalitat Valenciana
53
 *   Conselleria d'Infraestructures i Transport
54
 *   Av. Blasco Ib??ez, 50
55
 *   46010 VALENCIA
56
 *   SPAIN
57
 *
58
 *      +34 963862235
59
 *   gvsig@gva.es
60
 *      www.gvsig.gva.es
61
 *
62
 *    or
63
 *
64
 *   IVER T.I. S.A
65
 *   Salamanca 50
66
 *   46005 Valencia
67
 *   Spain
68
 *
69
 *   +34 963163400
70
 *   dac@iver.es
71
 */
72
/* CVS MESSAGES:
73
 *
74
 * $Id: GPEGmlWriterHandlerImplementor.java 12418 2007-06-29 12:19:48Z jorpiell $
75
 * $Log$
76
 * Revision 1.1  2007-06-29 12:19:34  jorpiell
77
 * The schema validation is made independently of the concrete writer
78
 *
79
 * Revision 1.21  2007/06/28 13:05:09  jorpiell
80
 * The Qname has been updated to the 1.5 JVM machine. The schema validation is made in the GPEWriterHandlerImplementor class
81
 *
82
 * Revision 1.20  2007/06/22 12:39:28  jorpiell
83
 * Bug adding with a element without feature name fixed
84
 *
85
 * Revision 1.19  2007/06/22 12:22:40  jorpiell
86
 * The typeNotFoundException has been deleted. It never was thrown
87
 *
88
 * Revision 1.18  2007/06/14 13:50:05  jorpiell
89
 * The schema jar name has been changed
90
 *
91
 * Revision 1.17  2007/06/07 14:53:30  jorpiell
92
 * Add the schema support
93
 *
94
 * Revision 1.16  2007/05/17 14:33:51  jorpiell
95
 * The fid attribute is written
96
 *
97
 * Revision 1.15  2007/05/16 12:07:47  jorpiell
98
 * Some warnings throwed
99
 *
100
 * Revision 1.14  2007/05/15 11:55:11  jorpiell
101
 * MultiGeometry is now supported
102
 *
103
 * Revision 1.13  2007/05/15 10:14:45  jorpiell
104
 * The element and the feature is managed like a Stack
105
 *
106
 * Revision 1.12  2007/05/14 11:18:12  jorpiell
107
 * Add the ErrorHandler to all the methods
108
 *
109
 * Revision 1.11  2007/05/08 10:24:16  jorpiell
110
 * Add comments to create javadocs
111
 *
112
 * Revision 1.10  2007/05/07 07:08:02  jorpiell
113
 * Add a constructor with the name and the description fields
114
 *
115
 * Revision 1.9  2007/04/26 14:40:03  jorpiell
116
 * Some writer handler methods updated
117
 *
118
 * Revision 1.8  2007/04/19 07:25:49  jorpiell
119
 * Add the add methods to teh contenhandler and change the register mode
120
 *
121
 * Revision 1.7  2007/04/18 11:03:55  jorpiell
122
 * Add the default schema property
123
 *
124
 * Revision 1.6  2007/04/17 07:00:35  jorpiell
125
 * GML name, descripction and Id tags separated
126
 *
127
 * Revision 1.5  2007/04/14 16:07:30  jorpiell
128
 * The writer has been created
129
 *
130
 * Revision 1.4  2007/04/13 13:16:00  jorpiell
131
 * Add the multiple geometries
132
 *
133
 * Revision 1.3  2007/04/13 07:17:57  jorpiell
134
 * Add the writting tests for the simple geometries
135
 *
136
 * Revision 1.2  2007/04/12 17:06:44  jorpiell
137
 * First GML writing tests
138
 *
139
 * Revision 1.1  2007/04/12 10:23:41  jorpiell
140
 * Add some writers and the GPEXml parser
141
 *
142
 *
143
 */
144
/**
145
 * GPE writer handler for the GML format. It writes a 
146
 * GML file.
147
 * @author Jorge Piera LLodr? (jorge.piera@iver.es)
148
 */
149
public class GPEGmlWriterHandlerImplementor extends GPEXmlWriterHandler{
150
        //In GML there is only one label. It the consumer
151
        //try to add more labels the driver will be report
152
        //one exception
153
        private boolean oneLayer = false;
154
        
155
        //Used for the multi-geometries
156
        private boolean isMultiple = false;
157
        
158
        //Used to know if the multiple geometries has type
159
        private boolean hasMultipleType = false;
160
        
161
        //Used to close the labels
162
        private Stack currentFeature = null;
163
        private Stack currentElement = null;        
164
        
165
        //To manage the end of file
166
        private boolean isInitialized = false;
167
        
168
        public GPEGmlWriterHandlerImplementor(String name, String description) {
169
                super(name, description);        
170
                currentFeature = new Stack();
171
                currentElement = new Stack();
172
        }
173

    
174
        /*
175
         * (non-Javadoc)
176
         * @see org.gvsig.gpe.xml.writer.GPEXmlWriterHandler#createOutputStream()
177
         */
178
        protected Writer createWriter() throws IOException {
179
                return new Writer(new FileWriter(getOutputFile()));
180
        }
181
        
182
        /*
183
         * (non-Javadoc)
184
         * @see org.gvsig.gpe.writers.GPEWriterHandler#getDefaultFormat()
185
         */
186
        public String getDefaultFormat() {
187
                return "GML";
188
        }
189

    
190
        /*
191
         * (non-Javadoc)
192
         * @see org.gvsig.gpe.writers.GPEWriterHandler#getDefaultVersion()
193
         */
194
        public String getDefaultVersion() {
195
                return "2.1.2";
196
        }        
197
        
198
        /*
199
         * (non-Javadoc)
200
         * @see org.gvsig.gpe.writer.GPEWriterHandler#initialize()
201
         */
202
        public void initialize(){
203
                try {
204
                        initXmlHeader();
205
                } catch (IOException e) {
206
                        getErrorHandler().addError(e);
207
                }                
208
        }
209
        
210
        /*
211
         * (non-Javadoc)
212
         * @see org.gvsig.gpe.writer.GPEWriterHandler#close()
213
         */
214
        public void close(){
215
                try {
216
                        writer.flush();
217
                        writer.close();
218
                } catch (IOException e) {
219
                        getErrorHandler().addError(e);
220
                }
221
        }
222
        
223
        /*
224
         * (non-Javadoc)
225
         * @see org.gvsig.gpe.writer.GPEWriterHandler#startLayer(java.lang.String, java.lang.String, java.lang.String, java.lang.String)
226
         */
227
        public void startLayer(String id, String name, String description, String srs, String xsElementName) {
228
                if (!isInitialized){
229
                        initFileHeader(id);
230
                }
231
                //GML only can write one layer
232
                if (oneLayer){
233
                        //TODO: EXCEPCION DE NO PUEDO CON MAS DE UN LAYER
234
                }
235
                oneLayer = true;                
236
                try {
237
                        NameWriter.write(writer, name);
238
                        DescriptionWriter.write(writer, description);
239
                        //TODO: EL SRS SE PIERDE DEBIDO A LA SEMANTICA DEL GML
240
                } catch (IOException e) {
241
                        getErrorHandler().addError(e);
242
                }        
243
        }        
244
        
245
        /**
246
         * Writes the FeatureCollection tag with the fid and the 
247
         * sechemas
248
         * @param fid
249
         * Feature id
250
         */
251
        private void initFileHeader(String fid){
252
                try{
253
                        writer.write("\n");
254
                        writer.write("<" + GMLTags.GML_NAMESPACE + ":" + GMLTags.GML_FEATURCOLLECTION);
255
                        if (fid != null){
256
                                writer.write(" " + GMLTags.GML_FID + "=\"" + fid + "\"");
257
                        }
258
                        writer.write(" " + getDocumentPrefixes());
259
                        writer.write(" " + GMLTags.NAMESPACE_GML);
260
                        writer.write(" " + GMLTags.NAMESPACE_XML);
261
                        writer.write(" " + GMLTags.XML_XSI + ":" + GMLTags.XML_SCHEMA_LOCATION + "=\"");
262
                        if (getSchemaDocument().hasSchemas()){
263
                                writer.write(getSchemaLocations());
264
                        }else{
265
                                writer.write(GPEDefaults.getStringProperty(GPEDefaults.NAMESPACE_URI));
266
                                writer.write(" " + GPEDefaults.getStringProperty(GPEDefaults.XSD_SCHEMA_FILE));
267
                        }
268
                        writer.write("\"");
269
                        
270
                        writer.write(">");
271
                } catch (IOException e) {
272
                        getErrorHandler().addError(e);
273
                }        
274
        }
275
        
276
        /*
277
         * (non-Javadoc)
278
         * @see org.gvsig.gpe.writers.GPEWriterHandler#endLayer()
279
         */
280
        public void endLayer() {
281
                try {
282
                        writer.write("\n");
283
                        writer.write("</" + GMLTags.GML_NAMESPACE + ":" + GMLTags.GML_FEATURCOLLECTION + ">");
284
                } catch (IOException e) {
285
                        getErrorHandler().addError(e);
286
                }
287
        }
288
        
289
        /*
290
         * (non-Javadoc)
291
         * @see org.gvsig.gpe.writer.GPEWriterHandler#startFeature(java.lang.String, java.lang.String)
292
         */
293
        public void startFeature(String id, String name, String xsElementName) {
294
                currentFeature.push(name);
295
                try {
296
                        FeatureMemberWriter.start(writer, id, name, getTargetNamespacePrefix());
297
                } catch (IOException e) {
298
                        getErrorHandler().addError(e);
299
                }
300
        }
301
        
302
        /*
303
         * (non-Javadoc)
304
         * @see org.gvsig.gpe.writer.GPEWriterHandler#endFeature()
305
         */
306
        public void endFeature() {
307
                try {
308
                        FeatureMemberWriter.end(writer, (String)currentFeature.pop(), getTargetNamespacePrefix());
309
                } catch (IOException e) {
310
                        getErrorHandler().addError(e);
311
                }                
312
        }
313
        
314
        /*
315
         * (non-Javadoc)
316
         * @see org.gvsig.gpe.writer.GPEWriterHandler#startElement(java.lang.String, java.lang.Object, java.lang.Object)
317
         */
318
        public void startElement(String name, Object value, String xsElementName) {
319
                currentElement.push(name);
320
                try {
321
                        ElementWriter.start(writer, name, getTargetNamespacePrefix(), value, xsElementName);
322
                } catch (IOException e) {
323
                        getErrorHandler().addError(e);
324
                }                
325
        }
326
        
327
        /*
328
         * (non-Javadoc)
329
         * @see org.gvsig.gpe.writer.GPEWriterHandler#endElement()
330
         */
331
        public void endElement() {
332
                try {
333
                        ElementWriter.end(writer, (String)currentElement.pop(), getTargetNamespacePrefix());                   
334
                } catch (IOException e) {
335
                        getErrorHandler().addError(e);
336
                }        
337
        }
338
        
339
        /*
340
         * (non-Javadoc)
341
         * @see org.gvsig.gpe.writer.GPEWriterHandler#startPoint(java.lang.String, double, double, double, java.lang.String)
342
         */
343
        public void startPoint(String id, double x, double y, double z, String srs) {
344
                try {
345
                        if (isMultiple){
346
                                if (hasMultipleType){
347
                                        GeometryMemberWriter.startPoint(writer, getErrorHandler(), id, srs);
348
                                        PointWriter.start(writer, getErrorHandler(), id, x, y, z, srs);
349
                                }else{
350
                                        PointMemberWriter.start(writer, getErrorHandler(), id, x, y, z, srs);
351
                                }
352
                        }else{
353
                                PointWriter.start(writer, getErrorHandler(), id, x, y, z, srs);
354
                        }
355
                } catch (IOException e) {
356
                        getErrorHandler().addError(e);
357
                }                
358
        }
359
        
360
        /*
361
         * (non-Javadoc)
362
         * @see org.gvsig.gpe.writer.GPEWriterHandler#endPoint()
363
         */
364
        public void endPoint() {
365
                try {
366
                        if (isMultiple){
367
                                if (hasMultipleType){
368
                                        PointWriter.end(writer, getErrorHandler());
369
                                        GeometryMemberWriter.end(writer, getErrorHandler());
370
                                }else{
371
                                        PointMemberWriter.end(writer, getErrorHandler());
372
                                }
373
                        }else{
374
                                PointWriter.end(writer, getErrorHandler());
375
                        }
376
                } catch (IOException e) {
377
                        getErrorHandler().addError(e);
378
                }
379
                
380
        }
381
        
382
        /*
383
         * (non-Javadoc)
384
         * @see org.gvsig.gpe.writer.GPEWriterHandler#startLineString(java.lang.String, double[], double[], double[], java.lang.String)
385
         */
386
        public void startLineString(String id, double[] x, double[] y, double[] z, String srs) {
387
                try {
388
                        if (isMultiple){
389
                                if (hasMultipleType){
390
                                        GeometryMemberWriter.startPoint(writer, getErrorHandler(), id, srs);
391
                                        LineStringWriter.start(writer, getErrorHandler(), id, x, y, z, srs);
392
                                }else{
393
                                        LineStringMemberWriter.start(writer, getErrorHandler(), id, x, y, z, srs);
394
                                }
395
                        }else{
396
                                LineStringWriter.start(writer, getErrorHandler(), id, x, y, z, srs);
397
                        }
398
                } catch (IOException e) {
399
                        getErrorHandler().addError(e);
400
                }                
401
        }
402
        
403
        /*
404
         * (non-Javadoc)
405
         * @see org.gvsig.gpe.writer.GPEWriterHandler#endLineString()
406
         */
407
        public void endLineString() {
408
                try {
409
                        if (isMultiple){
410
                                if (hasMultipleType){
411
                                        LineStringWriter.end(writer, getErrorHandler());
412
                                        GeometryMemberWriter.end(writer, getErrorHandler());
413
                                }else{
414
                                        LineStringMemberWriter.end(writer, getErrorHandler());
415
                                }
416
                        }else{
417
                                LineStringWriter.end(writer, getErrorHandler());
418
                        }
419
                } catch (IOException e) {
420
                        getErrorHandler().addError(e);
421
                }                
422
        }
423
        
424
        /*
425
         * (non-Javadoc)
426
         * @see org.gvsig.gpe.writer.GPEWriterHandler#startBbox(java.lang.String, double[], double[], double[], java.lang.String)
427
         */
428
        public void startBbox(String id, double[] x, double[] y, double[] z, String srs) {
429
                try {
430
                        BoundedByWriter.start(writer, getErrorHandler(), id, x, y, z, srs);
431
                } catch (IOException e) {
432
                        getErrorHandler().addError(e);
433
                }                
434
        }
435
        
436
        /*
437
         * (non-Javadoc)
438
         * @see org.gvsig.gpe.writer.GPEWriterHandler#endBbox()
439
         */
440
        public void endBbox() {
441
                try {
442
                        BoundedByWriter.end(writer, getErrorHandler());
443
                } catch (IOException e) {
444
                        getErrorHandler().addError(e);
445
                }                        
446
        }
447
        
448
        /*
449
         * (non-Javadoc)
450
         * @see org.gvsig.gpe.writers.GPEWriterHandler#startLinearRing(java.lang.String, double[], double[], double[], java.lang.String)
451
         */
452
        public void startLinearRing(String id, double[] x, double[] y, double[] z, String srs) {
453
                try {
454
                        LinearRingWriter.start(writer, getErrorHandler(), id, x, y, z, srs);
455
                } catch (IOException e) {
456
                        getErrorHandler().addError(e);
457
                }                        
458
        }
459
        
460
        /*
461
         * (non-Javadoc)
462
         * @see org.gvsig.gpe.writers.GPEWriterHandler#endLinearRing()
463
         */
464
        public void endLinearRing() {
465
                try {
466
                        LinearRingWriter.end(writer, getErrorHandler());
467
                } catch (IOException e) {
468
                        getErrorHandler().addError(e);
469
                }                
470
        }
471
        
472
        /*
473
         * (non-Javadoc)
474
         * @see org.gvsig.gpe.writers.GPEWriterHandler#startPolygon(java.lang.String, double[], double[], double[], java.lang.String)
475
         */
476
        public void startPolygon(String id, double[] x, double[] y, double[] z, String srs) {
477
                try {
478
                        if (isMultiple){
479
                                if (hasMultipleType){
480
                                        GeometryMemberWriter.startPoint(writer, getErrorHandler(), id, srs);
481
                                        PolygonWriter.start(writer, getErrorHandler(), id, x, y, z, srs);
482
                                }else{
483
                                        PolygonMemberWriter.start(writer, getErrorHandler(), id, x, y, z, srs);
484
                                }
485
                        }else{
486
                                PolygonWriter.start(writer, getErrorHandler(), id, x, y, z, srs);
487
                        }
488
                } catch (IOException e) {
489
                        getErrorHandler().addError(e);
490
                }
491
        }
492
        
493
        /*
494
         * (non-Javadoc)
495
         * @see org.gvsig.gpe.writers.GPEWriterHandler#endPolygon()
496
         */
497
        public void endPolygon() {
498
                try {
499
                        if (isMultiple){
500
                                if (hasMultipleType){
501
                                        PolygonWriter.end(writer, getErrorHandler());
502
                                        GeometryMemberWriter.end(writer, getErrorHandler());
503
                                }else{
504
                                        PolygonMemberWriter.end(writer, getErrorHandler());
505
                                }
506
                        }else{
507
                                PolygonWriter.end(writer, getErrorHandler());
508
                        }
509
                } catch (IOException e) {
510
                        getErrorHandler().addError(e);
511
                }        
512
        }
513
        
514
        /*
515
         * (non-Javadoc)
516
         * @see org.gvsig.gpe.writers.GPEWriterHandler#startInnerBoundary(java.lang.String, double[], double[], double[], java.lang.String)
517
         */
518
        public void startInnerBoundary(String id, double[] x, double[] y, double[] z, String srs) {
519
                try {
520
                        InnerBoundaryIs.start(writer, getErrorHandler(), x, y, z);
521
                } catch (IOException e) {
522
                        getErrorHandler().addError(e);
523
                }
524
        }
525
        
526
        /*
527
         * (non-Javadoc)
528
         * @see org.gvsig.gpe.writers.GPEWriterHandler#endInnerBoundary()
529
         */
530
        public void endInnerBoundary() {
531
                try {
532
                        InnerBoundaryIs.end(writer, getErrorHandler());
533
                } catch (IOException e) {
534
                        getErrorHandler().addError(e);
535
                }        
536
        }
537
        
538
        /*
539
         * (non-Javadoc)
540
         * @see org.gvsig.gpe.writers.GPEWriterHandler#startMultiPoint(java.lang.String, java.lang.String)
541
         */
542
        public void startMultiPoint(String id, String srs) {
543
                isMultiple = true;
544
                try {
545
                        MultiPointWriter.start(writer, getErrorHandler(), id, srs);
546
                } catch (IOException e) {
547
                        getErrorHandler().addError(e);
548
                }
549
        }
550
        
551
        /*
552
         * (non-Javadoc)
553
         * @see org.gvsig.gpe.writers.GPEWriterHandler#endMuliPoint()
554
         */
555
        public void endMultiPoint() {
556
                isMultiple = false;
557
                try {
558
                        MultiPointWriter.end(writer, getErrorHandler());
559
                } catch (IOException e) {
560
                        getErrorHandler().addError(e);
561
                }
562
        }
563

    
564
        /*
565
         * (non-Javadoc)
566
         * @see org.gvsig.gpe.writers.GPEWriterHandler#startMultiPoint(java.lang.String, java.lang.String)
567
         */
568
        public void startMultiGeometry(String id, String srs) {
569
                isMultiple = true;
570
                hasMultipleType = true;
571
                try {
572
                        MultiGeometryWriter.start(writer, getErrorHandler(), id, srs);
573
                } catch (IOException e) {
574
                        getErrorHandler().addError(e);
575
                }
576
        }
577
        
578
        /*
579
         * (non-Javadoc)
580
         * @see org.gvsig.gpe.writers.GPEWriterHandler#endMuliPoint()
581
         */
582
        public void endMultiGeometry() {
583
                isMultiple = false;
584
                hasMultipleType = false;
585
                try {
586
                        MultiGeometryWriter.end(writer, getErrorHandler());
587
                } catch (IOException e) {
588
                        getErrorHandler().addError(e);
589
                }
590
        }
591
        
592
        /*
593
         * (non-Javadoc)
594
         * @see org.gvsig.gpe.writers.GPEWriterHandler#startMultiLineString(java.lang.String, java.lang.String)
595
         */
596
        public void startMultiLineString(String id, String srs) {
597
                isMultiple = true;
598
                try {
599
                        MultiLineStringWriter.start(writer, getErrorHandler(), id, srs);
600
                } catch (IOException e) {
601
                        getErrorHandler().addError(e);
602
                }
603
        }
604
        
605
        /*
606
         * (non-Javadoc)
607
         * @see org.gvsig.gpe.writers.GPEWriterHandler#endMultiLineString()
608
         */
609
        public void endMultiLineString() {
610
                isMultiple = false;
611
                try {
612
                        MultiLineStringWriter.end(writer, getErrorHandler());
613
                } catch (IOException e) {
614
                        getErrorHandler().addError(e);
615
                }
616
        }
617

    
618
        /*
619
         * (non-Javadoc)
620
         * @see org.gvsig.gpe.writers.GPEWriterHandler#startMultiPolygon(java.lang.String, java.lang.String)
621
         */
622
        public void startMultiPolygon(String id, String srs) {
623
                isMultiple = true;
624
                try {
625
                        MultiPolygonWriter.start(writer, getErrorHandler(), id, srs);
626
                } catch (IOException e) {
627
                        getErrorHandler().addError(e);
628
                }                
629
        }
630
        
631
        /*
632
         * (non-Javadoc)
633
         * @see org.gvsig.gpe.writers.GPEWriterHandler#endMultiPolygon()
634
         */
635
        public void endMultiPolygon() {
636
                isMultiple = false;
637
                try {
638
                        MultiPolygonWriter.end(writer, getErrorHandler());
639
                } catch (IOException e) {
640
                        getErrorHandler().addError(e);
641
                }                
642
        }        
643
}