Statistics
| Revision:

root / trunk / libraries / libGPE-GML / src / org / gvsig / gpe / gml / parser / sfp0 / geometries / MultiCurveTypeBinding.java @ 21951

History | View | Annotate | Download (1.69 KB)

1
package org.gvsig.gpe.gml.parser.sfp0.geometries;
2

    
3
import java.io.IOException;
4

    
5
import javax.xml.namespace.QName;
6

    
7
import org.gvsig.gpe.gml.parser.GPEGml2_1_2_Parser;
8
import org.gvsig.gpe.gml.parser.v2.geometries.GeometryBinding;
9
import org.gvsig.gpe.gml.utils.GMLTags;
10
import org.gvsig.gpe.xml.stream.IXmlStreamReader;
11
import org.gvsig.gpe.xml.stream.XmlStreamException;
12
import org.gvsig.gpe.xml.utils.CompareUtils;
13

    
14
public class MultiCurveTypeBinding extends GeometryBinding{
15
        /**************************
16
         * Parse the object curve
17
         **************************/
18
        public Object parse(IXmlStreamReader parser,GPEGml2_1_2_Parser handler) throws XmlStreamException, IOException {
19
                boolean endFeature = false;
20
                int currentTag;
21
                Object multiCurve = null;
22

    
23
                super.setAtributtes(parser, handler.getErrorHandler());
24
                
25
                //Taking the next tag
26
                multiCurve = handler.getContentHandler().startMultiCurve(id, srsName);
27
                
28
                QName tag = parser.getName();
29
                currentTag = parser.getEventType();
30

    
31
                while (!endFeature){
32
                        switch(currentTag){
33
                        case IXmlStreamReader.START_ELEMENT:
34
                                        if (CompareUtils.compareWithNamespace(tag,GMLTags.GML_CURVEMEMBER)){
35
                                                Object curve = CurveMemberTypeBinding.parse(parser, handler);
36
                                                handler.getContentHandler().addCurveToMultiCurve(curve, multiCurve);
37
                                        }
38
                                        break;
39
                                case IXmlStreamReader.END_ELEMENT:
40
                                        if (CompareUtils.compareWithNamespace(tag,GMLTags.GML_MULTICURVE)){                                                
41
                                                endFeature = true;        
42
                                                handler.getContentHandler().endMultiCurve(multiCurve);
43
                                        }
44
                                        break;
45
                                case IXmlStreamReader.CHARACTERS:                                        
46
                                        
47
                                        break;
48
                                }
49
                                if (!endFeature){                                        
50
                                        currentTag = parser.next();
51
                                        tag = parser.getName();
52
                                }
53
                        }                        
54
                return multiCurve;        
55
        }
56
}