Author: jm
Date: 2011-05-10 09:08:11 -0700 (Tue, 10 May 2011)
New Revision: 24994

Modified:
   
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/datatable/csv/CSVCyWriter.java
   
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/session/SessionWriterFactoryImpl.java
   
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/session/SessionWriterImpl.java
   core3/io-impl/trunk/src/main/resources/META-INF/spring/bundle-context.xml
Log:
Added preliminary support for writing tables to session files

Modified: 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/datatable/csv/CSVCyWriter.java
===================================================================
--- 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/datatable/csv/CSVCyWriter.java
    2011-05-10 16:06:58 UTC (rev 24993)
+++ 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/datatable/csv/CSVCyWriter.java
    2011-05-10 16:08:11 UTC (rev 24994)
@@ -44,7 +44,7 @@
                        writeHeader(writer, columns);
                        writeValues(writer, columns);
                } finally {
-                       writer.close();
+                       writer.flush();
                }
        }
        

Modified: 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/session/SessionWriterFactoryImpl.java
===================================================================
--- 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/session/SessionWriterFactoryImpl.java
     2011-05-10 16:06:58 UTC (rev 24993)
+++ 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/session/SessionWriterFactoryImpl.java
     2011-05-10 16:08:11 UTC (rev 24994)
@@ -2,6 +2,7 @@
 
 import org.cytoscape.session.CySession;
 import org.cytoscape.io.CyFileFilter;
+import org.cytoscape.io.write.CyTableWriterManager;
 import org.cytoscape.io.write.CyWriter;
 import org.cytoscape.io.write.CySessionWriterFactory;
 import org.cytoscape.io.write.CyNetworkViewWriterManager;
@@ -15,8 +16,10 @@
        private final CyFileFilter bookmarksFilter;
        private final CyFileFilter cysessionFilter;
        private final CyFileFilter propertiesFilter;
+       private final CyFileFilter tableFilter;
        private final CyNetworkViewWriterManager networkViewWriterMgr;
        private final CyPropertyWriterManager propertyWriterMgr;
+       private final CyTableWriterManager tableWriterMgr;
 
        private OutputStream outputStream;
        private CySession session;
@@ -27,23 +30,28 @@
                                        final CyFileFilter xgmmlFilter, 
                                        final CyFileFilter bookmarksFilter, 
                                        final CyFileFilter cysessionFilter, 
-                                       final CyFileFilter propertiesFilter, 
+                                       final CyFileFilter propertiesFilter,
+                                       final CyFileFilter tableFilter,
                                        final CyNetworkViewWriterManager 
networkViewWriterMgr, 
-                                       final CyPropertyWriterManager 
propertyWriterMgr) {
+                                       final CyPropertyWriterManager 
propertyWriterMgr,
+                                       final CyTableWriterManager 
tableWriterMgr) {
                this.thisFilter = thisFilter;
                this.xgmmlFilter = xgmmlFilter;
                this.bookmarksFilter = bookmarksFilter;
                this.cysessionFilter = cysessionFilter;
                this.propertiesFilter = propertiesFilter;
+               this.tableFilter = tableFilter;
                this.networkViewWriterMgr = networkViewWriterMgr;
                this.propertyWriterMgr = propertyWriterMgr;
+               this.tableWriterMgr = tableWriterMgr;
        }
        
        @Override
        public CyWriter getWriterTask() {
                return new SessionWriterImpl(outputStream, session, 
networkViewWriterMgr, 
-                                            propertyWriterMgr, xgmmlFilter, 
bookmarksFilter, 
-                                            cysessionFilter, propertiesFilter);
+                                            propertyWriterMgr, tableWriterMgr, 
xgmmlFilter,
+                                            bookmarksFilter, cysessionFilter, 
propertiesFilter,
+                                            tableFilter);
        }
 
        @Override

Modified: 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/session/SessionWriterImpl.java
===================================================================
--- 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/session/SessionWriterImpl.java
    2011-05-10 16:06:58 UTC (rev 24993)
+++ 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/session/SessionWriterImpl.java
    2011-05-10 16:08:11 UTC (rev 24994)
@@ -36,52 +36,43 @@
 package org.cytoscape.io.internal.write.session;
 
 import java.io.File;
-import java.io.FileWriter;
-import java.io.PrintWriter;
-import java.io.Writer;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.net.URISyntaxException;
+import java.net.URLEncoder;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipOutputStream;
 
-import org.cytoscape.property.session.*;
-import org.cytoscape.property.bookmark.*;
+import javax.xml.bind.JAXBException;
+import javax.xml.stream.XMLStreamException;
 
-import com.sun.xml.bind.marshaller.NamespacePrefixMapper;
-
-import org.cytoscape.model.CyEdge;
-import org.cytoscape.model.CyNetwork;
-import org.cytoscape.model.CyNode;
-import org.cytoscape.model.CyTableUtil;
-import org.cytoscape.view.model.View;
-import org.cytoscape.view.model.CyNetworkView;
 import org.cytoscape.io.CyFileFilter;
 import org.cytoscape.io.write.CyNetworkViewWriterManager;
 import org.cytoscape.io.write.CyPropertyWriterManager;
+import org.cytoscape.io.write.CyTableWriterManager;
+import org.cytoscape.io.write.CyWriter;
+import org.cytoscape.model.CyNetwork;
+import org.cytoscape.model.CyTable;
+import org.cytoscape.property.session.Cysession;
+import org.cytoscape.property.session.Cytopanels;
+import org.cytoscape.property.session.Network;
+import org.cytoscape.property.session.NetworkTree;
+import org.cytoscape.property.session.Plugins;
+import org.cytoscape.property.session.SessionState;
 import org.cytoscape.session.CySession;
+import org.cytoscape.view.model.CyNetworkView;
 import org.cytoscape.work.AbstractTask;
 import org.cytoscape.work.TaskMonitor;
 
-import javax.swing.*;
-import javax.swing.tree.DefaultMutableTreeNode;
-import javax.xml.bind.JAXBContext;
-import javax.xml.bind.JAXBException;
-import javax.xml.bind.Marshaller;
-import javax.xml.stream.XMLStreamException;
-import java.awt.*;
-import java.io.*;
-import java.math.BigInteger;
-import java.net.URISyntaxException;
-import java.net.URL;
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
-import java.util.*;
-import java.util.List;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipOutputStream;
-
-import org.cytoscape.io.write.CyWriter;
-import org.cytoscape.work.TaskMonitor;
-import org.cytoscape.work.AbstractTask;
-import org.cytoscape.session.CySession;
-
 /**
  * Write session states into files.<br>
  * Basic functions of this class are:<br>
@@ -159,27 +150,33 @@
        private final CySession session;
        private final CyNetworkViewWriterManager networkViewWriterMgr;
        private final CyPropertyWriterManager propertyWriterMgr;
+       private final CyTableWriterManager tableWriterMgr;
        private final CyFileFilter xgmmlFilter;
        private final CyFileFilter bookmarksFilter;
        private final CyFileFilter cysessionFilter;
        private final CyFileFilter propertiesFilter;
+       private final CyFileFilter tableFilter;
 
        public SessionWriterImpl(final OutputStream outputStream, 
                                 final CySession session, 
                                 final CyNetworkViewWriterManager 
networkViewWriterMgr, 
-                                final CyPropertyWriterManager 
propertyWriterMgr, 
+                                final CyPropertyWriterManager 
propertyWriterMgr,
+                                final CyTableWriterManager tableWriterMgr,
                                 final CyFileFilter xgmmlFilter, 
                                 final CyFileFilter bookmarksFilter,
                                 final CyFileFilter cysessionFilter,
-                                final CyFileFilter propertiesFilter) {
+                                final CyFileFilter propertiesFilter,
+                                final CyFileFilter tableFilter) {
                this.outputStream = outputStream;
                this.session = session;
                this.networkViewWriterMgr = networkViewWriterMgr;
                this.propertyWriterMgr = propertyWriterMgr;
+               this.tableWriterMgr = tableWriterMgr;
                this.xgmmlFilter = xgmmlFilter;
                this.bookmarksFilter = bookmarksFilter;
                this.cysessionFilter = cysessionFilter;
                this.propertiesFilter = propertiesFilter;
+               this.tableFilter = tableFilter;
 
                // For now, session ID is time and date
                final DateFormat df = new SimpleDateFormat("yyyy_MM_dd-HH_mm");
@@ -203,6 +200,7 @@
 
                for (CyNetworkView netView : session.getNetworkViews())
                        zipNetwork(netView);
+               zipGlobalTables();
                zipCySession();
                zipVizmapProps();
                zipCytoscapeProps();
@@ -356,4 +354,30 @@
                return newFileName;
        }
 
+       private void zipGlobalTables() throws Exception {
+               Set<CyNetworkView> views = session.getNetworkViews();
+               Set<Long> excluded = new HashSet<Long>();
+               for (CyNetworkView view : views) {
+                       CyNetwork network = view.getModel();
+                       
excluded.add(network.getDefaultNetworkTable().getSUID());
+                       excluded.add(network.getDefaultNodeTable().getSUID());
+                       excluded.add(network.getDefaultEdgeTable().getSUID());
+               }
+               Set<CyTable> tables = session.getTables();
+               for (CyTable table : tables) {
+                       if (excluded.contains(table.getSUID())) {
+                               continue;
+                       }
+                       
+                       String fileName = String.format("%d|%s.table", 
table.getSUID(), URLEncoder.encode(table.getTitle(), "UTF-8"));
+                       zos.putNextEntry(new ZipEntry(sessionDir + fileName));
+                       try {
+                               CyWriter writer = 
tableWriterMgr.getWriter(table, tableFilter, zos);
+                               writer.run(taskMonitor);
+                       } finally {
+                               zos.closeEntry();
+                       }
+               }
+       }
+
 }

Modified: 
core3/io-impl/trunk/src/main/resources/META-INF/spring/bundle-context.xml
===================================================================
--- core3/io-impl/trunk/src/main/resources/META-INF/spring/bundle-context.xml   
2011-05-10 16:06:58 UTC (rev 24993)
+++ core3/io-impl/trunk/src/main/resources/META-INF/spring/bundle-context.xml   
2011-05-10 16:08:11 UTC (rev 24994)
@@ -398,8 +398,10 @@
                <constructor-arg ref="bookmarksFilter" />
                <constructor-arg ref="cysessionFilter" />
                <constructor-arg ref="propertiesFilter" />
+               <constructor-arg ref="csvFilter" />
                <constructor-arg ref="networkViewWriterManager" />
                <constructor-arg ref="propertyWriterManager" />
+               <constructor-arg ref="tableWriterManager" />
        </bean>
 
        <!-- All Reader Managers -->

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