19
19
*/
20
20
package org .neo4j .gds .api .nodeproperties ;
21
21
22
+ import org .jetbrains .annotations .Nullable ;
22
23
import org .neo4j .gds .api .DefaultValue ;
23
24
24
25
public enum ValueType {
@@ -37,6 +38,11 @@ public String csvName() {
37
38
public DefaultValue fallbackValue () {
38
39
return DefaultValue .forLong ();
39
40
}
41
+
42
+ @ Override
43
+ public <RESULT > RESULT accept (Visitor <RESULT > visitor ) {
44
+ return visitor .visitLong ();
45
+ }
40
46
},
41
47
DOUBLE {
42
48
@ Override
@@ -53,6 +59,11 @@ public String csvName() {
53
59
public DefaultValue fallbackValue () {
54
60
return DefaultValue .forDouble ();
55
61
}
62
+
63
+ @ Override
64
+ public <RESULT > RESULT accept (Visitor <RESULT > visitor ) {
65
+ return visitor .visitDouble ();
66
+ }
56
67
},
57
68
STRING {
58
69
@ Override
@@ -69,6 +80,11 @@ public String csvName() {
69
80
public DefaultValue fallbackValue () {
70
81
return DefaultValue .DEFAULT ;
71
82
}
83
+
84
+ @ Override
85
+ public <RESULT > RESULT accept (Visitor <RESULT > visitor ) {
86
+ return visitor .visitString ();
87
+ }
72
88
},
73
89
DOUBLE_ARRAY {
74
90
@ Override
@@ -85,6 +101,11 @@ public String csvName() {
85
101
public DefaultValue fallbackValue () {
86
102
return DefaultValue .forDoubleArray ();
87
103
}
104
+
105
+ @ Override
106
+ public <RESULT > RESULT accept (Visitor <RESULT > visitor ) {
107
+ return visitor .visitDoubleArray ();
108
+ }
88
109
},
89
110
FLOAT_ARRAY {
90
111
@ Override
@@ -101,6 +122,11 @@ public String csvName() {
101
122
public DefaultValue fallbackValue () {
102
123
return DefaultValue .forFloatArray ();
103
124
}
125
+
126
+ @ Override
127
+ public <RESULT > RESULT accept (Visitor <RESULT > visitor ) {
128
+ return visitor .visitFloatArray ();
129
+ }
104
130
},
105
131
LONG_ARRAY {
106
132
@ Override
@@ -117,6 +143,11 @@ public String csvName() {
117
143
public DefaultValue fallbackValue () {
118
144
return DefaultValue .forLongArray ();
119
145
}
146
+
147
+ @ Override
148
+ public <RESULT > RESULT accept (Visitor <RESULT > visitor ) {
149
+ return visitor .visitLongArray ();
150
+ }
120
151
},
121
152
UNKNOWN {
122
153
@ Override
@@ -133,6 +164,11 @@ public String csvName() {
133
164
public DefaultValue fallbackValue () {
134
165
return DefaultValue .DEFAULT ;
135
166
}
167
+
168
+ @ Override
169
+ public <RESULT > RESULT accept (Visitor <RESULT > visitor ) {
170
+ return visitor .visitUnknown ();
171
+ }
136
172
};
137
173
138
174
public abstract String cypherName ();
@@ -141,6 +177,8 @@ public DefaultValue fallbackValue() {
141
177
142
178
public abstract DefaultValue fallbackValue ();
143
179
180
+ public abstract <RESULT > RESULT accept (Visitor <RESULT > visitor );
181
+
144
182
public static ValueType fromCsvName (String csvName ) {
145
183
for (ValueType value : values ()) {
146
184
if (value == UNKNOWN ) {
@@ -152,4 +190,15 @@ public static ValueType fromCsvName(String csvName) {
152
190
}
153
191
throw new IllegalArgumentException ("Unexpected value: " + csvName );
154
192
}
193
+
194
+ public interface Visitor <RESULT > {
195
+ RESULT visitLong ();
196
+ RESULT visitDouble ();
197
+ RESULT visitString ();
198
+ RESULT visitLongArray ();
199
+ RESULT visitDoubleArray ();
200
+ RESULT visitFloatArray ();
201
+
202
+ default @ Nullable RESULT visitUnknown () { return null ; }
203
+ }
155
204
}
0 commit comments