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 import java.sql.Types;
34
35
36
37
38
39 public class LongDataType extends AbstractDataType
40 {
41
42
43
44
45 private static final Logger logger = LoggerFactory.getLogger(LongDataType.class);
46
47 LongDataType()
48 {
49 super("BIGINT", Types.BIGINT, Long.class, true);
50 }
51
52
53
54
55 public Object typeCast(Object value) throws TypeCastException
56 {
57 logger.debug("typeCast(value={}) - start", value);
58
59 if (value == null || value == ITable.NO_VALUE)
60 {
61 return null;
62 }
63
64 if (value instanceof Number)
65 {
66 return new Long(((Number)value).longValue());
67 }
68
69 try
70 {
71 return typeCast(new BigDecimal(value.toString()));
72 }
73 catch (java.lang.NumberFormatException e)
74 {
75 throw new TypeCastException(value, this, e);
76 }
77 }
78
79 public Object getSqlValue(int column, ResultSet resultSet)
80 throws SQLException, TypeCastException
81 {
82 if(logger.isDebugEnabled())
83 logger.debug("getSqlValue(column={}, resultSet={}) - start", new Integer(column), resultSet);
84
85 long value = resultSet.getLong(column);
86 if (resultSet.wasNull())
87 {
88 return null;
89 }
90 return new Long(value);
91 }
92
93 public void setSqlValue(Object value, int column, PreparedStatement statement)
94 throws SQLException, TypeCastException
95 {
96 if(logger.isDebugEnabled())
97 logger.debug("setSqlValue(value={}, column={}, statement={}) - start",
98 new Object[]{value, new Integer(column), statement} );
99
100 statement.setLong(column, ((Number)typeCast(value)).longValue());
101 }
102 }
103
104
105
106
107