1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 package org.dbunit.dataset.datatype;
23
24 import org.slf4j.Logger;
25 import org.slf4j.LoggerFactory;
26
27 import org.dbunit.dataset.ITable;
28
29 import java.math.BigDecimal;
30 import java.sql.PreparedStatement;
31 import java.sql.ResultSet;
32 import java.sql.SQLException;
33
34
35
36
37
38 public class IntegerDataType extends AbstractDataType
39 {
40
41
42
43
44 private static final Logger logger = LoggerFactory.getLogger(IntegerDataType.class);
45
46 IntegerDataType(String name, int sqlType)
47 {
48 super(name, sqlType, Integer.class, true);
49 }
50
51
52
53
54 public Object typeCast(Object value) throws TypeCastException
55 {
56 logger.debug("typeCast(value={}) - start", value);
57
58 if (value == null || value == ITable.NO_VALUE)
59 {
60 return null;
61 }
62
63 if (value instanceof Number)
64 {
65 return new Integer(((Number)value).intValue());
66 }
67
68
69 String stringValue = value.toString().trim();
70 if(stringValue.length()<=0)
71 {
72 return null;
73 }
74
75 try
76 {
77 return typeCast(new BigDecimal(stringValue));
78 }
79 catch (java.lang.NumberFormatException e)
80 {
81 throw new TypeCastException(value, this, e);
82 }
83 }
84
85 public Object getSqlValue(int column, ResultSet resultSet)
86 throws SQLException, TypeCastException
87 {
88 if(logger.isDebugEnabled())
89 logger.debug("getSqlValue(column={}, resultSet={}) - start", new Integer(column), resultSet);
90
91 int value = resultSet.getInt(column);
92 if (resultSet.wasNull())
93 {
94 return null;
95 }
96 return new Integer(value);
97 }
98
99 public void setSqlValue(Object value, int column, PreparedStatement statement)
100 throws SQLException, TypeCastException
101 {
102 if(logger.isDebugEnabled())
103 logger.debug("setSqlValue(value={}, column={}, statement={}) - start",
104 new Object[]{value, new Integer(column), statement} );
105
106 statement.setInt(column, ((Integer)typeCast(value)).intValue());
107 }
108 }
109
110
111
112
113