Statistics
| Revision:

gvsig-raster / org.gvsig.raster / trunk / org.gvsig.raster / org.gvsig.raster.io / org.gvsig.raster.io.base / src / main / java / org / gvsig / fmap / dal / coverage / dataset / io / param / WMSDataParametersImpl.java @ 234

History | View | Annotate | Download (17.3 KB)

1
/* gvSIG. Geographic Information System of the Valencian Government
2
*
3
* Copyright (C) 2007-2008 Infrastructures and Transports Department
4
* of the Valencian Government (CIT)
5
*
6
* This program is free software; you can redistribute it and/or
7
* modify it under the terms of the GNU General Public License
8
* as published by the Free Software Foundation; either version 2
9
* of the License, or (at your option) any later version.
10
*
11
* This program is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
* GNU General Public License for more details.
15
*
16
* You should have received a copy of the GNU General Public License
17
* along with this program; if not, write to the Free Software
18
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
* MA  02110-1301, USA.
20
*
21
*/
22

    
23
package org.gvsig.fmap.dal.coverage.dataset.io.param;
24

    
25
import java.awt.Dimension;
26
import java.awt.geom.Rectangle2D;
27
import java.util.Hashtable;
28
import java.util.Map;
29
import java.util.Vector;
30

    
31
import org.cresques.cts.IProjection;
32
import org.gvsig.compat.net.ICancellable;
33
import org.gvsig.fmap.crs.CRSFactory;
34
import org.gvsig.fmap.dal.DataTypes;
35
import org.gvsig.fmap.dal.coverage.dataset.io.server.WMSServerExplorerImpl;
36
import org.gvsig.fmap.dal.coverage.dataset.io.wms.WMSProvider;
37
import org.gvsig.fmap.dal.coverage.datastruct.RemoteStyle;
38
import org.gvsig.fmap.dal.coverage.store.parameter.WMSDataParameters;
39
import org.gvsig.raster.impl.store.AbstractRasterDataParameters;
40
import org.gvsig.tools.ToolsLocator;
41
import org.gvsig.tools.dynobject.DelegatedDynObject;
42
import org.gvsig.tools.dynobject.DynClass;
43
import org.gvsig.tools.dynobject.DynField;
44
import org.gvsig.tools.dynobject.DynObjectManager;
45

    
46
/**
47
 * Parameters for the WMS provider
48
 * @author Nacho Brodin (nachobrodin@gmail.com)
49
 */
50
public class WMSDataParametersImpl extends AbstractRasterDataParameters implements WMSDataParameters {
51
        private static final String      FIELD_SRS             = "srs";
52
        private static final String      FIELD_FORMAT          = "format";
53
        private static final String      FIELD_LAYERQUERY      = "layer_query";
54
        private static final String      FIELD_HOST            = "host";
55
        private static final String      FIELD_NAME            = "name";
56
        private static final String      FIELD_SRSSTR          = "srsstr";
57
        private static final String      FIELD_TRANSPARENCY    = "transparency";
58
        private static final String      FIELD_INFOLAYERQUERY  = "infolayerquery";
59
        private static final String      FIELD_QUERYABLE       = "queryable";
60
        private static final String      FIELD_OVERRIDE        = "override";
61
        private static final String      FIELD_STYLES          = "styles";
62
        private static final String      FIELD_DIMENSIONS      = "dimensions";
63
        private static final String      FIELD_ONLINERESOURC   = "onlineresources";
64
        private static final String      FIELD_FIXEDSIZE       = "fixedsize";
65
        private static final String      FIELD_CANCEL          = "cancellable";
66
        private static final String      FIELD_EXTENT          = "extent";
67
        private static final String      FIELD_WIDTH           = "width";
68
        private static final String      FIELD_HEIGHT          = "height";
69
        
70
        private DelegatedDynObject       delegatedDynObject    = null;
71
        protected static DynClass        DYNCLASS              = null;
72
        
73
        public WMSDataParametersImpl() {
74
                super();
75
                initialize();
76
        }
77
        
78
        protected void initialize() {
79
                this.delegatedDynObject = (DelegatedDynObject) ToolsLocator
80
                                .getDynObjectManager().createDynObject(
81
                                                DYNCLASS);
82
        }
83
        
84
        @SuppressWarnings("deprecation")
85
        public static void registerDynClass() {
86
                DynObjectManager dynman = ToolsLocator.getDynObjectManager();
87
                DynClass dynClass;
88
                DynField field;
89
                
90
                if(dynman == null)
91
                        return;
92
                
93
                if (DYNCLASS == null) {
94
                        dynClass = AbstractRasterDataParameters.registerDynClass(WMSDataParameters.DYNCLASS_NAME);
95

    
96
                        field = dynClass.addDynField(FIELD_SRS);
97
                        field.setTheTypeOfAvailableValues(DynField.ANY);
98
                        field.setDescription("SRS");
99
                        field.setType(DataTypes.CRS);
100
                        field.setMandatory(false);
101

    
102
                        field = dynClass.addDynField(FIELD_FORMAT);
103
                        field.setTheTypeOfAvailableValues(DynField.ANY);
104
                        field.setDescription("Format");
105
                        field.setType(DataTypes.STRING);
106
                        field.setMandatory(true);
107
                        
108
                        field = dynClass.addDynField(FIELD_LAYERQUERY);
109
                        field.setTheTypeOfAvailableValues(DynField.ANY);
110
                        field.setDescription("Layer Query");
111
                        field.setType(DataTypes.STRING);
112
                        field.setMandatory(false);
113
                        
114
                        field = dynClass.addDynField(FIELD_HOST);
115
                        field.setTheTypeOfAvailableValues(DynField.ANY);
116
                        field.setDescription("Host");
117
                        field.setType(DataTypes.STRING);
118
                        field.setMandatory(true);
119
                        
120
                        field = dynClass.addDynField(FIELD_NAME);
121
                        field.setTheTypeOfAvailableValues(DynField.ANY);
122
                        field.setDescription("Name");
123
                        field.setType(DataTypes.STRING);
124
                        field.setMandatory(true);
125
                        
126
                        field = dynClass.addDynField(FIELD_SRSSTR);
127
                        field.setTheTypeOfAvailableValues(DynField.ANY);
128
                        field.setDescription("String that represents the SRS");
129
                        field.setType(DataTypes.STRING);
130
                        field.setMandatory(true);
131
                        
132
                        field = dynClass.addDynField(FIELD_TRANSPARENCY);
133
                        field.setTheTypeOfAvailableValues(DynField.ANY);
134
                        field.setDescription("Transparency");
135
                        field.setType(DataTypes.BOOLEAN);
136
                        field.setMandatory(true);
137
                        
138
                        field = dynClass.addDynField(FIELD_INFOLAYERQUERY);
139
                        field.setTheTypeOfAvailableValues(DynField.ANY);
140
                        field.setDescription("InfoLayerQuery");
141
                        field.setType(DataTypes.STRING);
142
                        field.setMandatory(false);
143
                        
144
                        field = dynClass.addDynField(FIELD_QUERYABLE);
145
                        field.setTheTypeOfAvailableValues(DynField.ANY);
146
                        field.setDescription("Queryable");
147
                        field.setType(DataTypes.BOOLEAN);
148
                        field.setMandatory(false);
149
                        
150
                        field = dynClass.addDynField(FIELD_OVERRIDE);
151
                        field.setTheTypeOfAvailableValues(DynField.ANY);
152
                        field.setDescription("Override a host capabilities");
153
                        field.setType(DataTypes.BOOLEAN);
154
                        field.setMandatory(false);
155
                        
156
                        field = dynClass.addDynField(FIELD_STYLES);
157
                        field.setTheTypeOfAvailableValues(DynField.ANY);
158
                        field.setDescription("Styles");
159
                        field.setType(DataTypes.OBJECT);
160
                        field.setMandatory(false);
161
                        
162
                        field = dynClass.addDynField(FIELD_DIMENSIONS);
163
                        field.setTheTypeOfAvailableValues(DynField.ANY);
164
                        field.setDescription("Dimensions");
165
                        field.setType(DataTypes.OBJECT);
166
                        field.setMandatory(false);
167
                        
168
                        field = dynClass.addDynField(FIELD_ONLINERESOURC);
169
                        field.setTheTypeOfAvailableValues(DynField.ANY);
170
                        field.setDescription("online resources");
171
                        field.setType(DataTypes.MAP);
172
                        field.setMandatory(false);
173
                        
174
                        field = dynClass.addDynField(FIELD_FIXEDSIZE);
175
                        field.setTheTypeOfAvailableValues(DynField.ANY);
176
                        field.setDescription("Fixed size");
177
                        field.setType(DataTypes.OBJECT);
178
                        field.setMandatory(false);
179
                        
180
                        field = dynClass.addDynField(FIELD_CANCEL);
181
                        field.setTheTypeOfAvailableValues(DynField.ANY);
182
                        field.setDescription("Cancellable");
183
                        field.setType(DataTypes.OBJECT);
184
                        field.setMandatory(false);
185
                        
186
                        field = dynClass.addDynField(FIELD_EXTENT);
187
                        field.setTheTypeOfAvailableValues(DynField.ANY);
188
                        field.setDescription("Extent");
189
                        field.setType(DataTypes.OBJECT);
190
                        field.setMandatory(false);
191
                        
192
                        field = dynClass.addDynField(FIELD_WIDTH);
193
                        field.setTheTypeOfAvailableValues(DynField.ANY);
194
                        field.setDescription("Width");
195
                        field.setType(DataTypes.INT);
196
                        field.setMandatory(false);
197
                        
198
                        field = dynClass.addDynField(FIELD_HEIGHT);
199
                        field.setTheTypeOfAvailableValues(DynField.ANY);
200
                        field.setDescription("Height");
201
                        field.setType(DataTypes.INT);
202
                        field.setMandatory(false);
203
                        
204
                        DYNCLASS = dynClass;
205
                }
206
        }
207
        
208
        /*
209
         * (non-Javadoc)
210
         * @see org.gvsig.fmap.dal.coverage.store.parameter.WMSStoreParameters#getFormat()
211
         */
212
        public String getFormat() {
213
                return (String) this.getDynValue(FIELD_FORMAT);
214
        }
215

    
216
        /*
217
         * (non-Javadoc)
218
         * @see org.gvsig.fmap.dal.coverage.store.parameter.WMSStoreParameters#setFormat(java.lang.String)
219
         */
220
        public void setFormat(String format) {
221
                this.setDynValue(FIELD_FORMAT, format);
222
        }
223
        
224
        /*
225
         * (non-Javadoc)
226
         * @see org.gvsig.fmap.dal.coverage.store.parameter.WMSStoreParameters#getLayerQuery()
227
         */
228
        public String getLayerQuery() {
229
                return (String) this.getDynValue(FIELD_LAYERQUERY);
230
        }
231

    
232
        /*
233
         * (non-Javadoc)
234
         * @see org.gvsig.fmap.dal.coverage.store.parameter.WMSStoreParameters#setLayerQuery(java.lang.String)
235
         */
236
        public void setLayerQuery(String layerQuery) {
237
                this.setDynValue(FIELD_LAYERQUERY, layerQuery);
238
        }
239
        
240
        /*
241
         * (non-Javadoc)
242
         * @see org.gvsig.fmap.dal.coverage.store.parameter.WMSStoreParameters#getHost()
243
         */
244
        public String getHost() {
245
                return (String) this.getDynValue(FIELD_HOST);
246
        }
247

    
248
        /*
249
         * (non-Javadoc)
250
         * @see org.gvsig.fmap.dal.coverage.store.parameter.WMSStoreParameters#setHost(java.lang.String)
251
         */
252
        public void setHost(String host) {
253
                this.setDynValue(FIELD_HOST, host);
254
        }
255
        
256
        /*
257
         * (non-Javadoc)
258
         * @see org.gvsig.fmap.dal.coverage.store.parameter.WMSStoreParameters#getSRSCode()
259
         */
260
        public String getSRSCode() {
261
                return (String) this.getDynValue(FIELD_SRSSTR);
262
        }
263
        
264
        /*
265
         * (non-Javadoc)
266
         * @see org.gvsig.fmap.dal.coverage.store.parameter.WMSStoreParameters#setSRS(java.lang.String)
267
         */
268
        public void setSRS(String m_srs) {
269
                this.setDynValue(FIELD_SRSSTR, m_srs);
270
                setSRS(CRSFactory.getCRS(m_srs));
271
        }
272
        
273
        public void setSRS(IProjection srs) {
274
                setDynValue(FIELD_SRS, srs);
275
        }
276

    
277
        public IProjection getSRS() {
278
                if (this.getSRSID() == null) {
279
                        return null;
280
                }
281
                return (IProjection) getDynValue(FIELD_SRS);
282
        }
283
        
284
        public String getSRSID() {
285
                IProjection srs = (IProjection) getDynValue(FIELD_SRS);
286
                if (srs == null) {
287
                        return null;
288
                }
289
                return srs.getAbrev();
290
        }
291

    
292
        public void setSRSID(String srsid) {
293
                if (srsid == null) {
294
                        setDynValue(FIELD_SRS, null);
295
                } else {
296
                        setDynValue(FIELD_SRS, CRSFactory.getCRS(srsid));
297
                }
298
        }
299
        
300
        /*
301
         * (non-Javadoc)
302
         * @see org.gvsig.fmap.dal.coverage.store.parameter.WMSStoreParameters#getName()
303
         */
304
        public String getName() {
305
                return (String) this.getDynValue(FIELD_NAME);
306
        }
307

    
308
        /*
309
         * (non-Javadoc)
310
         * @see org.gvsig.fmap.dal.coverage.store.parameter.WMSStoreParameters#setName(java.lang.String)
311
         */
312
        public void setName(String name) {
313
                this.setDynValue(FIELD_NAME, name);
314
        }
315
        
316
        /*
317
         * (non-Javadoc)
318
         * @see org.gvsig.fmap.dal.coverage.store.parameter.WMSStoreParameters#isWmsTransparent()
319
         */
320
        public boolean isWmsTransparent() {
321
                Boolean b = (Boolean)getDynValue(FIELD_TRANSPARENCY);
322
                if(b != null)
323
                        return ((Boolean)b).booleanValue();
324
                return false;
325
        }
326

    
327
        /*
328
         * (non-Javadoc)
329
         * @see org.gvsig.fmap.dal.coverage.store.parameter.WMSStoreParameters#setWmsTransparency(boolean)
330
         */
331
        public void setWmsTransparency(boolean wmsTransparency) {
332
                this.setDynValue(FIELD_TRANSPARENCY, new Boolean(wmsTransparency));
333
        }
334
        
335
        /*
336
         * (non-Javadoc)
337
         * @see org.gvsig.fmap.dal.coverage.store.parameter.WMSStoreParameters#getInfoLayerQuery()
338
         */
339
        public String getInfoLayerQuery() {
340
                return (String) this.getDynValue(FIELD_INFOLAYERQUERY);
341
        }
342

    
343
        /*
344
         * (non-Javadoc)
345
         * @see org.gvsig.fmap.dal.coverage.store.parameter.WMSStoreParameters#setInfoLayerQuery(java.lang.String)
346
         */
347
        public void setInfoLayerQuery(String infoLayerQuery) {
348
                this.setDynValue(FIELD_INFOLAYERQUERY, infoLayerQuery);
349
        }
350
        
351

    
352
        /*
353
         * (non-Javadoc)
354
         * @see org.gvsig.fmap.dal.coverage.store.parameter.WMSStoreParameters#setQueryable(boolean)
355
         */
356
        public void setQueryable(boolean b) {
357
                this.setDynValue(FIELD_QUERYABLE, new Boolean(b));
358
        }
359
        
360
        public void setCancellable(ICancellable cancel) {
361
                this.setDynValue(FIELD_CANCEL, cancel);
362
        }
363
        
364
        public ICancellable getCancellable() {
365
                return (ICancellable) this.getDynValue(FIELD_CANCEL);
366
        }
367
        
368
        /*
369
         * (non-Javadoc)
370
         * @see org.gvsig.fmap.dal.coverage.store.parameter.WMSStoreParameters#isQueryable()
371
         */
372
        public boolean isQueryable() {
373
                Boolean b = (Boolean)getDynValue(FIELD_QUERYABLE);
374
                if(b != null)
375
                        return ((Boolean)b).booleanValue();
376
                return false;
377
        }
378
        
379
        /*
380
         * (non-Javadoc)
381
         * @see org.gvsig.fmap.dal.coverage.store.RasterStoreParameters#isOverridingHost()
382
         */
383
        public boolean isOverridingHost() {
384
                Boolean b = (Boolean)getDynValue(FIELD_OVERRIDE);
385
                if(b != null)
386
                        return ((Boolean)b).booleanValue();
387
                return false;
388
        }
389
        
390
        /*
391
         * (non-Javadoc)
392
         * @see org.gvsig.fmap.dal.coverage.store.RasterStoreParameters#setOverrideHost(boolean)
393
         */
394
        public void setOverrideHost(boolean over) {
395
                this.setDynValue(FIELD_OVERRIDE, new Boolean(over));;
396
        }
397
        
398
        /*
399
         * (non-Javadoc)
400
         * @see org.gvsig.fmap.dal.coverage.store.parameter.WMSStoreParameters#setStyles(java.util.Vector)
401
         */
402
        public void setStyles(Vector<RemoteStyle> styles) {
403
                this.setDynValue(FIELD_STYLES, styles);
404
        }
405
        
406
        /*
407
         * (non-Javadoc)
408
         * @see org.gvsig.fmap.dal.coverage.store.parameter.WMSStoreParameters#getStyles()
409
         */
410
        @SuppressWarnings("unchecked")
411
        public Vector<RemoteStyle> getStyles() {
412
                return (Vector<RemoteStyle>) this.getDynValue(FIELD_STYLES);
413
        }
414
        
415
        /*
416
         * (non-Javadoc)
417
         * @see org.gvsig.fmap.dal.coverage.store.parameter.WMSStoreParameters#setDimensions(java.util.Vector)
418
         */
419
        public void setDimensions(Vector<String> dimensions) {
420
                this.setDynValue(FIELD_DIMENSIONS, dimensions);
421
        }
422
        
423
        /*
424
         * (non-Javadoc)
425
         * @see org.gvsig.fmap.dal.coverage.store.parameter.WMSStoreParameters#getDimensions()
426
         */
427
        @SuppressWarnings("unchecked")
428
        public Vector<String> getDimensions() {
429
                return (Vector<String>) this.getDynValue(FIELD_DIMENSIONS);
430
        }
431

    
432
        /*
433
         * (non-Javadoc)
434
         * @see org.gvsig.fmap.dal.coverage.store.parameter.WMSStoreParameters#setOnlineResources(java.util.Hashtable)
435
         */
436
        public void setOnlineResources(Hashtable<String, String> onlineResources) {
437
                this.setDynValue(FIELD_ONLINERESOURC, onlineResources);
438
        }
439
        
440
        /*
441
         * (non-Javadoc)
442
         * @see org.gvsig.fmap.dal.coverage.store.parameter.WMSStoreParameters#getOnlineResource(java.lang.String)
443
         */
444
        public String getOnlineResource(String operation) {
445
                return (String) getOnlineResource().get(operation);
446
        }
447
        
448
        /*
449
         * (non-Javadoc)
450
         * @see org.gvsig.fmap.dal.coverage.store.parameter.WMSStoreParameters#getOnlineResource()
451
         */
452
        @SuppressWarnings("unchecked")
453
        public Map<String,String> getOnlineResource() {
454
                return (Map<String,String>) this.getDynValue(FIELD_ONLINERESOURC);
455
        }
456
        
457
        /*
458
         * (non-Javadoc)
459
         * @see org.gvsig.fmap.dal.coverage.store.parameter.WMSStoreParameters#setFixedSize(java.awt.Dimension)
460
         */
461
        public void setFixedSize(Dimension sz) {
462
                this.setDynValue(FIELD_FIXEDSIZE, sz);
463
        }
464

    
465
        /*
466
         * (non-Javadoc)
467
         * @see org.gvsig.fmap.dal.coverage.store.parameter.WMSStoreParameters#isSizeFixed()
468
         */
469
        public boolean isSizeFixed() {
470
                return (getDynValue(FIELD_FIXEDSIZE) != null);
471
        }
472
        
473
        /*
474
         * (non-Javadoc)
475
         * @see org.gvsig.fmap.dal.coverage.store.parameter.WMSStoreParameters#getFixedSize()
476
         */
477
        public Dimension getFixedSize() {
478
                return (Dimension) this.getDynValue(FIELD_FIXEDSIZE);
479
        }
480
        
481
        /*
482
         * (non-Javadoc)
483
         * @see org.gvsig.fmap.dal.coverage.store.parameter.WMSStoreParameters#setExtent(java.awt.geom.Rectangle2D)
484
         */
485
        public void setExtent(Rectangle2D bBox) {
486
                this.setDynValue(FIELD_EXTENT, bBox);
487
        }
488
        
489
        /*
490
         * (non-Javadoc)
491
         * @see org.gvsig.fmap.dal.coverage.store.parameter.WMSStoreParameters#setWidth(int)
492
         */
493
        public void setWidth(int w) {
494
                this.setDynValue(FIELD_WIDTH, new Integer(w));
495
        }
496
        
497
        /*
498
         * (non-Javadoc)
499
         * @see org.gvsig.fmap.dal.coverage.store.parameter.WMSStoreParameters#setHeight(int)
500
         */
501
        public void setHeight(int h) {
502
                this.setDynValue(FIELD_HEIGHT, new Integer(h));
503
        }
504
        
505
        /**
506
         * Gets the bounding box
507
         * @return
508
         */
509
        public Rectangle2D getExtent() {
510
                return (Rectangle2D)getDynValue(FIELD_EXTENT);
511
        }
512
        
513
        /**
514
         * Gets the width
515
         * @return
516
         */
517
        public int getWidth() {
518
                Integer b = (Integer)getDynValue(FIELD_WIDTH);
519
                if(b != null)
520
                        return ((Integer)b).intValue();
521
                return 0;
522
        }
523
        
524
        /**
525
         * Gets the height
526
         * @return
527
         */
528
        public int getHeight() {
529
                Integer b = (Integer)getDynValue(FIELD_HEIGHT);
530
                if(b != null)
531
                        return ((Integer)b).intValue();
532
                return 0;
533
        }
534
        
535
        /*public void setConnector(Object connector) {
536
                this.setDynValue(FIELD_CONNECTOR, connector);
537
        }
538
        
539
        public Object getConnector() {
540
                return (Object)getDynValue(FIELD_CONNECTOR);
541
        }*/
542
        
543
        //**********************************************
544
        
545
        /*
546
         * (non-Javadoc)
547
         * @see org.gvsig.fmap.dal.DataStoreParameters#getDataStoreName()
548
         */
549
        public String getDataStoreName() {
550
                return WMSProvider.NAME;
551
        }
552
        
553
        /*
554
         * (non-Javadoc)
555
         * @see org.gvsig.fmap.dal.DataStoreParameters#getDescription()
556
         */
557
        public String getDescription() {
558
                return WMSProvider.DESCRIPTION;
559
        }
560

    
561
        public String getExplorerName() {
562
                return WMSServerExplorerImpl.NAME;
563
        }
564
        
565
        public boolean isValid() {
566
                return (this.getHost() != null);
567
        }
568
        
569
        protected DelegatedDynObject getDelegatedDynObject() {
570
                return delegatedDynObject;
571
        }
572
        
573
        /*
574
         * (non-Javadoc)
575
         * @see java.lang.Object#clone()
576
         */
577
        @SuppressWarnings("unchecked")
578
        public WMSDataParameters clone() {
579
                WMSDataParametersImpl p = new WMSDataParametersImpl();
580
                p.setFormat(getFormat());
581
                p.setFixedSize(getFixedSize());
582
                p.setHeight(getHeight());
583
                p.setWidth(getWidth());
584
                p.setExtent(getExtent());
585
                p.setHost(getHost());
586
                p.setInfoLayerQuery(getInfoLayerQuery());
587
                p.setLayerQuery(getLayerQuery());
588
                p.setName(getName());
589
                p.setOnlineResources((Hashtable<String, String>)this.getDynValue(FIELD_ONLINERESOURC));
590
                p.setOverrideHost(isOverridingHost());
591
                p.setQueryable(isQueryable());
592
                p.setSRS(getSRS());
593
                p.setSRS(getSRSCode());
594
                p.setStyles(getStyles());
595
                p.setWmsTransparency(isWmsTransparent());
596
                p.setDimensions(getDimensions());
597
                p.setHost(getHost());
598
                p.setCancellable(getCancellable());
599
                return p;
600
        }
601
        
602
}