Author: rozagh
Date: 2012-06-13 11:53:25 -0700 (Wed, 13 Jun 2012)
New Revision: 29551

Modified:
   
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/creation/AbstractNetworkFromSelectionTask.java
Log:
adding all of the non-virtual columns to the sub network and cloning the rows. 

Modified: 
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/creation/AbstractNetworkFromSelectionTask.java
===================================================================
--- 
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/creation/AbstractNetworkFromSelectionTask.java
    2012-06-13 18:45:18 UTC (rev 29550)
+++ 
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/creation/AbstractNetworkFromSelectionTask.java
    2012-06-13 18:53:25 UTC (rev 29551)
@@ -42,6 +42,7 @@
 import org.cytoscape.model.CyNetwork;
 import org.cytoscape.model.CyNetworkManager;
 import org.cytoscape.model.CyNode;
+import org.cytoscape.model.CyRow;
 import org.cytoscape.model.CyTable;
 import org.cytoscape.model.CyTableUtil;
 import org.cytoscape.model.VirtualColumnInfo;
@@ -113,19 +114,25 @@
 
                // create subnetwork and add selected nodes and appropriate 
edges
                final CySubNetwork newNet = 
rootNetworkManager.getRootNetwork(parentNetwork).addSubNetwork();
+
+               addColumns(parentNetwork.getDefaultNodeTable(), 
newNet.getDefaultNodeTable() );
+               addColumns(parentNetwork.getDefaultEdgeTable(), 
newNet.getDefaultEdgeTable() );
+               addColumns(parentNetwork.getDefaultNetworkTable(), 
newNet.getDefaultNetworkTable());
+
                tm.setProgress(0.3);
-
-               for (final CyNode node : selectedNodes)
+               
+               for (final CyNode node : selectedNodes){
                        newNet.addNode(node);
+                       cloneRow(parentNetwork.getRow(node), 
newNet.getRow(node));
+               }
 
                tm.setProgress(0.4);
-               for (final CyEdge edge : getEdges(parentNetwork, selectedNodes))
+               for (final CyEdge edge : getEdges(parentNetwork, 
selectedNodes)){
                        newNet.addEdge(edge);
+                       cloneRow(parentNetwork.getRow(edge), 
newNet.getRow(edge));
+               }
                tm.setProgress(0.5);
 
-               addVirtualColumns(parentNetwork.getDefaultNodeTable(), 
newNet.getDefaultNodeTable() );
-               addVirtualColumns(parentNetwork.getDefaultEdgeTable(), 
newNet.getDefaultEdgeTable() );
-               addVirtualColumns(parentNetwork.getDefaultNetworkTable(), 
newNet.getDefaultNetworkTable());
                
                newNet.getRow(newNet).set(CyNetwork.NAME, 
cyNetworkNaming.getSuggestedSubnetworkTitle(parentNetwork));
 
@@ -142,22 +149,44 @@
                tm.setProgress(1.0);
        }
 
-       private void addVirtualColumns(CyTable parentTable, CyTable subTable) {
-       
+       private void addColumns(CyTable parentTable, CyTable subTable) {
+
                for (CyColumn col:  parentTable.getColumns()){
                        VirtualColumnInfo colInfo = col.getVirtualColumnInfo();
-                       if (colInfo.isVirtual()){
-                               CyColumn checkCol= 
subTable.getColumn(col.getName());
-                               if(checkCol == null)
-                                       
subTable.addVirtualColumn(col.getName(), colInfo.getSourceColumn(), 
colInfo.getSourceTable(), colInfo.getTargetJoinKey(), true);
+                       if (colInfo.isVirtual())
+                               addVirtualColumn(col, subTable);
+                       else
+                               if (subTable.getColumn(col.getName()) == null)  
        
+                                       copyColumn(col, subTable);
+               }
+       }
 
-                               else
-                                       
if(!checkCol.getVirtualColumnInfo().isVirtual() ||
-                                                       
!checkCol.getVirtualColumnInfo().getSourceTable().equals(colInfo.getSourceTable())
 ||
-                                                       
!checkCol.getVirtualColumnInfo().getSourceColumn().equals(colInfo.getSourceColumn()))
-                                               
subTable.addVirtualColumn(col.getName(), colInfo.getSourceColumn(), 
colInfo.getSourceTable(), colInfo.getTargetJoinKey(), true);
+       private void addVirtualColumn (CyColumn col, CyTable subTable){
+               VirtualColumnInfo colInfo = col.getVirtualColumnInfo();
+               CyColumn checkCol= subTable.getColumn(col.getName());
+               if(checkCol == null)
+                       subTable.addVirtualColumn(col.getName(), 
colInfo.getSourceColumn(), colInfo.getSourceTable(), 
colInfo.getTargetJoinKey(), true);
 
-                       }
+               else
+                       if(!checkCol.getVirtualColumnInfo().isVirtual() ||
+                                       
!checkCol.getVirtualColumnInfo().getSourceTable().equals(colInfo.getSourceTable())
 ||
+                                       
!checkCol.getVirtualColumnInfo().getSourceColumn().equals(colInfo.getSourceColumn()))
+                               subTable.addVirtualColumn(col.getName(), 
colInfo.getSourceColumn(), colInfo.getSourceTable(), 
colInfo.getTargetJoinKey(), true);
+       }
+
+       private void copyColumn(CyColumn col, CyTable subTable) {
+               if (List.class.isAssignableFrom(col.getType()))
+                       subTable.createListColumn(col.getName(), 
col.getListElementType(), false);
+               else
+                       subTable.createColumn(col.getName(), col.getType(), 
false);     
+       }
+       
+
+       private void cloneRow(final CyRow from, final CyRow to) {
+               for (final CyColumn column : from.getTable().getColumns()){
+                       if (!column.getVirtualColumnInfo().isVirtual())
+                               to.set(column.getName(), 
from.getRaw(column.getName()));
                }
        }
+
 }

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