Author: pwang
Date: 2010-10-25 11:21:17 -0700 (Mon, 25 Oct 2010)
New Revision: 22361

Added:
   core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/io/
   
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/io/AbstractCyWriter.java
   
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/io/CyNetworkViewWriter.java
   
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/io/CyTableWriter.java
   
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/io/ViewWriter.java
Log:
Moved from io-api bundle

Copied: 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/io/AbstractCyWriter.java
 (from rev 22342, 
core3/io-api/trunk/src/main/java/org/cytoscape/io/write/AbstractCyWriter.java)
===================================================================
--- 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/io/AbstractCyWriter.java
                               (rev 0)
+++ 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/io/AbstractCyWriter.java
       2010-10-25 18:21:17 UTC (rev 22361)
@@ -0,0 +1,116 @@
+
+package org.cytoscape.task.internal.io;
+
+import org.cytoscape.work.AbstractTask;
+import org.cytoscape.work.TaskMonitor;
+import org.cytoscape.work.Tunable;
+import org.cytoscape.work.util.ListSingleSelection;
+import org.cytoscape.io.CyFileFilter;
+import org.cytoscape.io.write.CyWriter;
+import org.cytoscape.io.write.CyWriterManager;
+
+import java.io.File;
+
+import java.util.Map;
+import java.util.TreeMap;
+import java.util.ArrayList;
+
+/**
+ * An abstract utility implementation of a Task that writes a user defined 
+ * file to a file type determined by a provided writer manager.  This class
+ * is meant to be extended for specific file types such that the appropriate
+ * {...@link org.cytoscape.io.write.CyWriter} can be identified.
+ */
+public abstract class AbstractCyWriter<T extends CyWriterManager> extends 
AbstractTask 
+       implements CyWriter {
+
+       private File outputFile;
+
+       /**
+        * The method sets the file to be written.  This field should not
+        * be called directly, but rather handled by the {...@link 
org.cytoscape.work.Tunable}
+        * processing. This method is the "setter" portion of a
+        * getter/setter tunable method pair.
+        * @param f The file to be written.
+        */
+       public final void setOutputFile(File f) {
+               if ( f != null )
+                       outputFile = f;
+       }
+
+       /**
+        * This method gets the file to be written.  This method should not
+        * be called directly, but rather handled by the {...@link 
org.cytoscape.work.Tunable}
+        * processing. This method is the "getter" portion of a
+        * getter/setter tunable method pair.
+        * @return The file to be written.
+        */
+       @Tunable(description="Select the output file name")
+       public final File getOutputFile() {
+               return outputFile;
+       }
+
+       /**
+        * The list of file type options generated by the file types
+        * available from the CyWriterManager.  This field should not
+        * be set directly, but rather handled by the {...@link 
org.cytoscape.work.Tunable}
+        * processing.
+        */
+       @Tunable(description = "Select the export file format")
+       public final ListSingleSelection<String> options;
+
+       private final Map<String,CyFileFilter> descriptionFilterMap;
+
+       /**
+        * The CyWriterManager specified in the constructor.
+        */
+       protected final T writerManager;
+
+       /**
+        * @param writerManager The CyWriterManager to be used to determine 
which
+        * {...@link org.cytoscape.io.write.CyWriter} to be used to write the 
file chosen by the user. 
+        */
+       public AbstractCyWriter(T writerManager) {
+               if ( writerManager == null )
+                       throw new NullPointerException("CyWriterManager is 
null");
+               this.writerManager = writerManager;
+
+               descriptionFilterMap = new TreeMap<String,CyFileFilter>();
+               for ( CyFileFilter f : writerManager.getAvailableWriters() )
+                       descriptionFilterMap.put( f.getDescription(), f );
+   
+               options = new ListSingleSelection<String>( new 
ArrayList<String>( descriptionFilterMap.keySet() ) );
+       }
+
+       /**
+        * This method processes the chosen input file and output type and 
attempts
+        * to write the file.
+        * @param tm The {...@link org.cytoscape.work.TaskMonitor} provided by 
the TaskManager execution environment.
+        */
+       public final void run(TaskMonitor tm) throws Exception {
+               if ( outputFile == null )
+                       throw new NullPointerException("Output file has not be 
specified!");
+
+               String desc = options.getSelectedValue();
+               if ( desc == null )
+                       throw new NullPointerException("No file type has been 
specified!");
+
+               CyFileFilter filter = descriptionFilterMap.get(desc);
+               if ( filter == null )
+                       throw new NullPointerException("No file filter found 
for specified file type!");
+               
+               CyWriter writer = getWriter(filter,outputFile); 
+               if ( writer == null )
+                       throw new NullPointerException("No CyWriter found for 
specified file type!");
+
+               insertTasksAfterCurrentTask( writer );
+       }
+
+       /**
+        * Should return a {...@link org.cytoscape.io.write.CyWriter} object 
for writing the specified file of the specified type.
+        * @param filter The specific type of file to be written.
+        * @param out The file that will be written.
+        */
+       protected abstract CyWriter getWriter(CyFileFilter filter, File out) 
throws Exception;
+
+}

Copied: 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/io/CyNetworkViewWriter.java
 (from rev 22342, 
core3/io-api/trunk/src/main/java/org/cytoscape/io/write/CyNetworkViewWriter.java)
===================================================================
--- 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/io/CyNetworkViewWriter.java
                            (rev 0)
+++ 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/io/CyNetworkViewWriter.java
    2010-10-25 18:21:17 UTC (rev 22361)
@@ -0,0 +1,38 @@
+
+package org.cytoscape.task.internal.io;
+
+import org.cytoscape.view.model.CyNetworkView;
+import org.cytoscape.io.CyFileFilter;
+import org.cytoscape.io.write.CyNetworkViewWriterFactory;
+import org.cytoscape.io.write.CyNetworkViewWriterManager;
+import org.cytoscape.io.write.CyWriter;
+
+import java.io.File;
+
+/**
+ * A utility Task implementation specifically for writing a {...@link 
org.cytoscape.view.model.CyNetworkView}.
+ */
+public final class CyNetworkViewWriter extends 
AbstractCyWriter<CyNetworkViewWriterManager> {
+
+       // the view to be written
+       private final CyNetworkView view;
+
+       /**
+        * @param writerManager The {...@link 
org.cytoscape.io.write.CyNetworkViewWriterManager} used to determine which 
+        * {...@link org.cytoscape.io.write.CyNetworkViewWriterFactory} to use 
to write the file.
+        * @param view The {...@link org.cytoscape.view.model.CyNetworkView} to 
be written out. 
+        */
+    public CyNetworkViewWriter(CyNetworkViewWriterManager writerManager, 
CyNetworkView view ) {
+               super(writerManager);
+               if ( view == null )
+                       throw new NullPointerException("View is null");
+               this.view = view;
+       }
+
+       /**
+        * {...@inheritdoc}  
+        */
+       protected CyWriter getWriter(CyFileFilter filter, File file)  throws 
Exception{
+               return writerManager.getWriter(view,filter,file);
+       }
+}

Copied: 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/io/CyTableWriter.java
 (from rev 22342, 
core3/io-api/trunk/src/main/java/org/cytoscape/io/write/CyTableWriter.java)
===================================================================
--- 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/io/CyTableWriter.java
                          (rev 0)
+++ 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/io/CyTableWriter.java
  2010-10-25 18:21:17 UTC (rev 22361)
@@ -0,0 +1,37 @@
+
+package org.cytoscape.task.internal.io;
+
+import org.cytoscape.model.CyTable;
+import org.cytoscape.io.CyFileFilter;
+import org.cytoscape.io.write.CyTableWriterFactory;
+import org.cytoscape.io.write.CyTableWriterManager;
+import org.cytoscape.io.write.CyWriter;
+
+import java.io.File;
+
+/**
+ * A utility Task implementation specifically for writing {...@link 
org.cytoscape.model.CyTable} objects.
+ */
+public final class CyTableWriter extends 
AbstractCyWriter<CyTableWriterManager> {
+
+       private final CyTable table;
+
+       /**
+        * @param writerManager The {...@link 
org.cytoscape.io.write.CyTableWriterManager} used to determine which 
+        * {...@link org.cytoscape.io.write.CyTableWriterFactory} to use to 
write the file.
+        * @param table The {...@link org.cytoscape.model.CyTable} to be 
written out. 
+        */
+    public CyTableWriter(CyTableWriterManager writerManager, CyTable table ) {
+               super(writerManager);
+               if ( table == null )
+                       throw new NullPointerException("Table is null");
+               this.table = table;
+       }
+
+       /**
+        * {...@inheritdoc}
+        */
+       protected CyWriter getWriter(CyFileFilter filter, File file)  throws 
Exception{
+               return writerManager.getWriter(table,filter,file);
+       }
+}

Copied: 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/io/ViewWriter.java
 (from rev 22342, 
core3/io-api/trunk/src/main/java/org/cytoscape/io/write/ViewWriter.java)
===================================================================
--- 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/io/ViewWriter.java
                             (rev 0)
+++ 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/io/ViewWriter.java
     2010-10-25 18:21:17 UTC (rev 22361)
@@ -0,0 +1,45 @@
+
+package org.cytoscape.task.internal.io;
+
+import org.cytoscape.view.model.View;
+import org.cytoscape.view.presentation.RenderingEngine;
+import org.cytoscape.io.CyFileFilter;
+import org.cytoscape.io.write.CyWriter;
+import org.cytoscape.io.write.ViewWriterManager;
+
+import java.io.File;
+
+/**
+ * A utility Task implementation that will write the specified View to the
+ * the specified image file using the specified RenderingEngine.
+ */
+public final class ViewWriter extends AbstractCyWriter<ViewWriterManager> {
+
+       private final View<?> view;
+       private final RenderingEngine re;
+
+       /**
+        * @param writerManager The {...@link 
org.cytoscape.io.write.ViewWriterManager} used to determine which type of
+        * file should be written.
+        * @param view The View object to be written to the specified file.
+        * @param re The RenderingEngine used to generate the image to be 
written to the file.  
+        */
+    public ViewWriter(ViewWriterManager writerManager, View<?> view, 
RenderingEngine re ) {
+               super(writerManager);
+
+               if ( view == null )
+                       throw new NullPointerException("view is null");
+               this.view = view;
+
+               if ( re == null )
+                       throw new NullPointerException("rendering engine is 
null");
+               this.re = re;
+       }
+
+       /**
+        * {...@inheritdoc}
+        */
+       protected CyWriter getWriter(CyFileFilter filter, File file) throws 
Exception {
+               return writerManager.getWriter(view,re,filter,file);
+       }
+}

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