Author: clopes
Date: 2011-12-06 14:18:04 -0800 (Tue, 06 Dec 2011)
New Revision: 27718

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/HandleGraphDone.java
   
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/HandleNodeGraph.java
   
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/util/session/SessionUtil.java
Log:
Fixed 3.0 session file bugs:
- merging network tables with networks after reading cys file entries (network 
CyTable folders renamed to include the original network ID).
- XGMML: errors when reading "network pointer" graph tags that use XLink.

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
   2011-12-06 22:15:20 UTC (rev 27717)
+++ 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/HandleGraph.java
   2011-12-06 22:18:04 UTC (rev 27718)
@@ -106,12 +106,14 @@
        
        protected void addCurrentNetwork(String oldId, CyNetwork net) {
                manager.setCurrentNetwork(net);
-               manager.cache(oldId, net.getSUID());
+               manager.getNetworkStack().push(oldId);
                
-               if (!(net instanceof CyRootNetwork))
-                       manager.addNetwork(oldId, net);
-               
-               manager.getNetworkStack().push(net);
+               if (net != null) {
+                       manager.cache(net, oldId);
+                       
+                       if (!(net instanceof CyRootNetwork))
+                               manager.addNetwork(oldId, net);
+               }
        }
        
        /**

Modified: 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/HandleGraphDone.java
===================================================================
--- 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/HandleGraphDone.java
       2011-12-06 22:15:20 UTC (rev 27717)
+++ 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/HandleGraphDone.java
       2011-12-06 22:18:04 UTC (rev 27718)
@@ -23,7 +23,12 @@
                if (!manager.getNetworkStack().isEmpty())
                        manager.getNetworkStack().pop();
                
-               final CyNetwork currentNet = 
manager.getNetworkStack().isEmpty() ? null : manager.getNetworkStack().peek();
+               CyNetwork currentNet = null;
+               final String oldNetId = manager.getNetworkStack().isEmpty() ? 
null : manager.getNetworkStack().peek();
+               
+               if (oldNetId != null)
+                       currentNet = manager.getNetwork(oldNetId);
+               
                manager.setCurrentNetwork(currentNet);
                
                // End of document

Modified: 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/HandleNodeGraph.java
===================================================================
--- 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/HandleNodeGraph.java
       2011-12-06 22:15:20 UTC (rev 27717)
+++ 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/HandleNodeGraph.java
       2011-12-06 22:18:04 UTC (rev 27718)
@@ -1,9 +1,9 @@
 package org.cytoscape.io.internal.read.xgmml.handler;
 
 import org.cytoscape.io.internal.read.xgmml.ParseState;
+import org.cytoscape.model.CyNetwork;
 import org.cytoscape.model.CyNode;
 import org.cytoscape.model.subnetwork.CyRootNetwork;
-import org.cytoscape.model.subnetwork.CySubNetwork;
 import org.xml.sax.Attributes;
 import org.xml.sax.SAXException;
 
@@ -20,6 +20,7 @@
                final CyNode node = manager.currentNode;
                final String href = atts.getValue(ReadDataManager.XLINK, 
"href");
                final String netId;
+               CyNetwork network = null;
                
                if (href != null) {
                        // The network has already been created
@@ -28,10 +29,11 @@
                        netId = atts.getValue("id");
                        // Create network
                        final CyRootNetwork rootNet = manager.getRootNetwork();
-                       final CySubNetwork subNet = rootNet.addSubNetwork();
-                       addCurrentNetwork(netId, subNet);
+                       network = rootNet.addSubNetwork();
                }
                
+               addCurrentNetwork(netId, network);
+               
                if (netId != null) {
                        manager.addNetworkPointer(node.getSUID(), netId);
                } else {

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
       2011-12-06 22:15:20 UTC (rev 27717)
+++ 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/ReadDataManager.java
       2011-12-06 22:18:04 UTC (rev 27718)
@@ -60,7 +60,8 @@
        private Map<String, CyEdge> edgeIdMap;
        /* Map of XML ID's to networks */
        private Map<String, CyNetwork> networkIdMap;
-       private Stack<CyNetwork> networkStack;
+       /* Stack of original network IDs */
+       private Stack<String> networkStack;
        
        private Map<CyNetwork, Set<String>> nodeLinkMap;
        private Map<CyNetwork, Set<String>> edgeLinkMap;
@@ -150,7 +151,7 @@
                nodeIdMap = new HashMap<String, CyNode>();
                edgeIdMap = new HashMap<String, CyEdge>();
                networkIdMap = new HashMap<String, CyNetwork>();
-               networkStack = new Stack<CyNetwork>();
+               networkStack = new Stack<String>();
                
                nodeLinkMap = new HashMap<CyNetwork, Set<String>>();
                edgeLinkMap = new HashMap<CyNetwork, Set<String>>();
@@ -378,7 +379,7 @@
                return this.currentNetwork;
        }
        
-       protected Stack<CyNetwork> getNetworkStack() {
+       protected Stack<String> getNetworkStack() {
                return networkStack;
        }
 
@@ -470,6 +471,28 @@
                return edge;
        }
        
+    protected <T extends CyTableEntry> void cache(T element, String strId) {
+       int index = -1;
+       
+       if (element instanceof CyNode) {
+               nodeIdMap.put(strId, (CyNode) element);
+               nodeList.add((CyNode) element);
+               index = ((CyNode) element).getIndex();
+       } else if (element instanceof CyEdge) {
+               edgeIdMap.put(strId, (CyEdge) element);
+               edgeList.add((CyEdge) element);
+               index = ((CyEdge) element).getIndex();
+       } else if (element instanceof CyNetwork) {
+               networkIdMap.put(strId, (CyNetwork) element);
+           }
+       
+       // The id mapping is only necessary when loading XGMML from 3.0+ format 
session.
+       // Should NOT be done with older versions or simple XGMML import.
+       if (this.isSessionFormat()) {
+               this.cache(strId, element.getSUID(), index);
+               }
+    }
+    
        protected void cache(String oldId, long newId, int index) {
                if (oldId != null && !oldId.isEmpty()) {
                        CyTable tbl = getIdMappingTable();
@@ -529,6 +552,10 @@
                return edgeLinkMap;
        }
 
+       public CyNetwork getNetwork(String oldId) {
+               return networkIdMap.get(oldId);
+       }
+       
        public CyNode getNode(String oldId) {
                return nodeIdMap.get(oldId);
        }
@@ -610,28 +637,6 @@
                return null;
        }
 
-    private <T extends CyTableEntry> void cache(T element, String strId) {
-       int index = -1;
-       
-       if (element instanceof CyNode) {
-               nodeIdMap.put(strId, (CyNode) element);
-               nodeList.add((CyNode) element);
-               index = ((CyNode) element).getIndex();
-       } else if (element instanceof CyEdge) {
-               edgeIdMap.put(strId, (CyEdge) element);
-               edgeList.add((CyEdge) element);
-               index = ((CyEdge) element).getIndex();
-       } else if (element instanceof CyNetwork) {
-               networkIdMap.put(strId, (CyNetwork) element);
-           }
-       
-       // The id mapping is only necessary when loading XGMML from 3.0+ format 
session.
-       // Should NOT be done with older versions or simple XGMML import.
-       if (this.isSessionFormat()) {
-               this.cache(strId, element.getSUID(), index);
-               }
-    }
-       
        private CyTable getIdMappingTable() {
                CyTable tbl = null;
                

Modified: 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/util/session/SessionUtil.java
===================================================================
--- 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/util/session/SessionUtil.java
 2011-12-06 22:15:20 UTC (rev 27717)
+++ 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/util/session/SessionUtil.java
 2011-12-06 22:18:04 UTC (rev 27718)
@@ -69,11 +69,12 @@
        
        public static String getNetworkTableFilename(CyNetwork network, 
CyTableMetadata metadata) throws UnsupportedEncodingException {
                CyTable table = metadata.getCyTable();
+               Long networkId = network.getSUID();
                String networkFileName = getNetworkFileName(network);
                String namespace = escape(metadata.getNamespace());
                String type = escape(metadata.getType().getCanonicalName());
                String tableTitle = escape(table.getTitle());
-               return String.format("%s/%s-%s-%s%s", networkFileName, 
namespace, type, tableTitle, TABLE_EXT);
+               return String.format("%s_%s/%s-%s-%s%s", networkId, 
networkFileName, namespace, type, tableTitle, TABLE_EXT);
        }
        
        public static String getXGMMLFilename(CyNetwork network) throws 
UnsupportedEncodingException {

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