Author: jm
Date: 2012-06-20 11:16:07 -0700 (Wed, 20 Jun 2012)
New Revision: 29643

Modified:
   core3/api/trunk/model-api/src/main/java/org/cytoscape/model/CyTableUtil.java
   
core3/impl/trunk/model-impl/impl/src/main/java/org/cytoscape/model/internal/CyRootNetworkImpl.java
   
core3/impl/trunk/model-impl/impl/src/main/java/org/cytoscape/model/internal/DefaultTablesNetwork.java
Log:
Fixes #1111: Node/edge attributes only get deleted from subnetworks if the 
corresponding nodes/edges are deleted in the root network


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-06-20 17:27:32 UTC (rev 29642)
+++ 
core3/api/trunk/model-api/src/main/java/org/cytoscape/model/CyTableUtil.java    
    2012-06-20 18:16:07 UTC (rev 29643)
@@ -61,7 +61,9 @@
                List<CyNode> ret = new ArrayList<CyNode>();
                Collection<CyRow> rows = 
net.getDefaultNodeTable().getMatchingRows(columnName, state);
                for (CyRow row : rows) {
-                       ret.add(net.getNode(row.get(CyTable.SUID, Long.class)));
+                       CyNode node = net.getNode(row.get(CyTable.SUID, 
Long.class));
+                       if (node != null)
+                               ret.add(node);
                }
                return ret;
        }
@@ -84,7 +86,9 @@
                List<CyEdge> ret = new ArrayList<CyEdge>();
                Collection<CyRow> rows = 
net.getDefaultEdgeTable().getMatchingRows(columnName, state);
                for (CyRow row : rows) {
-                       ret.add(net.getEdge(row.get(CyTable.SUID, Long.class)));
+                       CyEdge edge = net.getEdge(row.get(CyTable.SUID, 
Long.class));
+                       if (edge != null)
+                               ret.add(edge);
                }
                return ret;
        }

Modified: 
core3/impl/trunk/model-impl/impl/src/main/java/org/cytoscape/model/internal/CyRootNetworkImpl.java
===================================================================
--- 
core3/impl/trunk/model-impl/impl/src/main/java/org/cytoscape/model/internal/CyRootNetworkImpl.java
  2012-06-20 17:27:32 UTC (rev 29642)
+++ 
core3/impl/trunk/model-impl/impl/src/main/java/org/cytoscape/model/internal/CyRootNetworkImpl.java
  2012-06-20 18:16:07 UTC (rev 29643)
@@ -180,8 +180,12 @@
 
        @Override
        public synchronized boolean removeNodes(final Collection<CyNode> nodes) 
{
-               for ( CySubNetwork sub : subNetworks )
+               for ( CySubNetwork sub : subNetworks ) {
                        sub.removeNodes(nodes);
+                       if (nodes != null && sub instanceof CySubNetworkImpl)
+                               ((CySubNetworkImpl) sub).removeRows(nodes, 
CyNode.class);
+               }
+               
                return removeNodesInternal(nodes);
        }
 
@@ -200,8 +204,11 @@
 
        @Override
        public synchronized boolean removeEdges(final Collection<CyEdge> edges) 
{
-               for ( CySubNetwork sub : subNetworks )
+               for ( CySubNetwork sub : subNetworks ) {
                        sub.removeEdges(edges);
+                       if (edges != null && sub instanceof CySubNetworkImpl)
+                               ((CySubNetworkImpl) sub).removeRows(edges, 
CyEdge.class);
+               }
                return removeEdgesInternal(edges);
        }
 

Modified: 
core3/impl/trunk/model-impl/impl/src/main/java/org/cytoscape/model/internal/DefaultTablesNetwork.java
===================================================================
--- 
core3/impl/trunk/model-impl/impl/src/main/java/org/cytoscape/model/internal/DefaultTablesNetwork.java
       2012-06-20 17:27:32 UTC (rev 29642)
+++ 
core3/impl/trunk/model-impl/impl/src/main/java/org/cytoscape/model/internal/DefaultTablesNetwork.java
       2012-06-20 18:16:07 UTC (rev 29643)
@@ -171,27 +171,7 @@
                        return InitialTableSize.SMALL;
        }
 
-       @Override
-       protected boolean removeNodesInternal(Collection<CyNode> nodes) {
-               boolean result = super.removeNodesInternal(nodes);
-               if (!result)
-                       return false;
-               
-               removeRows(nodes, CyNode.class);
-               return result;
-       }
-       
-       @Override
-       protected boolean removeEdgesInternal(Collection<CyEdge> edges) {
-               boolean result = super.removeEdgesInternal(edges);
-               if (!result)
-                       return false;
-               
-               removeRows(edges, CyEdge.class);
-               return result;
-       }
-       
-       private <T extends CyIdentifiable> void removeRows(Collection<T> items, 
Class<? extends T> type) {
+       protected <T extends CyIdentifiable> void removeRows(Collection<T> 
items, Class<? extends T> type) {
                Collection<Long> primaryKeys = new ArrayList<Long>();
                for (T item : items) {
                        primaryKeys.add(item.getSUID());

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