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 / filteroperator / comparison / IsLikeComparisonElement.java @ 40799

History | View | Annotate | Download (2.57 KB)

1
package org.gvsig.sldsupport.impl.sld1_0_0.parsing.filteroperator.comparison;
2

    
3
import java.io.IOException;
4

    
5
import org.gvsig.sldsupport.exception.SLDReadException;
6
import org.gvsig.sldsupport.impl.util.SLDUtils;
7
import org.gvsig.sldsupport.sld.filter.FilterTags;
8
import org.gvsig.sldsupport.sld.filter.operator.comparison.SLDIsLikeOperator;
9
import org.kxml2.io.KXmlParser;
10
import org.xmlpull.v1.XmlPullParser;
11
import org.xmlpull.v1.XmlPullParserException;
12

    
13
public class IsLikeComparisonElement {
14
        
15
        public static SLDIsLikeOperator parse(XmlPullParser parser , String version)
16
                        throws XmlPullParserException, IOException, SLDReadException {
17
                
18
                parser.require(KXmlParser.START_TAG, null, FilterTags.PROPERTYISLIKE);
19
                int tag = 0;
20
                SLDIsLikeOperator resp = new SLDIsLikeOperator();
21
                // -------------------------------------------------------
22
                String att = parser.getAttributeValue(null, FilterTags.WILDCHAR);
23
                if (att == null) {
24
                        throw new SLDReadException("Attribute required in IsLike operator: 'wildCard' ");
25
                } else {
26
                        resp.setWildCard(att);
27
                }
28
                // -------------------------------------------------------
29
                att = parser.getAttributeValue(null, FilterTags.SINGLECHAR);
30
                if (att == null) {
31
                        throw new SLDReadException("Attribute required in IsLike operator: 'singleChar' ");
32
                } else {
33
                        resp.setSingleChar(att);
34
                }
35
                // -------------------------------------------------------
36
                att = parser.getAttributeValue(null, FilterTags.ESCAPECHAR);
37
                if (att == null) {
38
                        throw new SLDReadException("Attribute required in IsLike operator: 'escapeChar' ");
39
                } else {
40
                        resp.setEscapeChar(att);
41
                }
42
                // -------------------------------------------------------
43
                tag = parser.nextTag();
44
                String name = parser.getName();
45
                String txt = null;
46
                while (!(SLDUtils.isStr(name, FilterTags.PROPERTYISLIKE)
47
                                && tag == KXmlParser.END_TAG)) {
48
                        
49
                        switch (tag) {
50
                        case KXmlParser.START_TAG:
51
                                if (SLDUtils.isStr(name, FilterTags.PROPERTYNAME)) {
52
                                        txt = parser.nextText();
53
                                        resp.setPropertyName(txt);
54
                                        parser.nextTag();
55
                                        break;
56
                                }
57
                                if (SLDUtils.isStr(name, FilterTags.LITERAL)) {
58
                                        txt = parser.nextText();
59
                                        resp.setLiteral(txt);
60
                                        parser.nextTag();
61
                                        break;
62
                                }
63
                                
64
                                /*
65
                                 * Any other entity causes parsing error
66
                                 */
67
                                throw new SLDReadException("Bad SLD file. Unexpected entity in IsLikeOperator: " + name);
68
                        case KXmlParser.END_TAG:
69
                                break;
70
                        case KXmlParser.TEXT:
71
                                break;
72
                        }
73
                        tag = parser.getEventType();
74
                        name = parser.getName();
75
                }
76

    
77
                parser.nextTag();
78
                return resp;
79
        }
80
}