Statistics
| Revision:

gvsig-3d / org.gvsig.netcdf3d / trunk / org.gvsig.netcdf3d / org.gvsig.netcdf3d.lib / org.gvsig.netcdf3d.lib.impl / src / main / java / org / gvsig / netcdf3d / lib / impl / DefaultNetCDFLoaderParameters.java @ 727

History | View | Annotate | Download (8.09 KB)

1
/* gvSIG. Desktop Geographic Information System.
2
 *
3
 * Copyright ? 2007-2016 gvSIG Association
4
 *
5
 * This program is free software; you can redistribute it and/or
6
 * modify it under the terms of the GNU General Public License
7
 * as published by the Free Software Foundation; either version 2
8
 * of the License, or (at your option) any later version.
9
 *
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 * GNU General Public License for more details.
14
 *
15
 * You should have received a copy of the GNU General Public License
16
 * along with this program; if not, write to the Free Software
17
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
18
 * MA  02110-1301, USA.
19
 *
20
 * For any additional information, do not hesitate to contact us
21
 * at info AT gvsig.com, or visit our website www.gvsig.com.
22
 */
23
package org.gvsig.netcdf3d.lib.impl;
24

    
25
import java.util.Calendar;
26

    
27
import org.gvsig.fmap.mapcontext.layers.FLayer;
28
import org.gvsig.netcdf3d.lib.api.NetCDFLoaderParameters;
29
import org.gvsig.tools.ToolsLocator;
30
import org.gvsig.tools.dynobject.DynStruct;
31
import org.gvsig.tools.persistence.PersistenceManager;
32
import org.gvsig.tools.persistence.PersistentState;
33
import org.gvsig.tools.persistence.exception.PersistenceException;
34
import org.gvsig.view3d.lib.api.View3DLocator;
35
import org.gvsig.view3d.lib.api.exception.FactoryNotRegisteredException;
36
import org.gvsig.view3d.lib.api.loader.AbstractLoaderParameters;
37
import org.gvsig.view3d.lib.api.loader.LoaderFactory;
38
import org.gvsig.view3d.lib.api.loader.RasterLoaderParameters;
39
import org.slf4j.Logger;
40
import org.slf4j.LoggerFactory;
41

    
42
/**
43
 * Default implementation of {@link NetCDFLoaderParameters}
44
 * 
45
 * @author <a href="mailto:lmarques@disid.com">Lluis Marques</a>
46
 *
47
 */
48
public class DefaultNetCDFLoaderParameters extends AbstractLoaderParameters implements
49
    NetCDFLoaderParameters {
50

    
51
    private static final Logger LOG = LoggerFactory.getLogger(DefaultNetCDFLoaderParameters.class);
52

    
53
    public static final String PERSISTENCE_DEFINITION_NAME = "NetCDFLoaderParameters";
54
    public static final String PERSISTENCE_DEFINITION_DESCRIPTION =
55
        "Parameters that defines NetCDF raster load mode";
56

    
57
    public static final String RASTER_LOADER_PARAMETERS_FIELD_NAME = "rasterLoaderParameters";
58
    public static final String VARIABLE_FIELD_NAME = "variable";
59
    public static final String BAND_FIELD_NAME = "band";
60
    public static final String LEVEL_FIELD_NAME = "level";
61
    public static final String LAPSE_FIELD_NAME = "lapse";
62
    public static final String START_DATE_FIELD_NAME = "startDate";
63
    public static final String FINAL_DATE_FIELD_NAME = "finalDate";
64

    
65
    private RasterLoaderParameters rasterParameters;
66
    private String variable;
67
    private int band;
68
    private double level = -1;
69
    private double lapse = 1;
70
    private Calendar startDate;
71
    private Calendar finalDate;
72

    
73
    /**
74
     * Default constructor
75
     */
76
    public DefaultNetCDFLoaderParameters() {
77

    
78
    }
79

    
80
    /**
81
     * 
82
     * @param layer
83
     */
84
    public DefaultNetCDFLoaderParameters(FLayer layer) {
85
        super(layer);
86
        try {
87
            LoaderFactory loaderFactory =
88
                View3DLocator.getManager().getLoaderFactory(RasterLoaderParameters.NAME);
89
            rasterParameters = (RasterLoaderParameters) loaderFactory.createParameters(layer);
90
        } catch (FactoryNotRegisteredException e) {
91
            LOG.error("Can not get RasterLoader parameters", e);
92
            throw new IllegalStateException(String.format(
93
                "To create NetCDF loader parameters, it is necessary that %1s is registered",
94
                RasterLoaderParameters.NAME));
95
        }
96
    }
97

    
98
    @Override
99
    public double getLevelZeroResolution() {
100
        return this.rasterParameters.getLevelZeroResolution();
101
    }
102

    
103
    @Override
104
    public void setLevelZeroResolution(double value) {
105
        this.rasterParameters.setLevelZeroResolution(value);
106
    }
107

    
108
    @Override
109
    public int getMaxLevel() {
110
        return this.rasterParameters.getMaxLevel();
111
    }
112

    
113
    @Override
114
    public void setMaxLevel(int level) {
115
        this.rasterParameters.setMaxLevel(level);
116
    }
117

    
118
    @Override
119
    public int getMinLevel() {
120
        return this.rasterParameters.getMinLevel();
121
    }
122

    
123
    @Override
124
    public void setMinLevel(int level) {
125
        this.rasterParameters.setMinLevel(level);
126
    }
127

    
128
    @Override
129
    public int getTileSize() {
130
        return this.rasterParameters.getTileSize();
131
    }
132

    
133
    @Override
134
    public void setTileSize(int size) {
135
        this.rasterParameters.setTileSize(size);
136
    }
137

    
138
    @Override
139
    public double getNoData() {
140
        return this.rasterParameters.getNoData();
141
    }
142

    
143
    @Override
144
    public void setNoData(double noData) {
145
        this.rasterParameters.setNoData(noData);
146
    }
147

    
148
    @Override
149
    public String getName() {
150
        return NetCDFLoaderParameters.NAME;
151
    }
152

    
153
    @Override
154
    public String getVariable() {
155
        return this.variable;
156
    }
157

    
158
    @Override
159
    public void setVariable(String variable) {
160
        this.variable = variable;
161
    }
162

    
163
    @Override
164
    public double getLevel() {
165
        return this.level;
166
    }
167

    
168
    @Override
169
    public void setLevel(double level) {
170
        this.level = level;
171
    }
172

    
173
    @Override
174
    public Calendar getStartDate() {
175
        return this.startDate;
176
    }
177

    
178
    @Override
179
    public void setStartDate(Calendar startDate) {
180
        this.startDate = startDate;
181

    
182
    }
183

    
184
    @Override
185
    public Calendar getFinalDate() {
186
        return this.finalDate;
187
    }
188

    
189
    @Override
190
    public void setFinalDate(Calendar finalDate) {
191
        this.finalDate = finalDate;
192
    }
193

    
194
    @Override
195
    public double getLapse() {
196
        return this.lapse;
197
    }
198

    
199
    @Override
200
    public void setLapse(double lapse) {
201
        this.lapse = lapse;
202
    }
203
    
204
    @Override
205
    public int getBand() {
206
        return this.band;
207
    }
208

    
209
    @Override
210
    public void setBand(int band) {
211
        this.band = band;
212
    }
213
    
214
    public static void registerPersistenceDefinition() {
215

    
216
        PersistenceManager persistenceManager = ToolsLocator.getPersistenceManager();
217
        DynStruct definition = persistenceManager.getDefinition(PERSISTENCE_DEFINITION_NAME);
218
        if (definition == null) {
219

    
220
            definition =
221
                persistenceManager.addDefinition(DefaultNetCDFLoaderParameters.class,
222
                    PERSISTENCE_DEFINITION_NAME, PERSISTENCE_DEFINITION_DESCRIPTION, null, null);
223

    
224
            definition.addDynFieldObject(RASTER_LOADER_PARAMETERS_FIELD_NAME).setClassOfValue(
225
                RasterLoaderParameters.class);
226
            definition.addDynFieldString(VARIABLE_FIELD_NAME);
227
            definition.addDynFieldInt(BAND_FIELD_NAME);
228
            definition.addDynFieldString(LEVEL_FIELD_NAME);
229
            definition.addDynFieldDouble(LAPSE_FIELD_NAME);
230
            definition.addDynFieldObject(START_DATE_FIELD_NAME).setClassOfValue(Calendar.class);
231
            definition.addDynFieldObject(FINAL_DATE_FIELD_NAME).setClassOfValue(Calendar.class);;
232
        }
233
    }
234

    
235
    @Override
236
    protected void doSaveToState(PersistentState state) throws PersistenceException {
237
        state.set(RASTER_LOADER_PARAMETERS_FIELD_NAME, this.rasterParameters);
238
        state.set(VARIABLE_FIELD_NAME, this.variable);
239
        state.set(BAND_FIELD_NAME, this.band);
240
        state.set(LEVEL_FIELD_NAME, this.level);
241
        state.set(LAPSE_FIELD_NAME, this.lapse);
242
        state.set(START_DATE_FIELD_NAME, this.startDate);
243
        state.set(FINAL_DATE_FIELD_NAME, this.finalDate);
244
    }
245

    
246
    @Override
247
    protected void doLoadFromState(PersistentState state) throws PersistenceException {
248
        this.rasterParameters =
249
            (RasterLoaderParameters) state.get(RASTER_LOADER_PARAMETERS_FIELD_NAME);
250
        this.variable = state.getString(VARIABLE_FIELD_NAME);
251
        this.band = state.getInt(BAND_FIELD_NAME);
252
        this.level = state.getDouble(LEVEL_FIELD_NAME);
253
        this.lapse = state.getDouble(LAPSE_FIELD_NAME);
254
        this.startDate = (Calendar) state.get(START_DATE_FIELD_NAME);
255
        this.finalDate = (Calendar) state.get(FINAL_DATE_FIELD_NAME);
256
    }
257
}