Skip to content

Commit 64ef5f2

Browse files
s1cksoerenreichardt
andcommitted
Inline static factory methods from Nodes
Co-authored-by: Sören Reichardt <soren.reichardt@neotechnology.com>
1 parent 351eaaa commit 64ef5f2

File tree

4 files changed

+35
-98
lines changed

4 files changed

+35
-98
lines changed

core/src/main/java/org/neo4j/gds/core/loading/Nodes.java

Lines changed: 0 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -21,22 +21,11 @@
2121

2222
import org.immutables.value.Value;
2323
import org.jetbrains.annotations.TestOnly;
24-
import org.neo4j.gds.NodeLabel;
25-
import org.neo4j.gds.PropertyMapping;
26-
import org.neo4j.gds.PropertyMappings;
2724
import org.neo4j.gds.annotation.ValueClass;
28-
import org.neo4j.gds.api.DefaultValue;
2925
import org.neo4j.gds.api.IdMap;
30-
import org.neo4j.gds.api.PropertyState;
31-
import org.neo4j.gds.api.properties.nodes.ImmutableNodeProperty;
32-
import org.neo4j.gds.api.properties.nodes.NodeProperty;
3326
import org.neo4j.gds.api.properties.nodes.NodePropertyStore;
34-
import org.neo4j.gds.api.properties.nodes.NodePropertyValues;
35-
import org.neo4j.gds.api.schema.ImmutablePropertySchema;
3627
import org.neo4j.gds.api.schema.NodeSchema;
3728

38-
import java.util.Map;
39-
4029
@ValueClass
4130
public interface Nodes {
4231

@@ -57,63 +46,4 @@ static Nodes of(IdMap idmap) {
5746
return ImmutableNodes.of(NodeSchema.empty(), idmap, NodePropertyStore.empty());
5847
}
5948

60-
static Nodes of(
61-
IdMap idMap,
62-
Map<NodeLabel, PropertyMappings> propertyMappingsByLabel,
63-
Map<PropertyMapping, NodePropertyValues> properties,
64-
PropertyState propertyState
65-
) {
66-
var nodeSchema = NodeSchema.empty();
67-
var nodePropertyStoreBuilder = NodePropertyStore.builder();
68-
propertyMappingsByLabel.forEach(((nodeLabel, propertyMappings) -> {
69-
if (propertyMappings.mappings().isEmpty()) {
70-
nodeSchema.addLabel(nodeLabel);
71-
} else {
72-
propertyMappings.mappings().forEach(propertyMapping -> {
73-
var nodePropertyValues = properties.get(propertyMapping);
74-
// The default value is either overridden by the user
75-
// or inferred from the actual property value.
76-
var defaultValue = propertyMapping.defaultValue().equals(DefaultValue.DEFAULT)
77-
? DefaultValue.of(nodePropertyValues.valueType())
78-
: propertyMapping.defaultValue();
79-
var propertySchema = ImmutablePropertySchema.builder()
80-
.key(propertyMapping.propertyKey())
81-
.valueType(nodePropertyValues.valueType())
82-
.defaultValue(defaultValue)
83-
.state(propertyState)
84-
.build();
85-
86-
nodeSchema.addProperty(nodeLabel, propertySchema.key(), propertySchema);
87-
nodePropertyStoreBuilder.putProperty(
88-
propertySchema.key(),
89-
ImmutableNodeProperty.of(nodePropertyValues, propertySchema)
90-
);
91-
});
92-
}
93-
}));
94-
95-
return ImmutableNodes.of(nodeSchema, idMap, nodePropertyStoreBuilder.build());
96-
}
97-
98-
static Nodes of(
99-
NodeSchema nodeSchema,
100-
IdMap idMap,
101-
Map<PropertyMapping, NodePropertyValues> properties,
102-
PropertyState propertyState
103-
) {
104-
var propertyStoreBuilder = NodePropertyStore.builder();
105-
properties.forEach((mapping, nodeProperties) -> propertyStoreBuilder.putProperty(
106-
mapping.propertyKey(),
107-
NodeProperty.of(
108-
mapping.propertyKey(),
109-
propertyState,
110-
nodeProperties,
111-
mapping.defaultValue().isUserDefined()
112-
? mapping.defaultValue()
113-
: nodeProperties.valueType().fallbackValue()
114-
)
115-
));
116-
117-
return ImmutableNodes.of(nodeSchema, idMap, propertyStoreBuilder.build());
118-
}
11949
}

core/src/main/java/org/neo4j/gds/core/loading/ScanningNodesImporter.java

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,11 @@
2727
import org.neo4j.gds.api.GraphLoaderContext;
2828
import org.neo4j.gds.api.IdMap;
2929
import org.neo4j.gds.api.PropertyState;
30+
import org.neo4j.gds.api.properties.nodes.ImmutableNodeProperty;
31+
import org.neo4j.gds.api.properties.nodes.NodePropertyStore;
3032
import org.neo4j.gds.api.properties.nodes.NodePropertyValues;
33+
import org.neo4j.gds.api.schema.ImmutablePropertySchema;
34+
import org.neo4j.gds.api.schema.NodeSchema;
3135
import org.neo4j.gds.config.GraphProjectFromStoreConfig;
3236
import org.neo4j.gds.core.GraphDimensions;
3337
import org.neo4j.gds.core.IdMapBehaviorServiceProvider;
@@ -199,7 +203,37 @@ public Nodes build() {
199203
importPropertiesFromIndex(idMap, nodeProperties);
200204
}
201205

202-
return Nodes.of(idMap, propertyMappingsByLabel, nodeProperties, PropertyState.PERSISTENT);
206+
var nodeSchema = NodeSchema.empty();
207+
var nodePropertyStoreBuilder = NodePropertyStore.builder();
208+
209+
this.propertyMappingsByLabel.forEach(((nodeLabel, mappings) -> {
210+
if (mappings.mappings().isEmpty()) {
211+
nodeSchema.addLabel(nodeLabel);
212+
} else {
213+
mappings.mappings().forEach(propertyMapping -> {
214+
var nodePropertyValues = nodeProperties.get(propertyMapping);
215+
// The default value is either overridden by the user
216+
// or inferred from the actual property value.
217+
var defaultValue = propertyMapping.defaultValue().isUserDefined()
218+
? propertyMapping.defaultValue()
219+
: nodePropertyValues.valueType().fallbackValue();
220+
var propertySchema = ImmutablePropertySchema.builder()
221+
.key(propertyMapping.propertyKey())
222+
.valueType(nodePropertyValues.valueType())
223+
.defaultValue(defaultValue)
224+
.state(PropertyState.PERSISTENT)
225+
.build();
226+
227+
nodeSchema.addProperty(nodeLabel, propertySchema.key(), propertySchema);
228+
nodePropertyStoreBuilder.putProperty(
229+
propertySchema.key(),
230+
ImmutableNodeProperty.of(nodePropertyValues, propertySchema)
231+
);
232+
});
233+
}
234+
}));
235+
236+
return ImmutableNodes.of(nodeSchema, idMap, nodePropertyStoreBuilder.build());
203237
}
204238

205239
private void importPropertiesFromIndex(

core/src/test/java/org/neo4j/gds/api/DefaultValueTest.java

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -180,16 +180,6 @@ void createUserDefinedValueTypes(Object valueToSet, Function<DefaultValue, ?> fn
180180
assertThat(fn.apply(defaultValue)).isEqualTo(expectedValue);
181181
}
182182

183-
@Test
184-
void initFromValueType() {
185-
assertThat(DefaultValue.of(ValueType.DOUBLE)).isEqualTo(DefaultValue.forDouble());
186-
assertThat(DefaultValue.of(ValueType.LONG)).isEqualTo(DefaultValue.forLong());
187-
assertThat(DefaultValue.of(ValueType.LONG_ARRAY)).isEqualTo(DefaultValue.forLongArray());
188-
assertThat(DefaultValue.of(ValueType.FLOAT_ARRAY)).isEqualTo(DefaultValue.forFloatArray());
189-
assertThat(DefaultValue.of(ValueType.DOUBLE_ARRAY)).isEqualTo(DefaultValue.forDoubleArray());
190-
assertThat(DefaultValue.of(ValueType.STRING)).isEqualTo(DefaultValue.of(DEFAULT));
191-
}
192-
193183
private static Stream<Arguments> values() {
194184
return Stream.of(
195185
Arguments.of(42, (Function<DefaultValue, ?>) DefaultValue::longValue, 42L),

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

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -84,23 +84,6 @@ public static DefaultValue of(@Nullable Object defaultValue, ValueType type, boo
8484
}
8585
}
8686

87-
public static DefaultValue of(ValueType type) {
88-
switch (type) {
89-
case LONG:
90-
return DefaultValue.forLong();
91-
case DOUBLE:
92-
return DefaultValue.forDouble();
93-
case DOUBLE_ARRAY:
94-
return DefaultValue.forDoubleArray();
95-
case FLOAT_ARRAY:
96-
return DefaultValue.forFloatArray();
97-
case LONG_ARRAY:
98-
return DefaultValue.forLongArray();
99-
default:
100-
return DefaultValue.of(type.fallbackValue());
101-
}
102-
}
103-
10487
private static DefaultValue ofFallBackValue(@Nullable Object defaultValue) {
10588
return of(defaultValue, false);
10689
}

0 commit comments

Comments
 (0)