Statistics
| Revision:

gvsig-raster / org.gvsig.raster.wcs / trunk / org.gvsig.raster.wcs / org.gvsig.raster.wcs.io / src / main / java / org / gvsig / raster / wcs / io / WCSDataParametersImpl.java @ 859

History | View | Annotate | Download (16.1 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.wcs.io;
24

    
25
import java.awt.geom.Point2D;
26
import java.awt.geom.Rectangle2D;
27
import java.util.Hashtable;
28
import java.util.Map;
29

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

    
45
/**
46
 * Parameters for the WCS provider
47
 * @author Nacho Brodin (nachobrodin@gmail.com)
48
 */
49
public class WCSDataParametersImpl extends AbstractRasterDataParameters implements WCSDataParameters {
50
        public static final String       DYNCLASS_NAME         = "WCSDataParameters";
51
        private static final String      FIELD_TIME            = "time";
52
        private static final String      FIELD_MAXRES          = "maxres";
53
        private static final String      FIELD_PARAM           = "parameter";
54
        private static final String      FIELD_SRS             = "srs";
55
        private static final String      FIELD_FORMAT          = "format";
56
        private static final String      FIELD_NAME            = "name";
57
        private static final String      FIELD_SRSSTR          = "srsstr";
58
        private static final String      FIELD_EXTENT          = "extent";
59
        private static final String      FIELD_WIDTH           = "width";
60
        private static final String      FIELD_HEIGHT          = "height";
61
        private static final String      FIELD_CANCEL          = "cancellable";
62
        private static final String      FIELD_OVERRIDE        = "override";
63
        private static final String      FIELD_ONLINERESOURC   = "onlineresources";
64
        private static final String      FIELD_DEPTH           = "depth";
65
        private static final String      FIELD_DELETECACHE     = "deletecache";
66
        
67
        private DelegatedDynObject       delegatedDynObject    = null;
68
        protected static DynClass        DYNCLASS              = null;
69
        
70
        public WCSDataParametersImpl() {
71
                super();
72
                initialize();
73
        }
74
        
75
        protected void initialize() {
76
                this.delegatedDynObject = (DelegatedDynObject) ToolsLocator
77
                                .getDynObjectManager().createDynObject(
78
                                                DYNCLASS);
79
        }
80
        
81
        public static void registerPersistence() {
82
                PersistenceManager manager = ToolsLocator.getPersistenceManager();
83
                DynStruct definition = manager.getDefinition("WCSDataParametersImpl_Persistent");
84
                if( definition == null ) {
85
                        definition = manager.addDefinition(
86
                                        WCSDataParametersImpl.class,
87
                                        "WCSDataParametersImpl_Persistent",
88
                                        "WCS DataParameters Persistency",
89
                                        null, 
90
                                        null
91
                        );
92
                        AbstractRasterDataParameters.registerPersistence(definition);
93
                        
94
                        definition.addDynFieldObject(FIELD_EXTENT).setClassOfValue(Rectangle2D.class).setMandatory(false);
95
                        definition.addDynFieldInt(FIELD_WIDTH).setMandatory(false);
96
                        definition.addDynFieldInt(FIELD_HEIGHT).setMandatory(false);
97
                        definition.addDynFieldObject(FIELD_MAXRES).setClassOfValue(Point2D.class).setMandatory(false);
98
                        definition.addDynFieldString(FIELD_FORMAT).setMandatory(false);
99
                        definition.addDynFieldString(FIELD_PARAM).setMandatory(false);
100
                        definition.addDynFieldString(FIELD_NAME).setMandatory(false);                        
101
                        definition.addDynFieldString(FIELD_SRSSTR).setMandatory(false);
102
                        definition.addDynFieldBoolean(FIELD_OVERRIDE).setMandatory(false);
103
                        definition.addDynFieldMap(FIELD_ONLINERESOURC).setClassOfItems(String.class).setMandatory(false);
104
                        definition.addDynFieldString(FIELD_DEPTH).setMandatory(false);
105
                        definition.addDynFieldString(FIELD_TIME).setMandatory(false);
106
                }
107
        }
108
        
109
        public void saveToState(PersistentState state) throws PersistenceException {
110
                super.saveToState(state);
111
                state.set(FIELD_FORMAT, getFormat());
112
                state.set(FIELD_MAXRES, getMaxResolution());
113
                state.set(FIELD_PARAM, getParameter());
114
                state.set(FIELD_DEPTH, getDepth());
115
                state.set(FIELD_TIME, getTime());
116
                state.set(FIELD_NAME, getCoverageName());        
117
                state.set(FIELD_SRSSTR, getSRSCode());
118
                state.set(FIELD_OVERRIDE, isOverridingHost());
119
                state.set(FIELD_ONLINERESOURC, getOnlineResource());
120
                state.set(FIELD_EXTENT, getExtent());
121
        }
122
        
123
        @SuppressWarnings("unchecked")
124
        public void loadFromState(PersistentState state)
125
        throws PersistenceException {
126
                super.loadFromState(state);
127

    
128
                setFormat(state.getString(FIELD_FORMAT));
129
                setMaxResolution((Point2D)state.get(FIELD_MAXRES));
130
                setParameter(state.getString(FIELD_PARAM));
131
                setDepth(state.getString(FIELD_DEPTH));
132
                setTime(state.getString(FIELD_TIME));
133
                setCoverageName(state.getString(FIELD_NAME));
134
                setSRS(state.getString(FIELD_SRSSTR));
135
                setOverrideHost(state.getBoolean(FIELD_OVERRIDE));
136
                if(state.getMap(FIELD_ONLINERESOURC) != null)
137
                        setOnlineResources(new Hashtable(state.getMap(FIELD_ONLINERESOURC)));
138
                setExtent((Rectangle2D)state.get(FIELD_EXTENT));
139
        }
140

    
141
        @SuppressWarnings("deprecation")
142
        public static void registerDynClass() {
143
                DynObjectManager dynman = ToolsLocator.getDynObjectManager();
144
                DynClass dynClass;
145
                DynField field;
146
                
147
                if(dynman == null)
148
                        return;
149
                
150
                if (DYNCLASS == null) {
151
                        dynClass = AbstractRasterDataParameters.registerDynClass(WCSDataParametersImpl.DYNCLASS_NAME);
152

    
153
                        field = dynClass.addDynField(FIELD_MAXRES);
154
                        field.setTheTypeOfAvailableValues(DynField.ANY);
155
                        field.setDescription("Maxresolution");
156
                        field.setType(DataTypes.OBJECT);
157
                        field.setMandatory(false);
158
                        
159
                        field = dynClass.addDynField(FIELD_PARAM);
160
                        field.setTheTypeOfAvailableValues(DynField.ANY);
161
                        field.setDescription("Parameters");
162
                        field.setType(DataTypes.STRING);
163
                        field.setMandatory(false);
164
                        
165
                        field = dynClass.addDynField(FIELD_SRS);
166
                        field.setTheTypeOfAvailableValues(DynField.ANY);
167
                        field.setDescription("SRS");
168
                        field.setType(org.cresques.DataTypes.CRS);
169
                        field.setMandatory(false);
170

    
171
                        field = dynClass.addDynField(FIELD_FORMAT);
172
                        field.setTheTypeOfAvailableValues(DynField.ANY);
173
                        field.setDescription("Format");
174
                        field.setType(DataTypes.STRING);
175
                        field.setMandatory(true);
176
                        
177
                        field = dynClass.addDynField(FIELD_NAME);
178
                        field.setTheTypeOfAvailableValues(DynField.ANY);
179
                        field.setDescription("Name");
180
                        field.setType(DataTypes.STRING);
181
                        field.setMandatory(true);
182
                        
183
                        field = dynClass.addDynField(FIELD_SRSSTR);
184
                        field.setTheTypeOfAvailableValues(DynField.ANY);
185
                        field.setDescription("String that represents the SRS");
186
                        field.setType(DataTypes.STRING);
187
                        field.setMandatory(true);
188
                        
189
                        field = dynClass.addDynField(FIELD_CANCEL);
190
                        field.setTheTypeOfAvailableValues(DynField.ANY);
191
                        field.setDescription("Cancellable");
192
                        field.setType(DataTypes.OBJECT);
193
                        field.setMandatory(false);
194
                        
195
                        field = dynClass.addDynField(FIELD_EXTENT);
196
                        field.setTheTypeOfAvailableValues(DynField.ANY);
197
                        field.setDescription("Extent");
198
                        field.setType(DataTypes.OBJECT);
199
                        field.setMandatory(false);
200
                        
201
                        field = dynClass.addDynField(FIELD_WIDTH);
202
                        field.setTheTypeOfAvailableValues(DynField.ANY);
203
                        field.setDescription("Width");
204
                        field.setType(DataTypes.INT);
205
                        field.setMandatory(false);
206
                        
207
                        field = dynClass.addDynField(FIELD_HEIGHT);
208
                        field.setTheTypeOfAvailableValues(DynField.ANY);
209
                        field.setDescription("Height");
210
                        field.setType(DataTypes.INT);
211
                        field.setMandatory(false);
212
                        
213
                        field = dynClass.addDynField(FIELD_OVERRIDE);
214
                        field.setTheTypeOfAvailableValues(DynField.ANY);
215
                        field.setDescription("Override a host capabilities");
216
                        field.setType(DataTypes.BOOLEAN);
217
                        field.setMandatory(false);
218
                        
219
                        field = dynClass.addDynField(FIELD_ONLINERESOURC);
220
                        field.setTheTypeOfAvailableValues(DynField.ANY);
221
                        field.setDescription("online resources");
222
                        field.setType(DataTypes.MAP);
223
                        field.setMandatory(false);
224
                        
225
                        field = dynClass.addDynField(FIELD_DEPTH);
226
                        field.setTheTypeOfAvailableValues(DynField.ANY);
227
                        field.setDescription("Depth");
228
                        field.setType(DataTypes.STRING);
229
                        field.setMandatory(false);
230
                        
231
                        field = dynClass.addDynField(FIELD_TIME);
232
                        field.setTheTypeOfAvailableValues(DynField.ANY);
233
                        field.setDescription("Time");
234
                        field.setType(DataTypes.STRING);
235
                        field.setMandatory(false);
236
                        
237
                        field = dynClass.addDynField(FIELD_DELETECACHE);
238
                        field.setTheTypeOfAvailableValues(DynField.ANY);
239
                        field.setDescription("Flag to delete cache the next request");
240
                        field.setType(DataTypes.BOOLEAN);
241
                        field.setMandatory(false);
242
                        
243
                        DYNCLASS = dynClass;
244
                }
245
        }
246
        
247
        /*
248
         * (non-Javadoc)
249
         * @see org.gvsig.raster.wcs.io.WCSDataParameters#setMaxResolution(java.awt.geom.Point2D)
250
         */
251
        public void setMaxResolution(Point2D res) {
252
                this.setDynValue(FIELD_MAXRES, res);
253
        }
254
        
255
        public Point2D getMaxResolution() {
256
                return (Point2D) this.getDynValue(FIELD_MAXRES);
257
        }
258
        
259
        /*
260
         * (non-Javadoc)
261
         * @see org.gvsig.fmap.dal.coverage.store.parameter.WCSDataParameters#setParameter(java.lang.String)
262
         */
263
        public void setParameter(String parameter) {
264
                this.setDynValue(FIELD_PARAM, parameter);
265
        }
266
        
267
        /*
268
         * (non-Javadoc)
269
         * @see org.gvsig.raster.wcs.io.WCSDataParameters#getParameter()
270
         */
271
        public String getParameter() {
272
                return (String) this.getDynValue(FIELD_PARAM);
273
        }
274
        
275
        /*
276
         * (non-Javadoc)
277
         * @see org.gvsig.raster.wcs.io.WCSDataParameters#getFormat()
278
         */
279
        public String getFormat() {
280
                return (String) this.getDynValue(FIELD_FORMAT);
281
        }
282

    
283
        /*
284
         * (non-Javadoc)
285
         * @see org.gvsig.raster.wcs.io.WCSDataParameters#setFormat(java.lang.String)
286
         */
287
        public void setFormat(String format) {
288
                this.setDynValue(FIELD_FORMAT, format);
289
        }
290
        
291
        /**
292
         * Devuelve el SRS.
293
         * @return SRS.
294
         */
295
        public String getSRSCode() {
296
                return (String) this.getDynValue(FIELD_SRSSTR);
297
        }
298
        
299
        /**
300
         * Inserta el SRS.
301
         * @param m_srs SRS.
302
         */
303
        public void setSRS(String m_srs) {
304
                this.setDynValue(FIELD_SRSSTR, m_srs);
305
                setSRS(CRSFactory.getCRS(m_srs));
306
        }
307
        
308
        public void setSRS(IProjection srs) {
309
                setDynValue(FIELD_SRS, srs);
310
        }
311

    
312
        /**
313
         * Returns the projection
314
         * @return
315
         */
316
        public IProjection getSRS() {
317
                if (this.getSRSID() == null) {
318
                        return null;
319
                }
320
                return (IProjection) getDynValue(FIELD_SRS);
321
        }
322
        
323
        public String getSRSID() {
324
                IProjection srs = (IProjection) getDynValue(FIELD_SRS);
325
                if (srs == null) {
326
                        return null;
327
                }
328
                return srs.getAbrev();
329
        }
330

    
331
        public void setSRSID(String srsid) {
332
                if (srsid == null) {
333
                        setDynValue(FIELD_SRS, null);
334
                } else {
335
                        setDynValue(FIELD_SRS, CRSFactory.getCRS(srsid));
336
                }
337
        }
338
        
339
        public String getCoverageName() {
340
                return (String) this.getDynValue(FIELD_NAME);
341
        }
342

    
343
        public void setCoverageName(String name) {
344
                this.setDynValue(FIELD_NAME, name);
345
        }
346
        
347
        public void setCancellable(ICancellable cancel) {
348
                this.setDynValue(FIELD_CANCEL, cancel);
349
        }
350
        
351
        public ICancellable getCancellable() {
352
                return (ICancellable) this.getDynValue(FIELD_CANCEL);
353
        }
354
        
355
        /*
356
         * (non-Javadoc)
357
         * @see org.gvsig.raster.wcs.io.WCSDataParameters#setExtent(java.awt.geom.Rectangle2D)
358
         */
359
        public void setExtent(Rectangle2D bBox) {
360
                this.setDynValue(FIELD_EXTENT, bBox);
361
        }
362
        
363
        /*
364
         * (non-Javadoc)
365
         * @see org.gvsig.fmap.dal.coverage.store.parameter.RemoteStoreParameters#setWidth(int)
366
         */
367
        public void setWidth(int w) {
368
                this.setDynValue(FIELD_WIDTH, new Integer(w));
369
        }
370
        
371
        /*
372
         * (non-Javadoc)
373
         * @see org.gvsig.fmap.dal.coverage.store.parameter.RemoteStoreParameters#setHeight(int)
374
         */
375
        public void setHeight(int h) {
376
                this.setDynValue(FIELD_HEIGHT, new Integer(h));
377
        }
378
        
379
        /*
380
         * (non-Javadoc)
381
         * @see org.gvsig.raster.wcs.io.WCSDataParameters#getExtent()
382
         */
383
        public Rectangle2D getExtent() {
384
                return (Rectangle2D)getDynValue(FIELD_EXTENT);
385
        }
386
        
387
        /**
388
         * Gets the width
389
         * @return
390
         */
391
        public int getWidth() {
392
                Integer b = (Integer)getDynValue(FIELD_WIDTH);
393
                if(b != null)
394
                        return ((Integer)b).intValue();
395
                return 0;
396
        }
397
        
398
        /**
399
         * Gets the height
400
         * @return
401
         */
402
        public int getHeight() {
403
                Integer b = (Integer)getDynValue(FIELD_HEIGHT);
404
                if(b != null)
405
                        return ((Integer)b).intValue();
406
                return 0;
407
        }
408
        
409
        /*public void setConnector(Object connector) {
410
                this.setDynValue(FIELD_CONNECTOR, connector);
411
        }
412
        
413
        public Object getConnector() {
414
                return (Object)getDynValue(FIELD_CONNECTOR);
415
        }*/
416
        
417
        //**********************************************
418
        
419
        /*
420
         * (non-Javadoc)
421
         * @see org.gvsig.fmap.dal.DataStoreParameters#getDataStoreName()
422
         */
423
        public String getDataStoreName() {
424
                return WCSProvider.NAME;
425
        }
426
        
427
        /*
428
         * (non-Javadoc)
429
         * @see org.gvsig.fmap.dal.DataStoreParameters#getDescription()
430
         */
431
        public String getDescription() {
432
                return WCSProvider.DESCRIPTION;
433
        }
434

    
435
        public String getExplorerName() {
436
                return WCSServerExplorer.NAME;
437
        }
438
        
439
        public boolean isValid() {
440
                return (this.getURI() != null);
441
        }
442
        
443
        protected DelegatedDynObject getDelegatedDynObject() {
444
                return delegatedDynObject;
445
        }
446
        
447
        /*
448
         * (non-Javadoc)
449
         * @see java.lang.Object#clone()
450
         */
451
        @SuppressWarnings("unchecked")
452
        public WCSDataParametersImpl clone() {
453
                WCSDataParametersImpl p = new WCSDataParametersImpl();
454
                p.setFormat(getFormat());
455
                p.setHeight(getHeight());
456
                p.setWidth(getWidth());
457
                p.setExtent(getExtent());
458
                p.setCoverageName(getCoverageName());
459
                p.setOverrideHost(isOverridingHost());
460
                p.setSRS(getSRS());
461
                p.setSRS(getSRSCode());
462
                p.setURI(getURI());
463
                p.setCancellable(getCancellable());
464
                p.setOnlineResources((Hashtable<String, String>)this.getDynValue(FIELD_ONLINERESOURC));
465
                p.setTime(getTime());
466
                return p;
467
        }
468

    
469
        /*
470
         * (non-Javadoc)
471
         * @see org.gvsig.raster.wcs.io.WCSDataParameters#getTime()
472
         */
473
        public String getTime() {
474
                return (String) this.getDynValue(FIELD_TIME);
475
        }
476

    
477
        /*
478
         * (non-Javadoc)
479
         * @see org.gvsig.raster.wcs.io.WCSDataParameters#setTime(java.lang.String)
480
         */
481
        public void setTime(String time) {
482
                this.setDynValue(FIELD_TIME, time);
483
        }
484
        
485
        /*
486
         * (non-Javadoc)
487
         * @see org.gvsig.fmap.dal.coverage.store.parameter.RasterDataParameters#isOverridingHost()
488
         */
489
        public boolean isOverridingHost() {
490
                Boolean b = (Boolean)getDynValue(FIELD_OVERRIDE);
491
                if(b != null)
492
                        return ((Boolean)b).booleanValue();
493
                return false;
494
        }
495
        
496
        /*
497
         * (non-Javadoc)
498
         * @see org.gvsig.fmap.dal.coverage.store.parameter.RasterDataParameters#setOverrideHost(boolean)
499
         */
500
        public void setOverrideHost(boolean over) {
501
                this.setDynValue(FIELD_OVERRIDE, new Boolean(over));;
502
        }
503
        
504
        /*
505
         * (non-Javadoc)
506
         * @see org.gvsig.raster.wcs.io.WCSDataParameters#setOnlineResources(java.util.Hashtable)
507
         */
508
        public void setOnlineResources(Hashtable<String, String> onlineResources) {
509
                this.setDynValue(FIELD_ONLINERESOURC, onlineResources);
510
        }
511
        
512
        /*
513
         * (non-Javadoc)
514
         * @see org.gvsig.raster.wcs.io.WCSDataParameters#getOnlineResource()
515
         */
516
        @SuppressWarnings("unchecked")
517
        public Map<String,String> getOnlineResource() {
518
                return (Map<String,String>) this.getDynValue(FIELD_ONLINERESOURC);
519
        }
520

    
521
        /**
522
         * Gets the URL that should be accessed for an operation performed
523
         * to the server.
524
         *
525
         * @param onlineResources
526
         */
527
        public String getOnlineResource(String operation) {
528
                return (String) getOnlineResource().get(operation);
529
        }
530
        
531
        
532
        public String getDepth() {
533
                return (String) this.getDynValue(FIELD_DEPTH);
534
        }
535

    
536
        
537
        public void setDepth(String depth) {
538
                this.setDynValue(FIELD_DEPTH, depth);
539
        }
540

    
541
        public boolean isSizeFixed() {
542
                return true;
543
        }
544
        
545
        public void deleteCache(boolean deleteCache) {
546
                this.setDynValue(FIELD_DELETECACHE, new Boolean(deleteCache));
547
        }
548
        
549
        public boolean isDeletingCache() {
550
                return ((Boolean)getDynValue(FIELD_DELETECACHE)).booleanValue();
551
        }
552

    
553
}