Author: pwang
Date: 2012-07-25 17:52:31 -0700 (Wed, 25 Jul 2012)
New Revision: 29997

Added:
   
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/write/nnf/
   
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/write/nnf/NnfNetworkWriterFactory.java
   
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/write/nnf/NnfWriter.java
Modified:
   
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/CyActivator.java
Log:
Port the NNF writer from 2.x

Modified: 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/CyActivator.java
===================================================================
--- 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/CyActivator.java
      2012-07-26 00:51:53 UTC (rev 29996)
+++ 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/CyActivator.java
      2012-07-26 00:52:31 UTC (rev 29997)
@@ -67,7 +67,7 @@
 import org.cytoscape.io.internal.write.properties.PropertiesWriterFactoryImpl;
 import org.cytoscape.io.internal.write.session.SessionWriterFactoryImpl;
 import org.cytoscape.io.internal.write.sif.SifNetworkWriterFactory;
-//import org.cytoscape.io.internal.write.nnf.NnfNetworkWriterFactory;
+import org.cytoscape.io.internal.write.nnf.NnfNetworkWriterFactory;
 import org.cytoscape.io.internal.write.vizmap.VizmapWriterFactoryImpl;
 import org.cytoscape.io.internal.write.xgmml.SessionXGMMLWriterFactory;
 import org.cytoscape.io.internal.write.xgmml.GenericXGMMLWriterFactory;
@@ -210,7 +210,7 @@
                PSWriterFactory psWriterFactory = new PSWriterFactory(psFilter);
                SVGWriterFactory svgWriterFactory = new 
SVGWriterFactory(svgFilter);
                SifNetworkWriterFactory sifNetworkViewWriterFactory = new 
SifNetworkWriterFactory(sifFilter);
-//             NnfNetworkWriterFactory nnfNetworkViewWriterFactory = new 
NnfNetworkWriterFactory(nnfFilter);
+               NnfNetworkWriterFactory nnfNetworkViewWriterFactory = new 
NnfNetworkWriterFactory(cyNetworkManagerServiceRef,nnfFilter);
                GenericXGMMLWriterFactory xgmmlWriterFactory = new 
GenericXGMMLWriterFactory(xgmmlFilter,renderingEngineManagerServiceRef,unrecognizedVisualPropertyManager,cyNetworkManagerServiceRef,cyRootNetworkManagerServiceRef,visualMappingManagerServiceRef);
                SessionXGMMLWriterFactory sessionXgmmlWriterFactory = new 
SessionXGMMLWriterFactory(sessXgmmlFileFilter,renderingEngineManagerServiceRef,unrecognizedVisualPropertyManager,cyNetworkManagerServiceRef,cyRootNetworkManagerServiceRef,visualMappingManagerServiceRef);
                CysessionWriterFactoryImpl cysessionWriterFactory = new 
CysessionWriterFactoryImpl(cysessionFilter);
@@ -273,7 +273,7 @@
                registerAllServices(bc, psWriterFactory, new Properties());
                registerAllServices(bc, svgWriterFactory, new Properties());
                registerAllServices(bc, sifNetworkViewWriterFactory, new 
Properties());
-//             registerAllServices(bc, nnfNetworkViewWriterFactory, new 
Properties());
+               registerAllServices(bc, nnfNetworkViewWriterFactory, new 
Properties());
                registerAllServices(bc, xgmmlWriterFactory, new Properties());
                registerAllServices(bc, cysessionWriterFactory, new 
Properties());
                registerAllServices(bc, bookmarksWriterFactory, new 
Properties());

Added: 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/write/nnf/NnfNetworkWriterFactory.java
===================================================================
--- 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/write/nnf/NnfNetworkWriterFactory.java
                                (rev 0)
+++ 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/write/nnf/NnfNetworkWriterFactory.java
        2012-07-26 00:52:31 UTC (rev 29997)
@@ -0,0 +1,29 @@
+package org.cytoscape.io.internal.write.nnf;
+
+import org.cytoscape.view.model.CyNetworkView;
+import org.cytoscape.model.CyNetwork;
+import org.cytoscape.model.CyNetworkManager;
+import org.cytoscape.io.CyFileFilter;
+import org.cytoscape.io.write.CyNetworkViewWriterFactory;
+import org.cytoscape.io.write.CyWriter;
+import java.io.OutputStream;
+import org.cytoscape.io.internal.write.AbstractCyWriterFactory;
+
+public class NnfNetworkWriterFactory extends AbstractCyWriterFactory 
implements CyNetworkViewWriterFactory {
+       
+       private final CyNetworkManager cyNetworkManagerServiceRef;
+       public NnfNetworkWriterFactory(CyNetworkManager 
cyNetworkManagerServiceRef,CyFileFilter filter) {
+               super(filter);
+               this.cyNetworkManagerServiceRef = cyNetworkManagerServiceRef;
+       }
+       
+       @Override
+       public CyWriter createWriter(OutputStream outputStream, CyNetworkView 
view) {
+               return new NnfWriter(cyNetworkManagerServiceRef, outputStream);
+       }
+
+       @Override
+       public CyWriter createWriter(OutputStream outputStream, CyNetwork 
network) {
+               return new NnfWriter(cyNetworkManagerServiceRef,outputStream);
+       }
+}

Added: 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/write/nnf/NnfWriter.java
===================================================================
--- 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/write/nnf/NnfWriter.java
                              (rev 0)
+++ 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/write/nnf/NnfWriter.java
      2012-07-26 00:52:31 UTC (rev 29997)
@@ -0,0 +1,116 @@
+package org.cytoscape.io.internal.write.nnf;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.io.Writer;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.cytoscape.io.write.CyWriter;
+import org.cytoscape.model.CyEdge;
+import org.cytoscape.model.CyNetwork;
+import org.cytoscape.model.CyNetworkManager;
+import org.cytoscape.model.CyNode;
+import org.cytoscape.work.TaskMonitor;
+
+public class NnfWriter implements CyWriter {
+       
+       private OutputStream outputStream;
+       //private CyNetwork network;
+       private final CyNetworkManager cyNetworkManagerServiceRef;
+
+       public NnfWriter(CyNetworkManager cyNetworkManagerServiceRef, 
OutputStream outputStream) {
+               this.outputStream = outputStream;
+               //this.network = network; 
+               this.cyNetworkManagerServiceRef = cyNetworkManagerServiceRef;
+       }
+
+       
+       @Override
+       public void run(TaskMonitor taskMonitor) throws Exception {
+               taskMonitor.setProgress(0.0);
+               taskMonitor.setStatusMessage("Exporting Nested Networks...");
+
+               final Writer writer = new OutputStreamWriter(outputStream);
+                               
+               
+               final Set<CyNetwork> networks = 
this.cyNetworkManagerServiceRef.getNetworkSet();
+               final float networkCount = networks.size();
+               try {
+                       float writtenCount = 0.0f;
+                       for (final CyNetwork network : networks) {
+                               writeNetwork(writer, network);
+                               ++writtenCount;
+                               taskMonitor.setProgress(Math.round(writtenCount 
/ networkCount));
+                       }
+               } catch (Exception e) {
+                       taskMonitor.setStatusMessage("Cannot export networks as 
NNF.");
+               }
+               finally {
+                       writer.close();
+               }               
+               
+               taskMonitor.setProgress(1.0);
+       }
+       
+       
+       private void writeNetwork(Writer writer, final CyNetwork network) 
throws IOException {
+               final String title = 
network.getRow(network).get(CyNetwork.NAME, String.class);
+
+               final Set<String> encounteredNodes = new HashSet<String>();
+
+               final List<CyEdge> edges = (List<CyEdge>)network.getEdgeList();
+               for (final CyEdge edge : edges) {
+                       writer.write(escapeID(title) + " ");
+                       
+                       CyNode source = edge.getSource();
+                       final String sourceID = 
network.getRow(source).get(CyNetwork.NAME, String.class);
+                       
+                       encounteredNodes.add(sourceID);
+                       writer.write(escapeID(sourceID) + " ");
+
+                       String interactionName = 
network.getRow(edge).get("interaction", String.class); 
+                       
+                       if (interactionName == null)
+                               interactionName = "xx";
+                       writer.write(escapeID(interactionName) + " ");
+
+                       CyNode target = edge.getTarget();
+                       final String targetID = 
network.getRow(target).get(CyNetwork.NAME, String.class);
+                       
+                       encounteredNodes.add(targetID);
+                       writer.write(escapeID(targetID) + "\n");
+               }
+
+               final List<CyNode> nodes = network.getNodeList();
+               for (final CyNode node : nodes) {
+                       final String nodeID = 
network.getRow(node).get(CyNetwork.NAME, String.class); 
+                       
+                       if (!encounteredNodes.contains(nodeID))
+                               writer.write(escapeID(title) + " " + 
escapeID(nodeID) + "\n");
+               }
+       }
+
+       
+       private String escapeID(final String ID) {
+               final StringBuilder builder = new StringBuilder(ID.length());
+               for (int i = 0; i < ID.length(); ++i) {
+                       final char ch = ID.charAt(i);
+                       if (ch == ' ' || ch == '\t' || ch == '\\')
+                               builder.append('\\');
+                       builder.append(ch);
+               }
+
+               return builder.toString();
+       }
+
+       
+       @Override
+       public void cancel() {
+               // TODO Auto-generated method stub
+
+       }
+
+}

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