NebulaGraph Java Client 5.0.0
Loading...
Searching...
No Matches
ValueWrapper.java
1package com.vesoft.nebula.driver.graph.data;
2
3import static com.vesoft.nebula.driver.graph.decode.ColumnType.COLUMN_TYPE_BOOL;
4import static com.vesoft.nebula.driver.graph.decode.ColumnType.COLUMN_TYPE_DATE;
5import static com.vesoft.nebula.driver.graph.decode.ColumnType.COLUMN_TYPE_DECIMAL;
6import static com.vesoft.nebula.driver.graph.decode.ColumnType.COLUMN_TYPE_DURATION;
7import static com.vesoft.nebula.driver.graph.decode.ColumnType.COLUMN_TYPE_EDGE;
8import static com.vesoft.nebula.driver.graph.decode.ColumnType.COLUMN_TYPE_EMBEDDINGVECTOR;
9import static com.vesoft.nebula.driver.graph.decode.ColumnType.COLUMN_TYPE_FLOAT32;
10import static com.vesoft.nebula.driver.graph.decode.ColumnType.COLUMN_TYPE_FLOAT64;
11import static com.vesoft.nebula.driver.graph.decode.ColumnType.COLUMN_TYPE_INT16;
12import static com.vesoft.nebula.driver.graph.decode.ColumnType.COLUMN_TYPE_INT32;
13import static com.vesoft.nebula.driver.graph.decode.ColumnType.COLUMN_TYPE_INT64;
14import static com.vesoft.nebula.driver.graph.decode.ColumnType.COLUMN_TYPE_INT8;
15import static com.vesoft.nebula.driver.graph.decode.ColumnType.COLUMN_TYPE_LIST;
16import static com.vesoft.nebula.driver.graph.decode.ColumnType.COLUMN_TYPE_LOCALDATETIME;
17import static com.vesoft.nebula.driver.graph.decode.ColumnType.COLUMN_TYPE_LOCALTIME;
18import static com.vesoft.nebula.driver.graph.decode.ColumnType.COLUMN_TYPE_NODE;
19import static com.vesoft.nebula.driver.graph.decode.ColumnType.COLUMN_TYPE_PATH;
20import static com.vesoft.nebula.driver.graph.decode.ColumnType.COLUMN_TYPE_RECORD;
21import static com.vesoft.nebula.driver.graph.decode.ColumnType.COLUMN_TYPE_STRING;
22import static com.vesoft.nebula.driver.graph.decode.ColumnType.COLUMN_TYPE_UINT16;
23import static com.vesoft.nebula.driver.graph.decode.ColumnType.COLUMN_TYPE_UINT32;
24import static com.vesoft.nebula.driver.graph.decode.ColumnType.COLUMN_TYPE_UINT64;
25import static com.vesoft.nebula.driver.graph.decode.ColumnType.COLUMN_TYPE_UINT8;
26import static com.vesoft.nebula.driver.graph.decode.ColumnType.COLUMN_TYPE_ZONEDDATETIME;
27import static com.vesoft.nebula.driver.graph.decode.ColumnType.COLUMN_TYPE_ZONEDTIME;
28
29import com.vesoft.nebula.driver.graph.decode.ColumnType;
30import com.vesoft.nebula.driver.graph.exception.InvalidValueException;
31import java.math.BigDecimal;
32import java.time.LocalDate;
33import java.time.LocalDateTime;
34import java.time.LocalTime;
35import java.time.OffsetTime;
36import java.time.ZonedDateTime;
37import java.time.format.DateTimeFormatter;
38import java.util.List;
39import java.util.Objects;
40import java.util.Vector;
41
42public class ValueWrapper {
43
44 private final Object value;
45 private final ColumnType type;
46
47 DateTimeFormatter zonedDateTimeFormatter =
48 DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSSSSXXXXX");
49 DateTimeFormatter localDateTimeFormatter =
50 DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSSSS");
51 DateTimeFormatter zonedTimeFormatter = DateTimeFormatter.ofPattern("HH:mm:ss.SSSSSSXXXXX");
52 DateTimeFormatter localTimeFormatter = DateTimeFormatter.ofPattern("HH:mm:ss.SSSSSS");
53
54 public ValueWrapper(Object value, ColumnType type) {
55 this.value = value;
56 this.type = type;
57 }
58
59 public ColumnType getDataType() {
60 return type;
61 }
62
63 public String getDataTypeString() {
64 switch (type) {
65 case COLUMN_TYPE_BOOL:
66 return "BOOLEAN";
67 case COLUMN_TYPE_UINT8:
68 return "UINT8";
69 case COLUMN_TYPE_INT8:
70 return "INT8";
71 case COLUMN_TYPE_UINT16:
72 return "UINT16";
73 case COLUMN_TYPE_INT16:
74 return "INT16";
75 case COLUMN_TYPE_UINT32:
76 return "UINT32";
77 case COLUMN_TYPE_INT32:
78 return "INT32";
79 case COLUMN_TYPE_UINT64:
80 return "UINT64";
81 case COLUMN_TYPE_INT64:
82 return "INT64";
83 case COLUMN_TYPE_FLOAT32:
84 return "FLOAT";
85 case COLUMN_TYPE_FLOAT64:
86 return "DOUBLE";
87 case COLUMN_TYPE_STRING:
88 return "STRING";
89 case COLUMN_TYPE_NODE:
90 return "NODE";
91 case COLUMN_TYPE_EDGE:
92 return "EDGE";
93 case COLUMN_TYPE_LIST:
94 return "LIST";
95 case COLUMN_TYPE_DURATION:
96 return "DURATION";
97 case COLUMN_TYPE_LOCALTIME:
98 return "LOCAL_TIME";
99 case COLUMN_TYPE_LOCALDATETIME:
100 return "LOCAL_DATETIME";
101 case COLUMN_TYPE_ZONEDTIME:
102 return "ZONED_TIME";
103 case COLUMN_TYPE_ZONEDDATETIME:
104 return "ZONED_DATETIME";
105 case COLUMN_TYPE_DATE:
106 return "DATE";
107 case COLUMN_TYPE_RECORD:
108 return "RECORD";
109 case COLUMN_TYPE_PATH:
110 return "PATH";
111 case COLUMN_TYPE_DECIMAL:
112 return "DECIMAL";
113 case COLUMN_TYPE_ANY:
114 return "ANY";
115 default:
116 throw new IllegalArgumentException("Unknown data type: " + type);
117 }
118 }
119
120
126 public Object getValue() {
127 return value;
128 }
129
135 public boolean isNull() {
136 return value == null;
137 }
138
144 public boolean isBoolean() {
145 return type == COLUMN_TYPE_BOOL;
146 }
147
153 public boolean isLong() {
154 return type == COLUMN_TYPE_UINT64 || type == COLUMN_TYPE_INT64;
155 }
156
163 public boolean isInt() {
164 return type == COLUMN_TYPE_UINT8 || type == COLUMN_TYPE_INT8
165 || type == COLUMN_TYPE_UINT16 || type == COLUMN_TYPE_INT16
166 || type == COLUMN_TYPE_UINT32 || type == COLUMN_TYPE_INT32;
167 }
168
174 public boolean isFloat() {
175 return type == COLUMN_TYPE_FLOAT32;
176 }
177
178
184 public boolean isDouble() {
185 return type == COLUMN_TYPE_FLOAT64;
186 }
187
193 public boolean isString() {
194 return type == COLUMN_TYPE_STRING;
195 }
196
202 public boolean isList() {
203 return type == COLUMN_TYPE_LIST;
204 }
205
211 public boolean isNode() {
212 return type == COLUMN_TYPE_NODE;
213 }
214
220 public boolean isEdge() {
221 return type == COLUMN_TYPE_EDGE;
222 }
223
229 public boolean isLocalTime() {
230 return type == COLUMN_TYPE_LOCALTIME;
231 }
232
238 public boolean isZonedTime() {
239 return type == COLUMN_TYPE_ZONEDTIME;
240 }
241
247 public boolean isLocalDateTime() {
248 return type == COLUMN_TYPE_LOCALDATETIME;
249 }
250
256 public boolean isZonedDateTime() {
257 return type == COLUMN_TYPE_ZONEDDATETIME;
258 }
259
265 public boolean isDate() {
266 return type == COLUMN_TYPE_DATE;
267 }
268
274 public boolean isRecord() {
275 return type == COLUMN_TYPE_RECORD;
276 }
277
283 public boolean isDuration() {
284 return type == COLUMN_TYPE_DURATION;
285 }
286
292 public boolean isPath() {
293 return type == COLUMN_TYPE_PATH;
294 }
295
301 public boolean isDecimal() {
302 return type == COLUMN_TYPE_DECIMAL;
303 }
304
311 public boolean asBoolean() throws InvalidValueException {
312 if (type == COLUMN_TYPE_BOOL) {
313 return (java.lang.Boolean) value;
314 }
315 throw new InvalidValueException(
316 "Cannot get field `boolean` because value's type is " + getDataType());
317 }
318
319
330 public int asInt() throws InvalidValueException {
331 if (type == COLUMN_TYPE_INT8 || type == COLUMN_TYPE_UINT8
332 || type == COLUMN_TYPE_UINT16 || type == COLUMN_TYPE_INT16
333 || type == COLUMN_TYPE_UINT32 || type == COLUMN_TYPE_INT32) {
334 return Integer.parseInt(value.toString());
335 }
336 throw new InvalidValueException(
337 "Cannot get field `int` because value's type is " + getDataType());
338 }
339
354 public long asLong() throws InvalidValueException {
355 if (type == COLUMN_TYPE_INT64 || type == COLUMN_TYPE_UINT64) {
356 return (long) value;
357 }
358 throw new InvalidValueException(
359 "Cannot get field `long` because value's type is " + getDataType());
360 }
361
362
369 public String asString() throws InvalidValueException {
370 if (type == COLUMN_TYPE_STRING) {
371 return (java.lang.String) value;
372 }
373 throw new InvalidValueException(
374 "Cannot get field `string` because value's type is " + getDataType());
375 }
376
383 public float asFloat() throws InvalidValueException {
384 if (type == COLUMN_TYPE_FLOAT32) {
385 return (float) value;
386 }
387 throw new InvalidValueException(
388 "Cannot get field `float` because value's type is " + getDataType());
389 }
390
397 public double asDouble() throws InvalidValueException {
398 if (type == COLUMN_TYPE_FLOAT64) {
399 return (double) value;
400 }
401 throw new InvalidValueException(
402 "Cannot get field `double` because value's type is " + getDataType());
403 }
404
411 public List<ValueWrapper> asList() throws InvalidValueException {
412 if (type == COLUMN_TYPE_LIST) {
413 return (List<ValueWrapper>) value;
414 }
415 throw new InvalidValueException(
416 "Cannot get field `list` because value's type is " + getDataType());
417 }
418
425 public Node asNode() throws InvalidValueException {
426 if (type == COLUMN_TYPE_NODE) {
427 return (Node) value;
428 }
429 throw new InvalidValueException(
430 "cannot get field `node` because value's type is " + getDataType());
431 }
432
439 public Edge asEdge() throws InvalidValueException {
440 if (type == COLUMN_TYPE_EDGE) {
441 return (Edge) value;
442 }
443 throw new InvalidValueException(
444 "cannot get field `edge` because value's type is " + getDataType());
445 }
446
453 public LocalTime asLocalTime() throws InvalidValueException {
454 if (type == COLUMN_TYPE_LOCALTIME) {
455 return (LocalTime) value;
456 }
457 throw new InvalidValueException(
458 "cannot get field `localtime` because value's type is " + getDataType());
459 }
460
461
468 public OffsetTime asZonedTime() throws InvalidValueException {
469 if (type == COLUMN_TYPE_ZONEDTIME) {
470 return (OffsetTime) value;
471 }
472 throw new InvalidValueException(
473 "cannot get field `zonedtime` because value's type is " + getDataType());
474 }
475
476
483 public LocalDate asDate() throws InvalidValueException {
484 if (type == COLUMN_TYPE_DATE) {
485 return (LocalDate) value;
486 }
487 throw new InvalidValueException(
488 "cannot get field `date` because value's type is " + getDataType());
489 }
490
497 public LocalDateTime asLocalDateTime() throws InvalidValueException {
498 if (type == COLUMN_TYPE_LOCALDATETIME) {
499 return (LocalDateTime) value;
500 }
501 throw new InvalidValueException(
502 "cannot get field `localdatetime` because value's type is " + getDataType());
503 }
504
511 public ZonedDateTime asZonedDateTime() throws InvalidValueException {
512 if (type == COLUMN_TYPE_ZONEDDATETIME) {
513 return (ZonedDateTime) value;
514 }
515 throw new InvalidValueException(
516 "cannot get field `zoneddatetime` because value's type is " + getDataType());
517 }
518
525 public NDuration asDuration() throws InvalidValueException {
526 if (type == COLUMN_TYPE_DURATION) {
527 return (NDuration) value;
528 }
529 throw new InvalidValueException(
530 "cannot get field `duration` because value's type is " + getDataType());
531 }
532
539 public NRecord asRecord() throws InvalidValueException {
540 if (type == COLUMN_TYPE_RECORD) {
541 return (NRecord) value;
542 }
543 throw new InvalidValueException(
544 "cannot get field `record` because value's type is " + getDataType());
545 }
546
553 public Path asPath() throws InvalidValueException {
554 if (type == COLUMN_TYPE_PATH) {
555 return (Path) value;
556 }
557 throw new InvalidValueException(
558 "cannot get field `path` because value's type is " + getDataType());
559 }
560
567 public BigDecimal asDecimal() throws InvalidValueException {
568 if (type == COLUMN_TYPE_DECIMAL) {
569 return (BigDecimal) value;
570 }
571 throw new InvalidValueException(
572 "cannot get field `decimal` because value's type is " + getDataType());
573 }
574
581 public EmbeddingVector asVector() throws InvalidValueException {
582 if (type == COLUMN_TYPE_EMBEDDINGVECTOR) {
583 return (EmbeddingVector) value;
584 }
585 throw new InvalidValueException(
586 "cannot get field `vector` because value's type is " + getDataType());
587 }
588
589 @Override
590 public boolean equals(Object o) {
591 if (this == o) {
592 return true;
593 }
594 if (o == null || getClass() != o.getClass()) {
595 return false;
596 }
597 ValueWrapper that = (ValueWrapper) o;
598 return Objects.equals(value, that.value);
599 }
600
601 @Override
602 public int hashCode() {
603 return Objects.hash(value);
604 }
605
611 @Override
612 public String toString() {
613 if (isNull()) {
614 return null;
615 } else if (isBoolean()) {
616 return String.valueOf(asBoolean());
617 } else if (isInt()) {
618 return String.valueOf(asInt());
619 } else if (isLong()) {
620 return String.valueOf(asLong());
621 } else if (isFloat()) {
622 return String.valueOf(asFloat());
623 } else if (isDouble()) {
624 return String.valueOf(asDouble());
625 } else if (isString()) {
626 return asString();
627 } else if (isList()) {
628 return asList().toString();
629 } else if (isRecord()) {
630 return asRecord().toString();
631 } else if (isNode()) {
632 return asNode().toString();
633 } else if (isEdge()) {
634 return asEdge().toString();
635 } else if (isLocalTime()) {
636 return asLocalTime().format(localTimeFormatter);
637 } else if (isZonedTime()) {
638 return asZonedTime().format(zonedTimeFormatter);
639 } else if (isLocalDateTime()) {
640 return asLocalDateTime().format(localDateTimeFormatter);
641 } else if (isZonedDateTime()) {
642 return asZonedDateTime().format(zonedDateTimeFormatter);
643 } else if (isDate()) {
644 return asDate().toString();
645 } else if (isDuration()) {
646 return asDuration().toString();
647 } else if (isPath()) {
648 return asPath().toString();
649 } else if (isDecimal()) {
650 return asDecimal().toString();
651 }
652 return "Unknown type: " + getDataType();
653 }
654}
float asFloat()
Convert the original Value to float.
boolean isLocalTime()
check if the Value is Local Time type
double asDouble()
Convert the original Value to double.
int asInt()
Convert the original int8/uint8/int16/uint16/int32/uint32 Value to int.
Node asNode()
Convert the original Value to Node.
boolean isInt()
check if the Value is Int type
Path asPath()
Convert the original data type Value to Path.
boolean isPath()
check if the Value is Path type
LocalDateTime asLocalDateTime()
Convert the original data Value to LocalDateTime.
LocalDate asDate()
Convert the original data type Value to LocalDate.
boolean isList()
check if the Value is List type
boolean isNode()
check if the Value is Node type
NRecord asRecord()
Convert the original data type Value to NRecord.
EmbeddingVector asVector()
Convert the original data type Value to Vector.
NDuration asDuration()
Convert the original data type Value to NDuration.
boolean isDate()
check if the Value is Date type
boolean isLong()
check if the Value is Long type
boolean isString()
check if the Value is String type
boolean isDouble()
check if the Value is Double type
OffsetTime asZonedTime()
Convert the original data type Value to OffsetTime.
boolean isBoolean()
check if the Value is Boolean type
boolean isLocalDateTime()
check if the Value is Local Datetime type
long asLong()
Convert the original int64/uint64 Value to long.
boolean isFloat()
check if the Value is Float type
BigDecimal asDecimal()
Convert the original data type Value to BigDecimal.
boolean isDecimal()
check if the Value is Decimal type
boolean isEdge()
check if the Value is Edge type
boolean isZonedTime()
check if the Value is Zoned Time type
String toString()
Convert Value to String format.
boolean asBoolean()
Convert the original Value to boolean.
ZonedDateTime asZonedDateTime()
Convert the original data Value to ZonedDateTime.
boolean isDuration()
check if the Value is Duration type
boolean isRecord()
check if the Value is Record type
Edge asEdge()
Convert the original data Value to Edge.
List< ValueWrapper > asList()
Convert the original Value to list.
LocalTime asLocalTime()
Convert the original data Value to LocalTime.
boolean isZonedDateTime()
check if the Value is Zoned Datetime type
String asString()
Convert the original data type Value to String.