Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.compat.cdc / org.gvsig.fmap.dal / org.gvsig.fmap.dal.spi / src / main / java / org / gvsig / fmap / dal / raster / spi / AbstractCoverageStoreProvider.java @ 40435

History | View | Annotate | Download (6.04 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
/*
24
* AUTHORS (In addition to CIT):
25
* 2009 IVER T.I   {{Task}}
26
*/
27

    
28
/**
29
 *
30
 */
31
package org.gvsig.fmap.dal.raster.spi;
32

    
33
import org.gvsig.fmap.dal.DALLocator;
34
import org.gvsig.fmap.dal.DataServerExplorer;
35
import org.gvsig.fmap.dal.DataStoreParameters;
36
import org.gvsig.fmap.dal.exception.CloseException;
37
import org.gvsig.fmap.dal.exception.DataException;
38
import org.gvsig.fmap.dal.exception.InitializeException;
39
import org.gvsig.fmap.dal.exception.OpenException;
40
import org.gvsig.fmap.dal.exception.ReadException;
41
import org.gvsig.fmap.dal.exception.ValidateDataParametersException;
42
import org.gvsig.fmap.dal.raster.CoverageSelection;
43
import org.gvsig.fmap.dal.resource.spi.ResourceManagerProviderServices;
44
import org.gvsig.fmap.dal.resource.spi.ResourceProvider;
45
import org.gvsig.fmap.dal.spi.DataStoreProviderServices;
46
import org.gvsig.fmap.geom.primitive.Envelope;
47
import org.gvsig.tools.dispose.impl.AbstractDisposable;
48
import org.gvsig.tools.dynobject.DelegatedDynObject;
49
import org.gvsig.tools.dynobject.DynClass;
50
import org.gvsig.tools.dynobject.DynObject;
51
import org.gvsig.tools.dynobject.exception.DynFieldNotFoundException;
52
import org.gvsig.tools.dynobject.exception.DynMethodException;
53
import org.gvsig.tools.exception.BaseException;
54

    
55

    
56
/**
57
 * @author jmvivo
58
 *
59
 */
60
public abstract class AbstractCoverageStoreProvider extends AbstractDisposable
61
                implements CoverageStoreProvider {
62
        protected CoverageStoreProviderServices store;
63
        protected DelegatedDynObject metadata;
64
        protected DataStoreParameters parameters;
65

    
66

    
67
        protected AbstractCoverageStoreProvider(DataStoreParameters params,
68
                        DataStoreProviderServices storeServices, DynObject metadata) {
69
                init(params, storeServices, metadata);
70
        }
71

    
72
        protected AbstractCoverageStoreProvider(DataStoreParameters params,
73
                        DataStoreProviderServices storeServices) {
74
                init(params, storeServices, null);
75
        }
76
        
77
        protected AbstractCoverageStoreProvider() {
78
        }
79
        
80
        protected void init(DataStoreParameters params,
81
                        DataStoreProviderServices storeServices, DynObject metadata) {
82
                this.store = (CoverageStoreProviderServices) storeServices;
83
                this.metadata = (DelegatedDynObject) metadata;
84
                this.parameters = params;
85
        }
86
        
87
        /**
88
         * Gets the DataStoreParameters
89
         * @return DataStoreParameters
90
         */
91
        public DataStoreParameters getDataStoreParameters() {
92
                return parameters;
93
        }
94

    
95
        /**
96
         * Set metada container if this not set at construction time and only in one
97
         * time. In other case an Exception will be throw
98
         *
99
         * @param metadata
100
         */
101
        protected void setMetadata(DynObject metadata) {
102
                if (this.metadata != null) {
103
                        // FIXME Exception
104
                        throw new IllegalStateException();
105
                }
106
                this.metadata = (DelegatedDynObject) metadata;
107
        }
108

    
109
        protected ResourceProvider createResource(String type, Object[] params)
110
                        throws InitializeException {
111
                ResourceManagerProviderServices manager = (ResourceManagerProviderServices) DALLocator
112
                                .getResourceManager();
113
                ResourceProvider resource = manager.createAddResource(type, params);
114
                return resource;
115
        }
116

    
117
        public CoverageStoreProviderServices getStoreServices() {
118
                return this.store;
119
        }
120

    
121
        public String getClassName() {
122
                return this.getClass().getName();
123
        }
124

    
125
        public boolean allowWrite() {
126
                return false;
127
        }
128

    
129
        public CoverageSelection createCoverageSelection() throws DataException {
130
                return this.store.createDefaultCoverageSelection();
131
        }
132

    
133
        public void refresh() throws OpenException {
134
                // Do nothing by default
135
        }
136

    
137
        public void close() throws CloseException {
138
                // Do nothing by default
139
        }
140

    
141
        protected void doDispose() throws BaseException {
142
                this.metadata = null;
143
                this.store = null;
144
                this.parameters = null;
145
        }
146

    
147
        public Envelope getEnvelope() throws DataException {
148
                return null;
149
        }
150

    
151
        public abstract DataServerExplorer getExplorer() throws ReadException,
152
                        ValidateDataParametersException;
153

    
154
        public void delegate(DynObject dynObject) {
155
                if (this.metadata == null) {
156
                        return;
157
                }
158
                this.metadata.delegate(dynObject);
159
        }
160

    
161
        public DynClass getDynClass() {
162
                if (this.metadata == null) {
163
                        return null;
164
                }
165
                return this.metadata.getDynClass();
166
        }
167

    
168
        public Object getDynValue(String name) throws DynFieldNotFoundException {
169
                if (this.metadata == null) {
170
                        return null;
171
                }
172
                // TODO this.open??
173
                return this.metadata.getDynValue(name);
174
        }
175

    
176
        public boolean hasDynValue(String name) {
177
                if (this.metadata == null) {
178
                        return false;
179
                }
180
                // TODO this.open??
181
                return this.metadata.hasDynValue(name);
182
        }
183

    
184
        public void implement(DynClass dynClass) {
185
                if (this.metadata == null) {
186
                        return;
187
                }
188
                this.metadata.implement(dynClass);
189

    
190
        }
191

    
192
        public Object invokeDynMethod(int code, DynObject context)
193
                        throws DynMethodException {
194
                if (this.metadata == null) {
195
                        return null;
196
                }
197
                // TODO this.open??
198
                return this.metadata.invokeDynMethod(this, code, context);
199
        }
200

    
201
        public Object invokeDynMethod(String name, DynObject context)
202
                        throws DynMethodException {
203
                if (this.metadata == null) {
204
                        return null;
205
                }
206
                // TODO this.open??
207
                return this.metadata.invokeDynMethod(this, name, context);
208
        }
209

    
210
        public void setDynValue(String name, Object value)
211
                        throws DynFieldNotFoundException {
212
                if (this.metadata == null) {
213
                        return;
214
                }
215
                // TODO this.open??
216
                this.metadata.setDynValue(name, value);
217
        }
218

    
219
        public void clear() {
220
                if (metadata != null) {
221
                        metadata.clear();
222
                }
223
        }
224
}