Author: clopes
Date: 2012-08-08 12:14:07 -0700 (Wed, 08 Aug 2012)
New Revision: 30129
Modified:
csplugins/trunk/ucsd/mes/cy3-shared-local-tables/impl/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/SUIDUpdater.java
csplugins/trunk/ucsd/mes/cy3-shared-local-tables/impl/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/ReadDataManager.java
csplugins/trunk/ucsd/mes/cy3-shared-local-tables/impl/io-impl/impl/src/test/java/org/cytoscape/io/internal/read/xgmml/GenericXGMMLReaderTest.java
Log:
Fixed XGMML Import bug: SUIDUpdater deletes correct SUIDs of column
"__externalEdges.SUID" (used by Groups), when importing Cy2 files.
Modified:
csplugins/trunk/ucsd/mes/cy3-shared-local-tables/impl/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/SUIDUpdater.java
===================================================================
---
csplugins/trunk/ucsd/mes/cy3-shared-local-tables/impl/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/SUIDUpdater.java
2012-08-08 18:27:37 UTC (rev 30128)
+++
csplugins/trunk/ucsd/mes/cy3-shared-local-tables/impl/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/SUIDUpdater.java
2012-08-08 19:14:07 UTC (rev 30129)
@@ -22,6 +22,7 @@
private Map<Long/*old SUID*/, Long/*new SUID*/> suidMap;
private Set<CyTable> tables;
+ private Map<CyTable, Set<String>/*column names*/> ignoredColumns;
public SUIDUpdater() {
init();
@@ -30,6 +31,7 @@
public void init() {
suidMap = new HashMap<Long, Long>();
tables = new HashSet<CyTable>();
+ ignoredColumns = new HashMap<CyTable, Set<String>>();
}
public void addSUIDMapping(final Long oldSUID, final Long newSUID) {
@@ -46,6 +48,19 @@
tables.addAll(networkTables);
}
+ public void ignoreColumn(final CyTable table, final String columnName) {
+ if (table != null && columnName != null) {
+ Set<String> names = ignoredColumns.get(table);
+
+ if (names == null) {
+ names = new HashSet<String>();
+ ignoredColumns.put(table, names);
+ }
+
+ names.add(columnName);
+ }
+ }
+
public void updateSUIDColumns() {
final Set<CyColumn> updated = new HashSet<CyColumn>();
@@ -54,6 +69,11 @@
for (final CyColumn c : columns) {
if (isUpdatableSUIDColumn(c) &&
!updated.contains(c)) {
+ Set<String> ignoredNames =
ignoredColumns.get(tbl);
+
+ if (ignoredNames != null &&
ignoredNames.contains(c.getName()))
+ continue;
+
updateRows(tbl, c);
updated.add(c);
}
Modified:
csplugins/trunk/ucsd/mes/cy3-shared-local-tables/impl/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/ReadDataManager.java
===================================================================
---
csplugins/trunk/ucsd/mes/cy3-shared-local-tables/impl/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/ReadDataManager.java
2012-08-08 18:27:37 UTC (rev 30128)
+++
csplugins/trunk/ucsd/mes/cy3-shared-local-tables/impl/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/ReadDataManager.java
2012-08-08 19:14:07 UTC (rev 30129)
@@ -504,8 +504,12 @@
// Add extra metadata for external
edges, so that the information is not lost
final CyRow rnRow =
getRootNetwork().getRow(grNode, CyNetwork.HIDDEN_ATTRS);
- if
(rnRow.getTable().getColumn(EXTERNAL_EDGE_ATTRIBUTE) == null)
+ if
(rnRow.getTable().getColumn(EXTERNAL_EDGE_ATTRIBUTE) == null) {
rnRow.getTable().createListColumn(EXTERNAL_EDGE_ATTRIBUTE, Long.class, false);
+ // These are already the new
SUIDs. Let's tell the SUIDUpdater to ignore this column,
+ // in order to prevent it from
replacing the correct list by an empty one.
+
suidUpdater.ignoreColumn(rnRow.getTable(), EXTERNAL_EDGE_ATTRIBUTE);
+ }
extEdgeIds =
rnRow.getList(EXTERNAL_EDGE_ATTRIBUTE, Long.class);
Modified:
csplugins/trunk/ucsd/mes/cy3-shared-local-tables/impl/io-impl/impl/src/test/java/org/cytoscape/io/internal/read/xgmml/GenericXGMMLReaderTest.java
===================================================================
---
csplugins/trunk/ucsd/mes/cy3-shared-local-tables/impl/io-impl/impl/src/test/java/org/cytoscape/io/internal/read/xgmml/GenericXGMMLReaderTest.java
2012-08-08 18:27:37 UTC (rev 30128)
+++
csplugins/trunk/ucsd/mes/cy3-shared-local-tables/impl/io-impl/impl/src/test/java/org/cytoscape/io/internal/read/xgmml/GenericXGMMLReaderTest.java
2012-08-08 19:14:07 UTC (rev 30129)
@@ -1,14 +1,21 @@
package org.cytoscape.io.internal.read.xgmml;
-import static org.cytoscape.model.CyNetwork.*;
-import static org.junit.Assert.*;
-import static org.mockito.Mockito.*;
+import static org.cytoscape.model.CyNetwork.DEFAULT_ATTRS;
+import static org.cytoscape.model.CyNetwork.HIDDEN_ATTRS;
+import static org.cytoscape.model.CyNetwork.NAME;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.util.ArrayList;
-import java.util.HashMap;
import java.util.List;
import org.cytoscape.ding.NetworkViewTestSupport;
@@ -21,7 +28,6 @@
import org.cytoscape.io.internal.util.session.SessionUtil;
import org.cytoscape.model.CyColumn;
import org.cytoscape.model.CyEdge;
-import org.cytoscape.model.CyIdentifiable;
import org.cytoscape.model.CyNetwork;
import org.cytoscape.model.CyNetworkFactory;
import org.cytoscape.model.CyNetworkTableManager;
--
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.