Statistics
| Revision:

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

History | View | Annotate | Download (1.72 KB)

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

    
3
import java.io.IOException;
4

    
5
import org.gvsig.gpe.gml.parser.GPEGml2Parser;
6
import org.gvsig.gpe.gml.parser.v2.geometries.GeometryBinding;
7
import org.gvsig.gpe.gml.utils.CompareUtils;
8
import org.gvsig.gpe.gml.utils.CoordsContainer;
9
import org.gvsig.gpe.gml.utils.GMLTags;
10
import org.kxml2.io.KXmlParser;
11
import org.xmlpull.v1.XmlPullParser;
12
import org.xmlpull.v1.XmlPullParserException;
13

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

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

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