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.