@@ -26,25 +26,22 @@ public GraphIndexImpl(VizEngine engine) {
26
26
27
27
//Graph
28
28
private GraphModel graphModel ;
29
- private Graph graph ;
30
29
private float edgesMinWeight = 1 ;
31
30
private float edgesMaxWeight = 1 ;
32
31
33
32
private void init () {
34
33
graphModel = engine .getGraphModel ();
35
- graph = graphModel .getGraphVisible ();
36
34
}
37
35
38
36
private void ensureInitialized () {
39
- if (graph == null ) {
37
+ if (graphModel == null ) {
40
38
init ();
41
39
}
42
40
}
43
41
44
- @ Override
45
- public Graph getGraph () {
42
+ public Graph getVisibleGraph () {
46
43
ensureInitialized ();
47
- return graph ;
44
+ return graphModel . getGraphVisible () ;
48
45
}
49
46
50
47
public void indexNodes () {
@@ -54,28 +51,29 @@ public void indexNodes() {
54
51
public void indexEdges () {
55
52
ensureInitialized ();
56
53
57
- if (graph .getEdgeCount () > 0 ) {
58
- final Column weightColumn = graph .getModel ().getEdgeTable ().getColumn (GraphStoreConfiguration .EDGE_WEIGHT_INDEX );
54
+ final Graph visibleGraph = getVisibleGraph ();
55
+ if (visibleGraph .getEdgeCount () > 0 ) {
56
+ final Column weightColumn = visibleGraph .getModel ().getEdgeTable ().getColumn (GraphStoreConfiguration .EDGE_WEIGHT_INDEX );
59
57
60
58
if (weightColumn .isIndexed () && AttributeUtils .isSimpleType (weightColumn .getTypeClass ())) {
61
- graph .readLock ();
59
+ visibleGraph .readLock ();
62
60
try {
63
- edgesMinWeight = graph .getModel ().getEdgeIndex ().getMinValue (weightColumn ).floatValue ();
64
- edgesMaxWeight = graph .getModel ().getEdgeIndex ().getMaxValue (weightColumn ).floatValue ();
61
+ edgesMinWeight = visibleGraph .getModel ().getEdgeIndex ().getMinValue (weightColumn ).floatValue ();
62
+ edgesMaxWeight = visibleGraph .getModel ().getEdgeIndex ().getMaxValue (weightColumn ).floatValue ();
65
63
} finally {
66
- graph .readUnlockAll ();
64
+ visibleGraph .readUnlockAll ();
67
65
}
68
66
} else {
69
- graph .readLock ();
67
+ visibleGraph .readLock ();
70
68
try {
71
- final GraphView graphView = graph .getView ();
69
+ final GraphView graphView = visibleGraph .getView ();
72
70
final boolean isView = !graphView .isMainView ();
73
71
74
72
if (!isView ) {
75
73
float minWeight = Float .MAX_VALUE ;
76
74
float maxWeight = Float .MIN_VALUE ;
77
75
78
- for (Edge edge : graph .getEdges ()) {
76
+ for (Edge edge : visibleGraph .getEdges ()) {
79
77
float weight = (float ) edge .getWeight (graphView );
80
78
minWeight = weight <= minWeight ? weight : minWeight ;
81
79
maxWeight = weight >= maxWeight ? weight : maxWeight ;
@@ -85,7 +83,7 @@ public void indexEdges() {
85
83
edgesMaxWeight = maxWeight ;
86
84
}
87
85
} finally {
88
- graph .readUnlockAll ();
86
+ visibleGraph .readUnlockAll ();
89
87
}
90
88
}
91
89
} else {
@@ -97,14 +95,14 @@ public void indexEdges() {
97
95
public int getNodeCount () {
98
96
ensureInitialized ();
99
97
100
- return graph .getNodeCount ();
98
+ return getVisibleGraph () .getNodeCount ();
101
99
}
102
100
103
101
@ Override
104
102
public int getEdgeCount () {
105
103
ensureInitialized ();
106
104
107
- return graph .getEdgeCount ();
105
+ return getVisibleGraph () .getEdgeCount ();
108
106
}
109
107
110
108
@ Override
@@ -121,16 +119,17 @@ public float getEdgesMaxWeight() {
121
119
public NodeIterable getVisibleNodes () {
122
120
ensureInitialized ();
123
121
124
- return graphModel .getSpatialIndex ().getNodesInArea (engine .getViewBoundaries ());
122
+ return getVisibleGraph () .getSpatialIndex ().getNodesInArea (engine .getViewBoundaries ());
125
123
}
126
124
127
125
@ Override
128
126
public void getVisibleNodes (ElementsCallback <Node > callback ) {
129
127
ensureInitialized ();
130
128
131
- callback .start (graph );
129
+ final Graph visibleGraph = getVisibleGraph ();
130
+ callback .start (visibleGraph );
132
131
133
- final NodeIterable nodeIterable = graphModel .getSpatialIndex ().getNodesInArea (engine .getViewBoundaries ());
132
+ final NodeIterable nodeIterable = visibleGraph .getSpatialIndex ().getNodesInArea (engine .getViewBoundaries ());
134
133
try {
135
134
for (Node node : nodeIterable ) {
136
135
callback .accept (node );
@@ -139,22 +138,23 @@ public void getVisibleNodes(ElementsCallback<Node> callback) {
139
138
nodeIterable .doBreak ();
140
139
}
141
140
142
- callback .end (graph );
141
+ callback .end (visibleGraph );
143
142
}
144
143
145
144
@ Override
146
145
public EdgeIterable getVisibleEdges () {
147
146
ensureInitialized ();
148
147
149
- return graphModel .getSpatialIndex ().getEdgesInArea (engine .getViewBoundaries ());
148
+ return getVisibleGraph () .getSpatialIndex ().getEdgesInArea (engine .getViewBoundaries ());
150
149
}
151
150
152
151
@ Override
153
152
public void getVisibleEdges (ElementsCallback <Edge > callback ) {
154
153
ensureInitialized ();
155
154
156
- callback .start (graph );
157
- final EdgeIterable edgeIterable = graphModel .getSpatialIndex ().getEdgesInArea (engine .getViewBoundaries ());
155
+ final Graph visibleGraph = getVisibleGraph ();
156
+ callback .start (visibleGraph );
157
+ final EdgeIterable edgeIterable = visibleGraph .getSpatialIndex ().getEdgesInArea (engine .getViewBoundaries ());
158
158
try {
159
159
for (Edge edge : edgeIterable ) {
160
160
callback .accept (edge );
@@ -163,14 +163,14 @@ public void getVisibleEdges(ElementsCallback<Edge> callback) {
163
163
edgeIterable .doBreak ();
164
164
}
165
165
166
- callback .end (graph );
166
+ callback .end (visibleGraph );
167
167
}
168
168
169
169
@ Override
170
170
public NodeIterable getNodesUnderPosition (float x , float y ) {
171
171
ensureInitialized ();
172
172
173
- return filterNodeIterable (graphModel .getSpatialIndex ().getNodesInArea (getCircleRect2D (x , y , 0 )), node -> {
173
+ return filterNodeIterable (getVisibleGraph () .getSpatialIndex ().getNodesInArea (getCircleRect2D (x , y , 0 )), node -> {
174
174
final float size = node .size ();
175
175
176
176
return Intersectionf .testPointCircle (x , y , node .x (), node .y (), size * size );
@@ -181,7 +181,7 @@ public NodeIterable getNodesUnderPosition(float x, float y) {
181
181
public NodeIterable getNodesInsideCircle (float centerX , float centerY , float radius ) {
182
182
ensureInitialized ();
183
183
184
- return filterNodeIterable (graphModel .getSpatialIndex ().getNodesInArea (getCircleRect2D (centerX , centerY , radius )), node -> {
184
+ return filterNodeIterable (getVisibleGraph () .getSpatialIndex ().getNodesInArea (getCircleRect2D (centerX , centerY , radius )), node -> {
185
185
return Intersectionf .testCircleCircle (centerX , centerY , radius , node .x (), node .y (), node .size ());
186
186
});
187
187
}
@@ -190,7 +190,7 @@ public NodeIterable getNodesInsideCircle(float centerX, float centerY, float rad
190
190
public NodeIterable getNodesInsideRectangle (Rect2D rect ) {
191
191
ensureInitialized ();
192
192
193
- return filterNodeIterable (graphModel .getSpatialIndex ().getNodesInArea (rect ), node -> {
193
+ return filterNodeIterable (getVisibleGraph () .getSpatialIndex ().getNodesInArea (rect ), node -> {
194
194
final float size = node .size ();
195
195
196
196
return Intersectionf .testAarCircle (rect .minX , rect .minY , rect .maxX , rect .maxY , node .x (), node .y (), size * size );
@@ -201,7 +201,7 @@ public NodeIterable getNodesInsideRectangle(Rect2D rect) {
201
201
public EdgeIterable getEdgesInsideRectangle (Rect2D rect ) {
202
202
ensureInitialized ();
203
203
204
- return filterEdgeIterable (graphModel .getSpatialIndex ().getEdgesInArea (rect ), edge -> {
204
+ return filterEdgeIterable (getVisibleGraph () .getSpatialIndex ().getEdgesInArea (rect ), edge -> {
205
205
final Node source = edge .getSource ();
206
206
final Node target = edge .getTarget ();
207
207
@@ -214,7 +214,7 @@ public EdgeIterable getEdgesInsideRectangle(Rect2D rect) {
214
214
public EdgeIterable getEdgesInsideCircle (float centerX , float centerY , float radius ) {
215
215
ensureInitialized ();
216
216
217
- return filterEdgeIterable (graphModel .getSpatialIndex ().getEdgesInArea (getCircleRect2D (centerX , centerY , radius )), edge -> {
217
+ return filterEdgeIterable (getVisibleGraph () .getSpatialIndex ().getEdgesInArea (getCircleRect2D (centerX , centerY , radius )), edge -> {
218
218
final Node source = edge .getSource ();
219
219
final Node target = edge .getTarget ();
220
220
@@ -232,13 +232,14 @@ public EdgeIterable getEdgesInsideCircle(float centerX, float centerY, float rad
232
232
public Rect2D getGraphBoundaries () {
233
233
ensureInitialized ();
234
234
235
- if (graph .getNodeCount () > 0 ) {
235
+ final Graph visibleGraph = getVisibleGraph ();
236
+ if (visibleGraph .getNodeCount () > 0 ) {
236
237
float minX = Float .MAX_VALUE ;
237
238
float maxX = Float .MIN_VALUE ;
238
239
float minY = Float .MAX_VALUE ;
239
240
float maxY = Float .MIN_VALUE ;
240
241
241
- for (Node node : graph .getNodes ()) {
242
+ for (Node node : visibleGraph .getNodes ()) {
242
243
final float x = node .x ();
243
244
final float y = node .y ();
244
245
final float size = node .size ();
0 commit comments