1
1
package com .neueda .jetbrains .plugin .graphdb .jetbrains .ui .datasource .metadata ;
2
2
3
3
import com .intellij .ui .treeStructure .PatchedDefaultMutableTreeNode ;
4
- import com .neueda .jetbrains .plugin .graphdb .jetbrains .component .datasource .metadata .DataSourceMetadata ;
5
4
import com .neueda .jetbrains .plugin .graphdb .jetbrains .component .datasource .metadata .DataSourcesComponentMetadata ;
6
5
import com .neueda .jetbrains .plugin .graphdb .jetbrains .component .datasource .metadata .Neo4jBoltCypherDataSourceMetadata ;
7
6
import com .neueda .jetbrains .plugin .graphdb .jetbrains .component .datasource .state .DataSourceApi ;
7
+ import com .neueda .jetbrains .plugin .graphdb .jetbrains .ui .datasource .tree .LabelTreeNodeModel ;
8
8
import com .neueda .jetbrains .plugin .graphdb .jetbrains .ui .datasource .tree .MetadataTreeNodeModel ;
9
+ import com .neueda .jetbrains .plugin .graphdb .jetbrains .ui .datasource .tree .RelationshipTypeTreeNodeModel ;
9
10
import com .neueda .jetbrains .plugin .graphdb .jetbrains .ui .datasource .tree .TreeNodeModelApi ;
10
11
import com .neueda .jetbrains .plugin .graphdb .platform .GraphIcons ;
11
12
12
13
import static com .neueda .jetbrains .plugin .graphdb .jetbrains .ui .datasource .tree .Neo4jTreeNodeType .*;
13
14
14
15
public class DataSourceMetadataUi {
15
16
16
- private static final String RELATIONSHIP_TYPES_TITLE = "relationship types" ;
17
+ private static final String RELATIONSHIP_TYPES_TITLE = "relationship types (%s) " ;
17
18
private static final String PROPERTY_KEYS_TITLE = "property keys" ;
18
- private static final String LABELS_TITLE = "labels" ;
19
+ private static final String LABELS_TITLE = "labels (%s) " ;
19
20
private static final String STORED_PROCEDURES_TITLE = "stored procedures" ;
20
21
private static final String USER_FUNCTIONS_TITLE = "user functions" ;
21
22
@@ -29,71 +30,77 @@ public boolean updateDataSourceMetadataUi(PatchedDefaultMutableTreeNode node, Da
29
30
switch (nodeDataSource .getDataSourceType ()) {
30
31
case NEO4J_BOLT :
31
32
return dataSourcesComponent .getMetadata (nodeDataSource )
32
- .map (dataSourceMetadata -> updateNeo4jBoltCypherMetadataUi (node , dataSourceMetadata ))
33
- .orElse (false );
33
+ .map (genericMetadata -> (Neo4jBoltCypherDataSourceMetadata ) genericMetadata )
34
+ .map (neo4jMetadata -> updateNeo4jBoltCypherMetadataUi (node , neo4jMetadata ))
35
+ .orElse (false );
34
36
default :
35
37
return false ;
36
38
}
37
39
}
38
40
39
41
// ui
40
42
boolean updateNeo4jBoltCypherMetadataUi (PatchedDefaultMutableTreeNode dataSourceRootTreeNode ,
41
- DataSourceMetadata dataSourceMetadata ) {
43
+ Neo4jBoltCypherDataSourceMetadata dataSourceMetadata ) {
42
44
// Remove existing metadata from ui
43
45
dataSourceRootTreeNode .removeAllChildren ();
44
46
TreeNodeModelApi model = (TreeNodeModelApi ) dataSourceRootTreeNode .getUserObject ();
45
47
DataSourceApi dataSourceApi = model .getDataSourceApi ();
46
48
47
49
// Labels
50
+ int labelCount = dataSourceMetadata .getLabels ().size ();
48
51
PatchedDefaultMutableTreeNode labelsTreeNode = new PatchedDefaultMutableTreeNode (
49
- new MetadataTreeNodeModel (LABELS , dataSourceApi , LABELS_TITLE , GraphIcons .Nodes .LABEL ));
50
- dataSourceMetadata
51
- .getMetadata (Neo4jBoltCypherDataSourceMetadata .LABELS )
52
- .forEach ((row ) -> labelsTreeNode .add (of (new MetadataTreeNodeModel (LABEL , dataSourceApi , row .get ("label" )))));
52
+ new MetadataTreeNodeModel (LABELS , dataSourceApi , String .format (LABELS_TITLE , labelCount ), GraphIcons .Nodes .LABEL ));
53
+ dataSourceMetadata .getLabels ()
54
+ .stream ()
55
+ .map (label -> new LabelTreeNodeModel (LABEL , dataSourceApi , label .getName (), label .getCount ()))
56
+ .forEach (labelModel -> labelsTreeNode .add (of (labelModel )));
53
57
dataSourceRootTreeNode .add (labelsTreeNode );
54
58
55
59
// RelTypes
60
+ int relationshipTypesCount = dataSourceMetadata .getRelationshipTypes ().size ();
61
+ String relationshipTypesName = String .format (RELATIONSHIP_TYPES_TITLE , relationshipTypesCount );
56
62
PatchedDefaultMutableTreeNode relationshipTypesTreeNode = new PatchedDefaultMutableTreeNode (
57
- new MetadataTreeNodeModel (RELATIONSHIPS , dataSourceApi , RELATIONSHIP_TYPES_TITLE , GraphIcons .Nodes .RELATIONSHIP_TYPE ));
58
- dataSourceMetadata
59
- .getMetadata (Neo4jBoltCypherDataSourceMetadata .RELATIONSHIP_TYPES )
60
- .forEach ((row ) -> relationshipTypesTreeNode .add (of (new MetadataTreeNodeModel (RELATIONSHIP , dataSourceApi , row .get ("relationshipType" )))));
63
+ new MetadataTreeNodeModel (RELATIONSHIPS , dataSourceApi , relationshipTypesName , GraphIcons .Nodes .RELATIONSHIP_TYPE ));
64
+ dataSourceMetadata .getRelationshipTypes ()
65
+ .stream ()
66
+ .map (rel -> new RelationshipTypeTreeNodeModel (RELATIONSHIP , dataSourceApi , rel .getName (), rel .getCount ()))
67
+ .forEach (relModel -> relationshipTypesTreeNode .add (of (relModel )));
61
68
dataSourceRootTreeNode .add (relationshipTypesTreeNode );
62
69
63
70
// Property Keys
64
71
PatchedDefaultMutableTreeNode propertyKeysTreeNode = new PatchedDefaultMutableTreeNode (
65
- new MetadataTreeNodeModel (PROPERTY_KEYS , dataSourceApi , PROPERTY_KEYS_TITLE , GraphIcons .Nodes .PROPERTY_KEY ));
72
+ new MetadataTreeNodeModel (PROPERTY_KEYS , dataSourceApi , PROPERTY_KEYS_TITLE , GraphIcons .Nodes .PROPERTY_KEY ));
66
73
dataSourceMetadata
67
- .getMetadata (Neo4jBoltCypherDataSourceMetadata .PROPERTY_KEYS )
68
- .forEach ((row ) -> propertyKeysTreeNode .add (of (new MetadataTreeNodeModel (PROPERTY_KEY , dataSourceApi , row .get ("propertyKey" )))));
74
+ .getMetadata (Neo4jBoltCypherDataSourceMetadata .PROPERTY_KEYS )
75
+ .forEach ((row ) -> propertyKeysTreeNode .add (of (new MetadataTreeNodeModel (PROPERTY_KEY , dataSourceApi , row .get ("propertyKey" )))));
69
76
dataSourceRootTreeNode .add (propertyKeysTreeNode );
70
77
71
78
// Stored procedures
72
79
PatchedDefaultMutableTreeNode storedProceduresTreeNode = new PatchedDefaultMutableTreeNode (
73
- new MetadataTreeNodeModel (STORED_PROCEDURES , dataSourceApi , STORED_PROCEDURES_TITLE , GraphIcons .Nodes .STORED_PROCEDURE ));
80
+ new MetadataTreeNodeModel (STORED_PROCEDURES , dataSourceApi , STORED_PROCEDURES_TITLE , GraphIcons .Nodes .STORED_PROCEDURE ));
74
81
dataSourceMetadata
75
- .getMetadata (Neo4jBoltCypherDataSourceMetadata .STORED_PROCEDURES )
76
- .forEach ((row ) -> {
77
- PatchedDefaultMutableTreeNode nameNode = of (new MetadataTreeNodeModel (STORED_PROCEDURE , dataSourceApi , row .get ("name" )));
78
- PatchedDefaultMutableTreeNode descriptionNode = of (new MetadataTreeNodeModel (STORED_PROCEDURE , dataSourceApi , row .get ("signature" )));
79
- nameNode .add (descriptionNode );
80
- storedProceduresTreeNode .add (nameNode );
81
- });
82
+ .getMetadata (Neo4jBoltCypherDataSourceMetadata .STORED_PROCEDURES )
83
+ .forEach ((row ) -> {
84
+ PatchedDefaultMutableTreeNode nameNode = of (new MetadataTreeNodeModel (STORED_PROCEDURE , dataSourceApi , row .get ("name" )));
85
+ PatchedDefaultMutableTreeNode descriptionNode = of (new MetadataTreeNodeModel (STORED_PROCEDURE , dataSourceApi , row .get ("signature" )));
86
+ nameNode .add (descriptionNode );
87
+ storedProceduresTreeNode .add (nameNode );
88
+ });
82
89
dataSourceRootTreeNode .add (storedProceduresTreeNode );
83
90
84
91
// User Functions
85
92
if (dataSourceMetadata .isMetadataExists (Neo4jBoltCypherDataSourceMetadata .USER_FUNCTIONS )) {
86
93
PatchedDefaultMutableTreeNode userFunctionTreeNode = new PatchedDefaultMutableTreeNode (
87
- new MetadataTreeNodeModel (USER_FUNCTIONS , dataSourceApi , USER_FUNCTIONS_TITLE , GraphIcons .Nodes .USER_FUNCTION ));
94
+ new MetadataTreeNodeModel (USER_FUNCTIONS , dataSourceApi , USER_FUNCTIONS_TITLE , GraphIcons .Nodes .USER_FUNCTION ));
88
95
89
96
dataSourceMetadata
90
- .getMetadata (Neo4jBoltCypherDataSourceMetadata .USER_FUNCTIONS )
91
- .forEach ((row ) -> {
92
- PatchedDefaultMutableTreeNode nameNode = of (new MetadataTreeNodeModel (USER_FUNCTION , dataSourceApi , row .get ("name" )));
93
- PatchedDefaultMutableTreeNode descriptionNode = of (new MetadataTreeNodeModel (USER_FUNCTION , dataSourceApi , row .get ("signature" )));
94
- nameNode .add (descriptionNode );
95
- userFunctionTreeNode .add (nameNode );
96
- });
97
+ .getMetadata (Neo4jBoltCypherDataSourceMetadata .USER_FUNCTIONS )
98
+ .forEach ((row ) -> {
99
+ PatchedDefaultMutableTreeNode nameNode = of (new MetadataTreeNodeModel (USER_FUNCTION , dataSourceApi , row .get ("name" )));
100
+ PatchedDefaultMutableTreeNode descriptionNode = of (new MetadataTreeNodeModel (USER_FUNCTION , dataSourceApi , row .get ("signature" )));
101
+ nameNode .add (descriptionNode );
102
+ userFunctionTreeNode .add (nameNode );
103
+ });
97
104
98
105
dataSourceRootTreeNode .add (userFunctionTreeNode );
99
106
}
0 commit comments