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.

Reply via email to