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

View differences:

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