Revision 3535

View differences:

trunk/libraries/libRemoteServices/src/org/gvsig/remoteClient/wms/WMSLayer.java
70 70
    /**
71 71
     * <p>Dimensions defined for the layer in the capabilities doc</p>
72 72
     */
73
    private java.util.Hashtable dimensions = new Hashtable();
73
    private java.util.ArrayList dimensions = new ArrayList();
74 74
    /**
75 75
     * Tells if this layer accepts getFeatureInfo requests.
76 76
     */
......
190 190
     * <p> gets the dimension vector defined in this layer</p>
191 191
     * @return 
192 192
     */
193
    public Hashtable getDimensions() {        
193
    public ArrayList getDimensions() {        
194 194
        return dimensions;
195 195
    } 
196 196
    
......
198 198
     * <p>Sets the dimension vector defined for this layer</p>
199 199
     * @param v 
200 200
     */
201
    public void setDimensions(Hashtable v) {        
202
        dimensions = (Hashtable)v.clone(); 
201
    public void setDimensions(ArrayList v) {        
202
        dimensions = (ArrayList)v.clone(); 
203 203
    } 
204 204
    
205 205
    /**
......
207 207
     * @param dimension 
208 208
     */
209 209
    public void addDimension(org.gvsig.remoteClient.wms.WMSDimension dimension) {        
210
        dimensions.put(dimension.getName(), dimension);
210
        dimensions.add(dimension);
211 211
    } 
212 212
    
213 213
    /**
trunk/libraries/libRemoteServices/src/org/gvsig/remoteClient/wms/WMSDimension.java
120 120
    
121 121
    
122 122
    /**
123
     * @return Returns the dimensionExpression.
124
     */
125
    public String getDimensionExpression() {
126
        return dimensionExpression;
127
    }
128

  
129
    /**
123 130
     * @return Returns the nearestValues.
124 131
     */
125 132
    public boolean allowsNearestValues() {
......
138 145
        unitSymbol          = parser.getAttributeValue("", CapabilitiesTags.DIMENSION_UNIT_SYMBOL);
139 146
        dimDefaultValue     = parser.getAttributeValue("", CapabilitiesTags.DEFAULT);
140 147
        dimensionExpression = parser.nextText(); 
141
        System.out.println(dimensionExpression);
142 148
    }
143 149
    
144 150
    /**
branches/gvSIG_WMSv2/extensions/extWMS/src/com/iver/cit/gvsig/fmap/drivers/wms/FMapWMSDriver.java
48 48
import java.net.ProtocolException;
49 49
import java.net.URL;
50 50
import java.util.ArrayList;
51
import java.util.Enumeration;
52
import java.util.Hashtable;
53 51
import java.util.TreeMap;
54 52
import java.util.Vector;
55 53

  
......
57 55

  
58 56
import org.gvsig.remoteClient.exceptions.ServerErrorException;
59 57
import org.gvsig.remoteClient.wms.WMSClient;
58
import org.gvsig.remoteClient.wms.WMSDimension;
60 59
import org.gvsig.remoteClient.wms.WMSLayer;
61 60
import org.gvsig.remoteClient.wms.WMSStatus;
62 61
import org.gvsig.remoteClient.wms.WMSStyle;
......
218 217
            myNode.addStyle(style.getName(), style.getTitle(), style.getAbstract());
219 218
        }
220 219
        
220
        ArrayList dimensions = node.getDimensions();
221
        for (int i = 0; i < dimensions.size(); i++) {
222
            WMSDimension d = (WMSDimension) dimensions.get(i);
223
            myNode.addDimension(d.getName(), d.getUnits(), d.getUnitSymbol(), d.getDimensionExpression());
224
        }
225
        
221 226
        int children = node.getChildren().size();
222 227
        myNode.setChildren(new ArrayList());
223 228
        for (int i = 0; i < children; i++) {
branches/gvSIG_WMSv2/extensions/extWMS/src/com/iver/cit/gvsig/fmap/layers/IFMapWMSDimension.java
43 43
*
44 44
* $Id$
45 45
* $Log$
46
* Revision 1.1.2.2  2006-01-04 16:49:44  jaume
46
* Revision 1.1.2.3  2006-01-04 18:09:02  jaume
47
* Time dimension
48
*
49
* Revision 1.1.2.2  2006/01/04 16:49:44  jaume
47 50
* Time dimensios
48 51
*
49 52
* Revision 1.1.2.1  2006/01/03 18:08:40  jaume
......
69 72
     * @return String containing the name of this dimension.
70 73
     */
71 74
    public String getName();
75
    /**
76
     * Return the unit used by this dimension.
77
     * @return
78
     */
79
    public String getUnit();
80
    /**
81
     * Returns the unit symbol (i.e. 'm', 's', or 'l' for meters, seconds, or liters respectively) 
82
     * @return
83
     */
84
    public String getUnitSymbol();
72 85
    
86
    
73 87
    /**
74 88
     * This method returns the <b>lowest</b> value of this dimension if this dimension is
75 89
     * specified as an interval or as a set of values, or the value specified if it
branches/gvSIG_WMSv2/extensions/extWMS/src/com/iver/cit/gvsig/fmap/layers/WMSLayerNode.java
43 43
*
44 44
* $Id$
45 45
* $Log$
46
* Revision 1.1.2.6  2006-01-03 18:08:40  jaume
46
* Revision 1.1.2.7  2006-01-04 18:09:02  jaume
47
* Time dimension
48
*
49
* Revision 1.1.2.6  2006/01/03 18:08:40  jaume
47 50
* *** empty log message ***
48 51
*
49 52
* Revision 1.1.2.5  2006/01/02 18:08:01  jaume
......
238 241
    public void setAbstract(String _abstract) {
239 242
        lAbstract = _abstract;
240 243
    }
244

  
245
    /**
246
     * @param name
247
     * @param units
248
     * @param unitSymbol
249
     * @param dimensionExpression
250
     */
251
    public void addDimension(String name, String units, String unitSymbol, String dimensionExpression) {
252
        if (dimensions == null)
253
            dimensions = new ArrayList();
254
        if (name.toLowerCase().equals("time")){
255
            dimensions.add(new TimeDimension(units, unitSymbol, dimensionExpression));
256
        } else if (name.toLowerCase().equals("elevation")){
257
            //dimensions.add(new ElevationDimension(units, unitSymbol, dimensionExpression));
258
        } else {
259
            //dimensions.add(new FMapWMSDimension(name, units, unitSymbol, dimensionExpression));
260
        }
261
    }
262

  
241 263
    
242 264
    public class FMapWMSStyle {
243 265
        public String name;
......
261 283
            return clone;
262 284
        }
263 285
    }
286

  
264 287
    
265 288
}
branches/gvSIG_WMSv2/extensions/extWMS/src/com/iver/cit/gvsig/fmap/layers/TimeDimension.java
43 43
*
44 44
* $Id$
45 45
* $Log$
46
* Revision 1.1.2.2  2006-01-04 16:49:44  jaume
46
* Revision 1.1.2.3  2006-01-04 18:09:02  jaume
47
* Time dimension
48
*
49
* Revision 1.1.2.2  2006/01/04 16:49:44  jaume
47 50
* Time dimensios
48 51
*
49 52
* Revision 1.1.2.1  2006/01/03 18:08:40  jaume
......
56 59
 */
57 60
package com.iver.cit.gvsig.fmap.layers;
58 61

  
59
import java.util.Calendar;
60
import java.util.Date;
61 62
import java.util.GregorianCalendar;
62 63

  
63 64
/**
......
78 79
    static private final String seconds = "([0-5]"+digit+"((\\.|,)"+digit+digit+")?)";
79 80
    static private final String minutes = "([0-5]"+digit+")";
80 81
    static private final String hours = "(0"+digit+"|1"+digit+"|2[0-3])";
81
    static public final String time = hours+":"+minutes+"(:"+seconds+")?";
82
    static private final String time = hours+":"+minutes+"(:"+seconds+")?";
82 83
    static private final String days = "(0"+nonZeroDigit+"|1"+digit+"|2"+digit+"|30|31)";
83 84
    static private final String months = "(0"+nonZeroDigit+"|10|11|12)";
84 85
    static private final String year = "("+digit+digit+")";
......
113 114
    static private final String regexTimeDimension =
114 115
        "("+regexDateExtendedForBCE3+")/("+regexDateExtendedForBCE3+")/("+regexPeriod+")";
115 116
    
116
    private String name;
117
    private String name = "TIME";
118
    private String unit;
119
    private String unitSymbol;
117 120
    private String dimensionExpression;
118 121
    private Object minValue;
119 122
    private Object maxValue;
......
122 125
    private String period;
123 126
    private long step; // Distance between two points in milliseconds.
124 127
    
128
    /**
129
     * Creates a new instance of TimeDimension.
130
     * @param name, The name of this dimension -> TIME
131
     * @param units
132
     * @param unitSymbol
133
     * @param dimensionExpression
134
     */
135
    public TimeDimension(String _units, String _unitSymbol, String _dimensionExpression) {
136
        this.unit = _units;
137
        this.unitSymbol = _unitSymbol;
138
        this.dimensionExpression = _dimensionExpression;
139
    }
140

  
125 141
    public String getName() {
126 142
        return name;
127 143
    }
144
    
145
    public String getUnit() {
146
        return unit;
147
    }
128 148

  
149
    public String getUnitSymbol() {
150
        // TODO Auto-generated method stub
151
        return unitSymbol;
152
    }
153

  
154

  
129 155
    public String getLowLimit() {
130 156
        return dimensionExpression.split("/")[0];
131 157
    }
......
157 183
                int myHour;
158 184
                int myMinute;
159 185
                float mySecond;
186
                String[] s = myValue.split("-");
187
                myYear = (s[0].charAt(0)=='B')? -Integer.parseInt(s[0].substring(1, 5)) : Integer.parseInt(s[0].substring(0, 4));
188
                myMonth = (s.length>1) ? Integer.parseInt(s[1])-1 : 0; 
160 189
                if (myValue.matches(regexDateExtendedForBCE4)){
161
                    String[] s = myValue.split("-");
162
                    myYear = (s[0].charAt(0)=='B')? -Integer.parseInt(s[0].substring(1, 5)) : Integer.parseInt(s[0].substring(0, 4));
163
                    myMonth = (s.length>1) ? Integer.parseInt(s[1])-1 : 0; 
164 190
                    s = (s[2].indexOf('T')!=-1) ? s[2].split("T") : s[2].split(" ");
165 191
                    myDay = Integer.parseInt(s[0]);
192
                    
166 193
                    // Go with the time
167 194
                    s = s[1].split(":");
168 195
                    myHour = Integer.parseInt(s[0]);
169 196
                    myMinute = (s.length>1) ? Integer.parseInt(s[1]) : 0;
170 197
                    mySecond = (s.length>2) ? Float.parseFloat(s[2].substring(0, s[2].length()-2)) : 0;
171 198
                } else {
172
                    String[] s = myValue.split("-");
173
                    myYear = (s[0].charAt(0)=='B')? -Integer.parseInt(s[0].substring(1, 5)) : Integer.parseInt(s[0].substring(0, 4));
174
                    myMonth = (s.length>1) ? Integer.parseInt(s[1])-1 : 0; 
175 199
                    myDay = (s.length>2) ? Integer.parseInt(s[2]) : 1;
200
                    
176 201
                    myHour = 0;
177 202
                    myMinute = 0;
178 203
                    mySecond = 0;
......
211 236
     * @return
212 237
     */
213 238
    private String toString(GregorianCalendar cal) {
214
        int myYear        = cal.get(cal.YEAR);
215
        int myMonth       = cal.get(cal.MONTH) + 1;
216
        int myDay         = cal.get(cal.DAY_OF_MONTH);
217
        int myHour        = cal.get(cal.HOUR_OF_DAY);
218
        int myMinute      = cal.get(cal.MINUTE);
219
        int mySecond      = cal.get(cal.SECOND);
239
        int iYear   = cal.get(cal.YEAR);
240
        int iMonth  = cal.get(cal.MONTH) + 1;
241
        int iDay    = cal.get(cal.DAY_OF_MONTH);
242
        int iHour   = cal.get(cal.HOUR_OF_DAY);
243
        int iMinute = cal.get(cal.MINUTE);
244
        int iSecond = cal.get(cal.SECOND);
245
        String myYear;
246
        if (iYear<10)
247
            myYear = "200"+iYear;
248
        else if (iYear<100)
249
            myYear = "20"+iYear;
250
        else if (iYear<1000)
251
            myYear = "2"+iYear;
252
        else
253
            myYear = ""+iYear;
254
        String myMonth       = (iMonth<10) ? "0"+iMonth  : ""+iMonth;
255
        String myDay         = (iDay<10)   ? "0"+iDay    : ""+iDay;
256
        String myHour        = (iHour<10)  ? "0"+iHour   : ""+iHour;
257
        String myMinute      = (iMinute<10)? "0"+iMinute : ""+iMinute;
258
        String mySecond      = (iSecond<10)? "0"+iSecond : ""+iSecond;
220 259
        int myMilliSecond = cal.get(cal.MILLISECOND);
221 260
        
261
        
222 262
        String s = myYear+"-"+myMonth+"-"+myDay+"T"+myHour+":"+myMinute+":"+mySecond+"."+(myMilliSecond/10)+"Z";
223
        if (myYear<0)
263
        if (iYear<0)
224 264
            s = "B"+s;
225 265
        return s;
226 266
    }
......
281 321

  
282 322
//    public Object nextValueTo(String value) throws IllegalArgumentException {
283 323
//        if (isValidValue(value)){
284
//            // TODO
324
//            
285 325
//            return null;
286 326
//        } else throw new IllegalArgumentException(value);
287 327
//    }
288 328
//
289 329
//    public Object previousValueTo(String value) throws IllegalArgumentException {
290 330
//        if (isValidValue(value)){
291
//            // TODO
331
//            
292 332
//            return null;
293 333
//        } else throw new IllegalArgumentException(value);
294 334
//    }
......
308 348
        maxValue = (s.length>1) ? valueOf(s[1]) : valueOf(s[0]);
309 349
        period = (s.length>2 && s[2].matches(regexPeriod)) ? s[2] : null;
310 350
    }
351

  
311 352
}
branches/gvSIG_WMSv2/extensions/extWMS/src/com/iver/cit/gvsig/gui/panels/StyleTree.java
43 43
*
44 44
* $Id$
45 45
* $Log$
46
* Revision 1.1.2.1  2006-01-03 18:08:40  jaume
46
* Revision 1.1.2.2  2006-01-04 18:09:02  jaume
47
* Time dimension
48
*
49
* Revision 1.1.2.1  2006/01/03 18:08:40  jaume
47 50
* *** empty log message ***
48 51
*
49 52
* Revision 1.1.2.1  2006/01/02 18:08:01  jaume
......
228 231
        return selections.get(style.parent) == style;
229 232
    }
230 233
    
231
    /* (non-Javadoc)
232
     * @see javax.swing.tree.TreeModel#getChildCount(java.lang.Object)
233
     */
234 234
    public int getChildCount(Object parent) {
235 235
        int count=0;
236 236
        
......
241 241
        return count;
242 242
    }
243 243

  
244
    /* (non-Javadoc)
245
     * @see javax.swing.tree.TreeModel#isLeaf(java.lang.Object)
246
     */
247 244
    public boolean isLeaf(Object node) {
248 245
        return (node instanceof FMapWMSStyle);
249 246
        
250 247
    }
251 248

  
252
    /* (non-Javadoc)
253
     * @see javax.swing.tree.TreeModel#addTreeModelListener(javax.swing.event.TreeModelListener)
254
     */
255 249
    public void addTreeModelListener(TreeModelListener l) {
256 250
    }
257 251

  
258
    /* (non-Javadoc)
259
     * @see javax.swing.tree.TreeModel#removeTreeModelListener(javax.swing.event.TreeModelListener)
260
     */
261 252
    public void removeTreeModelListener(TreeModelListener l) {
262 253
    }
263 254

  
264
    /* (non-Javadoc)
265
     * @see javax.swing.tree.TreeModel#getChild(java.lang.Object, int)
266
     */
267 255
    public Object getChild(Object parent, int index) {
268 256
        if (parent instanceof FMapWMSStyle)
269 257
            return null;
......
273 261
        return ((WMSLayerNode) parent).getStyles().get(index);
274 262
    }
275 263

  
276
    /* (non-Javadoc)
277
     * @see javax.swing.tree.TreeModel#getIndexOfChild(java.lang.Object, java.lang.Object)
278
     */
279 264
    public int getIndexOfChild(Object parent, Object child) {
280 265
        if (parent instanceof FMapWMSStyle){ 
281 266
            return -1;   
......
298 283
        return -1;
299 284
    }
300 285

  
301
    /* (non-Javadoc)
302
     * @see javax.swing.tree.TreeModel#valueForPathChanged(javax.swing.tree.TreePath, java.lang.Object)
303
     */
304 286
    public void valueForPathChanged(TreePath path, Object newValue) {
305 287
    }
306 288

  
......
315 297
    }
316 298

  
317 299

  
318
    /* (non-Javadoc)
319
     * @see javax.swing.tree.TreeModel#getRoot()
320
     */
321 300
    public Object getRoot() {
322 301
        if (root == null) {
323 302
            root = new WMSLayerNode();
branches/gvSIG_WMSv2/extensions/extWMS/src/com/iver/cit/gvsig/gui/panels/DimensionTree.java
43 43
*
44 44
* $Id$
45 45
* $Log$
46
* Revision 1.1.2.1  2006-01-03 18:08:40  jaume
46
* Revision 1.1.2.2  2006-01-04 18:09:02  jaume
47
* Time dimension
48
*
49
* Revision 1.1.2.1  2006/01/03 18:08:40  jaume
47 50
* *** empty log message ***
48 51
*
49 52
*
......
78 81

  
79 82
class DimensionTreeModel implements TreeModel {
80 83
    WMSLayerNode root;
81
    /* (non-Javadoc)
82
     * @see javax.swing.tree.TreeModel#getRoot()
83
     */
84

  
84 85
    public Object getRoot() {
85 86
        return root;
86 87
    }
87 88

  
88
    /* (non-Javadoc)
89
     * @see javax.swing.tree.TreeModel#getChildCount(java.lang.Object)
90
     */
91 89
    public int getChildCount(Object parent) {
92 90
        int count=0;
93 91
        
......
98 96
        return count;
99 97
     }
100 98

  
101
    /* (non-Javadoc)
102
     * @see javax.swing.tree.TreeModel#isLeaf(java.lang.Object)
103
     */
104 99
    public boolean isLeaf(Object node) {
105 100
        return (node instanceof IFMapWMSDimension);
106 101
    }
107 102

  
108
    /* (non-Javadoc)
109
     * @see javax.swing.tree.TreeModel#addTreeModelListener(javax.swing.event.TreeModelListener)
110
     */
111 103
    public void addTreeModelListener(TreeModelListener l) {
112 104
    }
113 105

  
114
    /* (non-Javadoc)
115
     * @see javax.swing.tree.TreeModel#removeTreeModelListener(javax.swing.event.TreeModelListener)
116
     */
117 106
    public void removeTreeModelListener(TreeModelListener l) {
118 107
    }
119 108

  
120
    /* (non-Javadoc)
121
     * @see javax.swing.tree.TreeModel#getChild(java.lang.Object, int)
122
     */
123 109
    public Object getChild(Object parent, int index) {
124 110
        if (parent instanceof IFMapWMSDimension)
125 111
            return null;
......
129 115
        return ((WMSLayerNode) parent).getDimensions().get(index);
130 116
    }
131 117

  
132
    /* (non-Javadoc)
133
     * @see javax.swing.tree.TreeModel#getIndexOfChild(java.lang.Object, java.lang.Object)
134
     */
135 118
    public int getIndexOfChild(Object parent, Object child) {
136 119
        if (parent instanceof IFMapWMSDimension){ 
137 120
            return -1;   
......
154 137
        return -1;
155 138
    }
156 139

  
157
    /* (non-Javadoc)
158
     * @see javax.swing.tree.TreeModel#valueForPathChanged(javax.swing.tree.TreePath, java.lang.Object)
159
     */
160 140
    public void valueForPathChanged(TreePath path, Object newValue) {
161 141
        
162 142
    }
branches/gvSIG_WMSv2/extensions/extWMS/src/com/iver/cit/gvsig/gui/wizards/WMSWizard.java
595 595
	}
596 596

  
597 597

  
598
	/* (non-Javadoc)
599
	 * @see com.iver.cit.gvsig.gui.WizardPanel#initWizard()
600
	 */
601 598
	public void initWizard() {
602 599
		dataSource = new WMSWizardData();
603 600
	}
604 601

  
605
	/* (non-Javadoc)
606
	 * @see com.iver.cit.gvsig.gui.WizardPanel#execute()
607
	 */
608 602
	public void execute() {
603
       
609 604
	}
610 605

  
611 606
	/**
......
617 612
		return wmsParamsPanel.getLayersQuery();
618 613
	}
619 614
	
620
    /* (non-Javadoc)
621
     * @see com.iver.cit.gvsig.gui.WizardPanel#getLayer()
622
     */
623
    public FLayer getLayer() {
615
    public FLayer _getLayer() {
624 616
        View v = (View) PluginServices.getMDIManager().getActiveView();
625 617
        if (true) {
626 618
            FLayers l = new FLayers(v.getMapControl().getMapContext(), null);
......
644 636
            return _getLayer();
645 637
        
646 638
    }
647
    /* (non-Javadoc)
648
     * @see com.iver.cit.gvsig.gui.WizardPanel#getLayer()
649
     */
650
    public FLayer _getLayer() {
639

  
640
    public FLayer getLayer() {
651 641
        FLyrWMS layer = new FLyrWMS();
652 642
        layer.setHost(getHost());
653 643
        layer.setFullExtent(getLayersRectangle());
branches/gvSIG_WMSv2/extensions/extWMS/src/com/iver/cit/gvsig/gui/wizards/LayerTreeModel.java
59 59
		this.root = root;
60 60
	}
61 61

  
62
	/* (non-Javadoc)
63
	 * @see javax.swing.tree.TreeModel#getRoot()
64
	 */
65 62
	public Object getRoot() {
66 63
		return root;
67 64
	}
68 65

  
69
	/* (non-Javadoc)
70
	 * @see javax.swing.tree.TreeModel#getChildCount(java.lang.Object)
71
	 */
72 66
	public int getChildCount(Object parent) {
73 67
		return ((WMSLayerNode)parent).getChildren().size();
74 68
	}
75 69

  
76
	/* (non-Javadoc)
77
	 * @see javax.swing.tree.TreeModel#isLeaf(java.lang.Object)
78
	 */
79
	public boolean isLeaf(Object node) {
70
    public boolean isLeaf(Object node) {
80 71
		return ((WMSLayerNode)node).getChildren().size() == 0;
81 72
	}
82 73

  
83
	/* (non-Javadoc)
84
	 * @see javax.swing.tree.TreeModel#addTreeModelListener(javax.swing.event.TreeModelListener)
85
	 */
86 74
	public void addTreeModelListener(TreeModelListener l) {
87 75
	}
88 76

  
89
	/* (non-Javadoc)
90
	 * @see javax.swing.tree.TreeModel#removeTreeModelListener(javax.swing.event.TreeModelListener)
91
	 */
92 77
	public void removeTreeModelListener(TreeModelListener l) {
93 78
	}
94 79

  
95
	/* (non-Javadoc)
96
	 * @see javax.swing.tree.TreeModel#getChild(java.lang.Object, int)
97
	 */
98 80
	public Object getChild(Object parent, int index) {
99 81
		return (WMSLayerNode)((WMSLayerNode)parent).getChildren().get(index);
100 82
	}
101 83

  
102
	/* (non-Javadoc)
103
	 * @see javax.swing.tree.TreeModel#getIndexOfChild(java.lang.Object, java.lang.Object)
104
	 */
105 84
	public int getIndexOfChild(Object parent, Object child) {
106 85
        WMSLayerNode pare = (WMSLayerNode) parent;
107 86
		for (int i = 0; i < pare.getChildren().size(); i++)
......
109 88
		return -1;
110 89
	}
111 90

  
112
	/* (non-Javadoc)
113
	 * @see javax.swing.tree.TreeModel#valueForPathChanged(javax.swing.tree.TreePath, java.lang.Object)
114
	 */
115 91
	public void valueForPathChanged(TreePath path, Object newValue) {
116 92
	}
117 93

  

Also available in: Unified diff