Statistics
| Revision:

root / trunk / libraries / libRemoteServices / src / org / gvsig / remoteClient / wms / wms_1_3_0 / WMSLayer1_3_0.java @ 3665

History | View | Annotate | Download (7.93 KB)

1

    
2
package org.gvsig.remoteClient.wms.wms_1_3_0;
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.3.0</p>
18
 * 
19
 */
20
public class WMSLayer1_3_0 extends org.gvsig.remoteClient.wms.WMSLayer {
21
    
22
    
23
    public WMSLayer1_3_0()
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_3_0 lyr = new WMSLayer1_3_0();                                                
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.CRS)==0)
89
                    {
90
                        value = parser.nextText();
91
                        if (value != null){
92
                            String[] srs = value.split(" ");
93
                            for (int i = 0; i < srs.length; i++) {
94
                                addSrs(srs[i]);    
95
                            }
96
                            
97
                        }
98
                    }                                        
99
                    else if (parser.getName().compareTo(CapabilitiesTags.BOUNDINGBOX)==0)
100
                    {
101
                        bbox = new BoundaryBox();
102
                        value = parser.getAttributeValue("",CapabilitiesTags.SRS);
103
                        if (value != null)
104
                            bbox.setSrs(value);
105
                        value = parser.getAttributeValue("",CapabilitiesTags.MINX);
106
                        if ((value != null) && (Utilities.isNumber(value)))
107
                            bbox.setXmin(Double.parseDouble(value));        
108
                        value = parser.getAttributeValue("",CapabilitiesTags.MINY);
109
                        if ((value != null) && (Utilities.isNumber(value)))
110
                            bbox.setYmin(Double.parseDouble(value));        
111
                        value = parser.getAttributeValue("",CapabilitiesTags.MAXX);
112
                        if ((value != null) && (Utilities.isNumber(value)))
113
                            bbox.setXmax(Double.parseDouble(value));        
114
                        value = parser.getAttributeValue("",CapabilitiesTags.MAXY);
115
                        if ((value != null) && (Utilities.isNumber(value)))
116
                            bbox.setYmax(Double.parseDouble(value));        
117
                        addBBox(bbox);
118
                    }        
119
                    else if (parser.getName().compareTo(CapabilitiesTags.LATLONBOUNDINGBOX)==0)
120
                    {
121
                        bbox = new BoundaryBox();
122
                        bbox.setSrs("EPSG:4326");
123
                        value = parser.getAttributeValue("",CapabilitiesTags.MINX);
124
                        if ((value != null) && (Utilities.isNumber(value)))
125
                            bbox.setXmin(Double.parseDouble(value));        
126
                        value = parser.getAttributeValue("",CapabilitiesTags.MINY);
127
                        if ((value != null) && (Utilities.isNumber(value)))
128
                            bbox.setYmin(Double.parseDouble(value));        
129
                        value = parser.getAttributeValue("",CapabilitiesTags.MAXX);
130
                        if ((value != null) && (Utilities.isNumber(value)))
131
                            bbox.setXmax(Double.parseDouble(value));        
132
                        value = parser.getAttributeValue("",CapabilitiesTags.MAXY);
133
                        if ((value != null) && (Utilities.isNumber(value)))
134
                            bbox.setYmax(Double.parseDouble(value));        
135
                        addBBox(bbox);
136
                        setLatLonBox(bbox);
137
                    }                                                
138
                    else if (parser.getName().compareTo(CapabilitiesTags.SCALEHINT)==0)
139
                    {
140
                        value = parser.getAttributeValue("",CapabilitiesTags.MIN);
141
                        if ((value != null) && (Utilities.isNumber(value)))
142
                            setScaleMin(Double.parseDouble(value));
143
                        value = parser.getAttributeValue("",CapabilitiesTags.MAX);
144
                        if ((value != null) && (Utilities.isNumber(value)))
145
                            setScaleMax(Double.parseDouble(value));                                                                                                                                        
146
                    }                                                
147
                    else if (parser.getName().compareTo(CapabilitiesTags.STYLE)==0)
148
                    {
149
                        WMSStyle1_3_0 style = new WMSStyle1_3_0();
150
                        style.parse(parser);
151
                        if ((style != null) && (style.getName() != null))
152
                        {
153
                            styles.add(style);
154
                        }
155
                    }
156
                    else if (parser.getName().compareTo(CapabilitiesTags.DIMENSION)==0)
157
                    {
158
                        WMSDimension dim = new WMSDimension();
159
                        dim.parse(parser);
160
                        if ((dim != null) && (dim.getName() != null))
161
                        {
162
                            addDimension(dim);
163
                        }
164
                    }
165
                    break;
166
                case KXmlParser.END_TAG:
167
                    if (parser.getName().compareTo(CapabilitiesTags.LAYER) == 0)
168
                        end = true;
169
                    break;
170
                case KXmlParser.TEXT:                                        
171
                    break;
172
            }
173
            //if (!end)
174
            //{
175
            currentTag = parser.next();
176
            //}
177
        }
178
        //parser.require(KXmlParser.END_TAG, null, CapabilitiesTags.LAYER);
179
    }      
180
    
181
    public String toString(){
182
        return super.toString();
183
    }
184
}