Statistics
| Revision:

svn-gvsig-desktop / branches / v02_desarrollo / libraries / sld / temp / org.gvsig.sldsupport.lib.impl / src / main / java / org / gvsig / sldsupport / impl / sld1_0_0 / parsing / symbol / PolygonSymbolElement.java @ 40799

History | View | Annotate | Download (2.59 KB)

1
package org.gvsig.sldsupport.impl.sld1_0_0.parsing.symbol;
2

    
3
import java.io.IOException;
4

    
5
import org.gvsig.sldsupport.exception.SLDReadException;
6
import org.gvsig.sldsupport.impl.sld1_0_0.parsing.DisplacementElement;
7
import org.gvsig.sldsupport.impl.sld1_0_0.parsing.FillElement;
8
import org.gvsig.sldsupport.impl.sld1_0_0.parsing.GeometryElement;
9
import org.gvsig.sldsupport.impl.sld1_0_0.parsing.StrokeElement;
10
import org.gvsig.sldsupport.impl.util.SLDUtils;
11
import org.gvsig.sldsupport.sld.SLDTags;
12
import org.gvsig.sldsupport.sld.graphic.SLDDisplacement;
13
import org.gvsig.sldsupport.sld.symbol.SLDPolygonSymbol;
14
import org.gvsig.sldsupport.sld.symbol.misc.SLDFill;
15
import org.gvsig.sldsupport.sld.symbol.misc.SLDGeometry;
16
import org.gvsig.sldsupport.sld.symbol.misc.SLDStroke;
17
import org.kxml2.io.KXmlParser;
18
import org.xmlpull.v1.XmlPullParser;
19
import org.xmlpull.v1.XmlPullParserException;
20

    
21
/**
22
 * Used to parse a parameter value inside another entity
23
 * 
24
 * @author jldominguez
25
 *
26
 */
27
public class PolygonSymbolElement {
28
        
29
        public static SLDPolygonSymbol parse(XmlPullParser parser , String version)
30
                        throws XmlPullParserException, IOException, SLDReadException {
31
                
32
                String ent_name = parser.getName();
33
                SLDPolygonSymbol resp = new SLDPolygonSymbol();
34
                resp.setVersion(version);
35
                int tag = 0;
36
                
37
                tag = parser.nextTag();
38
                String name = parser.getName();
39
                String txt = null;
40
                while (!(SLDUtils.isStr(name, ent_name) && tag == KXmlParser.END_TAG)) {
41
                        
42
                        switch (tag) {
43
                        case KXmlParser.START_TAG:
44
                                if (SLDUtils.isStr(name, SLDTags.GEOMETRY)) {
45
                                        SLDGeometry geom = GeometryElement.parse(parser, version);
46
                                        resp.setGeometryPropertyName(geom.getPropertyName());
47
                                        break;
48
                                }
49
                                if (SLDUtils.isStr(name, SLDTags.FILL)) {
50
                                        SLDFill fil = FillElement.parse(parser, version);
51
                                        resp.setFill(fil);
52
                                        break;
53
                                }
54
                                if (SLDUtils.isStr(name, SLDTags.STROKE)) {
55
                                        SLDStroke st = StrokeElement.parse(parser, version);
56
                                        resp.setStroke(st);
57
                                        break;
58
                                }
59
                                if (SLDUtils.isStr(name, SLDTags.DISPLACEMENT)) {
60
                                        resp.setVersion(SLDUtils.VERSION_1_1_0);
61
                                        SLDDisplacement disp = DisplacementElement.parse(parser, version);
62
                                        resp.setDisplacement(disp);
63
                                        break;
64
                                }
65
                                /*
66
                                 * Any other entity causes parsing error
67
                                 */
68
                                throw new SLDReadException(
69
                                                "Bad SLD file. Unexpected entity in polygon symbol: " + name);
70
                        case KXmlParser.END_TAG:
71
                                break;
72
                        case KXmlParser.TEXT:
73
                                break;
74
                        }
75
                        tag = parser.getEventType();
76
                        name = parser.getName();
77
                }
78

    
79
                parser.nextTag();
80
                return resp;
81
        }
82
}