Skip to content

Commit f47698e

Browse files
Merge pull request #6035 from soerenreichardt/2.1-speedup-csv-parsing
Speedup csv parsing
2 parents 5711f91 + 900de2d commit f47698e

File tree

8 files changed

+206
-422
lines changed

8 files changed

+206
-422
lines changed

graph-projection-api/src/main/java/org/neo4j/gds/api/nodeproperties/ValueType.java

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
*/
2020
package org.neo4j.gds.api.nodeproperties;
2121

22+
import org.jetbrains.annotations.Nullable;
2223
import org.neo4j.gds.api.DefaultValue;
2324

2425
public enum ValueType {
@@ -37,6 +38,11 @@ public String csvName() {
3738
public DefaultValue fallbackValue() {
3839
return DefaultValue.forLong();
3940
}
41+
42+
@Override
43+
public <RESULT> RESULT accept(Visitor<RESULT> visitor) {
44+
return visitor.visitLong();
45+
}
4046
},
4147
DOUBLE {
4248
@Override
@@ -53,6 +59,11 @@ public String csvName() {
5359
public DefaultValue fallbackValue() {
5460
return DefaultValue.forDouble();
5561
}
62+
63+
@Override
64+
public <RESULT> RESULT accept(Visitor<RESULT> visitor) {
65+
return visitor.visitDouble();
66+
}
5667
},
5768
STRING {
5869
@Override
@@ -69,6 +80,11 @@ public String csvName() {
6980
public DefaultValue fallbackValue() {
7081
return DefaultValue.DEFAULT;
7182
}
83+
84+
@Override
85+
public <RESULT> RESULT accept(Visitor<RESULT> visitor) {
86+
return visitor.visitString();
87+
}
7288
},
7389
DOUBLE_ARRAY {
7490
@Override
@@ -85,6 +101,11 @@ public String csvName() {
85101
public DefaultValue fallbackValue() {
86102
return DefaultValue.forDoubleArray();
87103
}
104+
105+
@Override
106+
public <RESULT> RESULT accept(Visitor<RESULT> visitor) {
107+
return visitor.visitDoubleArray();
108+
}
88109
},
89110
FLOAT_ARRAY {
90111
@Override
@@ -101,6 +122,11 @@ public String csvName() {
101122
public DefaultValue fallbackValue() {
102123
return DefaultValue.forFloatArray();
103124
}
125+
126+
@Override
127+
public <RESULT> RESULT accept(Visitor<RESULT> visitor) {
128+
return visitor.visitFloatArray();
129+
}
104130
},
105131
LONG_ARRAY {
106132
@Override
@@ -117,6 +143,11 @@ public String csvName() {
117143
public DefaultValue fallbackValue() {
118144
return DefaultValue.forLongArray();
119145
}
146+
147+
@Override
148+
public <RESULT> RESULT accept(Visitor<RESULT> visitor) {
149+
return visitor.visitLongArray();
150+
}
120151
},
121152
UNKNOWN {
122153
@Override
@@ -133,6 +164,11 @@ public String csvName() {
133164
public DefaultValue fallbackValue() {
134165
return DefaultValue.DEFAULT;
135166
}
167+
168+
@Override
169+
public <RESULT> RESULT accept(Visitor<RESULT> visitor) {
170+
return visitor.visitUnknown();
171+
}
136172
};
137173

138174
public abstract String cypherName();
@@ -141,6 +177,8 @@ public DefaultValue fallbackValue() {
141177

142178
public abstract DefaultValue fallbackValue();
143179

180+
public abstract <RESULT> RESULT accept(Visitor<RESULT> visitor);
181+
144182
public static ValueType fromCsvName(String csvName) {
145183
for (ValueType value : values()) {
146184
if (value == UNKNOWN) {
@@ -152,4 +190,15 @@ public static ValueType fromCsvName(String csvName) {
152190
}
153191
throw new IllegalArgumentException("Unexpected value: " + csvName);
154192
}
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+
}
155204
}

0 commit comments

Comments
 (0)