Skip to content

Commit d2eb05e

Browse files
committed
feat: add mapping for float and short
1 parent 9712c87 commit d2eb05e

2 files changed

Lines changed: 88 additions & 0 deletions

File tree

client-core/src/main/java/com/influxdb/query/internal/FluxResultMapper.java

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,14 @@ private void setFieldValue(@Nonnull final Object object,
141141
field.set(object, toIntValue(value));
142142
return;
143143
}
144+
if (float.class.isAssignableFrom(fieldType) || Float.class.isAssignableFrom(fieldType)) {
145+
field.set(object, toFloatValue(value));
146+
return;
147+
}
148+
if (short.class.isAssignableFrom(fieldType) || Short.class.isAssignableFrom(fieldType)) {
149+
field.set(object, toShortValue(value));
150+
return;
151+
}
144152
if (boolean.class.isAssignableFrom(fieldType)) {
145153
field.setBoolean(object, Boolean.valueOf(String.valueOf(value)));
146154
return;
@@ -193,6 +201,24 @@ private int toIntValue(final Object value) {
193201
return ((Number) value).intValue();
194202
}
195203

204+
private float toFloatValue(final Object value) {
205+
206+
if (float.class.isAssignableFrom(value.getClass()) || Float.class.isAssignableFrom(value.getClass())) {
207+
return (float) value;
208+
}
209+
210+
return ((Number) value).floatValue();
211+
}
212+
213+
private short toShortValue(final Object value) {
214+
215+
if (short.class.isAssignableFrom(value.getClass()) || Short.class.isAssignableFrom(value.getClass())) {
216+
return (short) value;
217+
}
218+
219+
return ((Number) value).shortValue();
220+
}
221+
196222
private BigDecimal toBigDecimalValue(final Object value) {
197223
if (String.class.isAssignableFrom(value.getClass())) {
198224
return new BigDecimal((String) value);
@@ -210,6 +236,14 @@ private BigDecimal toBigDecimalValue(final Object value) {
210236
return BigDecimal.valueOf((long) value);
211237
}
212238

239+
if (float.class.isAssignableFrom(value.getClass()) || Float.class.isAssignableFrom(value.getClass())) {
240+
return BigDecimal.valueOf((float) value);
241+
}
242+
243+
if (short.class.isAssignableFrom(value.getClass()) || Short.class.isAssignableFrom(value.getClass())) {
244+
return BigDecimal.valueOf((short) value);
245+
}
246+
213247
String message = String.format("Cannot cast %s [%s] to %s.",
214248
value.getClass().getName(), value, BigDecimal.class);
215249

client-core/src/test/java/com/influxdb/query/internal/FluxResultMapperTest.java

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,26 +125,72 @@ public void numberConversion() {
125125
record.getValues().put("fieldLong", 55);
126126
record.getValues().put("fieldDouble", 55);
127127
record.getValues().put("fieldInt", 55);
128+
record.getValues().put("fieldFloat", 55);
129+
record.getValues().put("fieldShort", 55);
130+
record.getValues().put("fieldBigDecimal", 55);
128131
NumberFields bean = mapper.toPOJO(record, NumberFields.class);
129132
Assertions.assertThat(bean.fieldLong).isEqualTo(55L);
130133
Assertions.assertThat(bean.fieldDouble).isEqualTo(55.0);
131134
Assertions.assertThat(bean.fieldInt).isEqualTo(55);
135+
Assertions.assertThat(bean.fieldFloat).isEqualTo(55F);
136+
Assertions.assertThat(bean.fieldShort).isEqualTo((short) 55);
137+
Assertions.assertThat(bean.fieldBigDecimal).isEqualByComparingTo(BigDecimal.valueOf(55));
132138

133139
record.getValues().put("fieldLong", 55.0);
134140
record.getValues().put("fieldDouble", 55.0);
135141
record.getValues().put("fieldInt", 55.0);
142+
record.getValues().put("fieldFloat", 55.0);
143+
record.getValues().put("fieldShort", 55.0);
144+
record.getValues().put("fieldBigDecimal", 55.0);
136145
bean = mapper.toPOJO(record, NumberFields.class);
137146
Assertions.assertThat(bean.fieldLong).isEqualTo(55L);
138147
Assertions.assertThat(bean.fieldDouble).isEqualTo(55.0);
139148
Assertions.assertThat(bean.fieldInt).isEqualTo(55);
149+
Assertions.assertThat(bean.fieldFloat).isEqualTo(55F);
150+
Assertions.assertThat(bean.fieldShort).isEqualTo((short) 55);
151+
Assertions.assertThat(bean.fieldBigDecimal).isEqualByComparingTo(BigDecimal.valueOf(55));
140152

141153
record.getValues().put("fieldLong", 55L);
142154
record.getValues().put("fieldDouble", 55L);
143155
record.getValues().put("fieldInt", 55L);
156+
record.getValues().put("fieldFloat", 55L);
157+
record.getValues().put("fieldShort", 55L);
158+
record.getValues().put("fieldBigDecimal", 55L);
144159
bean = mapper.toPOJO(record, NumberFields.class);
145160
Assertions.assertThat(bean.fieldLong).isEqualTo(55L);
146161
Assertions.assertThat(bean.fieldDouble).isEqualTo(55.0);
147162
Assertions.assertThat(bean.fieldInt).isEqualTo(55);
163+
Assertions.assertThat(bean.fieldFloat).isEqualTo(55F);
164+
Assertions.assertThat(bean.fieldShort).isEqualTo((short) 55);
165+
Assertions.assertThat(bean.fieldBigDecimal).isEqualByComparingTo(BigDecimal.valueOf(55));
166+
167+
record.getValues().put("fieldLong", 55F);
168+
record.getValues().put("fieldDouble", 55F);
169+
record.getValues().put("fieldInt", 55F);
170+
record.getValues().put("fieldFloat", 55F);
171+
record.getValues().put("fieldShort", 55f);
172+
record.getValues().put("fieldBigDecimal", 55f);
173+
bean = mapper.toPOJO(record, NumberFields.class);
174+
Assertions.assertThat(bean.fieldLong).isEqualTo(55L);
175+
Assertions.assertThat(bean.fieldDouble).isEqualTo(55.0);
176+
Assertions.assertThat(bean.fieldInt).isEqualTo(55);
177+
Assertions.assertThat(bean.fieldFloat).isEqualTo(55F);
178+
Assertions.assertThat(bean.fieldShort).isEqualTo((short) 55);
179+
Assertions.assertThat(bean.fieldBigDecimal).isEqualByComparingTo(BigDecimal.valueOf(55));
180+
181+
record.getValues().put("fieldLong", (short) 55);
182+
record.getValues().put("fieldDouble", (short) 55);
183+
record.getValues().put("fieldInt", (short) 55);
184+
record.getValues().put("fieldFloat", (short) 55);
185+
record.getValues().put("fieldShort", (short) 55);
186+
record.getValues().put("fieldBigDecimal", (short) 55);
187+
bean = mapper.toPOJO(record, NumberFields.class);
188+
Assertions.assertThat(bean.fieldLong).isEqualTo(55L);
189+
Assertions.assertThat(bean.fieldDouble).isEqualTo(55.0);
190+
Assertions.assertThat(bean.fieldInt).isEqualTo(55);
191+
Assertions.assertThat(bean.fieldFloat).isEqualTo(55F);
192+
Assertions.assertThat(bean.fieldShort).isEqualTo((short) 55);
193+
Assertions.assertThat(bean.fieldBigDecimal).isEqualByComparingTo(BigDecimal.valueOf(55));
148194
}
149195

150196
public static class BigDecimalBean {
@@ -207,5 +253,13 @@ public static class NumberFields {
207253
private Double fieldDouble;
208254
@Column
209255
private Integer fieldInt;
256+
@Column
257+
private Float fieldFloat;
258+
259+
@Column
260+
private Short fieldShort;
261+
262+
@Column
263+
private BigDecimal fieldBigDecimal;
210264
}
211265
}

0 commit comments

Comments
 (0)