Author: pwang
Date: 2012-09-24 14:56:50 -0700 (Mon, 24 Sep 2012)
New Revision: 30470

Modified:
   
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/GenericXGMMLReader.java
   
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/HandleGraph.java
   
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/HandleNode.java
   
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/ReadDataManager.java
Log:
Support add new network (in xgmml format) to network collection

Modified: 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/GenericXGMMLReader.java
===================================================================
--- 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/GenericXGMMLReader.java
    2012-09-24 20:53:05 UTC (rev 30469)
+++ 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/GenericXGMMLReader.java
    2012-09-24 21:56:50 UTC (rev 30470)
@@ -105,6 +105,12 @@
        @Override
        public void run(TaskMonitor tm) throws Exception {
                tm.setProgress(0.0);
+               
+               // Now user has the option to import network into different 
collection
+               
this.initNodeMap(name2RootMap.get(rootNetworkList.getSelectedValue()), 
this.targetColumnList.getSelectedValue());               
+               this.readDataMgr.setNodeMap(this.nMap);
+               
this.readDataMgr.setRootNetwork(name2RootMap.get(rootNetworkList.getSelectedValue()));
+               
                init(tm);
                
                try {

Modified: 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/HandleGraph.java
===================================================================
--- 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/HandleGraph.java
   2012-09-24 20:53:05 UTC (rev 30469)
+++ 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/HandleGraph.java
   2012-09-24 21:56:50 UTC (rev 30470)
@@ -77,7 +77,10 @@
                        if (parent == null) {
                                // This is a regular top-level network...
                                final CyRootNetwork rootNet = 
manager.createRootNetwork();
-                               currentNet = rootNet.getBaseNetwork(); // The 
root-network is not important here!
+                               //currentNet = rootNet.getBaseNetwork(); // The 
root-network is not important here!, this is out-dated
+                               
+                               // create a sub network, because we should add 
all nodes to subnetwork
+                               currentNet = rootNet.addSubNetwork();
                        } else {
                                // This is a 2.x "child-network"...
                                currentNet = parent.addSubNetwork();

Modified: 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/HandleNode.java
===================================================================
--- 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/HandleNode.java
    2012-09-24 20:53:05 UTC (rev 30469)
+++ 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/HandleNode.java
    2012-09-24 21:56:50 UTC (rev 30470)
@@ -61,8 +61,16 @@
                                manager.addNode(node, label, (CySubNetwork) 
curNet);
                        
                        if ( label != null && (!manager.isSessionFormat() || 
manager.getDocumentVersion() < 3.0) ) {
-                               curNet.getRow(node).set(CyNetwork.NAME, label);
                                
+                               if (!curNet.containsNode(node) && curNet 
instanceof CySubNetwork){
+                                       // The node should be node in root 
network, it does not exist in current subnetwork yet
+                                       CySubNetwork subnet = (CySubNetwork) 
curNet;
+                                       subnet.addNode(node);
+                                       node = subnet.getNode(node.getSUID());
+                               }
+
+                               curNet.getRow(node).set(CyNetwork.NAME, label); 
                                                                                
                
+                               
                                if (rootNet != null && curNet != rootNet)
                                        
rootNet.getRow(node).set(CyNetwork.NAME, label);
                        }

Modified: 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/ReadDataManager.java
===================================================================
--- 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/ReadDataManager.java
       2012-09-24 20:53:05 UTC (rev 30469)
+++ 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/ReadDataManager.java
       2012-09-24 21:56:50 UTC (rev 30470)
@@ -416,6 +416,11 @@
        }
 
        protected CyRootNetwork createRootNetwork() {
+               
+               if (this.rootNetwork != null){
+                       return this.rootNetwork;
+               }
+               
                final CyNetwork baseNet = networkFactory.createNetwork();
                final CyRootNetwork rootNetwork = 
rootNetworkManager.getRootNetwork(baseNet);
                
@@ -440,9 +445,21 @@
                        ((CySubNetwork) net).addNode(node);
         }
         
-        if (node == null) // OK, create it
-               node = net.addNode();
+        if (node == null) 
+        {    
+               node = this.nMap.get(label);
+               if ( node == null){
+                       // OK, create it
+               node = net.addNode();                   
+               }
+        }
         
+        if (net instanceof CySubNetwork && getParentNetwork() != null) {
+               // cache the parent node, not the node from subnetwork
+               CySubNetwork subnet = (CySubNetwork) net;
+               node = subnet.getRootNetwork().getNode(node.getSUID());
+        }
+        
         // Add to internal cache:
         cache.cache(oldId, node);
         cache.cacheNodeByName(label, node);
@@ -705,4 +722,18 @@
 
                return b;
        }
+       
+       // The following is added to support the user option to import network 
into different collection
+       private  Map<Object, CyNode> nMap;
+       private CyRootNetwork rootNetwork = null;
+
+       public void setNodeMap(Map<Object, CyNode> nMap){
+               this.nMap = nMap;
+       }
+               
+       public void setRootNetwork(CyRootNetwork rootNet){
+               this.rootNetwork = rootNet;
+       }
+       
+       
 }

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