Author: clopes
Date: 2012-02-07 12:35:51 -0800 (Tue, 07 Feb 2012)
New Revision: 28207
Modified:
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/session/Cy2SessionReaderImpl.java
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/session/Cy3SessionReaderImpl.java
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/XGMMLNetworkViewReader.java
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/AbstractHandler.java
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/AttributeValueUtil.java
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/HandleEdge.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/HandleGraphDone.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/HandleNodeAttribute.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/HandleViewEdge.java
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/HandleViewEdgeGraphics.java
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/HandleViewGraph.java
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/HandleViewLockedVisualPropAttribute.java
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/HandleViewNode.java
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/HandleViewNodeGraphics.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/ReadCache.java
Log:
Changes how the xgmml parser handles and caches object IDs--it should prevent
potential collisions when caching node labels, node IDs and network names
(specially when reading 2.x sessions).
Modified:
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/session/Cy2SessionReaderImpl.java
===================================================================
---
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/session/Cy2SessionReaderImpl.java
2012-02-07 19:31:23 UTC (rev 28206)
+++
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/session/Cy2SessionReaderImpl.java
2012-02-07 20:35:51 UTC (rev 28207)
@@ -581,25 +581,11 @@
if (it == null)
return;
- // create an id map
- Map<String, CyNode> nodeMap = new HashMap<String, CyNode>();
-
- for (CyNode n : net.getNodeList()) {
- CyRow row = net.getRow(n);
- String name = row.get(CyNetwork.NAME, String.class);
-
- if (name == null) // try another column...
- name = row.get(CyRootNetwork.SHARED_NAME,
String.class);
-
- if (name != null)
- nodeMap.put(name, n);
- }
-
// set attr values based on ids
while (it.hasNext()) {
final Node nodeObject = (Node) it.next();
String name = nodeObject.getId();
- CyNode n = nodeMap.get(name);
+ CyNode n = cache.getNodeByName(name); // The XGMML node
"id" is only used internally, by the XGMML parser.
if (n != null)
net.getRow(n, tableName).set(attrName, true);
@@ -613,25 +599,11 @@
if (it == null)
return;
- // create an id map
- Map<String, CyEdge> edgeMap = new HashMap<String, CyEdge>();
-
- for (CyEdge e : net.getEdgeList()) {
- CyRow row = net.getRow(e);
- String name = row.get(CyNetwork.NAME, String.class);
-
- if (name == null) // try another column...
- name = row.get(CyRootNetwork.SHARED_NAME,
String.class);
-
- if (name != null)
- edgeMap.put(name, e);
- }
-
// set attr values based on ids
while (it.hasNext()) {
final Edge edgeObject = (Edge) it.next();
String name = edgeObject.getId();
- CyEdge e = edgeMap.get(name);
+ CyEdge e = cache.getEdge(name); // In 2.x, XGMML edge
elements have no "id" attribute--the label is the id.
if (e != null)
net.getRow(e, tableName).set(attrName, true);
Modified:
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/session/Cy3SessionReaderImpl.java
===================================================================
---
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/session/Cy3SessionReaderImpl.java
2012-02-07 19:31:23 UTC (rev 28206)
+++
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/session/Cy3SessionReaderImpl.java
2012-02-07 20:35:51 UTC (rev 28207)
@@ -97,7 +97,7 @@
public static final Pattern PROPERTIES_PATTERN =
Pattern.compile(".*/"+PROPERTIES_FOLDER+"?(([^/]+)[.](props|properties))");
private final Map<Long/*network_suid*/, CyNetwork> networkLookup = new
HashMap<Long, CyNetwork>();
- private final Map<String/*old_network_id*/,
Set<CyTableMetadataBuilder>> networkTableMap = new HashMap<String,
Set<CyTableMetadataBuilder>>();
+ private final Map<Long/*old_network_id*/, Set<CyTableMetadataBuilder>>
networkTableMap = new HashMap<Long, Set<CyTableMetadataBuilder>>();
private final CyNetworkReaderManager networkReaderMgr;
private final CyPropertyReaderManager propertyReaderMgr;
@@ -225,7 +225,12 @@
if (matcher.matches()) {
String networkName =
SessionUtil.unescape(matcher.group(2));
- String oldNetId = getOldNetworkId(networkName);
+ Long oldNetId = getOldNetworkId(networkName);
+
+ if (oldNetId == null) {
+ throw new NullPointerException("Cannot extract
table. Network SUID is null for entry: " + entryName);
+ }
+
String namespace =
SessionUtil.unescape(matcher.group(3));
Class<?> type =
Class.forName(SessionUtil.unescape(matcher.group(4)));
String title = SessionUtil.unescape(matcher.group(5));
@@ -276,19 +281,23 @@
private void extractNetworkView(InputStream is, String entryName)
throws Exception {
// Get the token which identifies the network
Matcher matcher = NETWORK_VIEW_PATTERN.matcher(entryName);
- String oldNetId = null;
+ Long oldNetId = null;
if (matcher.matches()) {
String netViewToken = matcher.group(2);
matcher =
NETWORK_VIEW_NAME_PATTERN.matcher(netViewToken);
- if (matcher.matches())
- oldNetId = matcher.group(1);
+ if (matcher.matches()) {
+ try {
+ oldNetId =
Long.valueOf(matcher.group(1));
+ } catch (NumberFormatException nfe) {
+ logger.error("Cannot extract network
view SUID from: " + netViewToken);
+ }
+ }
}
- if (oldNetId != null && !oldNetId.isEmpty()) {
- final Long netId = cache.getNewId(oldNetId);
- final CyNetwork network = networkLookup.get(netId);
+ if (oldNetId != null) {
+ final CyNetwork network = cache.getNetwork(oldNetId);
if (network != null) {
// Create the view
@@ -307,7 +316,7 @@
}
}
} else {
- logger.error("The network view entry is invalid: " +
entryName);
+ logger.error("The network view will cannot be
recreated. The network view entry is invalid: " + entryName);
}
}
@@ -419,7 +428,7 @@
private void mergeNetworkTables() throws UnsupportedEncodingException {
for (Entry<Long, CyNetwork> entry : networkLookup.entrySet()) {
CyNetwork network = entry.getValue();
- String oldId = cache.getOldId(network.getSUID());
+ Object oldId = cache.getOldId(network.getSUID());
Set<CyTableMetadataBuilder> builders =
networkTableMap.get(oldId);
if (builders == null)
@@ -450,12 +459,11 @@
Map<String, CyTable> tableMap =
networkTableManager.getTables(network, type);
CyTable targetTable = tableMap.get(namespace);
CyTable sourceTable = builder.getTable();
- Map<String, Long> mappings = cache.getIdMap();
- mergeTables(sourceTable, targetTable, mappings);
+ mergeTables(sourceTable, targetTable, type);
builder.setCyTable(targetTable);
}
- private void mergeTables(CyTable source, CyTable target, Map<String,
Long> mappings) {
+ private void mergeTables(CyTable source, CyTable target, Class<?
extends CyTableEntry> type) {
CyColumn sourceKey = source.getPrimaryKey();
CyColumn targetKey = target.getPrimaryKey();
String keyName = sourceKey.getName();
@@ -464,10 +472,9 @@
if (keyName.equals(targetKey.getName())) {
for (CyRow sourceRow : source.getAllRows()) {
Long key = sourceRow.get(keyName, Long.class);
- Long mappedKey = null;
-
- if (mappings != null)
- mappedKey = mappings.get(""+key);
+ CyTableEntry entry = cache.getObjectById(key,
type);
+ Long mappedKey = entry != null ?
entry.getSUID() : null;
+
if (mappedKey == null)
mappedKey = key;
@@ -512,12 +519,18 @@
* @param networkToken
* @return
*/
- private static String getOldNetworkId(final String networkToken) {
- String id = null;
+ private Long getOldNetworkId(final String networkToken) {
+ Long id = null;
Matcher matcher = NETWORK_NAME_PATTERN.matcher(networkToken);
if (matcher.matches()) {
- id = matcher.group(1);
+ String s = matcher.group(1);
+
+ try {
+ id = Long.valueOf(s);
+ } catch (NumberFormatException nfe) {
+ logger.error("Cannot extract network SUID from:
" + networkToken);
+ }
}
return id;
Modified:
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/XGMMLNetworkViewReader.java
===================================================================
---
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/XGMMLNetworkViewReader.java
2012-02-07 19:31:23 UTC (rev 28206)
+++
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/XGMMLNetworkViewReader.java
2012-02-07 20:35:51 UTC (rev 28207)
@@ -89,7 +89,7 @@
// When parsing view-format XGMML, the manager does not have
the network model
// to create a map by CyNode objects, so the graphics mapping
is indexed by the old element id.
- String oldId = readDataMgr.getCache().getOldId(node.getSUID());
+ Object oldId = readDataMgr.getCache().getOldId(node.getSUID());
// Direct visual properties
Map<String, String> atts =
readDataMgr.getViewGraphicsAttributes(oldId, false);
@@ -108,7 +108,7 @@
// When parsing view-format XGMML, the manager does not have
the network model
// to create a map by CyEdge objects, so the graphics mapping
is indexed by the old element id.
- String oldId = readDataMgr.getCache().getOldId(edge.getSUID());
+ Object oldId = readDataMgr.getCache().getOldId(edge.getSUID());
// Direct visual properties
Map<String, String> atts =
readDataMgr.getViewGraphicsAttributes(oldId, false);
Modified:
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/AbstractHandler.java
===================================================================
---
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/AbstractHandler.java
2012-02-07 19:31:23 UTC (rev 28206)
+++
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/AbstractHandler.java
2012-02-07 20:35:51 UTC (rev 28207)
@@ -60,4 +60,35 @@
public void setAttributeValueUtil(AttributeValueUtil
attributeValueUtil) {
this.attributeValueUtil = attributeValueUtil;
}
+
+ protected String getLabel(Attributes atts) {
+ String label = atts.getValue("label");
+
+ if (label == null || label.isEmpty())
+ label = atts.getValue("id");
+
+ return label;
+ }
+
+ protected Object getId(Attributes atts) {
+ Object id = atts.getValue("id");
+
+ if (id != null) {
+ final String str = id.toString().trim();
+
+ if (!str.isEmpty()) {
+ try {
+ id = Long.valueOf(str);
+ } catch (NumberFormatException nfe) {
+ logger.debug("Graph id is not a number:
" + id);
+ id = str;
+ }
+ }
+ }
+
+ if (id == null || id.toString().isEmpty())
+ id = atts.getValue("label");
+
+ return id;
+ }
}
Modified:
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/AttributeValueUtil.java
===================================================================
---
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/AttributeValueUtil.java
2012-02-07 19:31:23 UTC (rev 28206)
+++
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/AttributeValueUtil.java
2012-02-07 20:35:51 UTC (rev 28207)
@@ -251,8 +251,8 @@
return version;
}
- public static String getIdFromXLink(String href) {
+ public static Long getIdFromXLink(String href) {
Matcher matcher = XLINK_PATTERN.matcher(href);
- return matcher.matches() ? matcher.group(1) : null;
+ return matcher.matches() ? Long.valueOf(matcher.group(1)) :
null;
}
}
Modified:
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/HandleEdge.java
===================================================================
---
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/HandleEdge.java
2012-02-07 19:31:23 UTC (rev 28206)
+++
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/HandleEdge.java
2012-02-07 20:35:51 UTC (rev 28207)
@@ -42,10 +42,10 @@
if (href == null) {
// Create the edge:
- String id = atts.getValue("id");
- String label = atts.getValue("label");
- String sourceId = atts.getValue("source");
- String targetId = atts.getValue("target");
+ Object id = getId(atts);
+ String label = getLabel(atts);
+ Object sourceId =
asLongOrString(atts.getValue("source"));
+ Object targetId =
asLongOrString(atts.getValue("target"));
String isDirected = atts.getValue("cy:directed");
String sourceAlias = null;
String targetAlias = null;
@@ -92,10 +92,8 @@
if (targetNode == null && targetAlias != null)
targetNode =
manager.getCache().getNode(targetAlias);
- if (id == null || id.isEmpty())
- id = label;
- if (id == null || id.isEmpty())
- id = String.format("%s (%s) %s", sourceId,
(directed ? "directed" : "undirected"), targetId);
+ if (label == null || label.isEmpty())
+ label = String.format("%s (%s) %s", sourceId,
(directed ? "directed" : "undirected"), targetId);
if (sourceNode != null && targetNode != null) {
manager.createEdge(sourceNode, targetNode, id,
label, interaction, directed);
@@ -111,4 +109,16 @@
return current;
}
+
+ private Object asLongOrString(String value) {
+ if (value != null) {
+ value = value.trim();
+
+ try {
+ return Long.valueOf(value);
+ } catch (NumberFormatException nfe) { }
+ }
+
+ return value;
+ }
}
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-02-07 19:31:23 UTC (rev 28206)
+++
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/HandleGraph.java
2012-02-07 20:35:51 UTC (rev 28207)
@@ -62,7 +62,6 @@
}
private ParseState handleCy2ModelAndView(String tag, Attributes atts,
ParseState current) throws SAXException {
- final String label = getLabel(atts); // This is the network ID
in 2.x
final CyRootNetwork parent = manager.getParentNetwork();
final CyNetwork currentNet;
@@ -82,13 +81,13 @@
currentNet = rootNet.addSubNetwork();
}
- addCurrentNetwork(label, currentNet, atts);
+ final String id = getLabel(atts); // This is the network ID in
2.x
+ addCurrentNetwork(id, currentNet, atts);
return current;
}
private ParseState handleCy3Model(String tag, Attributes atts,
ParseState current) throws SAXException {
- final String id = getId(atts);
final CyNetwork currentNet;
if (manager.graphCount == 1) {
@@ -104,6 +103,7 @@
currentNet = rootNet.addSubNetwork();
}
+ final Object id = getId(atts);
addCurrentNetwork(id, currentNet, atts);
return current;
@@ -111,7 +111,6 @@
private ParseState handleGenericXGMMLGraph(String tag, Attributes atts,
ParseState current) throws SAXException {
final CyNetwork currentNet;
- String id = getId(atts);
if (manager.graphCount == 1) {
// Root (graph) element...
@@ -123,6 +122,7 @@
currentNet = rootNet.addSubNetwork();
}
+ final Object id = getId(atts);
addCurrentNetwork(id, currentNet, atts);
return current;
@@ -134,16 +134,16 @@
* @param atts The attributes of the graph tag
* @return The string identifier of the network
*/
- protected String addCurrentNetwork(String oldId, CyNetwork net,
Attributes atts) {
+ protected Object addCurrentNetwork(Object oldId, CyNetwork net,
Attributes atts) {
if (oldId == null)
oldId = String.format("_graph%s_%s",
manager.graphCount, net.getSUID());
manager.setCurrentNetwork(net);
- manager.getNetworkStack().push(oldId);
+ manager.getNetworkIDStack().push(oldId);
if (net != null) {
manager.setCurrentRow(net.getRow(net));
- manager.getCache().cache(net, oldId);
+ manager.getCache().cache(oldId, net);
if (!(net instanceof CyRootNetwork))
manager.addNetwork(net);
@@ -190,22 +190,4 @@
netRow.set(CyNetwork.NAME, name);
}
}
-
- protected String getLabel(Attributes atts) {
- String label = atts.getValue("label");
-
- if (label == null || label.isEmpty())
- label = atts.getValue("id");
-
- return label;
- }
-
- protected String getId(Attributes atts) {
- String id = atts.getValue("id");
-
- if (id == null || id.isEmpty())
- id = atts.getValue("label");
-
- return id;
- }
}
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
2012-02-07 19:31:23 UTC (rev 28206)
+++
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/HandleGraphDone.java
2012-02-07 20:35:51 UTC (rev 28207)
@@ -53,17 +53,17 @@
return current;
// Resolve any unresolved node and edge references
- Map<CyNetwork, Set<String>> nodeMap =
manager.getCache().getNodeLinks();
+ Map<CyNetwork, Set<Long>> nodeMap =
manager.getCache().getNodeLinks();
- for (Map.Entry<CyNetwork, Set<String>> entry :
nodeMap.entrySet()) {
+ for (Map.Entry<CyNetwork, Set<Long>> entry :
nodeMap.entrySet()) {
CyNetwork net = entry.getKey();
- Set<String> ids = entry.getValue();
+ Set<Long> ids = entry.getValue();
if (net != null && ids != null && !ids.isEmpty()) {
if (net instanceof CySubNetwork) {
CySubNetwork sn = (CySubNetwork) net;
- for (String id : ids) {
+ for (Long id : ids) {
CyNode n =
manager.getCache().getNode(id);
if (n != null)
@@ -79,17 +79,17 @@
}
// TODO: refactor
- Map<CyNetwork, Set<String>> edgeMap =
manager.getCache().getEdgeLinks();
+ Map<CyNetwork, Set<Long>> edgeMap =
manager.getCache().getEdgeLinks();
- for (Map.Entry<CyNetwork, Set<String>> entry :
edgeMap.entrySet()) {
+ for (Map.Entry<CyNetwork, Set<Long>> entry :
edgeMap.entrySet()) {
CyNetwork net = entry.getKey();
- Set<String> ids = entry.getValue();
+ Set<Long> ids = entry.getValue();
if (net != null && ids != null && !ids.isEmpty()) {
if (net instanceof CySubNetwork) {
CySubNetwork sn = (CySubNetwork) net;
- for (String id : ids) {
+ for (Long id : ids) {
CyEdge e =
manager.getCache().getEdge(id);
if (e != null)
@@ -122,14 +122,14 @@
++manager.graphDoneCount;
// In order to handle sub-graphs correctly
- if (!manager.getNetworkStack().isEmpty())
- manager.getNetworkStack().pop();
+ if (!manager.getNetworkIDStack().isEmpty())
+ manager.getNetworkIDStack().pop();
CyNetwork currentNet = null;
- final String oldNetId = manager.getNetworkStack().isEmpty() ?
null : manager.getNetworkStack().peek();
+ final Object netId = manager.getNetworkIDStack().isEmpty() ?
null : manager.getNetworkIDStack().peek();
- if (oldNetId != null)
- currentNet = manager.getCache().getNetwork(oldNetId);
+ if (netId != null)
+ currentNet = manager.getCache().getNetwork(netId);
manager.setCurrentNetwork(currentNet);
manager.setCurrentRow(currentNet != null ?
currentNet.getRow(currentNet) : null);
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-02-07 19:31:23 UTC (rev 28206)
+++
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/HandleNode.java
2012-02-07 20:35:51 UTC (rev 28207)
@@ -44,7 +44,7 @@
if (href == null) {
// Create the node
- final String id = atts.getValue("id");
+ final Object id = getId(atts);
label = atts.getValue("label");
if (label == null)
@@ -53,7 +53,7 @@
node = manager.createNode(id, label);
} else {
// Try to get the node from the internal cache
- String id = AttributeValueUtil.getIdFromXLink(href);
+ final Long id = AttributeValueUtil.getIdFromXLink(href);
node = manager.getCache().getNode(id);
if (node != null) {
@@ -74,8 +74,9 @@
if ( label != null && (!manager.isSessionFormat() ||
manager.getDocumentVersion() < 3.0) ) {
manager.getCurrentNetwork().getRow(node).set(CyNode.NAME, label);
- if (manager.getRootNetwork() != null &&
manager.getCurrentNetwork() != manager.getRootNetwork())
+ if (manager.getRootNetwork() != null &&
manager.getCurrentNetwork() != manager.getRootNetwork()) {
manager.getRootNetwork().getRow(node).set(CyNode.NAME, label);
+ }
}
return current;
Modified:
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/HandleNodeAttribute.java
===================================================================
---
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/HandleNodeAttribute.java
2012-02-07 19:31:23 UTC (rev 28206)
+++
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/HandleNodeAttribute.java
2012-02-07 20:35:51 UTC (rev 28207)
@@ -61,7 +61,7 @@
// Handle 2.x nested network as network
pointer
final String netId =
atts.getValue("value");
final CyNode node =
manager.getCurrentNode();
-
manager.getCache().addNetworkPointer(node.getSUID(), netId);
+
manager.getCache().addNetworkPointer(node, netId);
}
}
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
2012-02-07 19:31:23 UTC (rev 28206)
+++
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/HandleNodeGraph.java
2012-02-07 20:35:51 UTC (rev 28207)
@@ -47,7 +47,7 @@
manager.getCompoundNodeStack().push(node);
final String href = atts.getValue(ReadDataManager.XLINK,
"href");
- String netId = null;
+ Object netId = null;
CyNetwork network = null;
if (href != null) {
@@ -69,7 +69,7 @@
}
if (netId != null)
- manager.getCache().addNetworkPointer(node.getSUID(),
netId);
+ manager.getCache().addNetworkPointer(node, netId);
return current;
}
Modified:
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/HandleViewEdge.java
===================================================================
---
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/HandleViewEdge.java
2012-02-07 19:31:23 UTC (rev 28206)
+++
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/HandleViewEdge.java
2012-02-07 20:35:51 UTC (rev 28207)
@@ -35,9 +35,16 @@
@Override
public ParseState handle(String tag, Attributes atts, ParseState
current) throws SAXException {
- String id = atts.getValue("cy:edgeId");
- manager.setCurrentElementId(id);
+ String sId = atts.getValue("cy:edgeId");
+ try {
+ Long id = Long.valueOf(sId);
+ manager.setCurrentElementId(id);
+ } catch (NumberFormatException nfe) {
+ logger.error("cy:edgeId is not a number: " + sId);
+ manager.setCurrentElementId(null);
+ }
+
return current;
}
}
\ No newline at end of file
Modified:
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/HandleViewEdgeGraphics.java
===================================================================
---
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/HandleViewEdgeGraphics.java
2012-02-07 19:31:23 UTC (rev 28206)
+++
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/HandleViewEdgeGraphics.java
2012-02-07 20:35:51 UTC (rev 28207)
@@ -35,8 +35,13 @@
@Override
public ParseState handle(String tag, Attributes atts, ParseState current)
throws SAXException {
- final String edgeId = manager.getCurrentElementId();
+ final Object edgeId = manager.getCurrentElementId();
+ if (edgeId == null) {
+ logger.error("Cannot parse edge view: edge id is null");
+ return current;
+ }
+
if (tag.equals("graphics")) {
manager.addViewGraphicsAttributes(edgeId, atts, false);
} else if (tag.equals("att")) {
Modified:
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/HandleViewGraph.java
===================================================================
---
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/HandleViewGraph.java
2012-02-07 19:31:23 UTC (rev 28206)
+++
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/HandleViewGraph.java
2012-02-07 20:35:51 UTC (rev 28207)
@@ -36,7 +36,7 @@
@Override
public ParseState handle(String tag, Attributes atts, ParseState
current) throws SAXException {
manager.graphCount++;
- String netId = atts.getValue("cy:networkId");
+ Long netId = Long.valueOf(atts.getValue("cy:networkId"));
// There should be only no nested graph tags!
if (manager.graphCount > 1) {
@@ -49,7 +49,7 @@
if (docVersion != null)
manager.setDocumentVersion(docVersion); // version 3.0+
- manager.setNetworkViewId(atts.getValue("id"));
+ manager.setNetworkViewId(Long.valueOf(atts.getValue("id")));
manager.setNetworkId(netId);
manager.setCurrentElementId(netId);
manager.setVisualStyleName(atts.getValue("cy:visualStyle"));
Modified:
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/HandleViewLockedVisualPropAttribute.java
===================================================================
---
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/HandleViewLockedVisualPropAttribute.java
2012-02-07 19:31:23 UTC (rev 28206)
+++
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/HandleViewLockedVisualPropAttribute.java
2012-02-07 20:35:51 UTC (rev 28207)
@@ -35,7 +35,7 @@
@Override
public ParseState handle(String tag, Attributes atts, ParseState
current) throws SAXException {
- final String modelId = manager.getCurrentElementId();
+ final Object modelId = manager.getCurrentElementId();
String name = atts.getValue("name");
String value = atts.getValue("value");
Modified:
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/HandleViewNode.java
===================================================================
---
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/HandleViewNode.java
2012-02-07 19:31:23 UTC (rev 28206)
+++
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/HandleViewNode.java
2012-02-07 20:35:51 UTC (rev 28207)
@@ -35,9 +35,16 @@
@Override
public ParseState handle(String tag, Attributes atts, ParseState
current) throws SAXException {
- String id = atts.getValue("cy:nodeId");
- manager.setCurrentElementId(id);
+ String sId = atts.getValue("cy:nodeId");
+ try {
+ Long id = Long.valueOf(sId);
+ manager.setCurrentElementId(id);
+ } catch (NumberFormatException nfe) {
+ logger.error("cy:nodeId is not a number: " + sId);
+ manager.setCurrentElementId(null);
+ }
+
return current;
}
}
Modified:
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/HandleViewNodeGraphics.java
===================================================================
---
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/HandleViewNodeGraphics.java
2012-02-07 19:31:23 UTC (rev 28206)
+++
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/HandleViewNodeGraphics.java
2012-02-07 20:35:51 UTC (rev 28207)
@@ -37,7 +37,12 @@
@Override
public ParseState handle(String tag, Attributes atts, ParseState current)
throws SAXException {
- final String nodeId = manager.getCurrentElementId();
+ final Object nodeId = manager.getCurrentElementId();
+
+ if (nodeId == null) {
+ logger.error("Cannot parse node view: node id is null");
+ return current;
+ }
if (tag.equals("graphics")) {
manager.addViewGraphicsAttributes(nodeId, atts, false);
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-02-07 19:31:23 UTC (rev 28206)
+++
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/ReadDataManager.java
2012-02-07 20:35:51 UTC (rev 28207)
@@ -74,7 +74,7 @@
private Set<CyNetwork> networks;
/* Stack of original network IDs */
- private Stack<String> networkStack;
+ private Stack<Object> networkStack;
/* Stack of nodes that have a nested graph*/
private Stack<CyNode> compoundNodeStack;
@@ -112,13 +112,13 @@
private CyRow currentRow;
// Network view format properties
- private String networkViewId;
- private String networkId;
+ private Object networkViewId;
+ private Object networkId;
private String visualStyleName;
private String rendererName;
- private String currentElementId; // node/edge/network old id
- private Map<String/*old model id*/, Map<String/*att name*/, String/*att
value*/>> viewGraphics;
- private Map<String/*old model id*/, Map<String/*att name*/, String/*att
value*/>> viewLockedGraphics;
+ private Object currentElementId; // node/edge/network old id
+ private Map<Object/*old model id*/, Map<String/*att name*/, String/*att
value*/>> viewGraphics;
+ private Map<Object/*old model id*/, Map<String/*att name*/, String/*att
value*/>> viewLockedGraphics;
private final ReadCache cache;
private final EquationCompiler equationCompiler;
@@ -172,7 +172,7 @@
edgeBendX = null;
edgeBendY = null;
- networkStack = new Stack<String>();
+ networkStack = new Stack<Object>();
compoundNodeStack = new Stack<CyNode>();
networks = new LinkedHashSet<CyNetwork>();
@@ -186,8 +186,8 @@
networkId = null;
visualStyleName = null;
rendererName = null;
- viewGraphics = new LinkedHashMap<String, Map<String,String>>();
- viewLockedGraphics = new LinkedHashMap<String,
Map<String,String>>();
+ viewGraphics = new LinkedHashMap<Object, Map<String,String>>();
+ viewLockedGraphics = new LinkedHashMap<Object,
Map<String,String>>();
}
public void dispose() {
@@ -265,8 +265,8 @@
* @param attValue
* @param locked
*/
- protected void addViewGraphicsAttribute(String oldModelId, String
attName, String attValue, boolean locked) {
- Map<String, Map<String, String>> graphics = locked ?
viewLockedGraphics : viewGraphics;
+ protected void addViewGraphicsAttribute(Object oldModelId, String
attName, String attValue, boolean locked) {
+ Map<Object, Map<String, String>> graphics = locked ?
viewLockedGraphics : viewGraphics;
Map<String, String> attributes = graphics.get(oldModelId);
if (attributes == null) {
@@ -292,7 +292,7 @@
}
}
- protected void addViewGraphicsAttributes(String oldModelId, Attributes
atts, boolean locked) {
+ protected void addViewGraphicsAttributes(Object oldModelId, Attributes
atts, boolean locked) {
if (oldModelId != null) {
final int attrLength = atts.getLength();
@@ -309,7 +309,7 @@
return null;
}
- public <T extends CyTableEntry> Map<String, String>
getViewGraphicsAttributes(String oldId, boolean locked) {
+ public <T extends CyTableEntry> Map<String, String>
getViewGraphicsAttributes(Object oldId, boolean locked) {
return locked ? viewLockedGraphics.get(oldId) :
viewGraphics.get(oldId);
}
@@ -376,7 +376,10 @@
return this.currentNetwork;
}
- protected Stack<String> getNetworkStack() {
+ /**
+ * @return Stack of network IDs (XGMML IDs).
+ */
+ protected Stack<Object> getNetworkIDStack() {
return networkStack;
}
@@ -392,22 +395,21 @@
}
protected CyRootNetwork getRootNetwork() {
- if (currentNetwork != null)
- return (currentNetwork instanceof CyRootNetwork) ?
(CyRootNetwork) currentNetwork :
-
rootNetworkManager.getRootNetwork(currentNetwork);
- return null;
+ return (currentNetwork != null) ?
rootNetworkManager.getRootNetwork(currentNetwork) : null;
}
- protected CyNode createNode(String id, String label) {
- if (id == null) id = label;
+ protected CyNode createNode(Object oldId, String label) {
+ if (oldId == null)
+ throw new NullPointerException("'oldId' is null.");
+
CyNode node = null;
if (this.getCurrentNetwork() instanceof CySubNetwork &&
this.getParentNetwork() != null) {
// Do not create the element again if the network is a
sub-network!
- Integer index = cache.getIndex(id);
+ Integer index = cache.getIndex(oldId);
if (index != null) {
- node = this.getParentNetwork().getNode(index);
+ node = this.getRootNetwork().getNode(index);
((CySubNetwork) this.getCurrentNetwork()).addNode(node);
node = this.getCurrentNetwork().getNode(index); // in
order to return the correct instance!
}
@@ -421,23 +423,25 @@
this.currentNode = node;
this.currentRow = this.getCurrentNetwork().getRow(node);
- // Add to internal cache
- cache.cache(node, id);
+ // Add to internal cache:
+ cache.cache(oldId, node);
+ cache.cacheNodeByName(label, node);
return node;
}
- protected CyEdge createEdge(CyNode source, CyNode target, String id,
String label, String interaction,
+ protected CyEdge createEdge(CyNode source, CyNode target, Object id,
String label, String interaction,
boolean directed) {
+ CyEdge edge = null;
+
if (id == null) id = label;
- CyEdge edge = null;
if (this.getCurrentNetwork() instanceof CySubNetwork &&
this.getParentNetwork() != null) {
// Do not create the element again if the network is a
sub-network and the edge already exists!
Integer index = cache.getIndex(id);
if (index != null) {
- edge = this.getParentNetwork().getEdge(index);
+ edge = this.getRootNetwork().getEdge(index);
((CySubNetwork) this.getCurrentNetwork()).addEdge(edge);
edge = this.getCurrentNetwork().getEdge(index); // in
order to return the correct instance!
}
@@ -483,8 +487,8 @@
}
}
- // Add to internal cache
- cache.cache(edge, id);
+ // Add to internal cache:
+ cache.cache(id, edge);
return edge;
}
@@ -495,8 +499,8 @@
}
protected void addElementLink(String href, Class<? extends
CyTableEntry> clazz) {
- Map<CyNetwork, Set<String>> map = null;
- String id = AttributeValueUtil.getIdFromXLink(href);
+ Map<CyNetwork, Set<Long>> map = null;
+ Long id = AttributeValueUtil.getIdFromXLink(href);
if (clazz == CyNode.class) map = cache.getNodeLinks();
else if (clazz == CyEdge.class) map = cache.getEdgeLinks();
@@ -504,10 +508,10 @@
CyNetwork net = getCurrentNetwork();
if (map != null && net != null) {
- Set<String> idSet = map.get(net);
+ Set<Long> idSet = map.get(net);
if (idSet == null) {
- idSet = new HashSet<String>();
+ idSet = new HashSet<Long>();
map.put(net, idSet);
}
@@ -515,19 +519,19 @@
}
}
- protected String getNetworkViewId() {
+ protected Object getNetworkViewId() {
return networkViewId;
}
- protected void setNetworkViewId(String networkViewId) {
+ protected void setNetworkViewId(Object networkViewId) {
this.networkViewId = networkViewId;
}
- public String getNetworkId() {
+ public Object getNetworkId() {
return networkId;
}
- protected void setNetworkId(String networkId) {
+ protected void setNetworkId(Object networkId) {
this.networkId = networkId;
}
@@ -547,11 +551,11 @@
this.rendererName = rendererName;
}
- protected String getCurrentElementId() {
+ protected Object getCurrentElementId() {
return currentElementId;
}
- protected void setCurrentElementId(String currentElementId) {
+ protected void setCurrentElementId(Object currentElementId) {
this.currentElementId = currentElementId;
}
Modified:
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/util/ReadCache.java
===================================================================
---
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/util/ReadCache.java
2012-02-07 19:31:23 UTC (rev 28206)
+++
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/util/ReadCache.java
2012-02-07 20:35:51 UTC (rev 28207)
@@ -40,135 +40,155 @@
public class ReadCache {
- /* Map of old to new element IDs */
- private Map<String, Long> idMap;
/* Map of new to old element IDs */
- private Map<Long, String> oldIdMap;
+ private Map<Long, Object> oldIdMap;
/* Map of old ID to node/edge indexes */
- private Map<String, Integer> indexMap;
+ private Map<Object, Integer> indexMap;
- private Map<Long/*node id*/, String/*old network id*/>
networkPointerMap;
+ private Map<CyNode, Object/*network's id*/> networkPointerMap;
- /* Map of XML ID's to nodes */
- private Map<String, CyNode> nodeIdMap;
- /* Map of XML ID's to edges */
- private Map<String, CyEdge> edgeIdMap;
- /* Map of XML ID's to networks */
- private Map<String, CyNetwork> networkIdMap;
+ /* Maps of XML ID's to elements (the keys should be a Long if reading a
Cy3 session file) */
+ private Map<Object, CyNetwork> networkById;
+ private Map<Object, CyNode> nodeById;
+ private Map<Object, CyEdge> edgeById;
- private Map<CyNetwork, Set<String>> nodeLinkMap;
- private Map<CyNetwork, Set<String>> edgeLinkMap;
+ /* Maps of node labels to nodes (necessary because of 2.x sessions,
which uses the node label as its session ID) */
+ private Map<String, CyNode> nodeByName;
+ private Map<CyNetwork, Set<Long>> nodeLinkMap;
+ private Map<CyNetwork, Set<Long>> edgeLinkMap;
+
private static final Logger logger =
LoggerFactory.getLogger(ReadCache.class);
public void init() {
- idMap = new HashMap<String, Long>();
- oldIdMap = new HashMap<Long, String>();
- indexMap = new HashMap<String, Integer>();
- networkPointerMap = new HashMap<Long, String>();
+ oldIdMap = new HashMap<Long, Object>();
+ indexMap = new HashMap<Object, Integer>();
- nodeIdMap = new HashMap<String, CyNode>();
- edgeIdMap = new HashMap<String, CyEdge>();
- networkIdMap = new HashMap<String, CyNetwork>();
+ nodeById = new HashMap<Object, CyNode>();
+ edgeById = new HashMap<Object, CyEdge>();
+ networkById = new HashMap<Object, CyNetwork>();
- nodeLinkMap = new HashMap<CyNetwork, Set<String>>();
- edgeLinkMap = new HashMap<CyNetwork, Set<String>>();
+ nodeByName = new HashMap<String, CyNode>();
+
+ nodeLinkMap = new HashMap<CyNetwork, Set<Long>>();
+ edgeLinkMap = new HashMap<CyNetwork, Set<Long>>();
+ networkPointerMap = new HashMap<CyNode, Object>();
}
public void dispose() {
- nodeIdMap = null;
- edgeIdMap = null;
- networkIdMap = null;
+ nodeById = null;
+ edgeById = null;
+ networkById = null;
+ nodeByName = null;
+
nodeLinkMap = null;
edgeLinkMap = null;
+ networkPointerMap = null;
}
- public <T extends CyTableEntry> void cache(T element, String strId) {
+ /**
+ * Cache the element for future reference.
+ * @param xgmmlId The XGMML id of the element.
+ * @param element A CyNetwork, CyNetworkView, CyNode or CyEdge.
+ */
+ public void cache(Object xgmmlId, CyTableEntry element) {
int index = -1;
if (element instanceof CyNode) {
- nodeIdMap.put(strId, (CyNode) element);
+ if (xgmmlId != null)
+ nodeById.put(xgmmlId, (CyNode) element);
+
index = ((CyNode) element).getIndex();
} else if (element instanceof CyEdge) {
- edgeIdMap.put(strId, (CyEdge) element);
+ if (xgmmlId != null)
+ edgeById.put(xgmmlId, (CyEdge) element);
+
index = ((CyEdge) element).getIndex();
} else if (element instanceof CyNetwork) {
- networkIdMap.put(strId, (CyNetwork) element);
+ if (xgmmlId != null)
+ networkById.put(xgmmlId, (CyNetwork) element);
}
-
- this.cache(strId, element.getSUID(), index);
+
+ if (xgmmlId != null) {
+ oldIdMap.put(element.getSUID(), xgmmlId);
+ indexMap.put(xgmmlId, index);
+ }
}
-
- public void cache(String oldId, long newId, int index) {
- if (oldId != null && !oldId.isEmpty()) {
- idMap.put(oldId, newId);
- oldIdMap.put(newId, oldId);
- indexMap.put(oldId, index);
- }
- }
- public void cache(String oldId, long newId) {
- cache(oldId, newId, 0);
+ /**
+ * Probably only necessary when parsing 2.x session files.
+ * @param name
+ * @param node
+ */
+ public void cacheNodeByName(String name, CyNode node) {
+ if (name != null && !name.isEmpty() && node != null)
+ nodeByName.put(name, node);
}
- public void addNetworkPointer(Long nodeId, String oldNetworkId) {
- networkPointerMap.put(nodeId, oldNetworkId);
+ public void addNetworkPointer(CyNode node, Object networkId) {
+ if (node == null)
+ throw new NullPointerException("Cannot parse network
pointer: node is null.");
+ if (networkId == null)
+ throw new NullPointerException("Cannot parse network
pointer: network id is null.");
+
+ networkPointerMap.put(node, networkId);
}
- public String getOldId(Long suid) {
+ public Object getOldId(Long suid) {
return oldIdMap.get(suid);
}
-
- public Long getNewId(String oldId) {
- return idMap.get(oldId);
+
+ @SuppressWarnings("unchecked")
+ public <T extends CyTableEntry> T getObjectById(Object oldId, Class<T>
type) {
+ if (type == CyNetwork.class)
+ return (T) networkById.get(oldId);
+ if (type == CyNode.class)
+ return (T) nodeById.get(oldId);
+ if (type == CyEdge.class)
+ return (T) edgeById.get(oldId);
+
+ return null;
}
- public Integer getIndex(String oldId) {
+ public Integer getIndex(Object oldId) {
return indexMap.get(oldId);
}
- public CyNetwork getNetwork(String oldId) {
- return networkIdMap.get(oldId);
+ public CyNetwork getNetwork(Object oldId) {
+ return networkById.get(oldId);
}
- public CyNode getNode(String oldId) {
- return nodeIdMap.get(oldId);
+ public CyNode getNode(Object oldId) {
+ return nodeById.get(oldId);
}
- public CyEdge getEdge(String oldId) {
- return edgeIdMap.get(oldId);
+ public CyEdge getEdge(Object oldId) {
+ return edgeById.get(oldId);
}
- public Map<CyNetwork, Set<String>> getNodeLinks() {
+ public CyNode getNodeByName(String nodeName) {
+ return nodeByName.get(nodeName);
+ }
+
+ public Map<CyNetwork, Set<Long>> getNodeLinks() {
return nodeLinkMap;
}
- public Map<CyNetwork, Set<String>> getEdgeLinks() {
+ public Map<CyNetwork, Set<Long>> getEdgeLinks() {
return edgeLinkMap;
}
- public Map<String, Long> getIdMap() {
- return idMap;
- }
-
public void createNetworkPointers() {
if (networkPointerMap != null) {
// Iterate the rows and recreate the network pointers
- for (Map.Entry<Long, String> entry :
networkPointerMap.entrySet()) {
- final Long nodeId = entry.getKey();
- final String oldNetId = entry.getValue();
+ for (Map.Entry<CyNode, Object> entry :
networkPointerMap.entrySet()) {
+ final CyNode node = entry.getKey();
+ final Object oldNetId = entry.getValue();
CyNetwork network = getNetwork(oldNetId);
if (network != null) {
- String oldNodeId = getOldId(nodeId);
- CyNode node = getNode(oldNodeId);
-
- if (node != null)
- node.setNetworkPointer(network);
- else
- logger.error("Cannot recreate
network pointer for network " + oldNetId + ": Cannot find node "
- + oldNodeId);
+ node.setNetworkPointer(network);
} else {
logger.error("Cannot recreate network
pointer: Cannot find network " + oldNetId);
}
--
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.