Author: clopes
Date: 2012-03-12 11:20:16 -0700 (Mon, 12 Mar 2012)
New Revision: 28490

Added:
   
core3/impl/trunk/io-impl/impl/src/test/java/org/cytoscape/io/internal/read/AbstractNetworkReaderTest.java
   
core3/impl/trunk/io-impl/impl/src/test/java/org/cytoscape/io/internal/read/xgmml/AbstractXGMMLReaderTest.java
   
core3/impl/trunk/io-impl/impl/src/test/resources/testData/xgmml/hiddenAtt.xgmml
Removed:
   
core3/impl/trunk/io-impl/impl/src/test/java/org/cytoscape/io/internal/read/AbstractNetworkViewReaderTester.java
Modified:
   
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/ObjectTypeMap.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/HandleGraph.java
   
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/HandleGraphAttribute.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/HandleNodeGraphDone.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/write/xgmml/XGMMLNetworkViewWriterFactory.java
   
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/write/xgmml/XGMMLWriter.java
   
core3/impl/trunk/io-impl/impl/src/test/java/org/cytoscape/io/internal/read/gml/GMLNetworkReaderTest.java
   
core3/impl/trunk/io-impl/impl/src/test/java/org/cytoscape/io/internal/read/sif/SIFNetworkViewReaderTest.java
   
core3/impl/trunk/io-impl/impl/src/test/java/org/cytoscape/io/internal/read/xgmml/XGMMLNetworkReaderTest.java
Log:
Fixes #756 : XGMML Parser: handle cy:hidden attribute.
XGMML read/write: some refactoring.

Modified: 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/ObjectTypeMap.java
===================================================================
--- 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/ObjectTypeMap.java
 2012-03-11 18:53:13 UTC (rev 28489)
+++ 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/ObjectTypeMap.java
 2012-03-12 18:20:16 UTC (rev 28490)
@@ -35,7 +35,7 @@
 
         switch (type) {
             case BOOLEAN:
-                if (value != null) return new Boolean(value);
+                if (value != null) return fromXGMMLBoolean(""+value);
                 break;
             case REAL:
                 if (value != null) return new Double(value);
@@ -57,5 +57,14 @@
 
         return null;
     }
+    
+    public static boolean fromXGMMLBoolean(String s) {
+       // should be only "1", but let's be nice and also accept "true"
+       // 
http://www.cs.rpi.edu/research/groups/pb/punin/public_html/XGMML/draft-xgmml-20001006.html#BT
+       return s != null && s.matches("(?i)1|true");
+    }
 
+    public static String toXGMMLBoolean(boolean value) {
+       return value ? "1" : "0";
+    }
 }

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-03-11 18:53:13 UTC (rev 28489)
+++ 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/AttributeValueUtil.java
    2012-03-12 18:20:16 UTC (rev 28490)
@@ -40,6 +40,7 @@
 import org.cytoscape.model.CyNetwork;
 import org.cytoscape.model.CyRow;
 import org.cytoscape.model.CyTable;
+import org.cytoscape.model.CyTableEntry;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.xml.sax.Attributes;
@@ -167,15 +168,21 @@
     protected ParseState handleAttribute(Attributes atts) throws 
SAXParseException {
        ParseState parseState = ParseState.NONE;
        
-       final CyRow row = manager.getCurrentRow();
-       String name = atts.getValue("name");
-        String type = atts.getValue("type");
-        String equationStr = atts.getValue("cy:equation");
-        boolean isEquation = equationStr != null ? 
Boolean.parseBoolean(equationStr) : false;
+       final String name = atts.getValue("name");
+       final String type = atts.getValue("type");
+       final String equationStr = atts.getValue("cy:equation");
+       final boolean isEquation = equationStr != null ? 
Boolean.parseBoolean(equationStr) : false;
+       final String hiddenStr = atts.getValue("cy:hidden");
+       final boolean isHidden = hiddenStr != null ? 
Boolean.parseBoolean(hiddenStr) : false;
         
+       final String tableName = isHidden ? CyNetwork.HIDDEN_ATTRS : 
CyNetwork.DEFAULT_ATTRS;
+       final CyNetwork curNet = manager.getCurrentNetwork();
+               final CyTableEntry curElement = manager.getCurrentElement();
+        final CyRow row = curNet.getRow(curElement, tableName);
+        final CyColumn column = row.getTable().getColumn(name);
+        
+        Object value = null;
         ObjectType objType = typeMap.getType(type);
-        CyColumn column = row.getTable().getColumn(name);
-        Object value = null;
 
         if (isEquation) {
                // It is an equation...
@@ -210,6 +217,7 @@
                        // must make sure to clear out any existing values 
before we parse.
                        case LIST:
                                manager.currentAttributeID = name;
+                               manager.setCurrentRow(row);
                                if (column != null && 
List.class.isAssignableFrom(column.getType()))
                                        row.set(name, null);
                                return ParseState.LIST_ATT;
@@ -232,14 +240,6 @@
         }
     }
     
-    public static boolean fromXGMMLBoolean(String s) {
-       return s != null && s.matches("(?i)1|true"); // should be only "1", but 
let's be nice and also accept "true"
-    }
-    
-    public static String toXGMMLBoolean(boolean value) {
-       return value ? "1" : "0";
-    }
-    
     public static double parseDocumentVersion(String value) {
                double version = 0.0;
        

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-03-11 18:53:13 UTC (rev 28489)
+++ 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/HandleGraph.java
   2012-03-12 18:20:16 UTC (rev 28490)
@@ -138,11 +138,10 @@
                if (oldId == null)
                        oldId = String.format("_graph%s_%s", 
manager.graphCount, net.getSUID());
                
-               manager.setCurrentNetwork(net);
+               manager.setCurrentElement(net);
                manager.getNetworkIDStack().push(oldId);
                
                if (net != null) {
-                       manager.setCurrentRow(net.getRow(net));
                        manager.getCache().cache(oldId, net);
                        
                        if (!(net instanceof CyRootNetwork))
@@ -151,7 +150,7 @@
                        if (!manager.isSessionFormat() || 
manager.getDocumentVersion() < 3.0)
                                setNetworkName(net, atts);
                } else {
-                       manager.setCurrentRow(null);
+                       manager.setCurrentNetwork(null);
                }
                
                return oldId;

Modified: 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/HandleGraphAttribute.java
===================================================================
--- 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/HandleGraphAttribute.java
  2012-03-11 18:53:13 UTC (rev 28489)
+++ 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/HandleGraphAttribute.java
  2012-03-12 18:20:16 UTC (rev 28490)
@@ -54,7 +54,7 @@
                        String attValue = 
attributeValueUtil.getAttributeValue(atts, attName);
                        
manager.addGraphicsAttribute(manager.getCurrentNetwork(), attName, attValue);
                } else {
-                       
manager.setCurrentRow(manager.getCurrentNetwork().getRow(manager.getCurrentNetwork()));
+                       manager.setCurrentElement(manager.getCurrentNetwork());
                        nextState = attributeValueUtil.handleAttribute(atts);
                }
 

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-03-11 18:53:13 UTC (rev 28489)
+++ 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/HandleGraphDone.java
       2012-03-12 18:20:16 UTC (rev 28490)
@@ -131,7 +131,6 @@
                if (netId != null)
                        currentNet = manager.getCache().getNetwork(netId);
                
-               manager.setCurrentNetwork(currentNet);
-               manager.setCurrentRow(currentNet != null ? 
currentNet.getRow(currentNet) : null);
+               manager.setCurrentElement(currentNet);
        }
 }

Modified: 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/HandleNodeGraphDone.java
===================================================================
--- 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/HandleNodeGraphDone.java
   2012-03-11 18:53:13 UTC (rev 28489)
+++ 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/HandleNodeGraphDone.java
   2012-03-12 18:20:16 UTC (rev 28490)
@@ -28,7 +28,6 @@
 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.xml.sax.Attributes;
 import org.xml.sax.SAXException;
@@ -40,11 +39,8 @@
                graphDone();
                
                CyNode node = manager.getCompoundNodeStack().pop();
-               manager.setCurrentNode(node);
+               manager.setCurrentElement(node);
                
-               CyNetwork currentNet = manager.getCurrentNetwork();
-               manager.setCurrentRow(currentNet.getRow(node));
-               
                return ParseState.NODE_ATT;
        }
 }
\ No newline at end of file

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-03-11 18:53:13 UTC (rev 28489)
+++ 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/ReadDataManager.java
       2012-03-12 18:20:16 UTC (rev 28490)
@@ -109,6 +109,7 @@
        private CyNetwork currentNetwork;
        private CyNode currentNode;
        private CyEdge currentEdge;
+       private CyTableEntry currentElement;
        private CyRow currentRow;
        
        // Network view format properties
@@ -156,15 +157,16 @@
                RDFType = null;
                RDFFormat = null;
 
+               currentElement = null;
                currentNode = null;
                currentEdge = null;
                currentNetwork = null;
                parentNetwork = null;
                currentNetworkIsDirected = true;
+               currentRow = null;
 
                attState = ParseState.NONE;
                currentAttributeID = null;
-               currentRow = null;
 
                /* Edge handle list */
                handleList = null;
@@ -420,8 +422,7 @@
                node = this.getCurrentNetwork().addNode();
         }
         
-        this.currentNode = node;
-        this.currentRow = this.getCurrentNetwork().getRow(node);
+        this.setCurrentElement(node);
         
         // Add to internal cache:
         cache.cache(oldId, node);
@@ -474,8 +475,7 @@
                }
                
                edge = net.addEdge(actualSrc, actualTgt, directed);
-               this.currentEdge = edge;
-               this.currentRow = net.getRow(edge);
+               this.setCurrentElement(edge);
         }
         
         // Add to internal cache:
@@ -569,10 +569,25 @@
        public CyRow getCurrentRow() {
                return currentRow;
        }
-
-       public void setCurrentRow(CyRow currentRow) {
-               this.currentRow = currentRow;
+       
+       public void setCurrentRow(CyRow row) {
+               this.currentRow = row;
        }
+       
+       protected CyTableEntry getCurrentElement() {
+               return currentElement;
+       }
+       
+       public void setCurrentElement(CyTableEntry entry) {
+               this.currentElement = entry;
+               
+               if (entry instanceof CyNetwork)
+                       setCurrentNetwork((CyNetwork) entry);
+               if (entry instanceof CyNode)
+                       setCurrentNode((CyNode) entry);
+               if (entry instanceof CyEdge)
+                       setCurrentEdge((CyEdge) entry);
+       }
 
        /**
         * It controls which graphics attributes should be parsed.

Modified: 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/write/xgmml/XGMMLNetworkViewWriterFactory.java
===================================================================
--- 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/write/xgmml/XGMMLNetworkViewWriterFactory.java
        2012-03-11 18:53:13 UTC (rev 28489)
+++ 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/write/xgmml/XGMMLNetworkViewWriterFactory.java
        2012-03-12 18:20:16 UTC (rev 28490)
@@ -10,31 +10,31 @@
 
 public class XGMMLNetworkViewWriterFactory extends 
AbstractCyNetworkViewWriterFactory {
 
-       protected final RenderingEngineManager renderingEngineManager;
+       protected final RenderingEngineManager renderingEngineMgr;
        protected final UnrecognizedVisualPropertyManager 
unrecognizedVisualPropertyMgr;
-       protected final CyNetworkManager networkManager;
-       protected final CyRootNetworkManager rootNetworkManager;
+       protected final CyNetworkManager networkMgr;
+       protected final CyRootNetworkManager rootNetworkMgr;
 
        public XGMMLNetworkViewWriterFactory(final CyFileFilter filter,
-                                                final RenderingEngineManager 
renderingEngineManager,
+                                                final RenderingEngineManager 
renderingEngineMgr,
                                                 final 
UnrecognizedVisualPropertyManager unrecognizedVisualPropertyMgr,
                                                                                
 final CyNetworkManager networkManager,
-                                                                               
 final CyRootNetworkManager rootNetworkManager) {
+                                                                               
 final CyRootNetworkManager rootNetworkMgr) {
                super(filter);
-               this.renderingEngineManager = renderingEngineManager;
+               this.renderingEngineMgr = renderingEngineMgr;
                this.unrecognizedVisualPropertyMgr = 
unrecognizedVisualPropertyMgr;
-               this.networkManager = networkManager;
-               this.rootNetworkManager = rootNetworkManager;
+               this.networkMgr = networkManager;
+               this.rootNetworkMgr = rootNetworkMgr;
        }
 
        @Override
     public CyWriter getWriterTask() {
-        if (view != null) {
-               return new XGMMLWriter(outputStream, renderingEngineManager, 
view, unrecognizedVisualPropertyMgr,
-                               networkManager, rootNetworkManager);
-        }
-        
-        return new XGMMLWriter(outputStream, renderingEngineManager, network, 
unrecognizedVisualPropertyMgr,
-                       networkManager, rootNetworkManager);
+               if (view != null) {
+                       return new XGMMLWriter(outputStream, 
renderingEngineMgr, view, unrecognizedVisualPropertyMgr, networkMgr,
+                                       rootNetworkMgr);
+               }
+
+               return new XGMMLWriter(outputStream, renderingEngineMgr, 
network, unrecognizedVisualPropertyMgr, networkMgr,
+                               rootNetworkMgr);
     }
 }

Modified: 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/write/xgmml/XGMMLWriter.java
===================================================================
--- 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/write/xgmml/XGMMLWriter.java
  2012-03-11 18:53:13 UTC (rev 28489)
+++ 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/write/xgmml/XGMMLWriter.java
  2012-03-12 18:20:16 UTC (rev 28490)
@@ -43,7 +43,7 @@
 import java.util.Map;
 import java.util.Set;
 
-import org.cytoscape.io.internal.read.xgmml.handler.AttributeValueUtil;
+import org.cytoscape.io.internal.read.xgmml.ObjectTypeMap;
 import org.cytoscape.io.internal.util.UnrecognizedVisualPropertyManager;
 import org.cytoscape.io.internal.util.session.SessionUtil;
 import org.cytoscape.io.write.CyWriter;
@@ -128,8 +128,8 @@
     private String visualStyleName;
     private final VisualLexicon visualLexicon;
     private final UnrecognizedVisualPropertyManager 
unrecognizedVisualPropertyMgr;
-    private final CyNetworkManager networkManager;
-    private final CyRootNetworkManager rootNetworkManager;
+    private final CyNetworkManager networkMgr;
+    private final CyRootNetworkManager rootNetworkMgr;
 
     private HashMap<CyNode, CyNode> writtenNodeMap = new HashMap<CyNode, 
CyNode>();
     private HashMap<CyEdge, CyEdge> writtenEdgeMap = new HashMap<CyEdge, 
CyEdge>();
@@ -143,27 +143,27 @@
     private boolean sessionFormat;
 
     public XGMMLWriter(final OutputStream outputStream,
-                       final RenderingEngineManager renderingEngineManager,
+                       final RenderingEngineManager renderingEngineMgr,
                        final CyNetworkView networkView,
                        final UnrecognizedVisualPropertyManager 
unrecognizedVisualPropertyMgr,
-                       final CyNetworkManager networkManager,
-                       final CyRootNetworkManager rootNetworkManager) {
-               this(outputStream, renderingEngineManager, 
networkView.getModel(), unrecognizedVisualPropertyMgr,
-                               networkManager, rootNetworkManager);
+                       final CyNetworkManager networkMgr,
+                       final CyRootNetworkManager rootNetworkMgr) {
+               this(outputStream, renderingEngineMgr, networkView.getModel(), 
unrecognizedVisualPropertyMgr, networkMgr,
+                               rootNetworkMgr);
                this.networkView = networkView;
     }
     
     public XGMMLWriter(final OutputStream outputStream,
-                       final RenderingEngineManager renderingEngineManager,
+                       final RenderingEngineManager renderingEngineMgr,
                        final CyNetwork network,
                        final UnrecognizedVisualPropertyManager 
unrecognizedVisualPropertyMgr,
-                       final CyNetworkManager networkManager,
-                       final CyRootNetworkManager rootNetworkManager) {
+                       final CyNetworkManager networkMgr,
+                       final CyRootNetworkManager rootNetworkMgr) {
                this.outputStream = outputStream;
                this.unrecognizedVisualPropertyMgr = 
unrecognizedVisualPropertyMgr;
-               this.networkManager = networkManager;
-               this.rootNetworkManager = rootNetworkManager;
-               this.visualLexicon = 
renderingEngineManager.getDefaultVisualLexicon();
+               this.networkMgr = networkMgr;
+               this.rootNetworkMgr = rootNetworkMgr;
+               this.visualLexicon = 
renderingEngineMgr.getDefaultVisualLexicon();
                
                if (network instanceof CyRootNetwork) {
                        CyRootNetwork rootNetwork = (CyRootNetwork) network;
@@ -251,7 +251,7 @@
         
         // Is is a network view serialization?
         if (sessionFormat) {
-               writeAttributePair("cy:view",  
AttributeValueUtil.toXGMMLBoolean(networkView != null));
+               writeAttributePair("cy:view",  
ObjectTypeMap.toXGMMLBoolean(networkView != null));
                
                if (networkView != null) {
                        writeAttributePair("cy:networkId", network.getSUID());
@@ -340,11 +340,7 @@
                if (sessionFormat) {
                        for (CySubNetwork subNet : subNetworks) {
                                if (!writtenNetMap.containsKey(subNet)) {
-                                       writeElement("<att>\n");
-                                       depth++;
                                        writeSubGraph(subNet);
-                                       depth--;
-                                       writeElement("</att>\n");
                                }
                        }
                }
@@ -354,26 +350,46 @@
                        writeGraphics(networkView);
        }
 
-       private void writeSubGraph(CyNetwork net) throws IOException {
-               writtenNetMap.put(net, net);
-               
+       private void writeSubGraph(final CyNetwork net) throws IOException {
+               if (writtenNetMap.containsKey(net)) {
+                       // This sub-network has already been written
+                       writeSubGraphReference("" + net.getSUID());
+               } else {
+                       // Write it for the first time
+                       writtenNetMap.put(net, net);
+                       
+                       writeElement("<att>\n");
+                       depth++;
+                       writeElement("<graph");
+                       // Always write the network ID
+                       writeAttributePair("id", net.getSUID());
+                       // Save the label to make it more human readable
+                       writeAttributePair("label", getLabel(net, net));
+                       write(">\n");
+                       depth++;
+       
+                       writeAttributes(net.getRow(net));
+                       
+                       for (CyNode childNode : net.getNodeList())
+                               writeNode(net, childNode);
+                       for (CyEdge childEdge : net.getEdgeList())
+                               writeEdge(net, childEdge);
+       
+                       depth--;
+                       writeElement("</graph>\n");
+                       depth--;
+                       writeElement("</att>\n");
+               }
+       }
+       
+       private void writeSubGraphReference(final String netId) throws 
IOException {
+               writeElement("<att>\n");
+               depth++;
                writeElement("<graph");
-               // Always write the network ID
-               writeAttributePair("id", net.getSUID());
-               // Save the label to make it more human readable
-               writeAttributePair("label", getLabel(net, net));
-               write(">\n");
-               depth++;
-
-               writeAttributes(net.getRow(net));
-               
-               for (CyNode childNode : net.getNodeList())
-                       writeNode(net,childNode);
-               for (CyEdge childEdge : net.getEdgeList())
-                       writeEdge(net,childEdge);
-
+               writeAttributePair("xlink:href", "#" + netId);
+               write("/>\n");
                depth--;
-               writeElement("</graph>\n");
+               writeElement("</att>\n");
        }
 
        /**
@@ -383,13 +399,13 @@
        private void writeNodes() throws IOException {
                if (sessionFormat && networkView != null) {
                        for (View<CyNode> view : networkView.getNodeViews()) {
-                               writeNodeView(networkView.getModel(),view);
+                               writeNodeView(networkView.getModel(), view);
                        }
                } else {
                        for (CyNode node : network.getNodeList()) {
                                // Only if not already written inside a nested 
graph
                                if (!writtenNodeMap.containsKey(node))
-                                       writeNode(network,node);
+                                       writeNode(network, node);
                        }
                }
        }
@@ -418,7 +434,7 @@
      * @param node the node to output
      * @throws IOException
      */
-       private void writeNode(CyNetwork network, CyNode node) throws 
IOException {
+       private void writeNode(final CyNetwork net, final CyNode node) throws 
IOException {
                boolean written = writtenNodeMap.containsKey(node);
                
                // Output the node
@@ -434,9 +450,9 @@
                        
                        // Write the actual node with its properties
                        writeAttributePair("id", node.getSUID());
-                       writeAttributePair("label", getLabel(network, node));
+                       writeAttributePair("label", getLabel(net, node));
                        
-                       CyNetwork netPointer = node.getNetworkPointer();
+                       final CyNetwork netPointer = node.getNetworkPointer();
                        
                        if (sessionFormat && networkView == null && netPointer 
== null) {
                                write("/>\n");
@@ -445,42 +461,27 @@
                                depth++;
                                
                                // Output the node attributes
-                               writeAttributes(network.getRow(node));
+                               writeAttributes(net.getRow(node));
                                
                        // Write node's sub-graph:
-                               if (netPointer != null) {
-                                       CyRootNetwork netPointerRoot = 
rootNetworkManager.getRootNetwork(netPointer);
-                                       boolean sameRoot = 
netPointerRoot.equals(rootNetworkManager.getRootNetwork(network));
-                                       
-                                       if (sessionFormat/* || sameRoot*/) { // 
TODO: keep ignoring network pointers when exporting to XGMML?
-                                               // Write a nested graph element
-                                               writeElement("<att>\n");
-                                               depth++;
+                               if (sessionFormat) {
+                                       if (netPointer != null) {
+                                               // Write the network pointer as 
a sub-graph reference (XLink)...
+                                               CyRootNetwork netPointerRoot = 
rootNetworkMgr.getRootNetwork(netPointer);
                                                
-                                               if (!sessionFormat && sameRoot 
&& !writtenNetMap.containsKey(netPointer)) {
-                                                       // If exporting to 
XGMML, let's try to avoid XLINks, in order to
-                                                       // make it easier for 
other applications to parse it.
-                                                       // This sub-network has 
not been written yet!
-//                                                     
writeSubGraph(netPointer); // TODO: Should CyGroups be exported to XGMML?
-                                               } else {
-                                                       // This sub-network has 
already been written or belongs to another XGMML file...
-                                                       String href = "#" + 
netPointer.getSUID();
-                                                       
-                                                       if (!sameRoot) {
-                                                               // This XGMML 
file will be saved as part of a CYS file,
-                                                               // and the 
sub-network does NOT belong to the same root-network
-                                                               // ...So add 
the other root-network's file name to the XLink URI
-                                                               String fileName 
= SessionUtil.getXGMMLFilename(netPointerRoot);
-                                                               href = fileName 
+ href;
-                                                       }
-                                                       
-                                                       writeElement("<graph");
-                                                       
writeAttributePair("xlink:href", href);
-                                                       write("/>\n");
+                                               // This sub-network has already 
been written or belongs to another XGMML file...
+                                               String linkId = "" + 
netPointer.getSUID();
+                                               boolean sameRoot = 
netPointerRoot.equals(rootNetworkMgr.getRootNetwork(net));
+                                               
+                                               if (!sameRoot) {
+                                                       // This XGMML file will 
be saved as part of a CYS file,
+                                                       // and the sub-network 
does NOT belong to the same root-network
+                                                       // ...So add the other 
root-network's file name to the XLink URI
+                                                       final String fileName = 
SessionUtil.getXGMMLFilename(netPointerRoot);
+                                                       linkId = fileName + 
linkId;
                                                }
                                                
-                                               depth--;
-                                               writeElement("</att>\n");
+                                               writeSubGraphReference(linkId);
                                        }
                                }
                                
@@ -522,7 +523,7 @@
      * @param edge the edge to output
      * @throws IOException
      */
-       private void writeEdge(CyNetwork network, CyEdge edge) throws 
IOException {
+       private void writeEdge(CyNetwork net, CyEdge edge) throws IOException {
                writeElement("<edge");
                boolean written = writtenEdgeMap.containsKey(edge);
                
@@ -535,10 +536,10 @@
                        writtenEdgeMap.put(edge, edge);
                        
                        writeAttributePair("id", edge.getSUID());
-                       writeAttributePair("label", getLabel(network, edge));
+                       writeAttributePair("label", getLabel(net, edge));
                        writeAttributePair("source", 
edge.getSource().getSUID());
                        writeAttributePair("target", 
edge.getTarget().getSUID());
-                       writeAttributePair("cy:directed",  
AttributeValueUtil.toXGMMLBoolean(edge.isDirected()));
+                       writeAttributePair("cy:directed",  
ObjectTypeMap.toXGMMLBoolean(edge.isDirected()));
                        
                        if (sessionFormat && networkView == null) {
                                write("/>\n");
@@ -547,7 +548,7 @@
                                depth++;
        
                                // Write the edge attributes
-                               writeAttributes(network.getRow(edge));
+                               writeAttributes(net.getRow(edge));
                
                                // Write the edge graphics
                                if (networkView != null)
@@ -721,7 +722,7 @@
             }
         }
 
-        return  AttributeValueUtil.toXGMMLBoolean(directed);
+        return  ObjectTypeMap.toXGMMLBoolean(directed);
     }
     
     /**
@@ -1001,7 +1002,7 @@
                registeredSubNetSet.add(rootNetwork.getBaseNetwork()); // The 
base network must be the first one!
                
                for (CySubNetwork sn : subNetList) {
-                       if (networkManager.networkExists(sn.getSUID()))
+                       if (networkMgr.networkExists(sn.getSUID()))
                                registeredSubNetSet.add(sn);
                }
                

Copied: 
core3/impl/trunk/io-impl/impl/src/test/java/org/cytoscape/io/internal/read/AbstractNetworkReaderTest.java
 (from rev 28144, 
core3/impl/trunk/io-impl/impl/src/test/java/org/cytoscape/io/internal/read/AbstractNetworkViewReaderTester.java)
===================================================================
--- 
core3/impl/trunk/io-impl/impl/src/test/java/org/cytoscape/io/internal/read/AbstractNetworkReaderTest.java
                           (rev 0)
+++ 
core3/impl/trunk/io-impl/impl/src/test/java/org/cytoscape/io/internal/read/AbstractNetworkReaderTest.java
   2012-03-12 18:20:16 UTC (rev 28490)
@@ -0,0 +1,126 @@
+package org.cytoscape.io.internal.read;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+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.util.List;
+import java.util.Properties;
+
+import org.cytoscape.ding.NetworkViewTestSupport;
+import org.cytoscape.io.internal.util.ReadUtils;
+import org.cytoscape.io.internal.util.StreamUtilImpl;
+import org.cytoscape.model.CyEdge;
+import org.cytoscape.model.CyNetwork;
+import org.cytoscape.model.CyNetworkFactory;
+import org.cytoscape.model.CyNode;
+import org.cytoscape.model.NetworkTestSupport;
+import org.cytoscape.property.CyProperty;
+import org.cytoscape.property.CyProperty.SavePolicy;
+import org.cytoscape.property.SimpleCyProperty;
+import org.cytoscape.view.layout.CyLayoutAlgorithm;
+import org.cytoscape.view.layout.CyLayoutAlgorithmManager;
+import org.cytoscape.view.model.CyNetworkView;
+import org.cytoscape.view.model.CyNetworkViewFactory;
+import org.cytoscape.work.AbstractTask;
+import org.cytoscape.work.TaskIterator;
+import org.cytoscape.work.TaskMonitor;
+import org.junit.Before;
+
+public class AbstractNetworkReaderTest {
+       static class SimpleTask extends AbstractTask {
+               public void run(final TaskMonitor tm) {
+               }
+       }
+
+       protected static final int DEF_THRESHOLD = 10000;
+       
+       protected TaskMonitor taskMonitor;
+       protected CyNetworkFactory netFactory;
+       protected CyNetworkViewFactory viewFactory;
+       protected ReadUtils readUtil;
+       protected CyLayoutAlgorithmManager layouts;
+
+       private Properties properties;
+
+       @Before
+       public void setUp() throws Exception {
+               taskMonitor = mock(TaskMonitor.class);
+
+               CyLayoutAlgorithm def = mock(CyLayoutAlgorithm.class);
+               when(def.createTaskIterator()).thenReturn(new TaskIterator(new 
SimpleTask()));
+
+               layouts = mock(CyLayoutAlgorithmManager.class);
+               when(layouts.getDefaultLayout()).thenReturn(def);
+
+               NetworkTestSupport nts = new NetworkTestSupport();
+               netFactory = nts.getNetworkFactory();
+
+               properties = new Properties();
+               CyProperty<Properties> cyProperties = new 
SimpleCyProperty<Properties>("Test", properties, Properties.class, 
SavePolicy.DO_NOT_SAVE);           
+               NetworkViewTestSupport nvts = new NetworkViewTestSupport();
+               setViewThreshold(DEF_THRESHOLD);
+               
+               viewFactory = nvts.getNetworkViewFactory();
+               readUtil = new ReadUtils(new StreamUtilImpl(cyProperties));
+       }
+
+       protected void setViewThreshold(int threshold) {
+               properties.setProperty("viewThreshold", 
String.valueOf(threshold));
+       }
+       
+       /**
+        * Will fail if it doesn't find the specified interaction.
+        */
+       protected void findInteraction(CyNetwork net, String source, String 
target, String interaction, int count) {
+               for (CyNode n : net.getNodeList()) {
+                       String sname = net.getRow(n).get(CyNode.NAME, 
String.class);
+                       assertNotNull("Source name is NULL", sname);
+                       
+                       if (source.equals(sname)) {
+                               List<CyNode> neigh = net.getNeighborList(n, 
CyEdge.Type.ANY);
+                               assertEquals("wrong number of neighbors", 
count, neigh.size());
+                               
+                               for (CyNode nn : neigh) {
+                                       String tname = 
net.getRow(nn).get(CyNode.NAME, String.class);
+                                       assertNotNull("Target name is NULL", 
tname);
+                                       
+                                       if (tname.equals(target)) {
+                                               List<CyEdge> con = 
net.getConnectingEdgeList(n, nn, CyEdge.Type.ANY);
+                                               assertTrue("Connecting edge 
list is empty", con.size() > 0);
+                                               
+                                               for (CyEdge e : con) {
+                                                       String inter = 
net.getRow(e).get(CyEdge.INTERACTION, String.class);
+                                                       assertNotNull("Edge 
interaction is NULL", inter);
+                                                       
+                                                       if 
(inter.equals(interaction)) {
+                                                               return;
+                                                       }
+                                               }
+                                       }
+                               }
+                       }
+               }
+               fail("couldn't find interaction: " + source + " " + interaction 
+ " " + target);
+       }
+
+       /**
+        * Assuming we only create one network.
+        */
+       protected CyNetwork checkSingleNetwork(CyNetworkView[] views, int 
numNodes, int numEdges) {
+               assertNotNull(views);
+               assertEquals(1, views.length);
+
+               CyNetwork net = views[0].getModel();
+
+               assertNotNull(net);
+
+               assertEquals(numNodes, net.getNodeCount());
+               assertEquals(numEdges, net.getEdgeCount());
+
+               return net;
+       }
+}

Deleted: 
core3/impl/trunk/io-impl/impl/src/test/java/org/cytoscape/io/internal/read/AbstractNetworkViewReaderTester.java
===================================================================
--- 
core3/impl/trunk/io-impl/impl/src/test/java/org/cytoscape/io/internal/read/AbstractNetworkViewReaderTester.java
     2012-03-11 18:53:13 UTC (rev 28489)
+++ 
core3/impl/trunk/io-impl/impl/src/test/java/org/cytoscape/io/internal/read/AbstractNetworkViewReaderTester.java
     2012-03-12 18:20:16 UTC (rev 28490)
@@ -1,127 +0,0 @@
-package org.cytoscape.io.internal.read;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-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.util.List;
-import java.util.Properties;
-
-import org.cytoscape.ding.NetworkViewTestSupport;
-import org.cytoscape.io.internal.util.ReadUtils;
-import org.cytoscape.io.internal.util.StreamUtilImpl;
-import org.cytoscape.model.CyEdge;
-import org.cytoscape.model.CyNetwork;
-import org.cytoscape.model.CyNetworkFactory;
-import org.cytoscape.model.CyNode;
-import org.cytoscape.model.NetworkTestSupport;
-import org.cytoscape.property.CyProperty;
-import org.cytoscape.property.CyProperty.SavePolicy;
-import org.cytoscape.property.SimpleCyProperty;
-import org.cytoscape.view.layout.CyLayoutAlgorithm;
-import org.cytoscape.view.layout.CyLayoutAlgorithmManager;
-import org.cytoscape.view.model.CyNetworkView;
-import org.cytoscape.view.model.CyNetworkViewFactory;
-import org.cytoscape.work.AbstractTask;
-import org.cytoscape.work.TaskIterator;
-import org.cytoscape.work.TaskMonitor;
-import org.junit.Before;
-
-public class AbstractNetworkViewReaderTester {
-       static class SimpleTask extends AbstractTask {
-               public void run(final TaskMonitor tm) {
-               }
-       }
-
-       protected static final int DEF_THRESHOLD = 10000;
-       
-       protected TaskMonitor taskMonitor;
-       protected CyNetworkFactory netFactory;
-       protected CyNetworkViewFactory viewFactory;
-       protected ReadUtils readUtil;
-       protected CyLayoutAlgorithmManager layouts;
-
-       private Properties properties;
-
-       @Before
-       public void setUp() throws Exception {
-               taskMonitor = mock(TaskMonitor.class);
-
-               CyLayoutAlgorithm def = mock(CyLayoutAlgorithm.class);
-               when(def.createTaskIterator()).thenReturn(new TaskIterator(new 
SimpleTask()));
-
-               layouts = mock(CyLayoutAlgorithmManager.class);
-               when(layouts.getDefaultLayout()).thenReturn(def);
-
-               NetworkTestSupport nts = new NetworkTestSupport();
-               netFactory = nts.getNetworkFactory();
-
-               properties = new Properties();
-               CyProperty<Properties> cyProperties = new 
SimpleCyProperty<Properties>("Test", properties,Properties.class,  
SavePolicy.DO_NOT_SAVE);           
-               NetworkViewTestSupport nvts = new NetworkViewTestSupport();
-               setViewThreshold(DEF_THRESHOLD);
-               
-               viewFactory = nvts.getNetworkViewFactory();
-
-               readUtil = new ReadUtils(new StreamUtilImpl(cyProperties));
-       }
-
-       protected void setViewThreshold(int threshold) {
-               properties.setProperty("viewThreshold", 
String.valueOf(threshold));
-       }
-       
-       /**
-        * Will fail if it doesn't find the specified interaction.
-        */
-       protected void findInteraction(CyNetwork net, String source, String 
target, String interaction, int count) {
-               for (CyNode n : net.getNodeList()) {
-                       String sname = net.getRow(n).get(CyNode.NAME, 
String.class);
-                       assertNotNull("Source name is NULL", sname);
-                       
-                       if (source.equals(sname)) {
-                               List<CyNode> neigh = net.getNeighborList(n, 
CyEdge.Type.ANY);
-                               assertEquals("wrong number of neighbors", 
count, neigh.size());
-                               
-                               for (CyNode nn : neigh) {
-                                       String tname = 
net.getRow(nn).get(CyNode.NAME, String.class);
-                                       assertNotNull("Target name is NULL", 
tname);
-                                       
-                                       if (tname.equals(target)) {
-                                               List<CyEdge> con = 
net.getConnectingEdgeList(n, nn, CyEdge.Type.ANY);
-                                               assertTrue("Connecting edge 
list is empty", con.size() > 0);
-                                               
-                                               for (CyEdge e : con) {
-                                                       String inter = 
net.getRow(e).get(CyEdge.INTERACTION, String.class);
-                                                       assertNotNull("Edge 
interaction is NULL", inter);
-                                                       
-                                                       if 
(inter.equals(interaction)) {
-                                                               return;
-                                                       }
-                                               }
-                                       }
-                               }
-                       }
-               }
-               fail("couldn't find interaction: " + source + " " + interaction 
+ " " + target);
-       }
-
-       /**
-        * Assuming we only create one network.
-        */
-       protected CyNetwork checkSingleNetwork(CyNetworkView[] views, int 
numNodes, int numEdges) {
-               assertNotNull(views);
-               assertEquals(1, views.length);
-
-               CyNetwork net = views[0].getModel();
-
-               assertNotNull(net);
-
-               assertEquals(numNodes, net.getNodeCount());
-               assertEquals(numEdges, net.getEdgeCount());
-
-               return net;
-       }
-}

Modified: 
core3/impl/trunk/io-impl/impl/src/test/java/org/cytoscape/io/internal/read/gml/GMLNetworkReaderTest.java
===================================================================
--- 
core3/impl/trunk/io-impl/impl/src/test/java/org/cytoscape/io/internal/read/gml/GMLNetworkReaderTest.java
    2012-03-11 18:53:13 UTC (rev 28489)
+++ 
core3/impl/trunk/io-impl/impl/src/test/java/org/cytoscape/io/internal/read/gml/GMLNetworkReaderTest.java
    2012-03-12 18:20:16 UTC (rev 28490)
@@ -8,7 +8,7 @@
 import java.io.File;
 import java.io.FileInputStream;
 
-import org.cytoscape.io.internal.read.AbstractNetworkViewReaderTester;
+import org.cytoscape.io.internal.read.AbstractNetworkReaderTest;
 import org.cytoscape.io.internal.util.UnrecognizedVisualPropertyManager;
 import org.cytoscape.model.CyNetwork;
 import org.cytoscape.model.CyTableFactory;
@@ -22,7 +22,7 @@
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 
-public class GMLNetworkReaderTest extends AbstractNetworkViewReaderTester {
+public class GMLNetworkReaderTest extends AbstractNetworkReaderTest {
        @Mock private RenderingEngineManager renderingEngineManager;
        @Mock private VisualLexicon lexicon;
        private UnrecognizedVisualPropertyManager unrecognizedVisualPropertyMgr;

Modified: 
core3/impl/trunk/io-impl/impl/src/test/java/org/cytoscape/io/internal/read/sif/SIFNetworkViewReaderTest.java
===================================================================
--- 
core3/impl/trunk/io-impl/impl/src/test/java/org/cytoscape/io/internal/read/sif/SIFNetworkViewReaderTest.java
        2012-03-11 18:53:13 UTC (rev 28489)
+++ 
core3/impl/trunk/io-impl/impl/src/test/java/org/cytoscape/io/internal/read/sif/SIFNetworkViewReaderTest.java
        2012-03-12 18:20:16 UTC (rev 28490)
@@ -8,7 +8,7 @@
 import java.io.FileInputStream;
 
 import org.cytoscape.event.CyEventHelper;
-import org.cytoscape.io.internal.read.AbstractNetworkViewReaderTester;
+import org.cytoscape.io.internal.read.AbstractNetworkReaderTest;
 import org.cytoscape.model.CyNetwork;
 import org.cytoscape.model.CyNode;
 import org.cytoscape.model.CyEdge;
@@ -16,7 +16,7 @@
 import org.cytoscape.work.TaskIterator;
 import org.junit.Test;
 
-public class SIFNetworkViewReaderTest extends AbstractNetworkViewReaderTester {
+public class SIFNetworkViewReaderTest extends AbstractNetworkReaderTest {
 
        /**
         * 'typical' means that all lines have the form "node1 pd node2 [node3 
node4

Added: 
core3/impl/trunk/io-impl/impl/src/test/java/org/cytoscape/io/internal/read/xgmml/AbstractXGMMLReaderTest.java
===================================================================
--- 
core3/impl/trunk/io-impl/impl/src/test/java/org/cytoscape/io/internal/read/xgmml/AbstractXGMMLReaderTest.java
                               (rev 0)
+++ 
core3/impl/trunk/io-impl/impl/src/test/java/org/cytoscape/io/internal/read/xgmml/AbstractXGMMLReaderTest.java
       2012-03-12 18:20:16 UTC (rev 28490)
@@ -0,0 +1,39 @@
+package org.cytoscape.io.internal.read.xgmml;
+
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+
+public class AbstractXGMMLReaderTest {
+
+       @Test
+       public void testIsXGMMLTransparency() {
+               
assertTrue(AbstractXGMMLReader.isXGMMLTransparency("nodeTransparency"));
+               
assertTrue(AbstractXGMMLReader.isXGMMLTransparency("edgeTransparency"));
+       }
+
+       @Test
+       public void testIsOldFont() {
+               assertTrue(AbstractXGMMLReader.isOldFont("nodeLabelFont"));
+               assertTrue(AbstractXGMMLReader.isOldFont("cy:nodeLabelFont"));
+               assertTrue(AbstractXGMMLReader.isOldFont("edgeLabelFont"));
+               assertTrue(AbstractXGMMLReader.isOldFont("cy:edgeLabelFont"));
+       }
+
+       @Test
+       public void testConvertXGMMLTransparencyValue() {
+               assertEquals("0", 
AbstractXGMMLReader.convertXGMMLTransparencyValue("0"));
+               assertEquals("0", 
AbstractXGMMLReader.convertXGMMLTransparencyValue("0.0"));
+               assertEquals("255", 
AbstractXGMMLReader.convertXGMMLTransparencyValue("1.0"));
+               assertEquals("26", 
AbstractXGMMLReader.convertXGMMLTransparencyValue("0.1"));
+               assertEquals("128", 
AbstractXGMMLReader.convertXGMMLTransparencyValue("0.5"));
+       }
+
+       @Test
+       public void testConvertOldFontValue() {
+               assertEquals("ACaslonPro,bold,18", 
AbstractXGMMLReader.convertOldFontValue("ACaslonPro-Bold-0-18"));
+               assertEquals("SansSerif,plain,12", 
AbstractXGMMLReader.convertOldFontValue("SansSerif-0-12.1"));
+               assertEquals("SansSerif,bold,12", 
AbstractXGMMLReader.convertOldFontValue("SansSerif.bold-0.0-12.0"));
+               assertEquals("SansSerif,bold,12", 
AbstractXGMMLReader.convertOldFontValue("SansSerif,bold,12"));
+       }
+}

Modified: 
core3/impl/trunk/io-impl/impl/src/test/java/org/cytoscape/io/internal/read/xgmml/XGMMLNetworkReaderTest.java
===================================================================
--- 
core3/impl/trunk/io-impl/impl/src/test/java/org/cytoscape/io/internal/read/xgmml/XGMMLNetworkReaderTest.java
        2012-03-11 18:53:13 UTC (rev 28489)
+++ 
core3/impl/trunk/io-impl/impl/src/test/java/org/cytoscape/io/internal/read/xgmml/XGMMLNetworkReaderTest.java
        2012-03-12 18:20:16 UTC (rev 28490)
@@ -1,10 +1,7 @@
 package org.cytoscape.io.internal.read.xgmml;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
+import static org.junit.Assert.*;
+import static org.mockito.Mockito.*;
 
 import java.io.ByteArrayInputStream;
 import java.io.File;
@@ -12,7 +9,7 @@
 
 import org.cytoscape.ding.NetworkViewTestSupport;
 import org.cytoscape.equations.EquationCompiler;
-import org.cytoscape.io.internal.read.AbstractNetworkViewReaderTester;
+import org.cytoscape.io.internal.read.AbstractNetworkReaderTest;
 import org.cytoscape.io.internal.read.xgmml.handler.ReadDataManager;
 import org.cytoscape.io.internal.util.ReadCache;
 import org.cytoscape.io.internal.util.UnrecognizedVisualPropertyManager;
@@ -20,6 +17,7 @@
 import org.cytoscape.model.CyNetwork;
 import org.cytoscape.model.CyNetworkFactory;
 import org.cytoscape.model.CyNode;
+import org.cytoscape.model.CyTable;
 import org.cytoscape.model.CyTableFactory;
 import org.cytoscape.model.CyTableManager;
 import org.cytoscape.model.NetworkTestSupport;
@@ -33,11 +31,11 @@
 import org.junit.Before;
 import org.junit.Test;
 
-public class XGMMLNetworkReaderTest extends AbstractNetworkViewReaderTester {
+public class XGMMLNetworkReaderTest extends AbstractNetworkReaderTest {
 
        CyNetworkViewFactory networkViewFactory;
        CyNetworkFactory networkFactory;
-       CyRootNetworkManager rootNetworkManager;
+       CyRootNetworkManager rootNetworkMgr;
        CyTableFactory tableFactory;
        RenderingEngineManager renderingEngineMgr;
        ReadDataManager readDataMgr;
@@ -59,20 +57,20 @@
                
                NetworkTestSupport networkTestSupport = new 
NetworkTestSupport();
                networkFactory = networkTestSupport.getNetworkFactory();
-               rootNetworkManager = networkTestSupport.getRootNetworkFactory();
+               rootNetworkMgr = networkTestSupport.getRootNetworkFactory();
                
                NetworkViewTestSupport networkViewTestSupport = new 
NetworkViewTestSupport();
                networkViewFactory = 
networkViewTestSupport.getNetworkViewFactory();
                
                readCache = new ReadCache();
-               readDataMgr = new ReadDataManager(readCache, 
mock(EquationCompiler.class), networkFactory, rootNetworkManager);
+               readDataMgr = new ReadDataManager(readCache, 
mock(EquationCompiler.class), networkFactory, rootNetworkMgr);
                HandlerFactory handlerFactory = new HandlerFactory(readDataMgr);
                handlerFactory.init();
                parser = new XGMMLParser(handlerFactory, readDataMgr);
                
                ByteArrayInputStream is = new 
ByteArrayInputStream("".getBytes("UTF-8")); // TODO: use XGMML string or load 
from file
 
-               reader = new XGMMLNetworkReader(is, networkViewFactory, 
networkFactory, renderingEngineMgr, rootNetworkManager,
+               reader = new XGMMLNetworkReader(is, networkViewFactory, 
networkFactory, renderingEngineMgr, rootNetworkMgr,
                                readDataMgr, parser, 
unrecognizedVisualPropertyMgr);
 
                CyTableManager tableMgr= mock(CyTableManager.class);
@@ -83,42 +81,34 @@
        public void testReadFromTypicalFile() throws Exception {
                CyNetworkView[] views = getViews("galFiltered.xgmml");
                CyNetwork net = checkSingleNetwork(views, 331, 362);
-
                findInteraction(net, "YGR136W", "YGR058W", "pp", 1);
        }
-
+       
        @Test
-       public void testIsXGMMLTransparency() {
-               
assertTrue(XGMMLNetworkReader.isXGMMLTransparency("nodeTransparency"));
-               
assertTrue(XGMMLNetworkReader.isXGMMLTransparency("edgeTransparency"));
+       public void testParseHiddenAtt() throws Exception {
+               CyNetworkView[] views = getViews("hiddenAtt.xgmml");
+               CyNetwork net = checkSingleNetwork(views, 2, 1);
+               
+               // Test CyTables
+               CyTable defNetTbl = net.getDefaultNetworkTable();
+               assertNotNull(defNetTbl.getColumn("test"));
+               CyTable hiddenNetTbl = net.getRow(net, 
CyNetwork.HIDDEN_ATTRS).getTable();
+               assertNotNull(hiddenNetTbl.getColumn("_private_int"));
+               
+               CyTable defNodeTbl = net.getDefaultNodeTable();
+               assertNotNull(defNodeTbl.getColumn("name"));
+               assertNotNull(defNodeTbl.getColumn("list_1"));
+               CyTable hiddenNodeTbl = net.getRow(net.getNodeList().get(0), 
CyNetwork.HIDDEN_ATTRS).getTable();
+               assertNotNull(hiddenNodeTbl.getColumn("_private_str"));
+               assertNotNull(hiddenNodeTbl.getColumn("_private_list"));
+               
+               CyTable defEdgeTbl = net.getDefaultEdgeTable();
+               assertNotNull(defEdgeTbl.getColumn("name"));
+               CyTable hiddenEdgeTbl = net.getRow(net.getEdgeList().get(0), 
CyNetwork.HIDDEN_ATTRS).getTable();
+               assertNotNull(hiddenEdgeTbl.getColumn("_private_real"));
        }
 
        @Test
-       public void testIsOldFont() {
-               assertTrue(XGMMLNetworkReader.isOldFont("nodeLabelFont"));
-               assertTrue(XGMMLNetworkReader.isOldFont("cy:nodeLabelFont"));
-               assertTrue(XGMMLNetworkReader.isOldFont("edgeLabelFont"));
-               assertTrue(XGMMLNetworkReader.isOldFont("cy:edgeLabelFont"));
-       }
-
-       @Test
-       public void testConvertXGMMLTransparencyValue() {
-               assertEquals("0", 
XGMMLNetworkReader.convertXGMMLTransparencyValue("0"));
-               assertEquals("0", 
XGMMLNetworkReader.convertXGMMLTransparencyValue("0.0"));
-               assertEquals("255", 
XGMMLNetworkReader.convertXGMMLTransparencyValue("1.0"));
-               assertEquals("26", 
XGMMLNetworkReader.convertXGMMLTransparencyValue("0.1"));
-               assertEquals("128", 
XGMMLNetworkReader.convertXGMMLTransparencyValue("0.5"));
-       }
-
-       @Test
-       public void testConvertOldFontValue() {
-               assertEquals("ACaslonPro,bold,18", 
XGMMLNetworkReader.convertOldFontValue("ACaslonPro-Bold-0-18"));
-               assertEquals("SansSerif,plain,12", 
XGMMLNetworkReader.convertOldFontValue("SansSerif-0-12.1"));
-               assertEquals("SansSerif,bold,12", 
XGMMLNetworkReader.convertOldFontValue("SansSerif.bold-0.0-12.0"));
-               assertEquals("SansSerif,bold,12", 
XGMMLNetworkReader.convertOldFontValue("SansSerif,bold,12"));
-       }
-
-       @Test
        public void testIsLockedVisualProperty() {
                CyNetwork network = mock(CyNetwork.class);
                assertFalse(reader.isLockedVisualProperty(network, 
"GRAPH_VIEW_ZOOM"));
@@ -159,7 +149,7 @@
        private CyNetworkView[] getViews(String file) throws Exception {
                File f = new File("./src/test/resources/testData/xgmml/" + 
file);
                XGMMLNetworkReader snvp = new XGMMLNetworkReader(new 
FileInputStream(f), viewFactory, netFactory,
-                               renderingEngineMgr, rootNetworkManager, 
readDataMgr, parser, unrecognizedVisualPropertyMgr);
+                               renderingEngineMgr, rootNetworkMgr, 
readDataMgr, parser, unrecognizedVisualPropertyMgr);
                snvp.run(taskMonitor);
 
                final CyNetwork[] networks = snvp.getNetworks();

Added: 
core3/impl/trunk/io-impl/impl/src/test/resources/testData/xgmml/hiddenAtt.xgmml
===================================================================
--- 
core3/impl/trunk/io-impl/impl/src/test/resources/testData/xgmml/hiddenAtt.xgmml 
                            (rev 0)
+++ 
core3/impl/trunk/io-impl/impl/src/test/resources/testData/xgmml/hiddenAtt.xgmml 
    2012-03-12 18:20:16 UTC (rev 28490)
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<graph label="Network A" xmlns:dc="http://purl.org/dc/elements/1.1/";
+       xmlns:xlink="http://www.w3.org/1999/xlink"; 
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+       xmlns:cy="http://www.cytoscape.org"; xmlns="http://www.cs.rpi.edu/XGMML";
+       directed="1">
+       
+       <att type="boolean" name="test" value="1" cy:hidden="false" />
+       <att type="integer" name="_private_int" value="1" cy:hidden="true" />
+       
+       <node label="node1" id="-1">
+               <att type="string" name="name" value="node 1" />
+               <att type="string" name="_private_str" value="_v1" 
cy:hidden="true" />
+               <att type="list" name="list_1">
+                       <att type="string" value="a" />
+                       <att type="string" value="b" />
+               </att>
+       </node>
+       <node label="node2" id="-2">
+               <att type="string" name="name" value="node 2" />
+               <att type="string" name="_private_str" value="_v2" 
cy:hidden="true" />
+               <att type="list" name="_private_list" cy:hidden="true">
+                       <att type="string" value="c" />
+                       <att type="string" value="d" />
+               </att>
+       </node>
+       <edge label="node1 (DirectedEdge) node2" source="-1" target="-2">
+               <att type="string" name="name" value="node1 (DirectedEdge) 
node2" />
+               <att type="real" name="_private_real" value="0.1" 
cy:hidden="true" />
+       </edge>
+</graph>

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