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.