1 21 22 package org.dbunit.dataset.datatype; 23 24 import org.dbunit.dataset.ITable; 25 26 import java.sql.PreparedStatement ; 27 import java.sql.ResultSet ; 28 import java.sql.SQLException ; 29 import java.sql.Types ; 30 31 35 public class BooleanDataType extends AbstractDataType 36 { 37 BooleanDataType() 38 { 39 super("BIT", Types.BIT, Boolean .class, false); 40 } 41 42 45 public Object typeCast(Object value) throws TypeCastException 46 { 47 if (value == null || value == ITable.NO_VALUE) 48 { 49 return null; 50 } 51 52 if (value instanceof Boolean ) 53 { 54 return value; 55 } 56 57 if (value instanceof Number ) 58 { 59 Number number = (Number )value; 60 if (number.intValue() == 0) 61 return Boolean.FALSE; 62 else 63 return Boolean.TRUE; 64 } 65 66 if (value instanceof String ) 67 { 68 String string = (String )value; 69 70 if (string.equalsIgnoreCase("true") || string.equalsIgnoreCase("false")) 71 { 72 return Boolean.valueOf(string); 73 } 74 else 75 { 76 return typeCast(DataType.INTEGER.typeCast(string)); 77 } 78 } 79 80 throw new TypeCastException(value, this); 81 } 82 83 public int compare(Object o1, Object o2) throws TypeCastException 84 { 85 Boolean value1 = (Boolean )typeCast(o1); 86 Boolean value2 = (Boolean )typeCast(o2); 87 88 if (value1 == null && value2 == null) 89 { 90 return 0; 91 } 92 93 if (value1 == null && value2 != null) 94 { 95 return -1; 96 } 97 98 if (value1 != null && value2 == null) 99 { 100 return 1; 101 } 102 103 if (value1.equals(value2)) 104 { 105 return 0; 106 } 107 108 if (value1.equals(Boolean.FALSE)) 109 { 110 return -1; 111 } 112 113 return 1; 114 } 115 116 public Object getSqlValue(int column, ResultSet resultSet) 117 throws SQLException , TypeCastException 118 { 119 boolean value = resultSet.getBoolean(column); 120 if (resultSet.wasNull()) 121 { 122 return null; 123 } 124 return value ? Boolean.TRUE : Boolean.FALSE; 125 } 126 127 public void setSqlValue(Object value, int column, PreparedStatement statement) 128 throws SQLException , TypeCastException 129 { 130 statement.setBoolean(column, ((Boolean )typeCast(value)).booleanValue()); 131 } 132 133 } 134 135 136 137 138 139 | Popular Tags |