Statistics
| Revision:

svn-gvsig-desktop / trunk / libraries / libRemoteServices / src / org / gvsig / remoteClient / wms / wms_1_1_1 / WMSLayer1_1_1.java @ 3520

History | View | Annotate | Download (7.68 KB)

1

    
2
package org.gvsig.remoteClient.wms.wms_1_1_1;
3

    
4
import java.io.IOException;
5
import java.util.ArrayList;
6
import java.util.TreeMap;
7

    
8
import org.gvsig.remoteClient.utils.BoundaryBox;
9
import org.gvsig.remoteClient.utils.CapabilitiesTags;
10
import org.gvsig.remoteClient.utils.Utilities;
11
import org.gvsig.remoteClient.wms.WMSDimension;
12
import org.kxml2.io.KXmlParser;
13
import org.xmlpull.v1.XmlPullParserException;
14

    
15

    
16
/**
17
 * <p>WMS Layer for WMS 1.1.1</p>
18
 * 
19
 */
20
public class WMSLayer1_1_1 extends org.gvsig.remoteClient.wms.WMSLayer {
21
    
22
    
23
    public WMSLayer1_1_1()
24
    {
25
        children = new ArrayList();
26
    }
27
    /**
28
     * <p>Parses the contents of the parser(WMSCapabilities)
29
     * to extract the information about an WMSLayer</p>
30
     * 
31
     */
32
    public void parse(KXmlParser parser, TreeMap layerTreeMap)
33
    throws IOException, XmlPullParserException
34
    {
35
        int currentTag;
36
        boolean end = false;
37
        String value;
38
        BoundaryBox bbox;
39
        parser.require(KXmlParser.START_TAG, null, CapabilitiesTags.LAYER);
40
        
41
        //First of all set whether the layer is Queryable reading the attribute.
42
        value = parser.getAttributeValue("", CapabilitiesTags.QUERYABLE);
43
        if (value != null)
44
        {
45
            if (value.compareTo("0")==0)
46
                setQueryable(false);
47
            else
48
                setQueryable(true);
49
        }
50
        
51
        currentTag = parser.nextTag();
52
        
53
        while (!end) 
54
        {
55
            switch(currentTag)
56
            {
57
                case KXmlParser.START_TAG:
58
                    if (parser.getName().compareTo(CapabilitiesTags.LAYER)==0)
59
                    {        
60
                        WMSLayer1_1_1 lyr = new WMSLayer1_1_1();                                                
61
                        //parser.next(); 
62
                        lyr.parse(parser, layerTreeMap);
63
                        lyr.setParent(this);
64
                        getChildren().add(lyr);
65
                        // Jaume
66
                        if (lyr.getName()!=null)
67
                            layerTreeMap.put(lyr.getName(), lyr);
68
                    }
69
                    else if (parser.getName().compareTo(CapabilitiesTags.ATTRIBUTION)==0){
70
                        // TODO comprobar que esto se necesite o se deseche
71
                        parser.skipSubTree();
72
                    }
73
                    else if (parser.getName().compareTo(CapabilitiesTags.NAME)==0)
74
                    {                
75
                        value = parser.nextText();
76
                        if (value != null) setName(value);                                                
77
                    }        
78
                    else if (parser.getName().compareTo(CapabilitiesTags.TITLE)==0)
79
                    {
80
                        value = parser.nextText();
81
                        if (value != null) setTitle(value);
82
                    }
83
                    else if (parser.getName().compareTo(CapabilitiesTags.ABSTRACT)==0)
84
                    {
85
                        value = parser.nextText();
86
                        if (value != null) setAbstract(value);
87
                    }
88
                    else if (parser.getName().compareTo(CapabilitiesTags.SRS)==0)
89
                    {
90
                        value = parser.nextText();
91
                        if (value != null) addSrs(value);
92
                    }                                        
93
                    else if (parser.getName().compareTo(CapabilitiesTags.BOUNDINGBOX)==0)
94
                    {
95
                        bbox = new BoundaryBox();
96
                        value = parser.getAttributeValue("",CapabilitiesTags.SRS);
97
                        if (value != null)
98
                            bbox.setSrs(value);
99
                        value = parser.getAttributeValue("",CapabilitiesTags.MINX);
100
                        if ((value != null) && (Utilities.isNumber(value)))
101
                            bbox.setXmin(Double.parseDouble(value));        
102
                        value = parser.getAttributeValue("",CapabilitiesTags.MINY);
103
                        if ((value != null) && (Utilities.isNumber(value)))
104
                            bbox.setYmin(Double.parseDouble(value));        
105
                        value = parser.getAttributeValue("",CapabilitiesTags.MAXX);
106
                        if ((value != null) && (Utilities.isNumber(value)))
107
                            bbox.setXmax(Double.parseDouble(value));        
108
                        value = parser.getAttributeValue("",CapabilitiesTags.MAXY);
109
                        if ((value != null) && (Utilities.isNumber(value)))
110
                            bbox.setYmax(Double.parseDouble(value));        
111
                        addBBox(bbox);
112
                    }        
113
                    else if (parser.getName().compareTo(CapabilitiesTags.LATLONBOUNDINGBOX)==0)
114
                    {
115
                        bbox = new BoundaryBox();
116
                        bbox.setSrs("EPSG:4326");
117
                        value = parser.getAttributeValue("",CapabilitiesTags.MINX);
118
                        if ((value != null) && (Utilities.isNumber(value)))
119
                            bbox.setXmin(Double.parseDouble(value));        
120
                        value = parser.getAttributeValue("",CapabilitiesTags.MINY);
121
                        if ((value != null) && (Utilities.isNumber(value)))
122
                            bbox.setYmin(Double.parseDouble(value));        
123
                        value = parser.getAttributeValue("",CapabilitiesTags.MAXX);
124
                        if ((value != null) && (Utilities.isNumber(value)))
125
                            bbox.setXmax(Double.parseDouble(value));        
126
                        value = parser.getAttributeValue("",CapabilitiesTags.MAXY);
127
                        if ((value != null) && (Utilities.isNumber(value)))
128
                            bbox.setYmax(Double.parseDouble(value));        
129
                        addBBox(bbox);
130
                        setLatLonBox(bbox);
131
                    }                                                
132
                    else if (parser.getName().compareTo(CapabilitiesTags.SCALEHINT)==0)
133
                    {
134
                        value = parser.getAttributeValue("",CapabilitiesTags.MIN);
135
                        if ((value != null) && (Utilities.isNumber(value)))
136
                            setScaleMin(Double.parseDouble(value));
137
                        value = parser.getAttributeValue("",CapabilitiesTags.MAX);
138
                        if ((value != null) && (Utilities.isNumber(value)))
139
                            setScaleMax(Double.parseDouble(value));                                                                                                                                        
140
                    }                                                
141
                    else if (parser.getName().compareTo(CapabilitiesTags.STYLE)==0)
142
                    {
143
                        WMSStyle1_1_1 style = new WMSStyle1_1_1();
144
                        style.parse(parser);
145
                        if ((style != null) && (style.getName() != null))
146
                        {
147
                            styles.add(style);
148
                        }
149
                    }
150
                    else if (parser.getName().compareTo(CapabilitiesTags.DIMENSION)==0)
151
                    {
152
                        WMSDimension dim = new WMSDimension();
153
                        dim.parse(parser);
154
                        if ((dim != null) && (dim.getName() != null))
155
                        {
156
                            addDimension(dim);
157
                        }
158
                    }
159
                    break;
160
                case KXmlParser.END_TAG:
161
                    if (parser.getName().compareTo(CapabilitiesTags.LAYER) == 0)
162
                        end = true;
163
                    break;
164
                case KXmlParser.TEXT:                                        
165
                    break;
166
            }
167
            //if (!end)
168
            //{
169
            currentTag = parser.next();
170
            //}
171
        }
172
        //parser.require(KXmlParser.END_TAG, null, CapabilitiesTags.LAYER);
173
    }      
174
    
175
    public String toString(){
176
        return super.toString();
177
    }
178
}