1
1
package com .neueda .jetbrains .plugin .graphdb .jetbrains .ui .console .plan ;
2
2
3
+ import com .intellij .openapi .util .text .StringUtil ;
3
4
import com .intellij .ui .treeStructure .treetable .TreeTableModel ;
4
5
import com .intellij .util .ui .ColumnInfo ;
5
6
import com .neueda .jetbrains .plugin .graphdb .database .api .query .GraphQueryPlan ;
7
+ import org .jetbrains .annotations .NonNls ;
6
8
import org .jetbrains .annotations .NotNull ;
7
9
import org .jetbrains .annotations .Nullable ;
8
10
9
11
import javax .swing .tree .DefaultMutableTreeNode ;
12
+ import java .text .DecimalFormat ;
13
+ import java .text .NumberFormat ;
10
14
import java .util .Map ;
11
15
import java .util .Set ;
12
16
import java .util .stream .Stream ;
@@ -19,23 +23,25 @@ class ColumnDefinitions {
19
23
static ColumnInfo [] getQueryPlanColumns () {
20
24
return new ColumnInfo []{
21
25
OPERATOR_COL ,
22
- ESTIMATED_ROWS_COL ,
23
26
ARGUMENTS_COL ,
27
+ ESTIMATED_ROWS_COL ,
24
28
IDENTIFIERS_COL
25
29
};
26
30
}
27
31
28
32
static ColumnInfo [] getProfileQueryPlanColumns () {
29
33
return new ColumnInfo []{
30
34
OPERATOR_COL ,
35
+ ARGUMENTS_COL ,
31
36
ROWS_COL ,
32
37
DB_HITS_COL ,
33
38
ESTIMATED_ROWS_COL ,
34
- ARGUMENTS_COL ,
35
39
IDENTIFIERS_COL
36
40
};
37
41
}
38
42
43
+ private static final NumberFormat FORMATTER = new DecimalFormat ("#0.00" );
44
+
39
45
private static final Set <String > RESERVED_KEYS = Stream .of (QueryPlanArgumentKeys .values ())
40
46
.map (QueryPlanArgumentKeys ::getKey )
41
47
.collect (toSet ());
@@ -52,16 +58,22 @@ public Class<?> getColumnClass() {
52
58
public String valueOf (DefaultMutableTreeNode o ) {
53
59
return ((GraphQueryPlan ) o .getUserObject ()).getOperatorType ();
54
60
}
61
+
62
+ @ Override
63
+ @ NonNls
64
+ public String getPreferredStringValue () {
65
+ return StringUtil .repeatSymbol ('m' , 25 );
66
+ }
55
67
};
56
68
57
69
private static final ColumnInfo <DefaultMutableTreeNode , String > ESTIMATED_ROWS_COL =
58
- getArgumentColumn ("Estimated rows" , ESTIMATED_ROWS .getKey (), "0" );
70
+ getArgumentColumn ("Estimated rows" , ESTIMATED_ROWS .getKey ());
59
71
60
72
private static final ColumnInfo <DefaultMutableTreeNode , String > DB_HITS_COL =
61
- getArgumentColumn ("DB Hits" , DB_HITS .getKey (), "0" );
73
+ getArgumentColumn ("DB Hits" , DB_HITS .getKey ());
62
74
63
75
private static final ColumnInfo <DefaultMutableTreeNode , String > ROWS_COL =
64
- getArgumentColumn ("Rows" , ROWS .getKey (), "0" );
76
+ getArgumentColumn ("Rows" , ROWS .getKey ());
65
77
66
78
private static final ColumnInfo <DefaultMutableTreeNode , String > ARGUMENTS_COL =
67
79
new ColumnInfo <DefaultMutableTreeNode , String >("Arguments" ) {
@@ -74,6 +86,12 @@ public String valueOf(DefaultMutableTreeNode o) {
74
86
.map (Object ::toString )
75
87
.collect (joining (", " ));
76
88
}
89
+
90
+ @ Override
91
+ @ NonNls
92
+ public String getPreferredStringValue () {
93
+ return StringUtil .repeatSymbol ('m' , 15 );
94
+ }
77
95
};
78
96
79
97
private static final ColumnInfo <DefaultMutableTreeNode , String > IDENTIFIERS_COL =
@@ -84,21 +102,38 @@ public String valueOf(DefaultMutableTreeNode o) {
84
102
return ((GraphQueryPlan ) o .getUserObject ()).getIdentifiers ().stream ()
85
103
.collect (joining (", " ));
86
104
}
105
+
106
+ @ Override
107
+ @ NonNls
108
+ public String getPreferredStringValue () {
109
+ return StringUtil .repeatSymbol ('m' , 12 );
110
+ }
87
111
};
88
112
89
113
@ NotNull
90
- private static <T > ColumnInfo <DefaultMutableTreeNode , T > getArgumentColumn (String title , String argumentKey ,
91
- T defaultValue ) {
92
- return new ColumnInfo <DefaultMutableTreeNode , T >(title ) {
114
+ private static ColumnInfo <DefaultMutableTreeNode , String > getArgumentColumn (String title , String argumentKey ) {
115
+ return new ColumnInfo <DefaultMutableTreeNode , String >(title ) {
93
116
@ Nullable
94
117
@ Override
95
- public T valueOf (DefaultMutableTreeNode o ) {
118
+ public String valueOf (DefaultMutableTreeNode o ) {
96
119
return ((GraphQueryPlan ) o .getUserObject ()).getArguments ().entrySet ().stream ()
97
120
.filter (e -> e .getKey ().equalsIgnoreCase (argumentKey ))
98
121
.map (Map .Entry ::getValue )
99
122
.findFirst ()
100
- .map (a -> (T ) a )
101
- .orElse (defaultValue );
123
+ .map (val -> {
124
+ if (val instanceof Double ) {
125
+ return FORMATTER .format (val );
126
+ }
127
+
128
+ return val .toString ();
129
+ })
130
+ .orElse ("0" );
131
+ }
132
+
133
+ @ Override
134
+ @ NonNls
135
+ public String getPreferredStringValue () {
136
+ return StringUtil .repeatSymbol ('m' , 5 );
102
137
}
103
138
};
104
139
}
0 commit comments