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

View differences:

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