Statistics
| Revision:

gvsig-raster / org.gvsig.raster.mosaic / trunk / org.gvsig.raster.mosaic / org.gvsig.raster.mosaic.io / src / main / java / org / gvsig / raster / mosaic / io / MosaicDataParametersImpl.java @ 723

History | View | Annotate | Download (9.24 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
package org.gvsig.raster.mosaic.io;
23

    
24
import java.util.ArrayList;
25

    
26
import org.gvsig.fmap.dal.spi.DataStoreProvider;
27
import org.gvsig.raster.impl.provider.RasterProvider;
28
import org.gvsig.raster.impl.store.AbstractRasterDataParameters;
29
import org.gvsig.raster.impl.store.AbstractRasterFileDataParameters;
30
import org.gvsig.timesupport.Time;
31
import org.gvsig.tools.ToolsLocator;
32
import org.gvsig.tools.dynobject.DelegatedDynObject;
33
import org.gvsig.tools.dynobject.DynClass;
34
import org.gvsig.tools.dynobject.DynField;
35
import org.gvsig.tools.dynobject.DynObjectManager;
36

    
37
/**
38
 * Parameters for the MosaicProvider
39
 * @author Nacho Brodin (nachobrodin@gmail.com)
40
 */
41
public class MosaicDataParametersImpl extends AbstractRasterFileDataParameters implements MosaicDataParameters {
42
        public static final String            PARAMETERS_DEFINITION_NAME = "MultifileRasterDataParameters";
43
        private static DynClass               DYNCLASS                   = null;
44
        private boolean                       paramsHasChanged           = false;
45
        //private ArrayList<Boolean>            visible                    = new ArrayList<Boolean>();
46
        
47
        public MosaicDataParametersImpl() {
48
                super();
49
                initialize();
50
        }
51
        
52
        protected void initialize() {
53
                delegatedDynObject = (DelegatedDynObject) ToolsLocator
54
                                .getDynObjectManager().createDynObject(
55
                                                DYNCLASS);
56
        }
57
        
58
        public static void registerDynClass() {
59
                DynObjectManager dynman = ToolsLocator.getDynObjectManager();
60
                DynClass dynClass;
61
                DynField field;
62
                
63
                if(dynman == null)
64
                        return;
65
                
66
                if (DYNCLASS == null) {
67
                        dynClass = AbstractRasterDataParameters.registerDynClass(PARAMETERS_DEFINITION_NAME);
68
                        //dynClass = dynman.add(AbstractRasterDataParameters.DYNCLASS_NAME);
69
                        
70
                        field = dynClass.addDynFieldObject(FIELD_PROVIDERS);
71
            field.setDescription("List of providers");
72
            field.setMandatory(false);
73
            field.setClassOfValue(Object.class); 
74
            
75
            field = dynClass.addDynFieldObject(FIELD_PIXELSIZE);
76
            field.setDescription("Pixel size");
77
            field.setMandatory(false);
78
            field.setClassOfValue(Integer.class);
79
            
80
            field = dynClass.addDynFieldObject(FIELD_NODATA);
81
            field.setDescription("Assigned NoData value");
82
            field.setMandatory(false);
83
            field.setClassOfValue(Double.class);
84
            
85
            field = dynClass.addDynFieldObject(FIELD_OVERLAP);
86
            field.setDescription("Overlap method");
87
            field.setMandatory(false);
88
            field.setClassOfValue(Integer.class);
89
            
90
            field = dynClass.addDynFieldObject(FIELD_COLORCORRECTION);
91
            field.setDescription("Color correction method");
92
            field.setMandatory(false);
93
            field.setClassOfValue(Integer.class);
94
            
95
            field = dynClass.addDynFieldObject(FIELD_TIMESELECTION);
96
            field.setDescription("Time selection");
97
            field.setMandatory(false);
98
            field.setClassOfValue(Time.class);
99
            
100
            /*field = dynClass.addDynFieldObject(FIELD_PROVIDER_VISIBLE);
101
            field.setDescription("If the boolean in i position is true, that means that the i provider is visible");
102
            field.setMandatory(false);
103
            field.setClassOfValue(Object.class);*/
104

    
105
                        DYNCLASS = dynClass;
106
                }
107

    
108
        }
109
        
110
        /*
111
         * (non-Javadoc)
112
         * @see org.gvsig.raster.tools.multifile.io.MultifileDataParameters#removeProvider(java.lang.String)
113
         */
114
        public void removeProvider(String uri) {
115
                if(getProviders() != null) {
116
                        ArrayList<RasterProvider> pList = getProviders();
117
                        for (int i = 0; i < pList.size(); i++) {
118
                                RasterProvider rProv = pList.get(i);
119
                                if(rProv.getURIOfFirstProvider().compareTo(uri) == 0) {
120
                                        paramsHasChanged = true;
121
                                        pList.remove(i);
122
                                        return;
123
                                }
124
                        }
125
                }
126
        }
127
        
128
        /*
129
         * (non-Javadoc)
130
         * @see org.gvsig.raster.tools.multifile.io.MultifileDataParameters#addProvider(org.gvsig.raster.impl.provider.RasterProvider)
131
         */
132
        public void addProvider(RasterProvider prov) {
133
                if(getProviders() == null) {
134
                        ArrayList<RasterProvider> pList = new ArrayList<RasterProvider>();
135
                        pList.add(prov);
136
                        setProviders(pList);
137
                } else {
138
                        getProviders().add(prov);
139
                }
140
                paramsHasChanged = true;
141
        }
142
        
143
        /*
144
         * (non-Javadoc)
145
         * @see org.gvsig.raster.mosaic.io.MosaicDataParameters#addNotTiledProvider(org.gvsig.fmap.dal.spi.DataStoreProvider)
146
         */
147
        public boolean addNotTiledProvider(DataStoreProvider prov) {
148
                if(prov instanceof RasterProvider) {
149
                        if(((RasterProvider)prov).isTiled())
150
                                return false;
151
                        else {
152
                                addProvider((RasterProvider)prov);
153
                                return true;
154
                        }
155
                }
156
                return false;
157
        }
158
        
159
        /*
160
         * (non-Javadoc)
161
         * @see org.gvsig.raster.mosaic.io.MosaicDataParameters#existsProvider(java.lang.String)
162
         */
163
        public boolean existsProvider(String fileName) {
164
                ArrayList<RasterProvider> prov = getProviders();
165
                if(prov == null)
166
                        return false;
167
                
168
                for (int i = 0; i < prov.size(); i++) {
169
                        if(prov.get(i).getURI().compareTo(fileName) == 0) {
170
                                return true;
171
                        }
172
                }
173
                return false;
174
        }
175
        
176
        /*
177
         * (non-Javadoc)
178
         * @see org.gvsig.fmap.dal.coverage.store.parameter.MultiDimensionalStoreParameters#setFieldLevel(int)
179
         */
180
        public void setProviders(ArrayList<RasterProvider> provList) {
181
                setDynValue(MosaicDataParameters.FIELD_PROVIDERS, provList);
182
                paramsHasChanged = true;
183
        }
184

    
185
        public String getDataStoreName() {
186
                return MosaicProvider.NAME;
187
        }
188

    
189
        public String getDescription() {
190
                return MosaicProvider.DESCRIPTION;
191
        }
192

    
193
        @SuppressWarnings("unchecked")
194
        public ArrayList<RasterProvider> getProviders() {
195
                return (ArrayList<RasterProvider>)getDynValue(MosaicDataParameters.FIELD_PROVIDERS);
196
        }
197
        
198
        /*
199
         * (non-Javadoc)
200
         * @see org.gvsig.raster.mosaic.io.MosaicDataParameters#getPixelSize()
201
         */
202
        public double getPixelSize() {
203
                Object obj = getDynValue(MosaicDataParameters.FIELD_PIXELSIZE);
204
                if(obj != null)
205
                        return ((Double)obj).doubleValue();
206
                return 0D;
207
        }
208
        
209
        /*
210
         * (non-Javadoc)
211
         * @see org.gvsig.raster.mosaic.io.MosaicDataParameters#setPixelSize()
212
         */
213
        public void setPixelSize(double ps) {
214
                setDynValue(MosaicDataParameters.FIELD_PIXELSIZE, new Double(ps));
215
                paramsHasChanged = true;
216
        }
217
        
218
        /*
219
         * (non-Javadoc)
220
         * @see org.gvsig.raster.mosaic.io.MosaicDataParameters#getNoData()
221
         */
222
        public double getNoData() {
223
                Object obj = getDynValue(MosaicDataParameters.FIELD_NODATA);
224
                if(obj != null)
225
                        return ((Double)obj).doubleValue();
226
                return 0D;
227
        }
228
        
229
        /*
230
         * (non-Javadoc)
231
         * @see org.gvsig.raster.mosaic.io.MosaicDataParameters#setNoData(double)
232
         */
233
        public void setNoData(double nd) {
234
                setDynValue(MosaicDataParameters.FIELD_NODATA, new Double(nd));
235
                paramsHasChanged = true;
236
        }
237

    
238
        /*
239
         * (non-Javadoc)
240
         * @see org.gvsig.raster.mosaic.io.MosaicDataParameters#hasParamsChanged()
241
         */
242
        public boolean hasParamsChanged() {
243
                return paramsHasChanged;
244
        }
245
        
246
        public void resetParamsChanged() {
247
                paramsHasChanged = false;
248
        }
249
        
250
        /*
251
         * (non-Javadoc)
252
         * @see org.gvsig.raster.mosaic.io.MosaicDataParameters#setOverlapMethod(int)
253
         */
254
        public void setOverlapMethod(int overlap) {
255
                setDynValue(MosaicDataParameters.FIELD_OVERLAP, new Integer(overlap));
256
                paramsHasChanged = true;
257
        }
258
        
259
        /*
260
         * (non-Javadoc)
261
         * @see org.gvsig.raster.mosaic.io.MosaicDataParameters#getOverlapMethod()
262
         */
263
        public int getOverlapMethod() {
264
                Object obj = getDynValue(MosaicDataParameters.FIELD_OVERLAP);
265
                if(obj != null)
266
                        return ((Integer)obj).intValue();
267
                return 0;
268
        }
269
        
270
        /*
271
         * (non-Javadoc)
272
         * @see org.gvsig.raster.mosaic.io.MosaicDataParameters#setColorCorrectionMethod(int)
273
         */
274
        public void setColorCorrectionMethod(int colorCorrection) {
275
                setDynValue(MosaicDataParameters.FIELD_COLORCORRECTION, new Integer(colorCorrection));
276
                paramsHasChanged = true;
277
        }
278
        
279
        /*
280
         * (non-Javadoc)
281
         * @see org.gvsig.raster.mosaic.io.MosaicDataParameters#getColorCorrectionMethod()
282
         */
283
        public int getColorCorrectionMethod() {
284
                Object obj = getDynValue(MosaicDataParameters.FIELD_COLORCORRECTION);
285
                if(obj != null)
286
                        return ((Integer)obj).intValue();
287
                return 0;
288
        }
289
        
290
        /*
291
         * (non-Javadoc)
292
         * @see org.gvsig.raster.mosaic.io.MosaicDataParameters#setTimeSelection(Time)
293
         */
294
        public void setTimeSelection(Time timeSelection) {
295
                setDynValue(MosaicDataParameters.FIELD_TIMESELECTION, timeSelection);
296
                paramsHasChanged = true;
297
        }
298
        
299
        /*
300
         * (non-Javadoc)
301
         * @see org.gvsig.raster.mosaic.io.MosaicDataParameters#getTimeSelection()
302
         */
303
        public Time getTimeSelection() {
304
                Object obj = getDynValue(MosaicDataParameters.FIELD_TIMESELECTION);
305
                if(obj != null)
306
                        return ((Time)obj);
307
                return null;
308
        }
309
}