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 @ 44259

History | View | Annotate | Download (14.2 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.Collections;
28
import java.util.Iterator;
29
import java.util.List;
30
import java.util.Set;
31

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

    
77
/**
78
 * @author jmvivo
79
 *
80
 */
81
public class DefaultCoverageStore extends AbstractDisposable implements
82
                CoverageStore, CoverageStoreProviderServices, DataStoreInitializer {
83

    
84
//        final static private Logger logger = LoggerFactory
85
//                        .getLogger(DefaultFeatureStore.class);
86

    
87
        private DataStoreParameters parameters = null;
88
        private CoverageSelection selection;
89

    
90
//        private long versionOfUpdate = 0;
91

    
92
        private DefaultDataManager dataManager = null;
93

    
94
        private CoverageStoreProvider provider = null;
95

    
96
        private DelegatedDynObject metadata;
97

    
98
        private DelegateWeakReferencingObservable delegateObservable = new DelegateWeakReferencingObservable(
99
                        this);
100

    
101
        public DefaultCoverageStore() {
102

    
103
        }
104

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

    
117
                this.metadata = (DelegatedDynObject) dynManager
118
                                .createDynObject(
119
                                                MetadataLocator.getMetadataManager().getDefinition(DataStore.SPATIAL_METADATA_DEFINITION_NAME)
120
                                );
121
                this.dataManager = (DefaultDataManager)dataManager;
122
                this.parameters = parameters;
123

    
124
        }
125

    
126

    
127

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

    
138
                this.provider = (CoverageStoreProvider) provider;
139
                this.delegate((DynObject) provider);
140

    
141
        }
142

    
143

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

    
152

    
153
        @Override
154
        public UnmodifiableBasicMap<String,DataStore> getChildren() {
155
                return UnmodifiableBasicMap.EMPTY_UNMODIFIABLEBASICMAP;
156
        }
157
        
158
        /* (non-Javadoc)
159
         * @see org.gvsig.fmap.dal.DataStore#getDataSet()
160
         */
161
        public DataSet getDataSet() throws DataException {
162
                // TODO Auto-generated method stub
163
                return null;
164
        }
165

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

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

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

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

    
189
        }
190

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

    
198
        }
199

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

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

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

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

    
229
        }
230

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

    
237
        }
238

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

    
245
        }
246

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

    
253
        }
254

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

    
261
        }
262

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

    
269
        }
270

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

    
277
        }
278

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

    
285
        }
286

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

    
293
        }
294

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

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

    
309
        }
310

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

    
317
        }
318

    
319
        //
320
        // ====================================================================
321
        // Metadata related methods
322
        //
323

    
324
        public Object getMetadataID() {
325
                return this.provider.getSourceId();
326
        }
327

    
328
        public void delegate(DynObject dynObject) {
329
                this.metadata.delegate(dynObject);
330
        }
331

    
332
        public DynClass getDynClass() {
333
                return this.metadata.getDynClass();
334
        }
335

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

    
340
        public boolean hasDynValue(String name) {
341
                return this.metadata.hasDynValue(name);
342
        }
343

    
344
    @Override
345
    public boolean hasDynMethod(String name) {
346
        return ((DynObject_v2)this.metadata).hasDynMethod(name);
347
    }
348

    
349
        public void implement(DynClass dynClass) {
350
                this.metadata.implement(dynClass);
351
        }
352

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

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

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

    
367
        }
368

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

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

    
387

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

    
397

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

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

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

    
417
        }
418

    
419

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

    
426

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

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

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

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

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

    
467
        public boolean allowWrite() {
468
                return this.provider.allowWrite();
469
        }
470

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

    
476
        public DataStore getStore() {
477
                return this;
478
        }
479

    
480
        public CoverageStore getCoverageStore() {
481
                return this;
482
        }
483

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

    
490
        public String getProviderName() {
491
                return this.provider.getProviderName();
492
        }
493

    
494
        public String getName() {
495
                return this.provider.getName();
496
        }
497

    
498
        public String getFullName() {
499
                return this.provider.getFullName();
500
        }
501

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

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

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

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

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

    
528
    @Override
529
    public DataCache getCache() {
530
        // TODO Auto-generated method stub
531
        return null;
532
    }
533
}