Revision 2320 org.gvsig.raster.netcdf/branches/org.gvsig.raster.netcdf_dataaccess_refactoring/org.gvsig.raster.netcdf.io/src/main/java/org/gvsig/raster/netcdf/io/NetCDFDataParametersImpl.java
NetCDFDataParametersImpl.java | ||
---|---|---|
34 | 34 |
import java.util.Iterator; |
35 | 35 |
import java.util.List; |
36 | 36 |
|
37 |
import org.gvsig.raster.impl.store.AbstractRasterDataParameters; |
|
38 | 37 |
import org.gvsig.raster.impl.store.AbstractRasterFileDataParameters; |
39 | 38 |
import org.gvsig.tools.ToolsLocator; |
40 | 39 |
import org.gvsig.tools.dynobject.DelegatedDynObject; |
41 |
import org.gvsig.tools.dynobject.DynClass; |
|
42 |
import org.gvsig.tools.dynobject.DynField; |
|
43 |
import org.gvsig.tools.dynobject.DynObjectManager; |
|
44 | 40 |
import org.gvsig.tools.dynobject.DynStruct; |
45 | 41 |
import org.gvsig.tools.persistence.PersistenceManager; |
46 |
import org.gvsig.tools.persistence.PersistentState; |
|
47 |
import org.gvsig.tools.persistence.exception.PersistenceException; |
|
48 | 42 |
|
49 | 43 |
import ucar.nc2.Dimension; |
50 | 44 |
import ucar.nc2.NetcdfFile; |
... | ... | |
60 | 54 |
* @author Nacho Brodin (nachobrodin@gmail.com) |
61 | 55 |
*/ |
62 | 56 |
public class NetCDFDataParametersImpl extends AbstractRasterFileDataParameters implements NetCDFDataParameters { |
63 |
public static final String PARAMETERS_DEFINITION_NAME = "NetCDFRasterDataParameters"; |
|
64 |
private static DynClass DYNCLASS = null; |
|
65 |
|
|
66 | 57 |
private ArrayList<String[]> gridVarList = null; |
67 | 58 |
private ArrayList<Variable> varList = null; |
68 | 59 |
private HashMap<String, double[]> rankByVar = new HashMap<String, double[]>(); |
... | ... | |
79 | 70 |
protected void initialize() { |
80 | 71 |
delegatedDynObject = (DelegatedDynObject) ToolsLocator |
81 | 72 |
.getDynObjectManager().createDynObject( |
82 |
DYNCLASS);
|
|
73 |
registerDynClass());
|
|
83 | 74 |
} |
84 | 75 |
|
85 |
public static void registerDynClass() { |
|
86 |
DynObjectManager dynman = ToolsLocator.getDynObjectManager(); |
|
87 |
DynClass dynClass; |
|
88 |
DynField field; |
|
76 |
public static DynStruct registerDynClass() { |
|
77 |
PersistenceManager manager = ToolsLocator.getPersistenceManager(); |
|
78 |
DynStruct definition = manager.getDefinition("NetCDFDataParametersImpl_Persistent"); |
|
79 |
if( definition == null ) { |
|
80 |
definition = manager.addDefinition( |
|
81 |
NetCDFDataParametersImpl.class, |
|
82 |
"NetCDFDataParametersImpl_Persistent", |
|
83 |
"NetCDFDataParametersImpl Persistent", |
|
84 |
null, |
|
85 |
null |
|
86 |
); |
|
87 |
AbstractRasterFileDataParameters.registerDynClass(definition); |
|
88 |
} |
|
89 | 89 |
|
90 |
if(dynman == null) |
|
91 |
return; |
|
90 |
definition.addDynFieldString(FIELD_VARIABLE) |
|
91 |
.setDescription("Grid variable") |
|
92 |
.setMandatory(false); |
|
93 |
|
|
94 |
definition.addDynFieldInt(FIELD_LEVEL) |
|
95 |
.setDescription("Level selected") |
|
96 |
.setMandatory(false); |
|
97 |
|
|
98 |
definition.addDynFieldInt(FIELD_TIME) |
|
99 |
.setDescription("Time selected") |
|
100 |
.setMandatory(false); |
|
92 | 101 |
|
93 |
if (DYNCLASS == null) { |
|
94 |
dynClass = AbstractRasterDataParameters.registerDynClass(PARAMETERS_DEFINITION_NAME); |
|
95 |
//dynClass = dynman.add(AbstractRasterDataParameters.DYNCLASS_NAME); |
|
96 |
|
|
97 |
field = dynClass.addDynFieldString(FIELD_VARIABLE); |
|
98 |
field.setDescription("Grid variable"); |
|
99 |
field.setMandatory(false); |
|
100 |
field.setClassOfValue(String.class); |
|
101 |
|
|
102 |
field = dynClass.addDynFieldInt(FIELD_LEVEL); |
|
103 |
field.setDescription("Level selected"); |
|
104 |
field.setMandatory(false); |
|
105 |
field.setClassOfValue(Integer.class); |
|
106 |
|
|
107 |
field = dynClass.addDynFieldInt(FIELD_TIME); |
|
108 |
field.setDescription("Time selected"); |
|
109 |
field.setMandatory(false); |
|
110 |
field.setClassOfValue(Integer.class); |
|
111 |
|
|
112 |
DYNCLASS = dynClass; |
|
113 |
} |
|
114 |
|
|
102 |
definition.addDynFieldString(FIELD_XDIM). |
|
103 |
setMandatory(false); |
|
104 |
|
|
105 |
definition.addDynFieldString(FIELD_YDIM). |
|
106 |
setMandatory(false); |
|
107 |
|
|
108 |
return definition; |
|
115 | 109 |
} |
116 | 110 |
|
117 | 111 |
/** |
... | ... | |
234 | 228 |
return yDimVariable; |
235 | 229 |
} |
236 | 230 |
|
237 |
/* |
|
238 |
* (non-Javadoc) |
|
239 |
* @see org.gvsig.fmap.dal.DataStoreParameters#getDataStoreName() |
|
240 |
*/ |
|
241 | 231 |
public String getDataStoreName() { |
242 | 232 |
return NetCDFProvider.NAME; |
243 | 233 |
} |
244 | 234 |
|
245 |
/* |
|
246 |
* (non-Javadoc) |
|
247 |
* @see org.gvsig.fmap.dal.DataStoreParameters#getDescription() |
|
248 |
*/ |
|
249 | 235 |
public String getDescription() { |
250 | 236 |
return NetCDFProvider.DESCRIPTION; |
251 | 237 |
} |
252 | 238 |
|
253 |
/* |
|
254 |
* (non-Javadoc) |
|
255 |
* @see org.gvsig.fmap.dal.coverage.store.parameter.TimeStoreParameters#selectNextInstant() |
|
256 |
*/ |
|
257 | 239 |
public void selectNextInstant() { |
258 | 240 |
int i = getFieldTime() + 1; |
259 | 241 |
if(i < getTimeListLength()) { |
... | ... | |
261 | 243 |
} |
262 | 244 |
} |
263 | 245 |
|
264 |
/* |
|
265 |
* (non-Javadoc) |
|
266 |
* @see org.gvsig.fmap.dal.coverage.store.parameter.TimeStoreParameters#selectPrevInstant() |
|
267 |
*/ |
|
268 | 246 |
public void selectPrevInstant() { |
269 | 247 |
int i = getFieldTime() - 1; |
270 | 248 |
if(i >= 0) { |
... | ... | |
272 | 250 |
} |
273 | 251 |
} |
274 | 252 |
|
275 |
/* |
|
276 |
* (non-Javadoc) |
|
277 |
* @see org.gvsig.fmap.dal.coverage.store.parameter.TimeStoreParameters#goTo(int) |
|
278 |
*/ |
|
279 | 253 |
public void goTo(int position) { |
280 | 254 |
if(position < getTimeListLength() && position >= 0) { |
281 | 255 |
setDynValue(NetCDFDataParameters.FIELD_TIME, position); |
282 | 256 |
} |
283 | 257 |
} |
284 | 258 |
|
285 |
/* |
|
286 |
* (non-Javadoc) |
|
287 |
* @see org.gvsig.fmap.dal.coverage.store.parameter.TimeStoreParameters#getFieldTime() |
|
288 |
*/ |
|
289 | 259 |
public int getFieldTime() { |
290 |
if(hasDynValue(NetCDFDataParameters.FIELD_TIME)) { |
|
260 |
if(hasDynValue(NetCDFDataParameters.FIELD_TIME) && getDynValue(NetCDFDataParameters.FIELD_TIME) != null) {
|
|
291 | 261 |
return ((Integer)getDynValue(NetCDFDataParameters.FIELD_TIME)).intValue(); |
292 | 262 |
} |
293 | 263 |
return 0; |
294 | 264 |
} |
295 | 265 |
|
296 |
/* |
|
297 |
* (non-Javadoc) |
|
298 |
* @see org.gvsig.raster.netcdf.io.NetCDFDataParameters#getFieldLevel() |
|
299 |
*/ |
|
300 | 266 |
public int getFieldLevel() { |
301 |
if(hasDynValue(NetCDFDataParameters.FIELD_LEVEL)) { |
|
267 |
if(hasDynValue(NetCDFDataParameters.FIELD_LEVEL) && getDynValue(NetCDFDataParameters.FIELD_LEVEL) != null) {
|
|
302 | 268 |
return ((Integer)getDynValue(NetCDFDataParameters.FIELD_LEVEL)).intValue(); |
303 | 269 |
} |
304 | 270 |
return 0; |
305 | 271 |
} |
306 | 272 |
|
307 |
/* |
|
308 |
* (non-Javadoc) |
|
309 |
* @see org.gvsig.fmap.dal.coverage.store.parameter.TimeStoreParameters#getFieldVariable() |
|
310 |
*/ |
|
311 | 273 |
public String getStringVariable() { |
312 | 274 |
if(hasDynValue(NetCDFDataParameters.FIELD_VARIABLE)) { |
313 | 275 |
return (String)getDynValue(NetCDFDataParameters.FIELD_VARIABLE); |
... | ... | |
330 | 292 |
return null; |
331 | 293 |
} |
332 | 294 |
|
333 |
/* |
|
334 |
* (non-Javadoc) |
|
335 |
* @see org.gvsig.fmap.dal.coverage.store.parameter.TimeStoreParameters#getFieldLevel() |
|
336 |
*/ |
|
337 | 295 |
public String getStringLevel() { |
338 | 296 |
if(!hasDynValue(NetCDFDataParameters.FIELD_LEVEL)) { |
339 | 297 |
//We will use the first level in the list |
... | ... | |
347 | 305 |
return levelList[index] + ""; |
348 | 306 |
} |
349 | 307 |
|
350 |
/* |
|
351 |
* (non-Javadoc) |
|
352 |
* @see org.gvsig.fmap.dal.coverage.store.parameter.TimeStoreParameters#getStringTime() |
|
353 |
*/ |
|
354 | 308 |
public String getStringTime() { |
355 | 309 |
if(!hasDynValue(NetCDFDataParameters.FIELD_TIME)) { |
356 | 310 |
setFieldTime(0); |
... | ... | |
377 | 331 |
return 0; |
378 | 332 |
} |
379 | 333 |
|
380 |
/* |
|
381 |
* (non-Javadoc) |
|
382 |
* @see org.gvsig.fmap.dal.coverage.store.parameter.MultiDimensionalStoreParameters#setFieldVariable(java.lang.String) |
|
383 |
*/ |
|
384 | 334 |
public void setFieldVariable(String variable) { |
385 | 335 |
setDynValue(NetCDFDataParameters.FIELD_VARIABLE, variable); |
386 | 336 |
} |
387 | 337 |
|
388 |
/* |
|
389 |
* (non-Javadoc) |
|
390 |
* @see org.gvsig.fmap.dal.coverage.store.parameter.TimeStoreParameters#setFieldTime(int) |
|
391 |
*/ |
|
392 | 338 |
public void setFieldTime(int timePosInList) { |
393 | 339 |
setDynValue(NetCDFDataParameters.FIELD_TIME, timePosInList); |
394 | 340 |
} |
395 | 341 |
|
396 |
/* |
|
397 |
* (non-Javadoc) |
|
398 |
* @see org.gvsig.fmap.dal.coverage.store.parameter.MultiDimensionalStoreParameters#setFieldLevel(int) |
|
399 |
*/ |
|
400 | 342 |
public void setFieldLevel(int levelPosInList) { |
401 | 343 |
setDynValue(NetCDFDataParameters.FIELD_LEVEL, levelPosInList); |
402 | 344 |
} |
403 |
|
|
404 |
public static void registerPersistence() { |
|
405 |
PersistenceManager manager = ToolsLocator.getPersistenceManager(); |
|
406 |
DynStruct definition = manager.getDefinition("NetCDFDataParametersImpl_Persistent"); |
|
407 |
if( definition == null ) { |
|
408 |
definition = manager.addDefinition( |
|
409 |
NetCDFDataParametersImpl.class, |
|
410 |
"NetCDFDataParametersImpl_Persistent", |
|
411 |
"NetCDF DataParameters Persistency", |
|
412 |
null, |
|
413 |
null |
|
414 |
); |
|
415 |
AbstractRasterDataParameters.registerPersistence(definition); |
|
416 |
|
|
417 |
definition.addDynFieldString(FIELD_VARIABLE).setMandatory(false); |
|
418 |
definition.addDynFieldInt(FIELD_LEVEL).setMandatory(false); |
|
419 |
definition.addDynFieldInt(FIELD_TIME).setMandatory(false); |
|
420 |
definition.addDynFieldString(FIELD_XDIM).setMandatory(false); |
|
421 |
definition.addDynFieldString(FIELD_YDIM).setMandatory(false); |
|
422 |
} |
|
423 |
} |
|
424 |
|
|
425 |
@Override |
|
426 |
public void saveToState(PersistentState state) throws PersistenceException { |
|
427 |
super.saveToState(state); |
|
428 |
|
|
429 |
state.set(FIELD_VARIABLE, getStringVariable()); |
|
430 |
state.set(FIELD_LEVEL, getFieldLevel()); |
|
431 |
state.set(FIELD_TIME, getFieldTime()); |
|
432 |
state.set(FIELD_XDIM, getXDimVariable()); |
|
433 |
state.set(FIELD_YDIM, getYDimVariable()); |
|
434 |
} |
|
435 |
|
|
436 |
@Override |
|
437 |
public void loadFromState(PersistentState state) |
|
438 |
throws PersistenceException { |
|
439 |
super.loadFromState(state); |
|
440 |
|
|
441 |
setFieldVariable(state.getString(FIELD_VARIABLE)); |
|
442 |
setFieldTime(state.getInt(FIELD_TIME)); |
|
443 |
setFieldLevel(state.getInt(FIELD_LEVEL)); |
|
444 |
xDimVariable = state.getString(FIELD_XDIM); |
|
445 |
yDimVariable = state.getString(FIELD_YDIM); |
|
446 |
} |
|
447 | 345 |
} |
Also available in: Unified diff