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.sql.PreparedStatement;
30 import java.sql.ResultSet;
31 import java.sql.SQLException;
32 import java.sql.Types;
33
34
35
36
37
38
39 public class DateDataType extends AbstractDataType
40 {
41
42
43
44
45 private static final Logger logger = LoggerFactory.getLogger(DateDataType.class);
46
47 DateDataType()
48 {
49 super("DATE", Types.DATE, java.sql.Date.class, false);
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 java.sql.Date)
65 {
66 return value;
67 }
68
69 if (value instanceof java.util.Date)
70 {
71 java.util.Date date = (java.util.Date)value;
72 return new java.sql.Date(date.getTime());
73 }
74
75 if (value instanceof Long)
76 {
77 Long date = (Long)value;
78 return new java.sql.Date(date.longValue());
79 }
80
81 if (value instanceof String)
82 {
83 String stringValue = (String)value;
84
85
86 if (stringValue.length() > 10)
87 {
88 try
89 {
90 long time = java.sql.Timestamp.valueOf(stringValue).getTime();
91 return new java.sql.Date(time);
92
93 }
94 catch (IllegalArgumentException e)
95 {
96
97 }
98 }
99
100 try
101 {
102 return java.sql.Date.valueOf(stringValue);
103 }
104 catch (IllegalArgumentException e)
105 {
106 throw new TypeCastException(value, this, e);
107 }
108 }
109
110 throw new TypeCastException(value, this);
111 }
112
113 public boolean isDateTime()
114 {
115 logger.debug("isDateTime() - start");
116
117 return true;
118 }
119
120 public Object getSqlValue(int column, ResultSet resultSet)
121 throws SQLException, TypeCastException
122 {
123 if(logger.isDebugEnabled())
124 logger.debug("getSqlValue(column={}, resultSet={}) - start", new Integer(column), resultSet);
125
126 java.sql.Date value = resultSet.getDate(column);
127 if (value == null || resultSet.wasNull())
128 {
129 return null;
130 }
131 return value;
132 }
133
134 public void setSqlValue(Object value, int column, PreparedStatement statement)
135 throws SQLException, TypeCastException
136 {
137 if(logger.isDebugEnabled())
138 logger.debug("setSqlValue(value={}, column={}, statement={}) - start",
139 new Object[]{value, new Integer(column), statement} );
140
141 statement.setDate(column, (java.sql.Date)typeCast(value));
142 }
143 }
144
145
146
147
148