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 / WMSStoreParametersImpl.java @ 220

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.WMSStoreParameters;
39
import org.gvsig.fmap.dal.spi.AbstractDataParameters;
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 WMSStoreParametersImpl extends AbstractDataParameters implements WMSStoreParameters {
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 WMSStoreParametersImpl() {
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 = dynman.add(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
        /*
210
         * (non-Javadoc)
211
         * @see org.gvsig.fmap.dal.coverage.store.parameter.WMSStoreParameters#getFormat()
212
         */
213
        public String getFormat() {
214
                return (String) this.getDynValue(FIELD_FORMAT);
215
        }
216

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

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

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

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

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

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

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

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

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

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

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

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