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.

Reply via email to