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
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