Revision 2378 org.gvsig.raster.wms/branches/org.gvsig.raster.wms_dataaccess_refactoring/org.gvsig.raster.wms.io/src/main/java/org/gvsig/raster/wms/io/time/TimeDimension.java

View differences:

TimeDimension.java
76 76

  
77 77
    private String              unit;
78 78
	private String              unitSymbol;
79
	private ArrayList<Object>   valueList;
79
	private List<GregorianCalendar>   
80
	                            valueList;
80 81
	private boolean             compiled;
81 82
	private boolean             isGeologic;
82 83
	private String              expression;
......
108 109
    static private final String geologicDatasets = "(K|M|G)";
109 110
    static private final String regexDateForGeologicDatasets = geologicDatasets+floatingPointNumber;
110 111

  
111
	/*
112
	 * (non-Javadoc)
113
	 * @see org.gvsig.tools.persistence.Persistent#loadFromState(org.gvsig.tools.persistence.PersistentState)
114
	 */
115 112
	@SuppressWarnings("unchecked")
116 113
	public void loadFromState(PersistentState state) throws PersistenceException {
117 114
		this.unit = state.getString("unit");
118 115
		this.unitSymbol = state.getString("unitSymbol");
119 116
		
120
		List<Object> list = state.getList("valueList");
121
		if(list != null) {
122
			ArrayList<Object> valueList = new ArrayList<Object>();
123
			valueList.addAll(list);
124
		}
117
		List<String> list = (List<String>)state.getList("valueList");
118
		valueList = convertStringListToGregorianCalendarList(list);
125 119
		
126 120
		this.compiled = state.getBoolean("compiled");
127 121
		this.isGeologic = state.getBoolean("isGeologic");
......
133 127
	public void saveToState(PersistentState state) throws PersistenceException {
134 128
		state.set("unit", unit);
135 129
		state.set("unitSymbol", unitSymbol);
136
		state.set("valueList", valueList);
130
		state.set("valueList", convertGregorianCalendarListToStringList(valueList));
137 131
		state.set("compiled", compiled);
138 132
		state.set("isGeologic", isGeologic);
139 133
		state.set("expression", expression);
......
141 135
		state.set("format", format);
142 136
	}	
143 137
	
138
	private List<String> convertGregorianCalendarListToStringList(List<GregorianCalendar> gList) {
139
		List<String> l = new ArrayList<String>();
140
		for (int i = 0; i < gList.size(); i++) {
141
			l.add(toString(gList.get(i)));
142
		}
143
		return l;
144
	}
145
	
146
	private List<GregorianCalendar> convertStringListToGregorianCalendarList(List<String> sList) {
147
		List<GregorianCalendar> l = new ArrayList<GregorianCalendar>();
148
		for (int i = 0; i < sList.size(); i++) {
149
			l.add(valueOf(sList.get(i)));
150
		}
151
		return l;
152
	}
153
	
144 154
	public static void registerPersistent() {
145 155
		PersistenceManager manager = ToolsLocator.getPersistenceManager();
146
		DynStruct definition = manager.getDefinition("DefaultDimension_Persistent");
156
		DynStruct definition = manager.getDefinition("TimeDimension_Persistent");
147 157
		if( definition == null ) {
148 158
			definition = manager.addDefinition(
149
					DefaultDimension.class,
150
					"DefaultDimension_Persistent",
151
					"DefaultDimension Persistence",
159
					TimeDimension.class,
160
					"TimeDimension_Persistent",
161
					"TimeDimension Persistence",
152 162
					null, 
153 163
					null
154 164
			);
......
163 173
		definition.addDynFieldInt("type").setMandatory(false);
164 174
		definition.addDynFieldInt("format").setMandatory(false);
165 175
	}
176
	
177
	public TimeDimension() {}
178
	
166 179
    /**
167 180
     * Creates a new instance of TimeDimension.
168 181
     * @param units
......
188 201
    }
189 202

  
190 203
	public String getLowLimit() {
191
		return (String) valueList.get(0);
204
		return valueAt(0);
192 205
	}
193 206

  
194 207
	public String getHighLimit() {
195
		return (String) valueList.get(valueList.size()-1);
208
		return valueAt(valueList.size() - 1);
196 209
	}
197 210

  
198 211

  
......
204 217
		return (value.matches(regexDateForGeologicDatasets) || value.matches(regexDateExtendedForBCE));
205 218
	}
206 219

  
207
	public Object valueOf(String value) throws IllegalArgumentException {
220
	public GregorianCalendar valueOf(String value) throws IllegalArgumentException {
208 221
		if (compiled) {
209 222
    		String myValue = value.toUpperCase();
210 223
    		if (isValidValue(myValue)) {
211
    			Object val = null;
224
    			GregorianCalendar val = null;
212 225
    			if (!isGeologic){
213 226
    				// This is a normal date
214 227
    				int myYear;
......
271 284

  
272 285
	public void compile() throws IllegalArgumentException {
273 286
		compiled = true;
274
		valueList = new ArrayList<Object>();
287
		valueList = new ArrayList<GregorianCalendar>();
275 288
		String[] items = expression.split(",");
276 289
		for (int i = 0; i < items.length; i++) {
277 290
			// Each iteration is a value of a comma-separated list
......
305 318
				} else if (s[0].matches(regexDateExtendedForBCE4)) {
306 319
					upgradeFormat(FULL_FORMAT);
307 320
				}
308
				Object minValue = valueOf(s[0]);
321
				GregorianCalendar minValue = valueOf(s[0]);
309 322

  
310 323
				// max value
311 324
				if (s[0].matches(regexDateExtendedForBCE1)) {
......
317 330
				} else if (s[1].matches(regexDateExtendedForBCE4)) {
318 331
					upgradeFormat(FULL_FORMAT);
319 332
				}
320
				Object maxValue = valueOf(s[1]);
333
				GregorianCalendar maxValue = valueOf(s[1]);
321 334

  
322 335
				String period = s[2];
323 336

  

Also available in: Unified diff