Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.compat.cdc / org.gvsig.fmap.dal / org.gvsig.fmap.dal.impl / src / main / java / org / gvsig / fmap / dal / raster / impl / DefaultCoverageStore.java @ 43246

History | View | Annotate | Download (14 KB)

1
/**
2
 * gvSIG. Desktop Geographic Information System.
3
 *
4
 * Copyright (C) 2007-2013 gvSIG Association.
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 3
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
 * For any additional information, do not hesitate to contact us
22
 * at info AT gvsig.com, or visit our website www.gvsig.com.
23
 */
24
package org.gvsig.fmap.dal.raster.impl;
25

    
26
import java.util.Collection;
27
import java.util.Iterator;
28
import java.util.Set;
29

    
30
import org.gvsig.fmap.dal.DataManager;
31
import org.gvsig.fmap.dal.DataQuery;
32
import org.gvsig.fmap.dal.DataServerExplorer;
33
import org.gvsig.fmap.dal.DataSet;
34
import org.gvsig.fmap.dal.DataStore;
35
import org.gvsig.fmap.dal.DataStoreNotification;
36
import org.gvsig.fmap.dal.DataStoreParameters;
37
import org.gvsig.fmap.dal.DataStoreProviderFactory;
38
import org.gvsig.fmap.dal.exception.CloseException;
39
import org.gvsig.fmap.dal.exception.DataException;
40
import org.gvsig.fmap.dal.exception.InitializeException;
41
import org.gvsig.fmap.dal.exception.OpenException;
42
import org.gvsig.fmap.dal.exception.ValidateDataParametersException;
43
import org.gvsig.fmap.dal.feature.FeatureStoreNotification;
44
import org.gvsig.fmap.dal.feature.impl.DefaultFeatureStoreNotification;
45
import org.gvsig.fmap.dal.impl.DefaultDataManager;
46
import org.gvsig.fmap.dal.raster.CoverageSelection;
47
import org.gvsig.fmap.dal.raster.CoverageStore;
48
import org.gvsig.fmap.dal.raster.spi.CoverageStoreProvider;
49
import org.gvsig.fmap.dal.raster.spi.CoverageStoreProviderServices;
50
import org.gvsig.fmap.dal.resource.Resource;
51
import org.gvsig.fmap.dal.spi.DataStoreInitializer;
52
import org.gvsig.fmap.dal.spi.DataStoreProvider;
53
import org.gvsig.metadata.MetadataLocator;
54
import org.gvsig.timesupport.Interval;
55
import org.gvsig.timesupport.RelativeInterval;
56
import org.gvsig.tools.ToolsLocator;
57
import org.gvsig.tools.dispose.impl.AbstractDisposable;
58
import org.gvsig.tools.dynobject.DelegatedDynObject;
59
import org.gvsig.tools.dynobject.DynClass;
60
import org.gvsig.tools.dynobject.DynObject;
61
import org.gvsig.tools.dynobject.DynObjectManager;
62
import org.gvsig.tools.dynobject.DynObject_v2;
63
import org.gvsig.tools.dynobject.exception.DynFieldNotFoundException;
64
import org.gvsig.tools.dynobject.exception.DynMethodException;
65
import org.gvsig.tools.exception.BaseException;
66
import org.gvsig.tools.observer.Observer;
67
import org.gvsig.tools.observer.impl.DelegateWeakReferencingObservable;
68
import org.gvsig.tools.persistence.PersistentState;
69
import org.gvsig.tools.persistence.exception.PersistenceException;
70
import org.gvsig.tools.undo.command.Command;
71
import org.gvsig.tools.visitor.Visitor;
72

    
73
/**
74
 * @author jmvivo
75
 *
76
 */
77
public class DefaultCoverageStore extends AbstractDisposable implements
78
                CoverageStore, CoverageStoreProviderServices, DataStoreInitializer {
79

    
80
//        final static private Logger logger = LoggerFactory
81
//                        .getLogger(DefaultFeatureStore.class);
82

    
83
        private DataStoreParameters parameters = null;
84
        private CoverageSelection selection;
85

    
86
//        private long versionOfUpdate = 0;
87

    
88
        private DefaultDataManager dataManager = null;
89

    
90
        private CoverageStoreProvider provider = null;
91

    
92
        private DelegatedDynObject metadata;
93

    
94
        private DelegateWeakReferencingObservable delegateObservable = new DelegateWeakReferencingObservable(
95
                        this);
96

    
97
        public DefaultCoverageStore() {
98

    
99
        }
100

    
101
        /*
102
         * (non-Javadoc)
103
         *
104
         * @see
105
         * org.gvsig.fmap.dal.impl.DataStoreImplementation#intializePhase1(org.gvsig
106
         * .fmap.dal.impl.DefaultDataManager,
107
         * org.gvsig.fmap.dal.DataStoreParameters)
108
         */
109
        public void intializePhase1(DataManager dataManager,
110
                        DataStoreParameters parameters) throws InitializeException {
111
                DynObjectManager dynManager = ToolsLocator.getDynObjectManager();
112

    
113
                this.metadata = (DelegatedDynObject) dynManager
114
                                .createDynObject(
115
                                                MetadataLocator.getMetadataManager().getDefinition(DataStore.SPATIAL_METADATA_DEFINITION_NAME)
116
                                );
117
                this.dataManager = (DefaultDataManager)dataManager;
118
                this.parameters = parameters;
119

    
120
        }
121

    
122

    
123

    
124
        /*
125
         * (non-Javadoc)
126
         *
127
         * @see
128
         * org.gvsig.fmap.dal.impl.DataStoreImplementation#intializePhase2(org.gvsig
129
         * .fmap.dal.spi.DataStoreProvider)
130
         */
131
        public void intializePhase2(DataStoreProvider provider)
132
                        throws InitializeException {
133

    
134
                this.provider = (CoverageStoreProvider) provider;
135
                this.delegate((DynObject) provider);
136

    
137
        }
138

    
139

    
140
        /* (non-Javadoc)
141
         * @see org.gvsig.fmap.dal.DataStore#createSelection()
142
         */
143
        public DataSet createSelection() throws DataException {
144
                // TODO Auto-generated method stub
145
                return null;
146
        }
147

    
148

    
149
        /* (non-Javadoc)
150
         * @see org.gvsig.fmap.dal.DataStore#getChildren()
151
         */
152
        public Iterator getChildren() {
153
                return this.provider.getChilds();
154
        }
155

    
156
        /* (non-Javadoc)
157
         * @see org.gvsig.fmap.dal.DataStore#getDataSet()
158
         */
159
        public DataSet getDataSet() throws DataException {
160
                // TODO Auto-generated method stub
161
                return null;
162
        }
163

    
164
        /* (non-Javadoc)
165
         * @see org.gvsig.fmap.dal.DataStore#getDataSet(org.gvsig.fmap.dal.DataQuery)
166
         */
167
        public DataSet getDataSet(DataQuery dataQuery) throws DataException {
168
                // TODO Auto-generated method stub
169
                return null;
170
        }
171

    
172
        public void accept(Visitor visitor) throws BaseException {
173
                // TODO Auto-generated method stub
174
        }
175

    
176
        public void accept(Visitor visitor, DataQuery dataQuery)
177
                        throws BaseException {
178
                // TODO Auto-generated method stub
179
        }
180

    
181
        /* (non-Javadoc)
182
         * @see org.gvsig.fmap.dal.DataStore#getDataSet(org.gvsig.tools.observer.Observer)
183
         */
184
        public void getDataSet(Observer observer) throws DataException {
185
                // TODO Auto-generated method stub
186

    
187
        }
188

    
189
        /* (non-Javadoc)
190
         * @see org.gvsig.fmap.dal.DataStore#getDataSet(org.gvsig.fmap.dal.DataQuery, org.gvsig.tools.observer.Observer)
191
         */
192
        public void getDataSet(DataQuery dataQuery, Observer observer)
193
                        throws DataException {
194
                // TODO Auto-generated method stub
195

    
196
        }
197

    
198
        /* (non-Javadoc)
199
         * @see org.gvsig.fmap.dal.DataStore#getExplorer()
200
         */
201
        public DataServerExplorer getExplorer() throws DataException,
202
                        ValidateDataParametersException {
203
                return provider.getExplorer();
204
        }
205

    
206
        /* (non-Javadoc)
207
         * @see org.gvsig.fmap.dal.DataStore#getParameters()
208
         */
209
        public DataStoreParameters getParameters() {
210
                return this.parameters;
211
        }
212

    
213
        /* (non-Javadoc)
214
         * @see org.gvsig.fmap.dal.DataStore#getSelection()
215
         */
216
        public DataSet getSelection() throws DataException {
217
                // TODO Auto-generated method stub
218
                return null;
219
        }
220

    
221
        /* (non-Javadoc)
222
         * @see org.gvsig.fmap.dal.DataStore#refresh()
223
         */
224
        public void refresh() throws DataException {
225
                // TODO Auto-generated method stub
226

    
227
        }
228

    
229
        /* (non-Javadoc)
230
         * @see org.gvsig.fmap.dal.DataStore#setSelection(org.gvsig.fmap.dal.DataSet)
231
         */
232
        public void setSelection(DataSet selection) throws DataException {
233
                // TODO Auto-generated method stub
234

    
235
        }
236

    
237
        /* (non-Javadoc)
238
         * @see org.gvsig.tools.observer.ComplexObservable#beginComplexNotification()
239
         */
240
        public void beginComplexNotification() {
241
                // TODO Auto-generated method stub
242

    
243
        }
244

    
245
        /* (non-Javadoc)
246
         * @see org.gvsig.tools.observer.ComplexObservable#disableNotifications()
247
         */
248
        public void disableNotifications() {
249
                // TODO Auto-generated method stub
250

    
251
        }
252

    
253
        /* (non-Javadoc)
254
         * @see org.gvsig.tools.observer.ComplexObservable#enableNotifications()
255
         */
256
        public void enableNotifications() {
257
                // TODO Auto-generated method stub
258

    
259
        }
260

    
261
        /* (non-Javadoc)
262
         * @see org.gvsig.tools.observer.ComplexObservable#endComplexNotification()
263
         */
264
        public void endComplexNotification() {
265
                // TODO Auto-generated method stub
266

    
267
        }
268

    
269
        /* (non-Javadoc)
270
         * @see org.gvsig.tools.observer.Observable#addObserver(org.gvsig.tools.observer.Observer)
271
         */
272
        public void addObserver(Observer o) {
273
                // TODO Auto-generated method stub
274

    
275
        }
276

    
277
        /* (non-Javadoc)
278
         * @see org.gvsig.tools.observer.Observable#deleteObserver(org.gvsig.tools.observer.Observer)
279
         */
280
        public void deleteObserver(Observer o) {
281
                // TODO Auto-generated method stub
282

    
283
        }
284

    
285
        /* (non-Javadoc)
286
         * @see org.gvsig.tools.observer.Observable#deleteObservers()
287
         */
288
        public void deleteObservers() {
289
                // TODO Auto-generated method stub
290

    
291
        }
292

    
293
        /* (non-Javadoc)
294
         * @see org.gvsig.tools.persistence.Persistent#getState()
295
         */
296
        public PersistentState getState() throws PersistenceException {
297
                // TODO Auto-generated method stub
298
                return null;
299
        }
300

    
301
        /* (non-Javadoc)
302
         * @see org.gvsig.tools.persistence.Persistent#loadState(org.gvsig.tools.persistence.PersistentState)
303
         */
304
        public void saveToState(PersistentState state) throws PersistenceException {
305
                // TODO Auto-generated method stub
306

    
307
        }
308

    
309
        /* (non-Javadoc)
310
         * @see org.gvsig.tools.persistence.Persistent#setState(org.gvsig.tools.persistence.PersistentState)
311
         */
312
        public void loadFromState(PersistentState state) throws PersistenceException {
313
                // TODO Auto-generated method stub
314

    
315
        }
316

    
317
        //
318
        // ====================================================================
319
        // Metadata related methods
320
        //
321

    
322
        public Object getMetadataID() {
323
                return this.provider.getSourceId();
324
        }
325

    
326
        public void delegate(DynObject dynObject) {
327
                this.metadata.delegate(dynObject);
328
        }
329

    
330
        public DynClass getDynClass() {
331
                return this.metadata.getDynClass();
332
        }
333

    
334
        public Object getDynValue(String name) throws DynFieldNotFoundException {
335
                return this.metadata.getDynValue(name);
336
        }
337

    
338
        public boolean hasDynValue(String name) {
339
                return this.metadata.hasDynValue(name);
340
        }
341
    
342
    @Override
343
    public boolean hasDynMethod(String name) {
344
        return ((DynObject_v2)this.metadata).hasDynMethod(name);
345
    }    
346

    
347
        public void implement(DynClass dynClass) {
348
                this.metadata.implement(dynClass);
349
        }
350

    
351
        public Object invokeDynMethod(String name, Object[] args)
352
                        throws DynMethodException {
353
                return this.metadata.invokeDynMethod(this, name, args);
354
        }
355

    
356
        public Object invokeDynMethod(int code, Object[] args)
357
                        throws DynMethodException {
358
                return this.metadata.invokeDynMethod(this, code, args);
359
        }
360

    
361
        public void setDynValue(String name, Object value)
362
                        throws DynFieldNotFoundException {
363
                this.metadata.setDynValue(name, value);
364

    
365
        }
366

    
367
        /*
368
         * (non-Javadoc)
369
         *
370
         * @see org.gvsig.metadata.Metadata#getMetadataChildren()
371
         */
372
        public Set getMetadataChildren() {
373
                return null;
374
        }
375

    
376
        /*
377
         * (non-Javadoc)
378
         *
379
         * @see org.gvsig.metadata.Metadata#getMetadataName()
380
         */
381
        public String getMetadataName() {
382
                return this.provider.getProviderName();
383
        }
384

    
385

    
386
        /* (non-Javadoc)
387
         * @see org.gvsig.fmap.dal.raster.spi.CoverageStoreProviderServices#createDefaultCoverageSelection()
388
         */
389
        public CoverageSelection createDefaultCoverageSelection()
390
                        throws DataException {
391
                // TODO Auto-generated method stub
392
                return null;
393
        }
394

    
395

    
396
        /* (non-Javadoc)
397
         * @see org.gvsig.fmap.dal.raster.spi.CoverageStoreProviderServices#getManager()
398
         */
399
        public DataManager getManager() {
400
                return this.dataManager;
401
        }
402

    
403
        /* (non-Javadoc)
404
         * @see org.gvsig.fmap.dal.raster.spi.CoverageStoreProviderServices#getProvider()
405
         */
406
        public CoverageStoreProvider getProvider() {
407
                return this.provider;
408
        }
409

    
410
        public void notifyChange(String notification) {
411
                delegateObservable
412
                                .notifyObservers(new DefaultCoverageStoreNotification(
413
                                this, notification));
414

    
415
        }
416

    
417

    
418
        public void notifyChange(String notification, Command command) {
419
                delegateObservable
420
                                .notifyObservers(new DefaultCoverageStoreNotification(
421
                                this, notification, command));
422
        }
423

    
424

    
425
        /*
426
         * (non-Javadoc)
427
         *
428
         * @see
429
         * org.gvsig.fmap.dal.feature.spi.FeatureStoreProviderServices#notifyChange
430
         * (java.lang.String, org.gvsig.fmap.dal.resource.Resource)
431
         */
432
        public void notifyChange(String notification, Resource resource) {
433
                delegateObservable.notifyObservers(new DefaultFeatureStoreNotification(
434
                                this, FeatureStoreNotification.RESOURCE_CHANGED));
435
        }
436

    
437
        public void open() throws OpenException {
438
                // TODO: Se puede hacer un open estando en edicion ?
439
                this.notifyChange(DataStoreNotification.BEFORE_OPEN);
440
                this.provider.open();
441
                this.notifyChange(DataStoreNotification.AFTER_OPEN);
442
        }
443

    
444
        public void close() throws CloseException {
445
                // TODO: Se puede hacer un close estando en edicion ?
446
                this.notifyChange(DataStoreNotification.BEFORE_CLOSE);
447
                this.provider.close();
448
                this.notifyChange(DataStoreNotification.AFTER_CLOSE);
449
        }
450

    
451
        protected void doDispose() throws BaseException {
452
                this.notifyChange(DataStoreNotification.BEFORE_DISPOSE);
453
                this.provider.dispose();
454
                if (this.selection != null) {
455
                        this.selection.dispose();
456
                        this.selection = null;
457
                }
458

    
459
                this.parameters = null;
460
                this.notifyChange(DataStoreNotification.AFTER_DISPOSE);
461
                this.delegateObservable.deleteObservers();
462
                this.delegateObservable = null;
463
        }
464

    
465
        public boolean allowWrite() {
466
                return this.provider.allowWrite();
467
        }
468

    
469
        public DataQuery createQuery() {
470
                // TODO Auto-generated method stub
471
                return null;
472
        }
473

    
474
        public DataStore getStore() {
475
                return this;
476
        }
477

    
478
        public CoverageStore getCoverageStore() {
479
                return this;
480
        }
481

    
482
        public void clear() {
483
                if (metadata != null) {
484
                        metadata.clear();
485
                }
486
        }
487

    
488
        public String getProviderName() {
489
                return this.provider.getProviderName();
490
        }
491

    
492
        public String getName() {
493
                return this.provider.getName();
494
        }
495

    
496
        public String getFullName() {
497
                return this.provider.getFullName();
498
        }
499

    
500
    public Interval getInterval() {
501
        // TODO Auto-generated method stub
502
        return null;
503
    }
504

    
505
    public Collection getTimes() {
506
        // TODO Auto-generated method stub
507
        return null;
508
    }
509

    
510
    public Collection getTimes(Interval interval) {
511
        // TODO Auto-generated method stub
512
        return null;
513
    }
514

    
515
    @Override
516
    public void useCache(String providerName, DynObject parameters) throws DataException {
517
        throw new UnsupportedOperationException();
518
    }
519

    
520
    @Override
521
    public DataStoreProviderFactory getProviderFactory() {
522
        DataStoreProviderFactory factory = dataManager.getStoreProviderFactory(parameters.getDataStoreName());
523
        return factory;
524
    }
525
}