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 | 727 | fdiaz | /* 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 | } |