Skip to content

Commit d700f87

Browse files
committed
Fix gephi#1471 Self-loops not removed after filter>self-loop>export to new workspace
1 parent 736e5de commit d700f87

File tree

1 file changed

+15
-2
lines changed

1 file changed

+15
-2
lines changed

modules/FiltersImpl/src/main/java/org/gephi/filters/FilterControllerImpl.java

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@ Development and Distribution License("CDDL") (collectively, the
4242
package org.gephi.filters;
4343

4444
import java.beans.PropertyEditorManager;
45+
import java.util.ArrayList;
46+
import java.util.List;
4547
import java.util.Set;
4648
import org.gephi.filters.FilterThread.PropertyModifier;
4749
import org.gephi.filters.api.FilterController;
@@ -312,11 +314,11 @@ public void exportToColumn(String title, Query query) {
312314
}
313315
Column nodeCol = result.getModel().getNodeTable().getColumn("filter_" + title);
314316
if (nodeCol == null) {
315-
nodeCol = result.getModel().getNodeTable().addColumn("filter_" + title, title, Boolean.class, Origin.DATA, Boolean.FALSE, false);
317+
nodeCol = result.getModel().getNodeTable().addColumn("filter_" + title, title, Boolean.class, Origin.DATA, Boolean.FALSE, true);
316318
}
317319
Column edgeCol = result.getModel().getEdgeTable().getColumn("filter_" + title);
318320
if (edgeCol == null) {
319-
edgeCol = result.getModel().getEdgeTable().addColumn("filter_" + title, title, Boolean.class, Origin.DATA, Boolean.FALSE, false);
321+
edgeCol = result.getModel().getEdgeTable().addColumn("filter_" + title, title, Boolean.class, Origin.DATA, Boolean.FALSE, true);
320322
}
321323

322324
result.writeLock();
@@ -365,6 +367,17 @@ public void run() {
365367
Workspace newWorkspace = pc.newWorkspace(pc.getCurrentProject());
366368
GraphModel graphModel = Lookup.getDefault().lookup(GraphController.class).getGraphModel(newWorkspace);
367369
graphModel.bridge().copyNodes(graphView.getNodes().toArray());
370+
Graph graph = graphModel.getGraph();
371+
List<Edge> edgesToRemove = new ArrayList<>();
372+
for (Edge edge : graph.getEdges()) {
373+
if(!graphView.hasEdge(edge.getId())){
374+
edgesToRemove.add(edge);
375+
}
376+
}
377+
if(!edgesToRemove.isEmpty()){
378+
graph.removeAllEdges(edgesToRemove);
379+
}
380+
368381
Progress.finish(ticket);
369382
String workspaceName = newWorkspace.getLookup().lookup(WorkspaceInformation.class).getName();
370383
//StatusDisplayer.getDefault().setStatusText(NbBundle.getMessage(FilterControllerImpl.class, "FilterController.exportToNewWorkspace.status", workspaceName));

0 commit comments

Comments
 (0)