1 10 package org.mmbase.datatypes; 11 import org.mmbase.bridge.*; 12 19 public class BooleanDataType extends BasicDataType { 20 21 private static final long serialVersionUID = 1L; 23 29 public BooleanDataType(String name, boolean primitive) { 30 super(name, primitive ? Boolean.TYPE : Boolean .class); 31 } 32 33 37 protected final Object cast(Object value, Cloud cloud, Node node, Field field) throws CastException { 38 Object preCast = preCast(value, cloud, node, field); 39 if (preCast == null) return null; 40 if (value instanceof Boolean ) return value; 41 if (value instanceof String ) { 42 String s = ((String )value).toLowerCase(); 43 if ("".equals(value)) return null; 44 if ("true".equals(s)) return Boolean.TRUE; 45 if ("false".equals(s)) return Boolean.FALSE; 46 if ("1".equals(s)) return Boolean.TRUE; 47 if ("0".equals(s)) return Boolean.FALSE; 48 throw new CastException("'" + value + "' of type " + value.getClass().getName() + " cannot be cast to boolean"); 49 } 50 if (value instanceof Number ) { 51 double d = ((Number ) value).doubleValue(); 52 if (d == 1.0) return Boolean.TRUE; 53 if (d == 0.0) return Boolean.FALSE; 54 throw new CastException("The number '" + value + "' cannot be cast to boolean (boolean is 0 or 1)"); 55 } 56 throw new CastException("'" + value + "' cannot be cast to boolean (boolean is 0 or 1)"); 57 58 } 59 } 60 | Popular Tags |