Revision 3838 org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.lib/org.gvsig.vectorediting.lib.spi/src/main/java/org/gvsig/vectorediting/lib/spi/DefaultEditingServiceParameter.java
DefaultEditingServiceParameter.java | ||
---|---|---|
24 | 24 |
|
25 | 25 |
package org.gvsig.vectorediting.lib.spi; |
26 | 26 |
|
27 |
import org.gvsig.vectorediting.lib.api.EditingServiceParameterOptions; |
|
28 | 27 |
import java.util.Arrays; |
29 | 28 |
import java.util.HashSet; |
29 |
import java.util.List; |
|
30 | 30 |
import java.util.Map; |
31 | 31 |
import java.util.Objects; |
32 | 32 |
import java.util.Set; |
33 |
import org.apache.commons.lang3.StringUtils; |
|
34 |
import org.gvsig.fmap.dal.feature.FeatureSelection; |
|
33 | 35 |
import org.gvsig.fmap.geom.Geometry; |
34 | 36 |
import org.gvsig.fmap.geom.primitive.Point; |
35 | 37 |
import org.gvsig.timesupport.DataTypes; |
38 |
import org.gvsig.tools.ToolsLocator; |
|
39 |
import org.gvsig.tools.dataTypes.CoercionException; |
|
40 |
import org.gvsig.tools.dataTypes.DataType; |
|
41 |
import org.gvsig.tools.dataTypes.DataTypesManager; |
|
36 | 42 |
import org.gvsig.vectorediting.lib.api.EditingServiceParameter; |
43 |
import org.gvsig.vectorediting.lib.api.EditingServiceParameterOptions; |
|
44 |
import org.gvsig.vectorediting.lib.api.exceptions.InvalidEntryException; |
|
37 | 45 |
|
38 | 46 |
public class DefaultEditingServiceParameter implements EditingServiceParameter { |
39 | 47 |
|
... | ... | |
54 | 62 |
private boolean optional; |
55 | 63 |
|
56 | 64 |
private int dataType; |
65 |
|
|
66 |
private boolean allowNull; |
|
57 | 67 |
|
58 | 68 |
public DefaultEditingServiceParameter(String theName, |
59 | 69 |
String theDescription, TYPE... theTypes) { |
... | ... | |
170 | 180 |
this.defaultValue = theDefaultValue; |
171 | 181 |
this.optional = optional; |
172 | 182 |
this.dataType = DataTypes.STRING; |
183 |
this.allowNull = true; |
|
173 | 184 |
} |
174 | 185 |
|
175 | 186 |
@Override |
... | ... | |
260 | 271 |
public int getDataType() { |
261 | 272 |
return this.dataType; |
262 | 273 |
} |
274 |
|
|
275 |
public DefaultEditingServiceParameter setAllowNull(boolean allowNull) { |
|
276 |
this.allowNull = allowNull; |
|
277 |
return this; |
|
278 |
} |
|
279 |
|
|
280 |
public boolean getAllowNull() { |
|
281 |
return allowNull; |
|
282 |
} |
|
263 | 283 |
|
284 |
@Override |
|
285 |
public boolean isValidValue(Object value) { |
|
286 |
if(value == null){ |
|
287 |
return this.allowNull; |
|
288 |
} |
|
289 |
|
|
290 |
for (TYPE type : this.types) { |
|
291 |
switch (type){ |
|
292 |
case GEOMETRY: |
|
293 |
if (value instanceof Geometry){ |
|
294 |
return true; |
|
295 |
} |
|
296 |
break; |
|
297 |
case POSITION: |
|
298 |
if (value instanceof Point){ |
|
299 |
return true; |
|
300 |
} |
|
301 |
break; |
|
302 |
case LIST_POSITIONS: |
|
303 |
if (value instanceof Point){ |
|
304 |
return true; |
|
305 |
} |
|
306 |
break; |
|
307 |
case OPTION: |
|
308 |
try{ |
|
309 |
Object v = (value instanceof String && StringUtils.isBlank((String)value))?this.defaultValue:null; |
|
310 |
this.options2.getValue(value, v); |
|
311 |
return true; |
|
312 |
} catch (InvalidEntryException ex){ |
|
313 |
//DO NOTHING |
|
314 |
} |
|
315 |
break; |
|
316 |
case SELECTION: |
|
317 |
if (value instanceof FeatureSelection) { |
|
318 |
return true; |
|
319 |
} |
|
320 |
break; |
|
321 |
case MULTILAYER_SELECTION: |
|
322 |
if (value instanceof Geometry || value instanceof List){ |
|
323 |
return true; |
|
324 |
} |
|
325 |
break; |
|
326 |
case DISTANCE: |
|
327 |
if (value instanceof Double){ |
|
328 |
return true; |
|
329 |
} |
|
330 |
break; |
|
331 |
case CLIPBOARD: |
|
332 |
return true; |
|
333 |
case VALUE: |
|
334 |
DataTypesManager manager = ToolsLocator.getDataTypesManager(); |
|
335 |
DataType dtype = manager.get(dataType); |
|
336 |
if (!dtype.isObject()) { |
|
337 |
try { |
|
338 |
Object v = dtype.coerce(value); |
|
339 |
return true; |
|
340 |
} catch (CoercionException ex) { |
|
341 |
//DO NOTHING; |
|
342 |
} |
|
343 |
} |
|
344 |
break; |
|
345 |
} |
|
346 |
} |
|
347 |
return false; |
|
348 |
} |
|
349 |
|
|
350 |
@Override |
|
351 |
public Object coerceValue(Object value) { |
|
352 |
DataTypesManager manager = ToolsLocator.getDataTypesManager(); |
|
353 |
DataType dtype = manager.get(dataType); |
|
354 |
try { |
|
355 |
Object v = dtype.coerce(value); |
|
356 |
return v; |
|
357 |
} catch (CoercionException ex) { |
|
358 |
throw new IllegalArgumentException("Illegal value '"+Objects.toString(value)+"' for parameter '"+this.getName()+"'", ex); |
|
359 |
} |
|
360 |
} |
|
264 | 361 |
|
362 |
|
|
363 |
|
|
265 | 364 |
|
266 | 365 |
} |
Also available in: Unified diff