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

History | View | Annotate | Download (13.8 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.exception.DynFieldNotFoundException;
63
import org.gvsig.tools.dynobject.exception.DynMethodException;
64
import org.gvsig.tools.exception.BaseException;
65
import org.gvsig.tools.observer.Observer;
66
import org.gvsig.tools.observer.impl.DelegateWeakReferencingObservable;
67
import org.gvsig.tools.persistence.PersistentState;
68
import org.gvsig.tools.persistence.exception.PersistenceException;
69
import org.gvsig.tools.undo.command.Command;
70
import org.gvsig.tools.visitor.Visitor;
71

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

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

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

    
85
//        private long versionOfUpdate = 0;
86

    
87
        private DefaultDataManager dataManager = null;
88

    
89
        private CoverageStoreProvider provider = null;
90

    
91
        private DelegatedDynObject metadata;
92

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

    
96
        public DefaultCoverageStore() {
97

    
98
        }
99

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

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

    
119
        }
120

    
121

    
122

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

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

    
136
        }
137

    
138

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

    
147

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

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

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

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

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

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

    
186
        }
187

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

    
195
        }
196

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

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

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

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

    
226
        }
227

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

    
234
        }
235

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

    
242
        }
243

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

    
250
        }
251

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

    
258
        }
259

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

    
266
        }
267

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

    
274
        }
275

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

    
282
        }
283

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

    
290
        }
291

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

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

    
306
        }
307

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

    
314
        }
315

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

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

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

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

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

    
337
        public boolean hasDynValue(String name) {
338
                return this.metadata.hasDynValue(name);
339
        }
340

    
341
        public void implement(DynClass dynClass) {
342
                this.metadata.implement(dynClass);
343
        }
344

    
345
        public Object invokeDynMethod(String name, Object[] args)
346
                        throws DynMethodException {
347
                return this.metadata.invokeDynMethod(this, name, args);
348
        }
349

    
350
        public Object invokeDynMethod(int code, Object[] args)
351
                        throws DynMethodException {
352
                return this.metadata.invokeDynMethod(this, code, args);
353
        }
354

    
355
        public void setDynValue(String name, Object value)
356
                        throws DynFieldNotFoundException {
357
                this.metadata.setDynValue(name, value);
358

    
359
        }
360

    
361
        /*
362
         * (non-Javadoc)
363
         *
364
         * @see org.gvsig.metadata.Metadata#getMetadataChildren()
365
         */
366
        public Set getMetadataChildren() {
367
                return null;
368
        }
369

    
370
        /*
371
         * (non-Javadoc)
372
         *
373
         * @see org.gvsig.metadata.Metadata#getMetadataName()
374
         */
375
        public String getMetadataName() {
376
                return this.provider.getProviderName();
377
        }
378

    
379

    
380
        /* (non-Javadoc)
381
         * @see org.gvsig.fmap.dal.raster.spi.CoverageStoreProviderServices#createDefaultCoverageSelection()
382
         */
383
        public CoverageSelection createDefaultCoverageSelection()
384
                        throws DataException {
385
                // TODO Auto-generated method stub
386
                return null;
387
        }
388

    
389

    
390
        /* (non-Javadoc)
391
         * @see org.gvsig.fmap.dal.raster.spi.CoverageStoreProviderServices#getManager()
392
         */
393
        public DataManager getManager() {
394
                return this.dataManager;
395
        }
396

    
397
        /* (non-Javadoc)
398
         * @see org.gvsig.fmap.dal.raster.spi.CoverageStoreProviderServices#getProvider()
399
         */
400
        public CoverageStoreProvider getProvider() {
401
                return this.provider;
402
        }
403

    
404
        public void notifyChange(String notification) {
405
                delegateObservable
406
                                .notifyObservers(new DefaultCoverageStoreNotification(
407
                                this, notification));
408

    
409
        }
410

    
411

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

    
418

    
419
        /*
420
         * (non-Javadoc)
421
         *
422
         * @see
423
         * org.gvsig.fmap.dal.feature.spi.FeatureStoreProviderServices#notifyChange
424
         * (java.lang.String, org.gvsig.fmap.dal.resource.Resource)
425
         */
426
        public void notifyChange(String notification, Resource resource) {
427
                delegateObservable.notifyObservers(new DefaultFeatureStoreNotification(
428
                                this, FeatureStoreNotification.RESOURCE_CHANGED));
429
        }
430

    
431
        public void open() throws OpenException {
432
                // TODO: Se puede hacer un open estando en edicion ?
433
                this.notifyChange(DataStoreNotification.BEFORE_OPEN);
434
                this.provider.open();
435
                this.notifyChange(DataStoreNotification.AFTER_OPEN);
436
        }
437

    
438
        public void close() throws CloseException {
439
                // TODO: Se puede hacer un close estando en edicion ?
440
                this.notifyChange(DataStoreNotification.BEFORE_CLOSE);
441
                this.provider.close();
442
                this.notifyChange(DataStoreNotification.AFTER_CLOSE);
443
        }
444

    
445
        protected void doDispose() throws BaseException {
446
                this.notifyChange(DataStoreNotification.BEFORE_DISPOSE);
447
                this.provider.dispose();
448
                if (this.selection != null) {
449
                        this.selection.dispose();
450
                        this.selection = null;
451
                }
452

    
453
                this.parameters = null;
454
                this.notifyChange(DataStoreNotification.AFTER_DISPOSE);
455
                this.delegateObservable.deleteObservers();
456
                this.delegateObservable = null;
457
        }
458

    
459
        public boolean allowWrite() {
460
                return this.provider.allowWrite();
461
        }
462

    
463
        public DataQuery createQuery() {
464
                // TODO Auto-generated method stub
465
                return null;
466
        }
467

    
468
        public DataStore getStore() {
469
                return this;
470
        }
471

    
472
        public CoverageStore getCoverageStore() {
473
                return this;
474
        }
475

    
476
        public void clear() {
477
                if (metadata != null) {
478
                        metadata.clear();
479
                }
480
        }
481

    
482
        public String getProviderName() {
483
                return this.provider.getProviderName();
484
        }
485

    
486
        public String getName() {
487
                return this.provider.getName();
488
        }
489

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

    
494
    public Interval getInterval() {
495
        // TODO Auto-generated method stub
496
        return null;
497
    }
498

    
499
    public Collection getTimes() {
500
        // TODO Auto-generated method stub
501
        return null;
502
    }
503

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

    
509
    @Override
510
    public void useCache(String providerName, DynObject parameters) throws DataException {
511
        throw new UnsupportedOperationException();
512
    }
513

    
514
    @Override
515
    public DataStoreProviderFactory getFactory() {
516
        DataStoreProviderFactory factory = dataManager.getStoreProviderFactory(parameters.getDataStoreName());
517
        return factory;
518
    }
519
}