Skip to content

Commit d3afab6

Browse files
committed
Show user function metadata in data source ui
1 parent 039614e commit d3afab6

File tree

3 files changed

+40
-14
lines changed

3 files changed

+40
-14
lines changed

ui/jetbrains/src/main/java/com/neueda/jetbrains/plugin/graphdb/jetbrains/component/datasource/metadata/DataSourceMetadata.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,6 @@
66
public interface DataSourceMetadata {
77

88
List<Map<String, String>> getMetadata(String metadataKey);
9+
10+
boolean isMetadataExists(String metadataKey);
911
}

ui/jetbrains/src/main/java/com/neueda/jetbrains/plugin/graphdb/jetbrains/component/datasource/metadata/Neo4jBoltCypherDataSourceMetadata.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,11 @@ public List<Map<String, String>> getMetadata(String metadataKey) {
2424
return dataReceiver.get(metadataKey);
2525
}
2626

27+
@Override
28+
public boolean isMetadataExists(final String metadataKey) {
29+
return dataReceiver.containsKey(metadataKey);
30+
}
31+
2732
public void addLabels(GraphQueryResult labelsQueryResult) {
2833
addDataSourceMetadata(labelsQueryResult, LABELS);
2934
}

ui/jetbrains/src/main/java/com/neueda/jetbrains/plugin/graphdb/jetbrains/ui/datasource/metadata/DataSourceMetadataUi.java

Lines changed: 33 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -31,26 +31,33 @@ private boolean updateNeo4jBoltCypherMetadataUi(PatchedDefaultMutableTreeNode da
3131
// Remove existing metadata from ui
3232
dataSourceRootTreeNode.removeAllChildren();
3333

34-
// Prepare new metadata root tree nodes
34+
// Labels
3535
PatchedDefaultMutableTreeNode labelsTreeNode = new PatchedDefaultMutableTreeNode(
3636
new ValueWithIcon(GraphIcons.Nodes.LABEL, "labels"));
37-
PatchedDefaultMutableTreeNode relationshipTypesTreeNode = new PatchedDefaultMutableTreeNode(
38-
new ValueWithIcon(GraphIcons.Nodes.RELATIONSHIP_TYPE, "relationship types"));
39-
PatchedDefaultMutableTreeNode propertyKeysTreeNode = new PatchedDefaultMutableTreeNode(
40-
new ValueWithIcon(GraphIcons.Nodes.PROPERTY_KEY, "property keys"));
41-
PatchedDefaultMutableTreeNode storedProceduresTreeNode = new PatchedDefaultMutableTreeNode(
42-
new ValueWithIcon(GraphIcons.Nodes.STORED_PROCEDURE, "stored procedures"));
43-
44-
// Update metadata tree nodes
4537
dataSourceMetadata
4638
.getMetadata(Neo4jBoltCypherDataSourceMetadata.LABELS)
4739
.forEach((row) -> labelsTreeNode.add(new PatchedDefaultMutableTreeNode(row.get("label"))));
40+
dataSourceRootTreeNode.add(labelsTreeNode);
41+
42+
// RelTypes
43+
PatchedDefaultMutableTreeNode relationshipTypesTreeNode = new PatchedDefaultMutableTreeNode(
44+
new ValueWithIcon(GraphIcons.Nodes.RELATIONSHIP_TYPE, "relationship types"));
4845
dataSourceMetadata
4946
.getMetadata(Neo4jBoltCypherDataSourceMetadata.RELATIONSHIP_TYPES)
5047
.forEach((row) -> relationshipTypesTreeNode.add(new PatchedDefaultMutableTreeNode(row.get("relationshipType"))));
48+
dataSourceRootTreeNode.add(relationshipTypesTreeNode);
49+
50+
// Property Keys
51+
PatchedDefaultMutableTreeNode propertyKeysTreeNode = new PatchedDefaultMutableTreeNode(
52+
new ValueWithIcon(GraphIcons.Nodes.PROPERTY_KEY, "property keys"));
5153
dataSourceMetadata
5254
.getMetadata(Neo4jBoltCypherDataSourceMetadata.PROPERTY_KEYS)
5355
.forEach((row) -> propertyKeysTreeNode.add(new PatchedDefaultMutableTreeNode(row.get("propertyKey"))));
56+
dataSourceRootTreeNode.add(propertyKeysTreeNode);
57+
58+
// Stored procedures
59+
PatchedDefaultMutableTreeNode storedProceduresTreeNode = new PatchedDefaultMutableTreeNode(
60+
new ValueWithIcon(GraphIcons.Nodes.STORED_PROCEDURE, "stored procedures"));
5461
dataSourceMetadata
5562
.getMetadata(Neo4jBoltCypherDataSourceMetadata.STORED_PROCEDURES)
5663
.forEach((row) -> {
@@ -59,13 +66,25 @@ private boolean updateNeo4jBoltCypherMetadataUi(PatchedDefaultMutableTreeNode da
5966
nameNode.add(descriptionNode);
6067
storedProceduresTreeNode.add(nameNode);
6168
});
62-
63-
// Add metadata tree nodes back to UI
64-
dataSourceRootTreeNode.add(labelsTreeNode);
65-
dataSourceRootTreeNode.add(relationshipTypesTreeNode);
66-
dataSourceRootTreeNode.add(propertyKeysTreeNode);
6769
dataSourceRootTreeNode.add(storedProceduresTreeNode);
6870

71+
// User Functions
72+
if (dataSourceMetadata.isMetadataExists(Neo4jBoltCypherDataSourceMetadata.USER_FUNCTIONS)) {
73+
PatchedDefaultMutableTreeNode userFunctionTreeNode = new PatchedDefaultMutableTreeNode(
74+
new ValueWithIcon(GraphIcons.Nodes.USER_FUNCTION, "user functions"));
75+
76+
dataSourceMetadata
77+
.getMetadata(Neo4jBoltCypherDataSourceMetadata.USER_FUNCTIONS)
78+
.forEach((row) -> {
79+
PatchedDefaultMutableTreeNode nameNode = new PatchedDefaultMutableTreeNode(row.get("name"));
80+
PatchedDefaultMutableTreeNode descriptionNode = new PatchedDefaultMutableTreeNode(row.get("signature"));
81+
nameNode.add(descriptionNode);
82+
userFunctionTreeNode.add(nameNode);
83+
});
84+
85+
dataSourceRootTreeNode.add(userFunctionTreeNode);
86+
}
87+
6988
return true;
7089
}
7190
}

0 commit comments

Comments
 (0)