Author: jm
Date: 2012-05-03 12:18:56 -0700 (Thu, 03 May 2012)
New Revision: 29094

Added:
   
core3/api/trunk/model-api/src/test/java/org/cytoscape/model/AbstractCyTableUtilTest.java
   
core3/impl/trunk/model-impl/impl/src/test/java/org/cytoscape/model/CyTableUtilTest.java
Removed:
   
core3/api/trunk/model-api/src/test/java/org/cytoscape/model/CyTableUtilTest.java
Modified:
   core3/api/trunk/model-api/src/main/java/org/cytoscape/model/CyTableUtil.java
   
core3/impl/trunk/core-task-impl/src/test/java/org/cytoscape/task/internal/select/SelectAdjacentEdgesTaskTest.java
   
core3/impl/trunk/core-task-impl/src/test/java/org/cytoscape/task/internal/select/SelectConnectedNodesTaskTest.java
   
core3/impl/trunk/core-task-impl/src/test/java/org/cytoscape/task/internal/select/SelectFirstNeighborsTaskTest.java
Log:
Fixes #939: Reduced number of heap allocations in CyTableUtil by using 
CyTable.getMatchingRows() instead of getNode/EdgeList()

Modified: 
core3/api/trunk/model-api/src/main/java/org/cytoscape/model/CyTableUtil.java
===================================================================
--- 
core3/api/trunk/model-api/src/main/java/org/cytoscape/model/CyTableUtil.java    
    2012-05-03 19:17:22 UTC (rev 29093)
+++ 
core3/api/trunk/model-api/src/main/java/org/cytoscape/model/CyTableUtil.java    
    2012-05-03 19:18:56 UTC (rev 29094)
@@ -29,6 +29,7 @@
 
 
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
@@ -58,12 +59,13 @@
                if ( net == null )
                        throw new NullPointerException("network is null");
                List<CyNode> ret = new ArrayList<CyNode>();
-               for ( CyNode node : net.getNodeList() )
-                       if ( net.getRow(node).get(columnName,Boolean.class) == 
state )
-                               ret.add( node );
+               Collection<CyRow> rows = 
net.getDefaultNodeTable().getMatchingRows(columnName, state);
+               for (CyRow row : rows) {
+                       ret.add(net.getNode(row.get(CyTable.SUID, Long.class)));
+               }
                return ret;
        }
-       
+
        /**
         * A utility method that returns a list of edges that have a boolean 
attribute
         * in the {@link CyNetwork#DEFAULT_ATTRS} namespace specified by 
columnName and are in 
@@ -80,9 +82,10 @@
                if ( net == null )
                        throw new NullPointerException("network is null");
                List<CyEdge> ret = new ArrayList<CyEdge>();
-               for ( CyEdge edge : net.getEdgeList() )
-                       if ( net.getRow(edge).get(columnName,Boolean.class) == 
state )
-                               ret.add( edge );
+               Collection<CyRow> rows = 
net.getDefaultEdgeTable().getMatchingRows(columnName, state);
+               for (CyRow row : rows) {
+                       ret.add(net.getEdge(row.get(CyTable.SUID, Long.class)));
+               }
                return ret;
        }
 

Copied: 
core3/api/trunk/model-api/src/test/java/org/cytoscape/model/AbstractCyTableUtilTest.java
 (from rev 29081, 
core3/api/trunk/model-api/src/test/java/org/cytoscape/model/CyTableUtilTest.java)
===================================================================
--- 
core3/api/trunk/model-api/src/test/java/org/cytoscape/model/AbstractCyTableUtilTest.java
                            (rev 0)
+++ 
core3/api/trunk/model-api/src/test/java/org/cytoscape/model/AbstractCyTableUtilTest.java
    2012-05-03 19:18:56 UTC (rev 29094)
@@ -0,0 +1,140 @@
+/*
+ Copyright (c) 2008, 2011, The Cytoscape Consortium (www.cytoscape.org)
+
+ This library is free software; you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 2.1 of the License, or
+ any later version.
+
+ This library is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF
+ MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  The software and
+ documentation provided hereunder is on an "as is" basis, and the
+ Institute for Systems Biology and the Whitehead Institute
+ have no obligations to provide maintenance, support,
+ updates, enhancements or modifications.  In no event shall the
+ Institute for Systems Biology and the Whitehead Institute
+ be liable to any party for direct, indirect, special,
+ incidental or consequential damages, including lost profits, arising
+ out of the use of this software and its documentation, even if the
+ Institute for Systems Biology and the Whitehead Institute
+ have been advised of the possibility of such damage.  See
+ the GNU Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this library; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+*/
+package org.cytoscape.model;
+
+
+import static org.junit.Assert.*;
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.mockito.Mockito.*;
+
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Set;
+
+
+public abstract class AbstractCyTableUtilTest {
+       protected CyNetwork net;
+
+       CyRow row1;
+       CyNode node1;
+       CyEdge edge1;
+
+       CyRow row2;
+       CyNode node2;
+       CyEdge edge2;
+
+       final String columnName = "asdf";
+
+       @Before
+       public void internalSetUp() {
+               net = createNetwork();
+               node1 = net.addNode();
+               node2 = net.addNode();
+               edge1 = net.addEdge(node1, node2, true);
+               edge2 = net.addEdge(node1, node2, true);
+               
+               net.getDefaultNodeTable().createColumn(columnName, 
Boolean.class, false);
+               net.getDefaultEdgeTable().createColumn(columnName, 
Boolean.class, false);
+               
+               net.getRow(node1).set(columnName, true);
+               net.getRow(node2).set(columnName, false);
+               net.getRow(edge1).set(columnName, true);
+               net.getRow(edge2).set(columnName, false);
+       }
+
+       protected abstract CyNetwork createNetwork();
+
+       @Test
+       public void testGetTrueNodes() {
+               List<CyNode> nodes = 
CyTableUtil.getNodesInState(net,columnName,true);
+               assertNotNull(nodes);
+               assertTrue( nodes.contains(node1) );
+               assertEquals( 1, nodes.size() );
+       }
+
+       @Test
+       public void testGetFalseNodes() {
+               List<CyNode> nodes = 
CyTableUtil.getNodesInState(net,columnName,false);
+               assertNotNull(nodes);
+               assertTrue( nodes.contains(node2) );
+               assertEquals( 1, nodes.size() );
+       }
+
+       @Test
+       public void testGetTrueEdges() {
+               List<CyEdge> edges = 
CyTableUtil.getEdgesInState(net,columnName,true);
+               assertNotNull(edges);
+               assertTrue( edges.contains(edge1) );
+               assertEquals( 1, edges.size() );
+       }
+
+       @Test
+       public void testGetFalseEdges() {
+               List<CyEdge> edges = 
CyTableUtil.getEdgesInState(net,columnName,false);
+               assertNotNull(edges);
+               assertTrue( edges.contains(edge2) );
+               assertEquals( 1, edges.size() );
+       }
+
+       @Test(expected=NullPointerException.class)
+       public void testNullNetworkNodes() {
+               List<CyNode> nodes = 
CyTableUtil.getNodesInState(null,columnName,false);
+       }
+
+       @Test(expected=NullPointerException.class)
+       public void testNullNetworkEdges() {
+               List<CyEdge> nodes = 
CyTableUtil.getEdgesInState(null,columnName,false);
+       }
+
+       @Test
+       public void testGetColumnNames() {
+               CyTable t = mock(CyTable.class);
+
+               CyColumn c1 = mock(CyColumn.class);
+               when(c1.getName()).thenReturn("c1");
+
+               CyColumn c2 = mock(CyColumn.class);
+               when(c2.getName()).thenReturn("c2");
+
+               List<CyColumn> cols = new ArrayList<CyColumn>();
+               cols.add(c1);
+               cols.add(c2);
+
+               when(t.getColumns()).thenReturn(cols);
+
+               Set<String> names = CyTableUtil.getColumnNames(t);
+
+               assertNotNull(names);
+               assertEquals(2,names.size());
+               assertTrue(names.contains("c1"));
+               assertTrue(names.contains("c2"));
+       }
+
+}

Deleted: 
core3/api/trunk/model-api/src/test/java/org/cytoscape/model/CyTableUtilTest.java
===================================================================
--- 
core3/api/trunk/model-api/src/test/java/org/cytoscape/model/CyTableUtilTest.java
    2012-05-03 19:17:22 UTC (rev 29093)
+++ 
core3/api/trunk/model-api/src/test/java/org/cytoscape/model/CyTableUtilTest.java
    2012-05-03 19:18:56 UTC (rev 29094)
@@ -1,155 +0,0 @@
-/*
- Copyright (c) 2008, 2011, The Cytoscape Consortium (www.cytoscape.org)
-
- This library is free software; you can redistribute it and/or modify it
- under the terms of the GNU Lesser General Public License as published
- by the Free Software Foundation; either version 2.1 of the License, or
- any later version.
-
- This library is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF
- MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  The software and
- documentation provided hereunder is on an "as is" basis, and the
- Institute for Systems Biology and the Whitehead Institute
- have no obligations to provide maintenance, support,
- updates, enhancements or modifications.  In no event shall the
- Institute for Systems Biology and the Whitehead Institute
- be liable to any party for direct, indirect, special,
- incidental or consequential damages, including lost profits, arising
- out of the use of this software and its documentation, even if the
- Institute for Systems Biology and the Whitehead Institute
- have been advised of the possibility of such damage.  See
- the GNU Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public License
- along with this library; if not, write to the Free Software Foundation,
- Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
-*/
-package org.cytoscape.model;
-
-
-import static org.junit.Assert.*;
-import org.junit.Before;
-import org.junit.Test;
-
-import static org.mockito.Mockito.*;
-
-import java.util.List;
-import java.util.ArrayList;
-import java.util.Set;
-
-
-public class CyTableUtilTest {
-       CyNetwork net;
-
-       CyRow row1;
-       CyNode node1;
-       CyEdge edge1;
-
-       CyRow row2;
-       CyNode node2;
-       CyEdge edge2;
-
-       final String columnName = "asdf";
-
-       @Before
-       public void setUp() {
-               net = mock(CyNetwork.class);
-
-               row1 = mock(CyRow.class);
-               when(row1.get(columnName,Boolean.class)).thenReturn(true);
-
-               node1 = mock(CyNode.class);
-               when(net.getRow(node1)).thenReturn(row1);
-
-               edge1 = mock(CyEdge.class);
-               when(net.getRow(edge1)).thenReturn(row1);
-
-               row2 = mock(CyRow.class);
-               when(row2.get(columnName,Boolean.class)).thenReturn(false);
-
-               node2 = mock(CyNode.class);
-               when(net.getRow(node2)).thenReturn(row2);
-
-               edge2 = mock(CyEdge.class);
-               when(net.getRow(edge2)).thenReturn(row2);
-
-               List<CyNode> nlist = new ArrayList<CyNode>();
-               nlist.add(node1);
-               nlist.add(node2);
-
-               List<CyEdge> elist = new ArrayList<CyEdge>();
-               elist.add(edge1);
-               elist.add(edge2);
-
-               when(net.getNodeList()).thenReturn(nlist);
-               when(net.getEdgeList()).thenReturn(elist);
-       }
-
-       @Test
-       public void testGetTrueNodes() {
-               List<CyNode> nodes = 
CyTableUtil.getNodesInState(net,columnName,true);
-               assertNotNull(nodes);
-               assertTrue( nodes.contains(node1) );
-               assertEquals( 1, nodes.size() );
-       }
-
-       @Test
-       public void testGetFalseNodes() {
-               List<CyNode> nodes = 
CyTableUtil.getNodesInState(net,columnName,false);
-               assertNotNull(nodes);
-               assertTrue( nodes.contains(node2) );
-               assertEquals( 1, nodes.size() );
-       }
-
-       @Test
-       public void testGetTrueEdges() {
-               List<CyEdge> edges = 
CyTableUtil.getEdgesInState(net,columnName,true);
-               assertNotNull(edges);
-               assertTrue( edges.contains(edge1) );
-               assertEquals( 1, edges.size() );
-       }
-
-       @Test
-       public void testGetFalseEdges() {
-               List<CyEdge> edges = 
CyTableUtil.getEdgesInState(net,columnName,false);
-               assertNotNull(edges);
-               assertTrue( edges.contains(edge2) );
-               assertEquals( 1, edges.size() );
-       }
-
-       @Test(expected=NullPointerException.class)
-       public void testNullNetworkNodes() {
-               List<CyNode> nodes = 
CyTableUtil.getNodesInState(null,columnName,false);
-       }
-
-       @Test(expected=NullPointerException.class)
-       public void testNullNetworkEdges() {
-               List<CyEdge> nodes = 
CyTableUtil.getEdgesInState(null,columnName,false);
-       }
-
-       @Test
-       public void testGetColumnNames() {
-               CyTable t = mock(CyTable.class);
-
-               CyColumn c1 = mock(CyColumn.class);
-               when(c1.getName()).thenReturn("c1");
-
-               CyColumn c2 = mock(CyColumn.class);
-               when(c2.getName()).thenReturn("c2");
-
-               List<CyColumn> cols = new ArrayList<CyColumn>();
-               cols.add(c1);
-               cols.add(c2);
-
-               when(t.getColumns()).thenReturn(cols);
-
-               Set<String> names = CyTableUtil.getColumnNames(t);
-
-               assertNotNull(names);
-               assertEquals(2,names.size());
-               assertTrue(names.contains("c1"));
-               assertTrue(names.contains("c2"));
-       }
-
-}

Modified: 
core3/impl/trunk/core-task-impl/src/test/java/org/cytoscape/task/internal/select/SelectAdjacentEdgesTaskTest.java
===================================================================
--- 
core3/impl/trunk/core-task-impl/src/test/java/org/cytoscape/task/internal/select/SelectAdjacentEdgesTaskTest.java
   2012-05-03 19:17:22 UTC (rev 29093)
+++ 
core3/impl/trunk/core-task-impl/src/test/java/org/cytoscape/task/internal/select/SelectAdjacentEdgesTaskTest.java
   2012-05-03 19:18:56 UTC (rev 29094)
@@ -34,10 +34,14 @@
 import static org.mockito.Mockito.when;
 
 import java.util.ArrayList;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 
 
 import org.cytoscape.model.CyEdge;
+import org.cytoscape.model.CyNetwork;
+import org.cytoscape.model.CyRow;
 import org.cytoscape.model.CyTable;
 import org.cytoscape.work.Task;
 import org.cytoscape.work.undo.UndoSupport;
@@ -59,6 +63,14 @@
 
                when(r3.get("selected", Boolean.class)).thenReturn(true);
                when(r4.get("selected", Boolean.class)).thenReturn(false);
+               
+               Set<CyRow> selectedNodes = new HashSet<CyRow>();
+               selectedNodes.add(r3);
+               when(table.getMatchingRows(CyNetwork.SELECTED, 
true)).thenReturn(selectedNodes);
+               
+               when (r3.get(CyNetwork.SUID, Long.class)).thenReturn(3L);
+               when (net.getNode(3L)).thenReturn(e3);
+               
 
                List<CyEdge> el = new ArrayList<CyEdge>();
                el.add(e1);

Modified: 
core3/impl/trunk/core-task-impl/src/test/java/org/cytoscape/task/internal/select/SelectConnectedNodesTaskTest.java
===================================================================
--- 
core3/impl/trunk/core-task-impl/src/test/java/org/cytoscape/task/internal/select/SelectConnectedNodesTaskTest.java
  2012-05-03 19:17:22 UTC (rev 29093)
+++ 
core3/impl/trunk/core-task-impl/src/test/java/org/cytoscape/task/internal/select/SelectConnectedNodesTaskTest.java
  2012-05-03 19:18:56 UTC (rev 29094)
@@ -33,7 +33,11 @@
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
+import java.util.HashSet;
+import java.util.Set;
 
+import org.cytoscape.model.CyNetwork;
+import org.cytoscape.model.CyRow;
 import org.cytoscape.model.CyTable;
 import org.cytoscape.work.Task;
 import org.cytoscape.work.undo.UndoSupport;
@@ -57,6 +61,16 @@
                when(r1.get("selected", Boolean.class)).thenReturn(true);
                when(r2.get("selected", Boolean.class)).thenReturn(false);
 
+               final CyTable edgeTable = mock(CyTable.class);
+               when(net.getDefaultEdgeTable()).thenReturn(edgeTable);
+               
+               Set<CyRow> selectedEdges = new HashSet<CyRow>();
+               selectedEdges.add(r1);
+               when(edgeTable.getMatchingRows(CyNetwork.SELECTED, 
true)).thenReturn(selectedEdges);
+
+               when (r1.get(CyNetwork.SUID, Long.class)).thenReturn(1L);
+               when (net.getEdge(1L)).thenReturn(e1);
+
                when(e1.getSource()).thenReturn(e3);
                when(e1.getTarget()).thenReturn(e4);
 

Modified: 
core3/impl/trunk/core-task-impl/src/test/java/org/cytoscape/task/internal/select/SelectFirstNeighborsTaskTest.java
===================================================================
--- 
core3/impl/trunk/core-task-impl/src/test/java/org/cytoscape/task/internal/select/SelectFirstNeighborsTaskTest.java
  2012-05-03 19:17:22 UTC (rev 29093)
+++ 
core3/impl/trunk/core-task-impl/src/test/java/org/cytoscape/task/internal/select/SelectFirstNeighborsTaskTest.java
  2012-05-03 19:18:56 UTC (rev 29094)
@@ -34,11 +34,15 @@
 import static org.mockito.Mockito.when;
 
 import java.util.ArrayList;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 
 
 import org.cytoscape.model.CyEdge;
+import org.cytoscape.model.CyNetwork;
 import org.cytoscape.model.CyNode;
+import org.cytoscape.model.CyRow;
 import org.cytoscape.model.CyTable;
 import org.cytoscape.work.Task;
 import org.cytoscape.work.undo.UndoSupport;
@@ -62,6 +66,13 @@
                when(r3.get("selected", Boolean.class)).thenReturn(true);
                when(r4.get("selected", Boolean.class)).thenReturn(false);
 
+               Set<CyRow> selectedNodes = new HashSet<CyRow>();
+               selectedNodes.add(r3);
+               when(nodeTable.getMatchingRows(CyNetwork.SELECTED, 
true)).thenReturn(selectedNodes);
+               
+               when (r3.get(CyNetwork.SUID, Long.class)).thenReturn(3L);
+               when (net.getNode(3L)).thenReturn(e3);
+
                List<CyNode> nl = new ArrayList<CyNode>();
                nl.add(e4);
                when(net.getNeighborList(e3, CyEdge.Type.ANY)).thenReturn(nl);

Added: 
core3/impl/trunk/model-impl/impl/src/test/java/org/cytoscape/model/CyTableUtilTest.java
===================================================================
--- 
core3/impl/trunk/model-impl/impl/src/test/java/org/cytoscape/model/CyTableUtilTest.java
                             (rev 0)
+++ 
core3/impl/trunk/model-impl/impl/src/test/java/org/cytoscape/model/CyTableUtilTest.java
     2012-05-03 19:18:56 UTC (rev 29094)
@@ -0,0 +1,9 @@
+package org.cytoscape.model;
+
+public class CyTableUtilTest extends AbstractCyTableUtilTest {
+       @Override
+       protected CyNetwork createNetwork() {
+               NetworkTestSupport support = new NetworkTestSupport();
+               return support.getNetwork();
+       }
+}

-- 
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