16
16
17
17
package io .dingodb .common .type .converter ;
18
18
19
+ import io .dingodb .common .log .LogUtils ;
19
20
import io .dingodb .common .type .DingoType ;
20
21
import io .dingodb .expr .common .type .Type ;
21
22
import org .checkerframework .checker .nullness .qual .NonNull ;
@@ -94,22 +95,59 @@ default Object convert(@NonNull Map<?, ?> value, @NonNull DingoType keyType, @No
94
95
}
95
96
96
97
default Integer convertIntegerFrom (@ NonNull Object value ) {
97
- return (Integer ) value ;
98
+ if (value instanceof Integer ) {
99
+ return (Integer ) value ;
100
+ } else {
101
+ try {
102
+ return new BigDecimal (value .toString ()).intValue ();
103
+ } catch (Exception e ) {
104
+ return 0 ;
105
+ }
106
+ }
98
107
}
99
108
100
109
default Long convertLongFrom (@ NonNull Object value ) {
101
110
if (value instanceof Integer ) {
102
111
return ((Integer ) value ).longValue ();
112
+ } else if (value instanceof Long ) {
113
+ return (Long ) value ;
114
+ } else {
115
+ try {
116
+ return new BigDecimal (value .toString ()).longValue ();
117
+ } catch (Exception e ) {
118
+ return 0L ;
119
+ }
103
120
}
104
- return (Long ) value ;
105
121
}
106
122
107
123
default Float convertFloatFrom (@ NonNull Object value ) {
108
- return (Float ) value ;
124
+ if (value instanceof Float ) {
125
+ return (Float ) value ;
126
+ } else if (value instanceof Double ) {
127
+ Double valDouble = (Double ) value ;
128
+ return valDouble .floatValue ();
129
+ } else {
130
+ try {
131
+ return new BigDecimal (value .toString ()).floatValue ();
132
+ } catch (Exception e ) {
133
+ return 0F ;
134
+ }
135
+ }
109
136
}
110
137
111
138
default Double convertDoubleFrom (@ NonNull Object value ) {
112
- return (Double ) value ;
139
+ if (value instanceof Float ) {
140
+ Float valFloat = (Float ) value ;
141
+ return valFloat .doubleValue ();
142
+ } else if (value instanceof Double ) {
143
+ return (Double ) value ;
144
+ } else {
145
+ try {
146
+ return new BigDecimal (value .toString ()).doubleValue ();
147
+ } catch (Exception e ) {
148
+ return 0D ;
149
+ }
150
+ }
113
151
}
114
152
115
153
default Boolean convertBooleanFrom (@ NonNull Object value ) {
@@ -128,28 +166,60 @@ default Boolean convertBooleanFrom(@NonNull Object value) {
128
166
}
129
167
130
168
default String convertStringFrom (@ NonNull Object value ) {
131
- return (String ) value ;
169
+ if (value instanceof String ) {
170
+ return (String ) value ;
171
+ } else {
172
+ return value .toString ();
173
+ }
132
174
}
133
175
134
176
default BigDecimal convertDecimalFrom (@ NonNull Object value ) {
135
- return (BigDecimal ) value ;
177
+ if (value instanceof BigDecimal ) {
178
+ return (BigDecimal ) value ;
179
+ } else {
180
+ try {
181
+ return new BigDecimal (value .toString ());
182
+ } catch (Exception e ) {
183
+ return new BigDecimal (0 );
184
+ }
185
+ }
136
186
}
137
187
138
188
default Date convertDateFrom (@ NonNull Object value ) {
139
189
if (value instanceof Timestamp ) {
140
190
Timestamp timestamp = (Timestamp ) value ;
141
191
LocalDateTime localDateTime = timestamp .toLocalDateTime ();
142
192
return new Date (localDateTime .atZone (ZoneId .of ("UTC" )).toInstant ().toEpochMilli ());
193
+ } else if (value instanceof Date ) {
194
+ return (Date ) value ;
195
+ } else {
196
+ return new Date (System .currentTimeMillis ());
143
197
}
144
- return (Date ) value ;
145
198
}
146
199
147
200
default Time convertTimeFrom (@ NonNull Object value ) {
148
- return (Time ) value ;
201
+ if (value instanceof Time ) {
202
+ return (Time ) value ;
203
+ } else if (value instanceof Date ) {
204
+ Date date = (Date ) value ;
205
+ return new Time (date .getTime ());
206
+ } else if (value instanceof Timestamp ) {
207
+ Timestamp timestamp = (Timestamp ) value ;
208
+ return new Time (timestamp .getTime ());
209
+ } else {
210
+ return new Time (System .currentTimeMillis ());
211
+ }
149
212
}
150
213
151
214
default Timestamp convertTimestampFrom (@ NonNull Object value ) {
152
- return (Timestamp ) value ;
215
+ if (value instanceof Timestamp ) {
216
+ return (Timestamp ) value ;
217
+ } else if (value instanceof Date ) {
218
+ Date date = (Date ) value ;
219
+ return new Timestamp (date .getTime ());
220
+ } else {
221
+ return new Timestamp (System .currentTimeMillis ());
222
+ }
153
223
}
154
224
155
225
default byte [] convertBinaryFrom (@ NonNull Object value ) {
0 commit comments