Statistics
| Revision:

gvsig-raster / org.gvsig.raster.wms / trunk / org.gvsig.raster.wms / org.gvsig.raster.wms.io / src / main / java / org / gvsig / raster / wms / io / WMSDataParametersImpl.java @ 1430

History | View | Annotate | Download (21.5 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.raster.wms.io;
24

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

    
32
import org.cresques.cts.IProjection;
33
import org.gvsig.compat.net.ICancellable;
34
import org.gvsig.fmap.crs.CRSFactory;
35
import org.gvsig.raster.impl.store.AbstractRasterDataParameters;
36
import org.gvsig.tools.ToolsLocator;
37
import org.gvsig.tools.dataTypes.DataTypes;
38
import org.gvsig.tools.dynobject.DelegatedDynObject;
39
import org.gvsig.tools.dynobject.DynClass;
40
import org.gvsig.tools.dynobject.DynField;
41
import org.gvsig.tools.dynobject.DynObjectManager;
42
import org.gvsig.tools.dynobject.DynStruct;
43
import org.gvsig.tools.persistence.PersistenceManager;
44
import org.gvsig.tools.persistence.PersistentState;
45
import org.gvsig.tools.persistence.exception.PersistenceException;
46

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

    
99
                        field = dynClass.addDynField(FIELD_SRS);
100
                        field.setTheTypeOfAvailableValues(DynField.ANY);
101
                        field.setDescription("SRS");
102
                        field.setType(org.cresques.DataTypes.CRS);
103
                        field.setMandatory(false);
104

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

    
207
                        field = dynClass.addDynField(FIELD_DELETECACHE);
208
                        field.setTheTypeOfAvailableValues(DynField.ANY);
209
                        field.setDescription("Flag to delete cache the next request");
210
                        field.setType(DataTypes.BOOLEAN);
211
                        field.setMandatory(false);
212
                        
213
                        DYNCLASS = dynClass;
214
                }
215
        }
216
        
217
        /**
218
         * Gets the format
219
         * @return
220
         */
221
        public String getFormat() {
222
                return (String) this.getDynValue(FIELD_FORMAT);
223
        }
224

    
225
        /**
226
         * Sets the format
227
         * @param format
228
         */
229
        public void setFormat(String format) {
230
                this.setDynValue(FIELD_FORMAT, format);
231
        }
232
        
233
        /**
234
         * Gets the info by point format
235
         * @return
236
         */
237
        public String getInfoFormat() {
238
                String o = (String) this.getDynValue(FIELD_INFOFORMAT);
239
                if(o == null)
240
                        return "text/plain";
241
                return o;
242
        }
243

    
244
        /**
245
         * Sets the info by point format
246
         */
247
        public void setInfoFormat(String format) {
248
                this.setDynValue(FIELD_INFOFORMAT, format);
249
        }
250
        
251
        
252
        /*
253
         * (non-Javadoc)
254
         * @see org.gvsig.fmap.dal.coverage.store.parameter.WMSStoreParameters#getLayerQuery()
255
         */
256
        public String getLayerQuery() {
257
                return (String) this.getDynValue(FIELD_LAYERQUERY);
258
        }
259

    
260
        /*
261
         * (non-Javadoc)
262
         * @see org.gvsig.fmap.dal.coverage.store.parameter.WMSStoreParameters#setLayerQuery(java.lang.String)
263
         */
264
        public void setLayerQuery(String layerQuery) {
265
                this.setDynValue(FIELD_LAYERQUERY, layerQuery);
266
        }
267
        
268
        /**
269
         * Devuelve el SRS.
270
         * @return SRS.
271
         */
272
        public String getSRSCode() {
273
                return (String) this.getDynValue(FIELD_SRSSTR);
274
        }
275
        
276
        /**
277
         * Inserta el SRS.
278
         * @param m_srs SRS.
279
         */
280
        public void setSRS(String m_srs) {
281
                this.setDynValue(FIELD_SRSSTR, m_srs);
282
                if(m_srs.equals("CRS:84"))
283
                        m_srs = "EPSG:4326";
284
                setSRS(CRSFactory.getCRS(m_srs));
285
        }
286
        
287
        public void setSRS(IProjection srs) {
288
                setDynValue(FIELD_SRS, srs);
289
        }
290

    
291
        /**
292
         * Returns the projection
293
         * @return
294
         */
295
        public IProjection getSRS() {
296
                if (this.getSRSID() == null) {
297
                        return null;
298
                }
299
                return (IProjection) getDynValue(FIELD_SRS);
300
        }
301
        
302
        public String getSRSID() {
303
                IProjection srs = (IProjection) getDynValue(FIELD_SRS);
304
                if (srs == null) {
305
                        return null;
306
                }
307
                return srs.getAbrev();
308
        }
309

    
310
        public void setSRSID(String srsid) {
311
                if (srsid == null) {
312
                        setDynValue(FIELD_SRS, null);
313
                } else {
314
                        setDynValue(FIELD_SRS, CRSFactory.getCRS(srsid));
315
                }
316
        }
317
        
318
        /*
319
         * (non-Javadoc)
320
         * @see org.gvsig.fmap.dal.coverage.store.parameter.WMSStoreParameters#getName()
321
         */
322
        public String getName() {
323
                return (String) this.getDynValue(FIELD_NAME);
324
        }
325

    
326
        /*
327
         * (non-Javadoc)
328
         * @see org.gvsig.fmap.dal.coverage.store.parameter.WMSStoreParameters#setName(java.lang.String)
329
         */
330
        public void setName(String name) {
331
                this.setDynValue(FIELD_NAME, name);
332
        }
333
        
334
        /*
335
         * (non-Javadoc)
336
         * @see org.gvsig.raster.wms.io.WMSDataParameters#isWmsTransparent()
337
         */
338
        public boolean isWmsTransparent() {
339
                Boolean b = (Boolean)getDynValue(FIELD_TRANSPARENCY);
340
                if(b != null)
341
                        return ((Boolean)b).booleanValue();
342
                return false;
343
        }
344

    
345
        /**
346
         * @param wmsTransparency The wmsTransparency to set.
347
         */
348
        public void setWmsTransparency(boolean wmsTransparency) {
349
                this.setDynValue(FIELD_TRANSPARENCY, new Boolean(wmsTransparency));
350
        }
351
        
352
        /*
353
         * (non-Javadoc)
354
         * @see org.gvsig.fmap.dal.coverage.store.parameter.WMSStoreParameters#getInfoLayerQuery()
355
         */
356
        public String getInfoLayerQuery() {
357
                return (String) this.getDynValue(FIELD_INFOLAYERQUERY);
358
        }
359

    
360
        /*
361
         * (non-Javadoc)
362
         * @see org.gvsig.fmap.dal.coverage.store.parameter.WMSStoreParameters#setInfoLayerQuery(java.lang.String)
363
         */
364
        public void setInfoLayerQuery(String infoLayerQuery) {
365
                this.setDynValue(FIELD_INFOLAYERQUERY, infoLayerQuery);
366
        }
367
        
368

    
369
        /**
370
         * If it is true, this layer accepts GetFeatureInfo operations. This WMS operations
371
         * maps to FMap's infoByPoint(p) operation.
372
         * @param b
373
         */
374
        public void setQueryable(boolean b) {
375
                this.setDynValue(FIELD_QUERYABLE, new Boolean(b));
376
        }
377
        
378
        public void setCancellable(ICancellable cancel) {
379
                this.setDynValue(FIELD_CANCEL, cancel);
380
        }
381
        
382
        public ICancellable getCancellable() {
383
                return (ICancellable) this.getDynValue(FIELD_CANCEL);
384
        }
385
        
386
        /*
387
         * (non-Javadoc)
388
         * @see org.gvsig.raster.wms.io.WMSDataParameters#isQueryable()
389
         */
390
        public boolean isQueryable() {
391
                Boolean b = (Boolean)getDynValue(FIELD_QUERYABLE);
392
                if(b != null)
393
                        return ((Boolean)b).booleanValue();
394
                return false;
395
        }
396
        
397
        /*
398
         * (non-Javadoc)
399
         * @see org.gvsig.fmap.dal.coverage.store.RasterStoreParameters#isOverridingHost()
400
         */
401
        public boolean isOverridingHost() {
402
                Boolean b = (Boolean)getDynValue(FIELD_OVERRIDE);
403
                if(b != null)
404
                        return ((Boolean)b).booleanValue();
405
                return false;
406
        }
407
        
408
        /*
409
         * (non-Javadoc)
410
         * @see org.gvsig.fmap.dal.coverage.store.RasterStoreParameters#setOverrideHost(boolean)
411
         */
412
        public void setOverrideHost(boolean over) {
413
                this.setDynValue(FIELD_OVERRIDE, new Boolean(over));;
414
        }
415
        
416
        /*
417
         * (non-Javadoc)
418
         * @see org.gvsig.raster.wms.io.WMSDataParameters#setStyles(java.util.Vector)
419
         */
420
        public void setStyles(Vector<RemoteWMSStyle> styles) {
421
                this.setDynValue(FIELD_STYLES, styles);
422
        }
423
        
424
        /**
425
         * @param styles
426
         */
427
        @SuppressWarnings("unchecked")
428
        public Vector<RemoteWMSStyle> getStyles() {
429
                return (Vector<RemoteWMSStyle>) this.getDynValue(FIELD_STYLES);
430
        }
431
        
432
        /*
433
         * (non-Javadoc)
434
         * @see org.gvsig.raster.wms.io.WMSDataParameters#setDimensions(java.util.Vector)
435
         */
436
        public void setDimensions(Vector<String> dimensions) {
437
                this.setDynValue(FIELD_DIMENSIONS, dimensions);
438
        }
439
        
440
        /**
441
         * Gets the dimension vector that is a list of key-value pairs containing
442
         * the name of the dimension and the value for it
443
         * @return
444
         */
445
        @SuppressWarnings("unchecked")
446
        public Vector<String> getDimensions() {
447
                return (Vector<String>) this.getDynValue(FIELD_DIMENSIONS);
448
        }
449

    
450
        /*
451
         * (non-Javadoc)
452
         * @see org.gvsig.raster.wms.io.WMSDataParameters#setOnlineResources(java.util.Hashtable)
453
         */
454
        public void setOnlineResources(Hashtable<String, String> onlineResources) {
455
                this.setDynValue(FIELD_ONLINERESOURC, onlineResources);
456
        }
457
        
458
        /*
459
         * (non-Javadoc)
460
         * @see org.gvsig.raster.wms.io.WMSDataParameters#getOnlineResource(java.lang.String)
461
         */
462
        public String getOnlineResource(String operation) {
463
                return (String) getOnlineResource().get(operation);
464
        }
465
        
466
        /*
467
         * (non-Javadoc)
468
         * @see org.gvsig.raster.wms.io.WMSDataParameters#getOnlineResource()
469
         */
470
        @SuppressWarnings("unchecked")
471
        public Map<String,String> getOnlineResource() {
472
                return (Map<String,String>) this.getDynValue(FIELD_ONLINERESOURC);
473
        }
474
        
475
        /**
476
         * When a server is not fully featured and it only can serve constant map
477
         * sizes this value must be set. It expresses the size in pixels (width, height)
478
         * that the map will be requested.
479
         * @param Dimension sz
480
         */
481
        public void setFixedSize(Dimension sz) {
482
                this.setDynValue(FIELD_FIXEDSIZE, sz);
483
        }
484

    
485
        /**
486
         * Tells whether if this layer must deal with the server with the constant-size
487
         * limitations or not.
488
         * @return boolean.
489
         */
490
        public boolean isSizeFixed() {
491
                return (getDynValue(FIELD_FIXEDSIZE) != null);
492
        }
493
        
494
        /**
495
         * Gets the value of the fixed size
496
         * @return
497
         */
498
        public Dimension getFixedSize() {
499
                return (Dimension) this.getDynValue(FIELD_FIXEDSIZE);
500
        }
501
        
502
        /**
503
         * Assigns the extent. 
504
         * When a provider is initialized this will need to know what is the extent before the request.
505
         * 
506
         * @param bBox
507
         */
508
        public void setExtent(Rectangle2D bBox) {
509
                this.setDynValue(FIELD_EXTENT, bBox);
510
        }
511
        
512
        /*
513
         * (non-Javadoc)
514
         * @see org.gvsig.fmap.dal.coverage.store.parameter.RemoteStoreParameters#setWidth(int)
515
         */
516
        public void setWidth(int w) {
517
                this.setDynValue(FIELD_WIDTH, new Integer(w));
518
        }
519
        
520
        /*
521
         * (non-Javadoc)
522
         * @see org.gvsig.fmap.dal.coverage.store.parameter.RemoteStoreParameters#setHeight(int)
523
         */
524
        public void setHeight(int h) {
525
                this.setDynValue(FIELD_HEIGHT, new Integer(h));
526
        }
527
        
528
        /**
529
         * Gets the bounding box
530
         * @return
531
         */
532
        public Rectangle2D getExtent() {
533
                return (Rectangle2D)getDynValue(FIELD_EXTENT);
534
        }
535
        
536
        /**
537
         * Gets the width
538
         * @return
539
         */
540
        public int getWidth() {
541
                Integer b = (Integer)getDynValue(FIELD_WIDTH);
542
                if(b != null)
543
                        return ((Integer)b).intValue();
544
                return 0;
545
        }
546
        
547
        /**
548
         * Gets the height
549
         * @return
550
         */
551
        public int getHeight() {
552
                Integer b = (Integer)getDynValue(FIELD_HEIGHT);
553
                if(b != null)
554
                        return ((Integer)b).intValue();
555
                return 0;
556
        }
557
        
558
        /*public void setConnector(Object connector) {
559
                this.setDynValue(FIELD_CONNECTOR, connector);
560
        }
561
        
562
        public Object getConnector() {
563
                return (Object)getDynValue(FIELD_CONNECTOR);
564
        }*/
565
        
566
        //**********************************************
567
        
568
        /*
569
         * (non-Javadoc)
570
         * @see org.gvsig.fmap.dal.DataStoreParameters#getDataStoreName()
571
         */
572
        public String getDataStoreName() {
573
                return WMSProvider.NAME;
574
        }
575
        
576
        /*
577
         * (non-Javadoc)
578
         * @see org.gvsig.fmap.dal.DataStoreParameters#getDescription()
579
         */
580
        public String getDescription() {
581
                return WMSProvider.DESCRIPTION;
582
        }
583

    
584
        public String getExplorerName() {
585
                return WMSServerExplorer.NAME;
586
        }
587
        
588
        public boolean isValid() {
589
                return (this.getURI() != null);
590
        }
591
        
592
        protected DelegatedDynObject getDelegatedDynObject() {
593
                return delegatedDynObject;
594
        }
595
        
596
        public void deleteCache(boolean deleteCache) {
597
                this.setDynValue(FIELD_DELETECACHE, new Boolean(deleteCache));
598
        }
599
        
600
        public boolean isDeletingCache() {
601
                return ((Boolean)getDynValue(FIELD_DELETECACHE)).booleanValue();
602
        }
603
        
604
        /*
605
         * (non-Javadoc)
606
         * @see java.lang.Object#clone()
607
         */
608
        @SuppressWarnings("unchecked")
609
        public WMSDataParameters clone() {
610
                WMSDataParametersImpl p = new WMSDataParametersImpl();
611
                p.setFormat(getFormat());
612
                p.setFixedSize(getFixedSize());
613
                p.setHeight(getHeight());
614
                p.setWidth(getWidth());
615
                p.setExtent(getExtent());
616
                p.setURI(getURI());
617
                p.setInfoLayerQuery(getInfoLayerQuery());
618
                p.setLayerQuery(getLayerQuery());
619
                p.setName(getName());
620
                p.setOnlineResources((Hashtable<String, String>)this.getDynValue(FIELD_ONLINERESOURC));
621
                p.setOverrideHost(isOverridingHost());
622
                p.setQueryable(isQueryable());
623
                p.setSRS(getSRS());
624
                p.setSRS(getSRSCode());
625
                p.setStyles(getStyles());
626
                p.setWmsTransparency(isWmsTransparent());
627
                p.setDimensions(getDimensions());
628
                p.setCancellable(getCancellable());
629
                return p;
630
        }
631
        
632
        @SuppressWarnings("unchecked")
633
        @Override
634
        public void loadFromState(PersistentState state)
635
                        throws PersistenceException {
636
                super.loadFromState(state);
637
                
638
                setFormat(state.getString(FIELD_FORMAT));
639
                setInfoFormat(state.getString(FIELD_INFOFORMAT));
640
                setLayerQuery(state.getString(FIELD_LAYERQUERY));
641
                setName(state.getString(FIELD_NAME));
642
                setSRS(state.getString(FIELD_SRSSTR));
643
                setWmsTransparency(state.getBoolean(FIELD_TRANSPARENCY));
644
                setInfoLayerQuery(state.getString(FIELD_INFOLAYERQUERY));
645
                setQueryable(state.getBoolean(FIELD_QUERYABLE));
646
                setOverrideHost(state.getBoolean(FIELD_OVERRIDE));
647
                
648
                if (state.hasValue(FIELD_STYLES)) {
649
                        List<RemoteWMSStyle> styleList = state.getList(FIELD_STYLES);
650
                        if(styleList != null) {
651
                                Vector v = new Vector();
652
                                v.addAll(styleList);
653
                                setStyles(v);
654
                        }
655
                }
656
                if (state.hasValue(FIELD_DIMENSIONS)) {
657
                        List<String> dimList = state.getList(FIELD_DIMENSIONS);
658
                        if(dimList != null) {
659
                                Vector v = new Vector();
660
                                v.addAll(dimList);
661
                                setStyles(v);
662
                        }
663
                }
664
                
665
                if(state.getMap(FIELD_ONLINERESOURC) != null)
666
                        setOnlineResources(new Hashtable(state.getMap(FIELD_ONLINERESOURC)));
667
                
668
                if (state.hasValue(FIELD_FIXEDSIZE)) {
669
                        setFixedSize((Dimension) state.get(FIELD_FIXEDSIZE));
670
                } else {
671
                        setFixedSize(null);
672
                }
673
                setExtent((Rectangle2D)state.get(FIELD_EXTENT));
674
        }
675

    
676
        @Override
677
        public void saveToState(PersistentState state) throws PersistenceException {
678
                super.saveToState(state);
679
                
680
                state.set(FIELD_FORMAT, getFormat());        
681
                state.set(FIELD_INFOFORMAT, getInfoFormat());        
682
                state.set(FIELD_LAYERQUERY, getLayerQuery());        
683
                state.set(FIELD_NAME, getName());        
684
                state.set(FIELD_SRSSTR, getSRSCode());
685
                state.set(FIELD_TRANSPARENCY, isWmsTransparent());
686
                state.set(FIELD_INFOLAYERQUERY, getInfoLayerQuery());
687
                state.set(FIELD_LAYERQUERY, getInfoLayerQuery());
688
                state.set(FIELD_QUERYABLE, isQueryable());
689
                state.set(FIELD_OVERRIDE, isOverridingHost());
690
                state.set(FIELD_STYLES, getStyles());
691
                state.set(FIELD_DIMENSIONS, getDimensions());
692
                state.set(FIELD_ONLINERESOURC, getOnlineResource());
693
                state.set(FIELD_FIXEDSIZE, getFixedSize());
694
                state.set(FIELD_EXTENT, getExtent());
695
        }        
696
        
697
        public static void registerPersistence() {
698
                PersistenceManager manager = ToolsLocator.getPersistenceManager();
699
                DynStruct definition = manager.getDefinition("WMSDataParametersImpl_Persistent");
700
                if( definition == null ) {
701
                        definition = manager.addDefinition(
702
                                        WMSDataParametersImpl.class,
703
                                        "WMSDataParametersImpl_Persistent",
704
                                        "WMS DataParameters Persistency",
705
                                        null, 
706
                                        null
707
                        );
708
                        AbstractRasterDataParameters.registerPersistence(definition);
709
                        
710
                        definition.addDynFieldObject(FIELD_EXTENT).setClassOfValue(Rectangle2D.class).setMandatory(false);
711
                        definition.addDynFieldInt(FIELD_WIDTH).setMandatory(false);
712
                        definition.addDynFieldInt(FIELD_HEIGHT).setMandatory(false);
713
                        definition.addDynFieldString(FIELD_FORMAT).setMandatory(false);
714
                        definition.addDynFieldString(FIELD_INFOFORMAT).setMandatory(false);
715
                        definition.addDynFieldString(FIELD_LAYERQUERY).setMandatory(false);
716
                        definition.addDynFieldString(FIELD_NAME).setMandatory(false);                        
717
                        definition.addDynFieldString(FIELD_SRSSTR).setMandatory(false);
718
                        definition.addDynFieldBoolean(FIELD_TRANSPARENCY).setMandatory(false);
719
                        definition.addDynFieldString(FIELD_INFOLAYERQUERY).setMandatory(false);
720
                        definition.addDynFieldString(FIELD_LAYERQUERY).setMandatory(false);
721
                        definition.addDynFieldBoolean(FIELD_QUERYABLE).setMandatory(false);
722
                        definition.addDynFieldBoolean(FIELD_OVERRIDE).setMandatory(false);
723
                        definition.addDynFieldList(FIELD_STYLES).setClassOfItems(RemoteWMSStyle.class).setMandatory(false);
724
                        definition.addDynFieldList(FIELD_DIMENSIONS).setClassOfItems(String.class).setMandatory(false);
725
                        definition.addDynFieldMap(FIELD_ONLINERESOURC).setClassOfItems(String.class).setMandatory(false);
726
                        definition.addDynFieldObject(FIELD_FIXEDSIZE).setClassOfValue(Dimension.class).setMandatory(false);
727
                        //definition.addDynFieldBoolean(FIELD_DELETECACHE).setMandatory(false);
728
                }
729
        }
730
        
731
}