Statistics
| Revision:

root / trunk / libraries / libRemoteServices / src / org / gvsig / remoteClient / wms / wms_1_1_1 / WMSLayer1_1_1.java @ 3824

History | View | Annotate | Download (7.73 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
        readLayerAttributes(parser);
42
        currentTag = parser.nextTag();
43
        
44
        while (!end) 
45
        {
46
            switch(currentTag)
47
            {
48
                case KXmlParser.START_TAG:
49
                    if (parser.getName().compareTo(CapabilitiesTags.LAYER)==0)
50
                    {        
51
                        WMSLayer1_1_1 lyr = new WMSLayer1_1_1();                                                
52
                        //parser.next(); 
53
                        lyr.parse(parser, layerTreeMap);
54
                        lyr.setParent(this);                       
55
                        getChildren().add(lyr);
56
                        // Jaume
57
                        if (lyr.getName()!=null)
58
                            layerTreeMap.put(lyr.getName(), lyr);
59
                    }
60
                    else if (parser.getName().compareTo(CapabilitiesTags.ATTRIBUTION)==0){
61
                        // TODO comprobar que esto se necesite o se deseche
62
                        parser.skipSubTree();
63
                    }
64
                    else if (parser.getName().compareTo(CapabilitiesTags.NAME)==0)
65
                    {                
66
                        value = parser.nextText();
67
                        if (value != null) setName(value);                                                
68
                    }        
69
                    else if (parser.getName().compareTo(CapabilitiesTags.TITLE)==0)
70
                    {
71
                        value = parser.nextText();
72
                        if (value != null) setTitle(value);
73
                    }
74
                    else if (parser.getName().compareTo(CapabilitiesTags.ABSTRACT)==0)
75
                    {
76
                        value = parser.nextText();
77
                        if (value != null) setAbstract(value);
78
                    }
79
                    else if (parser.getName().compareTo(CapabilitiesTags.SRS)==0)
80
                    {
81
                        value = parser.nextText();
82
                        if (value != null){
83
                            String[] srs = value.split(" ");
84
                            for (int i = 0; i < srs.length; i++) {
85
                                addSrs(srs[i]);    
86
                            }                            
87
                        }
88
                    }                                        
89
                    else if (parser.getName().compareTo(CapabilitiesTags.BOUNDINGBOX)==0)
90
                    {
91
                        bbox = new BoundaryBox();
92
                        value = parser.getAttributeValue("",CapabilitiesTags.SRS);
93
                        if (value != null)
94
                            bbox.setSrs(value);
95
                        value = parser.getAttributeValue("",CapabilitiesTags.MINX);
96
                        if ((value != null) && (Utilities.isNumber(value)))
97
                            bbox.setXmin(Double.parseDouble(value));        
98
                        value = parser.getAttributeValue("",CapabilitiesTags.MINY);
99
                        if ((value != null) && (Utilities.isNumber(value)))
100
                            bbox.setYmin(Double.parseDouble(value));        
101
                        value = parser.getAttributeValue("",CapabilitiesTags.MAXX);
102
                        if ((value != null) && (Utilities.isNumber(value)))
103
                            bbox.setXmax(Double.parseDouble(value));        
104
                        value = parser.getAttributeValue("",CapabilitiesTags.MAXY);
105
                        if ((value != null) && (Utilities.isNumber(value)))
106
                            bbox.setYmax(Double.parseDouble(value));        
107
                        addBBox(bbox);
108
                    }        
109
                    else if (parser.getName().compareTo(CapabilitiesTags.LATLONBOUNDINGBOX)==0)
110
                    {
111
                        bbox = new BoundaryBox();
112
                        bbox.setSrs(CapabilitiesTags.EPSG_4326);
113
                        value = parser.getAttributeValue("",CapabilitiesTags.MINX);
114
                        if ((value != null) && (Utilities.isNumber(value)))
115
                            bbox.setXmin(Double.parseDouble(value));        
116
                        value = parser.getAttributeValue("",CapabilitiesTags.MINY);
117
                        if ((value != null) && (Utilities.isNumber(value)))
118
                            bbox.setYmin(Double.parseDouble(value));        
119
                        value = parser.getAttributeValue("",CapabilitiesTags.MAXX);
120
                        if ((value != null) && (Utilities.isNumber(value)))
121
                            bbox.setXmax(Double.parseDouble(value));        
122
                        value = parser.getAttributeValue("",CapabilitiesTags.MAXY);
123
                        if ((value != null) && (Utilities.isNumber(value)))
124
                            bbox.setYmax(Double.parseDouble(value));        
125
                        addBBox(bbox);
126
                        setLatLonBox(bbox);
127
                    }                                                
128
                    else if (parser.getName().compareTo(CapabilitiesTags.SCALEHINT)==0)
129
                    {
130
                        value = parser.getAttributeValue("",CapabilitiesTags.MIN);
131
                        if ((value != null) && (Utilities.isNumber(value)))
132
                            setScaleMin(Double.parseDouble(value));
133
                        value = parser.getAttributeValue("",CapabilitiesTags.MAX);
134
                        if ((value != null) && (Utilities.isNumber(value)))
135
                            setScaleMax(Double.parseDouble(value));                                                                                                                                        
136
                    }                                                
137
                    else if (parser.getName().compareTo(CapabilitiesTags.STYLE)==0)
138
                    {
139
                        WMSStyle1_1_1 style = new WMSStyle1_1_1();
140
                        style.parse(parser);
141
                        if ((style != null) && (style.getName() != null))
142
                        {
143
                            styles.add(style);
144
                        }
145
                    }
146
                    else if (parser.getName().compareTo(CapabilitiesTags.DIMENSION)==0)
147
                    {
148
                        WMSDimension dim = new WMSDimension();
149
                        dim.parse(parser);
150
                        if ((dim != null) && (dim.getName() != null))
151
                        {
152
                            addDimension(dim);
153
                        }
154
                    }
155
                    else if (parser.getName().compareTo(CapabilitiesTags.KEYWORDLIST)==0)
156
                    {
157
                            parseKeywordList(parser);
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
            currentTag = parser.next();
168
        }
169
    }      
170
    
171
    public String toString(){
172
        return super.toString();
173
    }
174
}