Skip to content

Commit 9144608

Browse files
Store Neo4j metadata in record class (#43)
Store Neo4j metadata in record class
1 parent 5dd675f commit 9144608

File tree

13 files changed

+103
-192
lines changed

13 files changed

+103
-192
lines changed

testing/integration-neo4j/src/test/java/com/albertoventurini/graphdbplugin/test/integration/neo4j/tests/database/common/AbstractDataSourceMetadataTest.java

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -36,15 +36,6 @@ public void testMetadataExists() throws ExecutionException, InterruptedException
3636
assertThat(metadata).isPresent();
3737
}
3838

39-
public void testMetadataHaveRequiredProcedures() {
40-
final List<Neo4jProcedureMetadata> procedures = getMetadata().getProcedures();
41-
42-
assertTrue(procedures.stream().anyMatch(p ->
43-
p.name().equals("db.labels")
44-
&& p.signature().equals("db.labels() :: (label :: STRING?)")
45-
&& p.description().equals("List all available labels in the database.")));
46-
}
47-
4839
protected DataSourceMetadata getMetadata() {
4940
try {
5041
CompletableFuture<Optional<DataSourceMetadata>> futureMeta = component().dataSourcesMetadata().getMetadata(getDataSource());

testing/integration-neo4j/src/test/java/com/albertoventurini/graphdbplugin/test/integration/neo4j/tests/database/neo4j/DataSourceMetadataTest.java

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,9 @@
66
*/
77
package com.albertoventurini.graphdbplugin.test.integration.neo4j.tests.database.neo4j;
88

9-
import com.albertoventurini.graphdbplugin.jetbrains.component.datasource.metadata.DataSourceMetadata;
9+
import com.albertoventurini.graphdbplugin.jetbrains.component.datasource.metadata.neo4j.Neo4jMetadata;
1010
import com.albertoventurini.graphdbplugin.jetbrains.component.datasource.metadata.neo4j.Neo4jFunctionMetadata;
11+
import com.albertoventurini.graphdbplugin.jetbrains.component.datasource.metadata.neo4j.Neo4jProcedureMetadata;
1112
import com.albertoventurini.graphdbplugin.jetbrains.component.datasource.state.DataSourceApi;
1213
import com.albertoventurini.graphdbplugin.test.integration.neo4j.tests.database.common.AbstractDataSourceMetadataTest;
1314

@@ -23,9 +24,19 @@ public DataSourceApi getDataSource() {
2324
}
2425

2526
public void testHaveTestUserFunctions() {
26-
DataSourceMetadata metadata = getMetadata();
27-
List<Neo4jFunctionMetadata> functionsMetadata = metadata.getFunctions();
27+
final Neo4jMetadata metadata = (Neo4jMetadata) getMetadata();
28+
final List<Neo4jFunctionMetadata> functionsMetadata = metadata.functions();
2829
assertThat(functionsMetadata)
2930
.isNotEmpty();
3031
}
32+
33+
public void testMetadataHaveRequiredProcedures() {
34+
final Neo4jMetadata metadata = (Neo4jMetadata) getMetadata();
35+
final List<Neo4jProcedureMetadata> procedures = metadata.procedures();
36+
37+
assertTrue(procedures.stream().anyMatch(p ->
38+
p.name().equals("db.labels")
39+
&& p.signature().equals("db.labels() :: (label :: STRING?)")
40+
&& p.description().equals("List all available labels in the database.")));
41+
}
3142
}

ui/jetbrains/src/main/java/com/albertoventurini/graphdbplugin/jetbrains/component/datasource/metadata/DataSourceMetadata.java

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,6 @@
66
*/
77
package com.albertoventurini.graphdbplugin.jetbrains.component.datasource.metadata;
88

9-
import com.albertoventurini.graphdbplugin.jetbrains.component.datasource.metadata.neo4j.Neo4jConstraintMetadata;
10-
import com.albertoventurini.graphdbplugin.jetbrains.component.datasource.metadata.neo4j.Neo4jFunctionMetadata;
11-
import com.albertoventurini.graphdbplugin.jetbrains.component.datasource.metadata.neo4j.Neo4jIndexMetadata;
12-
import com.albertoventurini.graphdbplugin.jetbrains.component.datasource.metadata.neo4j.Neo4jProcedureMetadata;
13-
14-
import java.util.List;
15-
169
public interface DataSourceMetadata {
1710

18-
List<Neo4jFunctionMetadata> getFunctions();
19-
20-
List<Neo4jProcedureMetadata> getProcedures();
21-
22-
List<Neo4jIndexMetadata> getIndexes();
23-
24-
List<Neo4jConstraintMetadata> getConstraints();
2511
}

ui/jetbrains/src/main/java/com/albertoventurini/graphdbplugin/jetbrains/component/datasource/metadata/DataSourcesComponentMetadata.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
package com.albertoventurini.graphdbplugin.jetbrains.component.datasource.metadata;
88

99
import com.albertoventurini.graphdbplugin.jetbrains.component.datasource.DataSourceType;
10-
import com.albertoventurini.graphdbplugin.jetbrains.component.datasource.metadata.neo4j.Neo4jBoltCypherDataSourceMetadata;
10+
import com.albertoventurini.graphdbplugin.jetbrains.component.datasource.metadata.neo4j.Neo4jMetadata;
1111
import com.albertoventurini.graphdbplugin.jetbrains.component.datasource.metadata.neo4j.Neo4jLabelMetadata;
1212
import com.albertoventurini.graphdbplugin.jetbrains.component.datasource.metadata.neo4j.Neo4jMetadataBuilder;
1313
import com.albertoventurini.graphdbplugin.jetbrains.component.datasource.metadata.neo4j.Neo4jRelationshipTypeMetadata;
@@ -51,8 +51,8 @@ public CompletableFuture<Optional<DataSourceMetadata>> getMetadata(DataSourceApi
5151
executorService.runInBackground(
5252
() -> handlers.get(sourceType).buildMetadata(dataSource),
5353
(metadata) -> {
54-
updateNeo4jBoltMetadata(dataSource, (Neo4jBoltCypherDataSourceMetadata) metadata);
55-
metadataRetrieveEvent.metadataRefreshSucceed(dataSource, metadata);
54+
updateNeo4jBoltMetadata(dataSource, (Neo4jMetadata) metadata);
55+
metadataRetrieveEvent.metadataRefreshSucceed(dataSource);
5656
future.complete(Optional.of(metadata));
5757
},
5858
(exception) -> {
@@ -67,22 +67,22 @@ public CompletableFuture<Optional<DataSourceMetadata>> getMetadata(DataSourceApi
6767
return future;
6868
}
6969

70-
private void updateNeo4jBoltMetadata(DataSourceApi dataSource, Neo4jBoltCypherDataSourceMetadata metadata) {
70+
private void updateNeo4jBoltMetadata(DataSourceApi dataSource, Neo4jMetadata metadata) {
7171
// Refresh cypher metadata provider
7272
cypherMetadataProviderService.wipeContainer(dataSource.getName());
7373
CypherMetadataContainer container = cypherMetadataProviderService.getContainer(dataSource.getName());
7474

75-
metadata.getLabels()
75+
metadata.labels()
7676
.stream()
7777
.map(Neo4jLabelMetadata::name)
7878
.forEach(container::addLabel);
79-
metadata.getRelationshipTypes()
79+
metadata.relationshipTypes()
8080
.stream()
8181
.map(Neo4jRelationshipTypeMetadata::name)
8282
.forEach(container::addRelationshipType);
8383

84-
metadata.getPropertyKeys().forEach(container::addPropertyKey);
85-
metadata.getProcedures().forEach(p -> container.addProcedure(p.name(), p.signature(), p.description()));
86-
metadata.getFunctions().forEach(f -> container.addFunction(f.name(), f.signature(), f.description()));
84+
metadata.propertyKeys().forEach(container::addPropertyKey);
85+
metadata.procedures().forEach(p -> container.addProcedure(p.name(), p.signature(), p.description()));
86+
metadata.functions().forEach(f -> container.addFunction(f.name(), f.signature(), f.description()));
8787
}
8888
}

ui/jetbrains/src/main/java/com/albertoventurini/graphdbplugin/jetbrains/component/datasource/metadata/neo4j/Neo4jBoltCypherDataSourceMetadata.java

Lines changed: 0 additions & 97 deletions
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package com.albertoventurini.graphdbplugin.jetbrains.component.datasource.metadata.neo4j;
2+
3+
import com.albertoventurini.graphdbplugin.jetbrains.component.datasource.metadata.DataSourceMetadata;
4+
5+
import java.util.*;
6+
7+
public record Neo4jMetadata(
8+
List<Neo4jFunctionMetadata> functions,
9+
List<Neo4jProcedureMetadata> procedures,
10+
List<Neo4jConstraintMetadata> constraints,
11+
List<Neo4jLabelMetadata> labels,
12+
List<Neo4jRelationshipTypeMetadata> relationshipTypes,
13+
List<Neo4jIndexMetadata> indexes,
14+
List<String> propertyKeys)
15+
implements DataSourceMetadata { }

ui/jetbrains/src/main/java/com/albertoventurini/graphdbplugin/jetbrains/component/datasource/metadata/neo4j/Neo4jMetadataBuilder.java

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import com.intellij.openapi.application.ApplicationManager;
1010
import com.intellij.openapi.diagnostic.Logger;
1111

12+
import java.util.ArrayList;
1213
import java.util.List;
1314

1415
import static java.util.stream.Collectors.toList;
@@ -48,26 +49,33 @@ RETURN relationshipTypeName, SUM(cnt) AS relationshipTypeCount
4849
@Override
4950
public DataSourceMetadata buildMetadata(DataSourceApi dataSource) {
5051
final var databaseManager = ApplicationManager.getApplication().getService(DatabaseManagerService.class);
51-
GraphDatabaseApi db = databaseManager.getDatabaseFor(dataSource);
52-
Neo4jBoltCypherDataSourceMetadata metadata = new Neo4jBoltCypherDataSourceMetadata();
52+
final GraphDatabaseApi db = databaseManager.getDatabaseFor(dataSource);
53+
54+
final List<Neo4jIndexMetadata> indexes = new ArrayList<>();
55+
final List<Neo4jProcedureMetadata> procedures = new ArrayList<>();
56+
final List<Neo4jConstraintMetadata> constraints = new ArrayList<>();
5357

5458
try {
55-
metadata.addIndexes(getIndexes(db));
56-
metadata.addProcedures(getProcedures(db));
57-
metadata.addConstraints(getConstraints(db));
59+
indexes.addAll(getIndexes(db));
60+
procedures.addAll(getProcedures(db));
61+
constraints.addAll(getConstraints(db));
5862
} catch (Exception e) {
5963
LOG.warn("Unable to load indexes, constraints and procedures from the current database. Please upgrade to Neo4j 4 or 5 to fix this.");
6064
}
6165

6266
final var propertyKeys = getPropertyKeys(db);
63-
metadata.addPropertyKeys(propertyKeys);
64-
65-
metadata.addLabels(getLabels(db));
66-
metadata.addRelationshipTypes(getRelationshipTypes(db));
67-
68-
metadata.addFunctions(getFunctions(db));
69-
70-
return metadata;
67+
final var labels = getLabels(db);
68+
final var relationshipTypes = getRelationshipTypes(db);
69+
final var functions = getFunctions(db);
70+
71+
return new Neo4jMetadata(
72+
functions,
73+
procedures,
74+
constraints,
75+
labels,
76+
relationshipTypes,
77+
indexes,
78+
propertyKeys);
7179
}
7280

7381
private List<Neo4jFunctionMetadata> getFunctions(final GraphDatabaseApi db) {

ui/jetbrains/src/main/java/com/albertoventurini/graphdbplugin/jetbrains/ui/console/log/LogPanel.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ public void startMetadataRefresh(DataSourceApi nodeDataSource) {
115115
}
116116

117117
@Override
118-
public void metadataRefreshSucceed(DataSourceApi nodeDataSource, DataSourceMetadata metadata) {
118+
public void metadataRefreshSucceed(DataSourceApi nodeDataSource) {
119119
info(String.format("DataSource[%s] - metadata refreshed successfully!", nodeDataSource.getName()));
120120
newLine();
121121
newLine();

ui/jetbrains/src/main/java/com/albertoventurini/graphdbplugin/jetbrains/ui/datasource/metadata/DataSourceTreeUpdater.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@
66
/**
77
* Updates the data source tree according to the provided data source metadata.
88
*/
9-
interface DataSourceTreeUpdater {
9+
interface DataSourceTreeUpdater<T extends DataSourceMetadata> {
1010

1111
/**
1212
* Given a tree root and a datasource metadata object, this method
1313
* displays the data on the tree.
1414
* @param metadata the metadata
1515
*/
16-
void updateTree(PatchedDefaultMutableTreeNode dataSourceRootTreeNode, DataSourceMetadata metadata);
16+
void updateTree(PatchedDefaultMutableTreeNode dataSourceRootTreeNode, T metadata);
1717
}

ui/jetbrains/src/main/java/com/albertoventurini/graphdbplugin/jetbrains/ui/datasource/metadata/MetadataRetrieveEvent.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ public interface MetadataRetrieveEvent {
1616

1717
void startMetadataRefresh(DataSourceApi nodeDataSource);
1818

19-
void metadataRefreshSucceed(DataSourceApi nodeDataSource, DataSourceMetadata metadata);
19+
void metadataRefreshSucceed(DataSourceApi nodeDataSource);
2020

2121
void metadataRefreshFailed(DataSourceApi nodeDataSource, Exception exception);
2222
}

0 commit comments

Comments
 (0)