Author: jm
Date: 2012-05-03 14:10:55 -0700 (Thu, 03 May 2012)
New Revision: 29095
Modified:
core3/impl/trunk/filter-impl/src/main/java/org/cytoscape/filter/internal/filters/model/EdgeInteractionFilter.java
core3/impl/trunk/filter-impl/src/main/java/org/cytoscape/filter/internal/filters/util/FilterUtil.java
core3/impl/trunk/filter-impl/src/main/java/org/cytoscape/filter/internal/filters/util/SelectUtil.java
core3/impl/trunk/filter-impl/src/main/java/org/cytoscape/filter/internal/filters/view/FilterMainPanel.java
core3/impl/trunk/filter-impl/src/main/java/org/cytoscape/filter/internal/filters/view/FilterSettingPanel.java
core3/impl/trunk/filter-impl/src/main/java/org/cytoscape/filter/internal/quickfind/app/QuickFindApp.java
core3/impl/trunk/filter-impl/src/main/java/org/cytoscape/filter/internal/quickfind/util/CyAttributesUtil.java
core3/impl/trunk/filter-impl/src/main/java/org/cytoscape/filter/internal/quickfind/util/QuickFindImpl.java
Log:
Fixes #945: Significantly reduced heap allocation frequency of filters-impl
Modified:
core3/impl/trunk/filter-impl/src/main/java/org/cytoscape/filter/internal/filters/model/EdgeInteractionFilter.java
===================================================================
---
core3/impl/trunk/filter-impl/src/main/java/org/cytoscape/filter/internal/filters/model/EdgeInteractionFilter.java
2012-05-03 19:18:56 UTC (rev 29094)
+++
core3/impl/trunk/filter-impl/src/main/java/org/cytoscape/filter/internal/filters/model/EdgeInteractionFilter.java
2012-05-03 21:10:55 UTC (rev 29095)
@@ -85,16 +85,16 @@
}
BitSet passFilter_nodeBits = passFilter.getNodeBits();
- List<CyEdge> edges_list = null;
+ List<CyEdge> edges_list = network.getEdgeList();
+ List<CyNode> nodes = network.getNodeList();
// EdgeInteractionFilter will select edge only
- edges_list = network.getEdgeList();
int objectCount = edges_list.size();
edgeBits = new BitSet(objectCount); // all the bits are false
at very beginning
if (nodeType != NODE_UNDEFINED) {
for (int i=0; i<objectCount; i++) {
- if (isHit(edges_list.get(i),
passFilter_nodeBits)) {
+ if (isHit(edges_list.get(i),
passFilter_nodeBits, nodes)) {
edgeBits.set(i);
}
}
@@ -108,7 +108,7 @@
}
- private boolean isHit(CyEdge pEdge, BitSet pPassFilter_nodeBits) {
+ private boolean isHit(CyEdge pEdge, BitSet pPassFilter_nodeBits,
List<CyNode> nodes) {
// Get the list of relevant nodes for this edge
List<CyNode> adjacentNodes = new ArrayList<CyNode>();
@@ -128,7 +128,7 @@
int nodeIndex = -1;
for (int i=0; i < adjacentNodes.size(); i++) {
- nodeIndex =
network.getNodeList().indexOf(adjacentNodes.get(i));
+ nodeIndex = nodes.indexOf(adjacentNodes.get(i));
if (pPassFilter_nodeBits.get(nodeIndex) == true) {
return true;
Modified:
core3/impl/trunk/filter-impl/src/main/java/org/cytoscape/filter/internal/filters/util/FilterUtil.java
===================================================================
---
core3/impl/trunk/filter-impl/src/main/java/org/cytoscape/filter/internal/filters/util/FilterUtil.java
2012-05-03 19:18:56 UTC (rev 29094)
+++
core3/impl/trunk/filter-impl/src/main/java/org/cytoscape/filter/internal/filters/util/FilterUtil.java
2012-05-03 21:10:55 UTC (rev 29095)
@@ -115,20 +115,16 @@
if (network == null)
return false;
if (pType == QuickFind.INDEX_NODES) {
- List<CyNode> nodes = network.getNodeList();
- if (nodes.size() == 0) {
+ if (network.getNodeCount() == 0) {
return false;
}
- CyNode node = nodes.get(0);
- return
network.getRow(node).getTable().getColumn(pAttribute) != null;
+ return
network.getDefaultNodeTable().getColumn(pAttribute) != null;
}
else if (pType == QuickFind.INDEX_EDGES) {
- List<CyEdge> edges = network.getEdgeList();
- if (edges.size() == 0) {
+ if (network.getEdgeCount() == 0) {
return false;
}
- CyEdge edge = edges.get(0);
- return
network.getRow(edge).getTable().getColumn(pAttribute) != null;
+ return
network.getDefaultEdgeTable().getColumn(pAttribute) != null;
}
return false;
}
Modified:
core3/impl/trunk/filter-impl/src/main/java/org/cytoscape/filter/internal/filters/util/SelectUtil.java
===================================================================
---
core3/impl/trunk/filter-impl/src/main/java/org/cytoscape/filter/internal/filters/util/SelectUtil.java
2012-05-03 19:18:56 UTC (rev 29094)
+++
core3/impl/trunk/filter-impl/src/main/java/org/cytoscape/filter/internal/filters/util/SelectUtil.java
2012-05-03 21:10:55 UTC (rev 29095)
@@ -1,22 +1,22 @@
package org.cytoscape.filter.internal.filters.util;
import java.util.Collection;
-import java.util.HashSet;
-import java.util.Set;
+import java.util.List;
import org.cytoscape.model.CyEdge;
+import org.cytoscape.model.CyIdentifiable;
import org.cytoscape.model.CyNetwork;
import org.cytoscape.model.CyNode;
import org.cytoscape.model.CyRow;
-import org.cytoscape.model.CyIdentifiable;
+import org.cytoscape.model.CyTableUtil;
public class SelectUtil {
public static void unselectAllNodes(CyNetwork network) {
- setSelectedState(network, network.getNodeList(), Boolean.FALSE);
+ setSelectedState(network, CyTableUtil.getNodesInState(network,
CyNetwork.SELECTED, true), false);
}
public static void unselectAllEdges(CyNetwork network) {
- setSelectedState(network, network.getEdgeList(), Boolean.FALSE);
+ setSelectedState(network, CyTableUtil.getEdgesInState(network,
CyNetwork.SELECTED, true), false);
}
public static void setSelectedNodeState(CyNetwork network,
Collection<CyNode> list, boolean selected) {
@@ -35,25 +35,14 @@
}
- public static Set<CyNode> getSelectedNodes(CyNetwork cyNetwork) {
- return getSelected(cyNetwork, cyNetwork.getNodeList());
+ public static List<CyNode> getSelectedNodes(CyNetwork cyNetwork) {
+ return CyTableUtil.getNodesInState(cyNetwork,
CyNetwork.SELECTED, true);
}
- public static Set<CyEdge> getSelectedEdges(CyNetwork cyNetwork) {
- return getSelected(cyNetwork, cyNetwork.getEdgeList());
+ public static List<CyEdge> getSelectedEdges(CyNetwork cyNetwork) {
+ return CyTableUtil.getEdgesInState(cyNetwork,
CyNetwork.SELECTED, true);
}
- static <T extends CyIdentifiable> Set<T> getSelected(CyNetwork network,
Collection<T> items) {
- Set<T> entries = new HashSet<T>();
- for (T item : items) {
- CyRow row = network.getRow(item);
- if (row.get(CyNetwork.SELECTED, Boolean.class)) {
- entries.add(item);
- }
- }
- return entries;
- }
-
public static void selectAllNodes(CyNetwork cyNetwork) {
selectAll(cyNetwork,cyNetwork.getNodeList());
}
Modified:
core3/impl/trunk/filter-impl/src/main/java/org/cytoscape/filter/internal/filters/view/FilterMainPanel.java
===================================================================
---
core3/impl/trunk/filter-impl/src/main/java/org/cytoscape/filter/internal/filters/view/FilterMainPanel.java
2012-05-03 19:18:56 UTC (rev 29094)
+++
core3/impl/trunk/filter-impl/src/main/java/org/cytoscape/filter/internal/filters/view/FilterMainPanel.java
2012-05-03 21:10:55 UTC (rev 29095)
@@ -88,6 +88,7 @@
import org.cytoscape.model.CyNetwork;
import org.cytoscape.model.CyNetworkManager;
import org.cytoscape.model.CyIdentifiable;
+import org.cytoscape.model.CyTable;
import org.cytoscape.model.events.ColumnNameChangedEvent;
import org.cytoscape.model.events.ColumnNameChangedListener;
import org.cytoscape.model.events.NetworkAddedEvent;
@@ -434,23 +435,18 @@
*/
private List<Object> getCyAttributesList(CyNetwork network, String
pType) {
Vector<String> attributeList = new Vector<String>();
- Collection<? extends CyIdentifiable> entries = null;
+ CyTable table;
- if (pType.equalsIgnoreCase("node")) {
- entries = network.getNodeList();
- } else if (pType.equalsIgnoreCase("edge")){
- entries = network.getEdgeList();
+ if (pType.equalsIgnoreCase("node") && network.getNodeCount() >
0) {
+ table = network.getDefaultNodeTable();
+ } else if (pType.equalsIgnoreCase("edge") &&
network.getEdgeCount() > 0){
+ table = network.getDefaultEdgeTable();
} else {
return Collections.emptyList();
}
- if (entries.size() == 0) {
- return Collections.emptyList();
- }
+ final Collection<CyColumn> columns = table.getColumns();
- CyIdentifiable tableEntry = entries.iterator().next();
- final Collection<CyColumn> columns =
network.getRow(tableEntry).getTable().getColumns();
-
for (final CyColumn column : columns) {
// Show all attributes, with type of String or Number
Class<?> type = column.getType();
Modified:
core3/impl/trunk/filter-impl/src/main/java/org/cytoscape/filter/internal/filters/view/FilterSettingPanel.java
===================================================================
---
core3/impl/trunk/filter-impl/src/main/java/org/cytoscape/filter/internal/filters/view/FilterSettingPanel.java
2012-05-03 19:18:56 UTC (rev 29094)
+++
core3/impl/trunk/filter-impl/src/main/java/org/cytoscape/filter/internal/filters/view/FilterSettingPanel.java
2012-05-03 21:10:55 UTC (rev 29095)
@@ -46,7 +46,6 @@
import java.awt.event.ItemListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
-import java.util.Collection;
import java.util.List;
import java.util.Vector;
@@ -61,7 +60,6 @@
import javax.swing.event.ChangeListener;
import javax.swing.event.MouseInputAdapter;
import javax.swing.text.JTextComponent;
-import javax.swing.text.View;
import org.cytoscape.application.CyApplicationManager;
import org.cytoscape.event.CyEventHelper;
@@ -87,8 +85,7 @@
import
org.cytoscape.filter.internal.widgets.autocomplete.view.TextIndexComboBox;
import org.cytoscape.filter.internal.widgets.slider.JRangeSliderExtended;
import org.cytoscape.model.CyNetwork;
-import org.cytoscape.model.CyRow;
-import org.cytoscape.model.CyIdentifiable;
+import org.cytoscape.model.CyTable;
import org.cytoscape.view.model.CyNetworkView;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -203,23 +200,17 @@
private Class<?> getAttributeDataType(CyNetwork network, String
pAttribute, int pType) {
- Collection<? extends CyIdentifiable> entries;
+ CyTable table = null;
- if (pType == QuickFind.INDEX_NODES) {
- entries = network.getNodeList();
- } else if (pType == QuickFind.INDEX_EDGES) {
- entries = network.getEdgeList();
+ if (pType == QuickFind.INDEX_NODES && network.getNodeCount() >
0) {
+ table = network.getDefaultNodeTable();
+ } else if (pType == QuickFind.INDEX_EDGES &&
network.getEdgeCount() > 0) {
+ table = network.getDefaultEdgeTable();
} else {
return null;
}
- if (entries.size() == 0) {
- return null;
- }
-
- CyIdentifiable entry = entries.iterator().next();
- CyRow row = network.getRow(entry);
- return row.getTable().getColumn(pAttribute).getType();
+ return table.getColumn(pAttribute).getType();
}
Modified:
core3/impl/trunk/filter-impl/src/main/java/org/cytoscape/filter/internal/quickfind/app/QuickFindApp.java
===================================================================
---
core3/impl/trunk/filter-impl/src/main/java/org/cytoscape/filter/internal/quickfind/app/QuickFindApp.java
2012-05-03 19:18:56 UTC (rev 29094)
+++
core3/impl/trunk/filter-impl/src/main/java/org/cytoscape/filter/internal/quickfind/app/QuickFindApp.java
2012-05-03 21:10:55 UTC (rev 29095)
@@ -31,6 +31,7 @@
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
+import java.util.HashSet;
import java.util.List;
import java.util.Set;
@@ -256,27 +257,25 @@
}
}
- private void selectNodes(final CyNetwork cyNetwork, List rangeList) {
+ private void selectNodes(final CyNetwork cyNetwork, List<CyNode>
rangeList) {
// First, do we have any edges selected? If so, unselect them
all
- Set selectedEdgeSet = SelectUtil.getSelectedEdges(cyNetwork);
+ List<CyEdge> selectedEdgeSet =
SelectUtil.getSelectedEdges(cyNetwork);
if (selectedEdgeSet.size() > 0) {
SelectUtil.setSelectedEdgeState(cyNetwork,
selectedEdgeSet, false);
}
// Then, determine the current set of selected nodes
- Set selectedNodeSet = SelectUtil.getSelectedNodes(cyNetwork);
+ List<CyNode> selectedNodeSet =
SelectUtil.getSelectedNodes(cyNetwork);
// Then, figure out which new nodes to select
// This is the set operation: R - S
- final List toBeSelected = new ArrayList();
- toBeSelected.addAll(rangeList);
+ final Set<CyNode> toBeSelected = new HashSet<CyNode>(rangeList);
toBeSelected.removeAll(selectedNodeSet);
// Then, figure out which current nodes to unselect
// This is the set operation: S - R
- final List toBeUnselected = new ArrayList();
- toBeUnselected.addAll(selectedNodeSet);
+ final Set<CyNode> toBeUnselected = new
HashSet<CyNode>(selectedNodeSet);
toBeUnselected.removeAll(rangeList);
SwingUtilities.invokeLater(new Runnable() {
@@ -291,27 +290,25 @@
});
}
- private void selectEdges(final CyNetwork cyNetwork, List rangeList) {
+ private void selectEdges(final CyNetwork cyNetwork, List<CyEdge>
rangeList) {
// First, do we have any nodes selected? If so, unselect them
all
- Set selectedNodeSet = SelectUtil.getSelectedNodes(cyNetwork);
+ List<CyNode> selectedNodeSet =
SelectUtil.getSelectedNodes(cyNetwork);
if (selectedNodeSet.size() > 0) {
SelectUtil.setSelectedNodeState(cyNetwork,
selectedNodeSet, false);
}
// Then, determine the current set of selected edge
- Set selectedEdgeSet = SelectUtil.getSelectedEdges(cyNetwork);
+ List<CyEdge> selectedEdgeSet =
SelectUtil.getSelectedEdges(cyNetwork);
// Then, figure out which new nodes to select
// This is the set operation: R - S
- final List toBeSelected = new ArrayList();
- toBeSelected.addAll(rangeList);
+ final Set<CyEdge> toBeSelected = new HashSet<CyEdge>(rangeList);
toBeSelected.removeAll(selectedEdgeSet);
// Then, figure out which current nodes to unselect
// This is the set operation: S - R
- final List toBeUnselected = new ArrayList();
- toBeUnselected.addAll(selectedEdgeSet);
+ final Set<CyEdge> toBeUnselected = new
HashSet<CyEdge>(selectedEdgeSet);
toBeUnselected.removeAll(rangeList);
SwingUtilities.invokeLater(new Runnable() {
@@ -360,7 +357,7 @@
if (!networkManager.networkExists(cyNetwork.getSUID()))
return;
- if (cyNetwork.getNodeList() != null) {
+ if (cyNetwork.getNodeCount() > 0) {
// this network may not have been added to quick find -
// this can happen if an empty network was added
if (quickFind.getIndex(cyNetwork) == null) {
Modified:
core3/impl/trunk/filter-impl/src/main/java/org/cytoscape/filter/internal/quickfind/util/CyAttributesUtil.java
===================================================================
---
core3/impl/trunk/filter-impl/src/main/java/org/cytoscape/filter/internal/quickfind/util/CyAttributesUtil.java
2012-05-03 19:18:56 UTC (rev 29094)
+++
core3/impl/trunk/filter-impl/src/main/java/org/cytoscape/filter/internal/quickfind/util/CyAttributesUtil.java
2012-05-03 21:10:55 UTC (rev 29095)
@@ -36,16 +36,16 @@
package org.cytoscape.filter.internal.quickfind.util;
-import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
+import org.cytoscape.model.CyIdentifiable;
import org.cytoscape.model.CyNetwork;
import org.cytoscape.model.CyRow;
-import org.cytoscape.model.CyIdentifiable;
+import org.cytoscape.model.CyTable;
/**
@@ -183,19 +183,19 @@
}
public static boolean isNullAttribute(CyNetwork cyNetwork, String
indexType, String attributeName) {
- Collection<? extends CyIdentifiable> entries;
+ CyTable table;
if (indexType.equals("node")) {
- entries = cyNetwork.getNodeList();
+ table = cyNetwork.getDefaultNodeTable();
} else if (indexType.equals("edge")) {
- entries = cyNetwork.getEdgeList();
+ table = cyNetwork.getDefaultEdgeTable();
} else {
return true;
}
- if (entries.size() == 0) {
+ if (table.getColumn(attributeName) == null) {
return true;
}
- for (CyIdentifiable entry : entries) {
- CyRow row = cyNetwork.getRow(entry);
+
+ for (CyRow row :table.getAllRows()) {
Class<?> type =
row.getTable().getColumn(attributeName).getType();
if (row.get(attributeName, type) != null) {
return false;
Modified:
core3/impl/trunk/filter-impl/src/main/java/org/cytoscape/filter/internal/quickfind/util/QuickFindImpl.java
===================================================================
---
core3/impl/trunk/filter-impl/src/main/java/org/cytoscape/filter/internal/quickfind/util/QuickFindImpl.java
2012-05-03 19:18:56 UTC (rev 29094)
+++
core3/impl/trunk/filter-impl/src/main/java/org/cytoscape/filter/internal/quickfind/util/QuickFindImpl.java
2012-05-03 21:10:55 UTC (rev 29095)
@@ -175,18 +175,12 @@
// If all the values for the controllingAttribute are NULL,
return null
CyTable table;
if (indexType == QuickFind.INDEX_NODES) {
- CyNode node = null;
- //
- if (!(cyNetwork.getNodeList() == null ||
cyNetwork.getNodeList().size() == 0)){
- node =
cyNetwork.getNodeList().iterator().next();
- }
- if (node == null) {
+ if (cyNetwork.getNodeCount() == 0) {
return null;
}
table = cyNetwork.getDefaultNodeTable();
} else if (indexType == QuickFind.INDEX_EDGES){
- CyEdge edge = cyNetwork.getEdgeList().iterator().next();
- if (edge == null) {
+ if (cyNetwork.getEdgeCount() == 0) {
return null;
}
table = cyNetwork.getDefaultEdgeTable();
--
You received this message because you are subscribed to the Google Groups
"cytoscape-cvs" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/cytoscape-cvs?hl=en.