Skip to content

Commit a796a13

Browse files
refactor: getMappedValue function
1 parent c4bb8ab commit a796a13

File tree

2 files changed

+31
-55
lines changed

2 files changed

+31
-55
lines changed

src/main/java/com/influxdb/v3/client/internal/VectorSchemaRootConverter.java

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import java.util.Objects;
2929
import java.util.logging.Logger;
3030
import javax.annotation.Nonnull;
31+
import javax.annotation.Nullable;
3132
import javax.annotation.concurrent.ThreadSafe;
3233

3334
import org.apache.arrow.vector.FieldVector;
@@ -92,32 +93,36 @@ PointValues toPointValues(final int rowNumber,
9293
continue;
9394
}
9495

95-
String[] parts = metaType.split("::");
96-
String valueType = parts[2];
97-
96+
String valueType = metaType.split("::")[2];
97+
Object mappedValue = getMappedValue(field, value);
9898
if ("field".equals(valueType)) {
99-
var fieldValue = getMappedValue(valueType, metaType, value, fieldName, field);
100-
p.setField(fieldName, fieldValue);
99+
p.setField(fieldName, mappedValue);
101100
} else if ("tag".equals(valueType) && value instanceof String) {
102-
var tag = (String) getMappedValue(valueType, metaType, value, fieldName, field);
103-
p.setTag(fieldName, tag);
101+
p.setTag(fieldName, (String) mappedValue);
104102
} else if ("timestamp".equals(valueType)) {
105-
var timeNano = (BigInteger) getMappedValue(valueType, metaType, value, fieldName, field);
106-
p.setTimestamp(timeNano, WritePrecision.NS);
103+
p.setTimestamp((BigInteger) mappedValue, WritePrecision.NS);
107104
}
108105
}
109106
return p;
110107
}
111108

112-
public Object getMappedValue(final String valueType,
113-
final String metaType,
114-
final Object value,
115-
final String fieldName,
116-
final Field field) {
109+
/**
110+
* Function to cast value return base on metadata from InfluxDB.
111+
*
112+
* @param field the Field object from Arrow
113+
* @param value the value to cast
114+
* @return the casted value
115+
*/
116+
public Object getMappedValue(@Nonnull final Field field, @Nullable final Object value) {
117117
if (value == null) {
118118
return null;
119119
}
120120

121+
var metaType = field.getMetadata().get("iox::column::type");
122+
var fieldName = field.getName();
123+
String[] parts = metaType.split("::");
124+
String valueType = parts[2];
125+
121126
if ("field".equals(valueType)) {
122127
switch (metaType) {
123128
case "iox::column_type::field::integer":
@@ -171,15 +176,10 @@ public Object getMappedValue(final String valueType,
171176
public Object[] getArrayObjectFromVectorSchemaRoot(final VectorSchemaRoot vector, final int rowNumber) {
172177
List<Object> row = new ArrayList<>();
173178
for (FieldVector fieldVector : vector.getFieldVectors()) {
174-
var field = fieldVector.getField();
175-
var metaType = field.getMetadata().get("iox::column::type");
176-
String valueType = metaType != null ? metaType.split("::")[2] : null;
177-
178-
var value = getMappedValue(valueType,
179-
metaType,
180-
fieldVector.getObject(rowNumber),
181-
field.getName(),
182-
field);
179+
var value = getMappedValue(
180+
fieldVector.getField(),
181+
fieldVector.getObject(rowNumber)
182+
);
183183
row.add(value);
184184
}
185185

src/test/java/com/influxdb/v3/client/internal/VectorSchemaRootConverterTest.java

Lines changed: 8 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -124,95 +124,71 @@ void timestampAsArrowInt() {
124124
@Test
125125
void getMappedValueValidMetaDataInteger() {
126126
Field field = VectorSchemaRootUtils.generateIntField("test");
127-
String metaType = field.getMetadata().get("iox::column::type");
128127
Long value = 1L;
129-
String fieldName = field.getName();
130-
Object mappedValue = VectorSchemaRootConverter.INSTANCE
131-
.getMappedValue("field", metaType, value, fieldName, field);
128+
Object mappedValue = VectorSchemaRootConverter.INSTANCE.getMappedValue(field, value);
132129
Assertions.assertThat(mappedValue).isEqualTo(value);
133130
Assertions.assertThat(mappedValue.getClass()).isEqualTo(Long.class);
134131
}
135132

136133
@Test
137134
void getMappedValueInvalidMetaDataInteger() {
138135
Field field = VectorSchemaRootUtils.generateInvalidIntField("test");
139-
String metaType = field.getMetadata().get("iox::column::type");
140136
String value = "1";
141-
String fieldName = field.getName();
142-
Object mappedValue = VectorSchemaRootConverter.INSTANCE
143-
.getMappedValue("field", metaType, value, fieldName, field);
137+
Object mappedValue = VectorSchemaRootConverter.INSTANCE.getMappedValue(field, value);
144138
Assertions.assertThat(mappedValue).isEqualTo(value);
145139
Assertions.assertThat(mappedValue.getClass()).isEqualTo(String.class);
146140
}
147141

148142
@Test
149143
void getMappedValueValidMetaDataFloat() {
150144
Field field = VectorSchemaRootUtils.generateFloatField("test");
151-
String metaType = field.getMetadata().get("iox::column::type");
152145
Double value = 1.2;
153-
String fieldName = field.getName();
154-
Object mappedValue = VectorSchemaRootConverter.INSTANCE
155-
.getMappedValue("field", metaType, value, fieldName, field);
146+
Object mappedValue = VectorSchemaRootConverter.INSTANCE.getMappedValue(field, value);
156147
Assertions.assertThat(mappedValue).isEqualTo(value);
157148
Assertions.assertThat(mappedValue.getClass()).isEqualTo(Double.class);
158149
}
159150

160151
@Test
161152
void getMappedValueInvalidMetaDataFloat() {
162153
Field field = VectorSchemaRootUtils.generateInvalidFloatField("test");
163-
String metaType = field.getMetadata().get("iox::column::type");
164154
String value = "1.2";
165-
String fieldName = field.getName();
166-
Object mappedValue = VectorSchemaRootConverter.INSTANCE
167-
.getMappedValue("field", metaType, value, fieldName, field);
155+
Object mappedValue = VectorSchemaRootConverter.INSTANCE.getMappedValue(field, value);
168156
Assertions.assertThat(mappedValue).isEqualTo(value);
169157
Assertions.assertThat(mappedValue.getClass()).isEqualTo(String.class);
170158
}
171159

172160
@Test
173161
void getMappedValueValidMetaDataString() {
174162
Field field = VectorSchemaRootUtils.generateStringField("test");
175-
String metaType = field.getMetadata().get("iox::column::type");
176163
String value = "string";
177-
String fieldName = field.getName();
178-
Object mappedValue = VectorSchemaRootConverter.INSTANCE
179-
.getMappedValue("field", metaType, value, fieldName, field);
164+
Object mappedValue = VectorSchemaRootConverter.INSTANCE.getMappedValue(field, value);
180165
Assertions.assertThat(mappedValue).isEqualTo(value);
181166
Assertions.assertThat(mappedValue.getClass()).isEqualTo(String.class);
182167
}
183168

184169
@Test
185170
void getMappedValueInvalidMetaDataString() {
186171
Field field = VectorSchemaRootUtils.generateInvalidStringField("test");
187-
String metaType = field.getMetadata().get("iox::column::type");
188172
Double value = 1.1;
189-
String fieldName = field.getName();
190-
Object mappedValue = VectorSchemaRootConverter.INSTANCE
191-
.getMappedValue("field", metaType, value, fieldName, field);
173+
Object mappedValue = VectorSchemaRootConverter.INSTANCE.getMappedValue(field, value);
192174
Assertions.assertThat(mappedValue).isEqualTo(value);
193175
Assertions.assertThat(mappedValue.getClass()).isEqualTo(Double.class);
194176
}
195177

196178
@Test
197179
void getMappedValueValidMetaDataBoolean() {
198180
Field field = VectorSchemaRootUtils.generateBoolField("test");
199-
String metaType = field.getMetadata().get("iox::column::type");
200181
Boolean value = true;
201-
String fieldName = field.getName();
202-
Object mappedValue = VectorSchemaRootConverter.INSTANCE
203-
.getMappedValue("field", metaType, value, fieldName, field);
182+
Object mappedValue = VectorSchemaRootConverter.INSTANCE.getMappedValue(field, value);
204183
Assertions.assertThat(mappedValue).isEqualTo(value);
205184
Assertions.assertThat(mappedValue.getClass()).isEqualTo(Boolean.class);
206185
}
207186

208187
@Test
209188
void getMappedValueInvalidMetaDataBoolean() {
210189
Field field = VectorSchemaRootUtils.generateInvalidBoolField("test");
211-
String metaType = field.getMetadata().get("iox::column::type");
212190
String value = "true";
213-
String fieldName = field.getName();
214-
Object mappedValue = VectorSchemaRootConverter.INSTANCE
215-
.getMappedValue("field", metaType, value, fieldName, field);
191+
Object mappedValue = VectorSchemaRootConverter.INSTANCE.getMappedValue(field, value);
216192
Assertions.assertThat(mappedValue).isEqualTo(value);
217193
Assertions.assertThat(mappedValue.getClass()).isEqualTo(String.class);
218194
}

0 commit comments

Comments
 (0)