Author: mes
Date: 2010-09-09 17:43:33 -0700 (Thu, 09 Sep 2010)
New Revision: 21783

Added:
   
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/AbstractWriterManager.java
   
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/CyTableWriterManagerImpl.java
Log:
initial support for writing

Added: 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/AbstractWriterManager.java
===================================================================
--- 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/AbstractWriterManager.java
                                (rev 0)
+++ 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/AbstractWriterManager.java
        2010-09-10 00:43:33 UTC (rev 21783)
@@ -0,0 +1,59 @@
+package org.cytoscape.io.internal.read;
+
+
+import java.io.File;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.List;
+import java.util.ArrayList;
+
+import org.cytoscape.io.CyFileFilter;
+import org.cytoscape.io.DataCategory;
+import org.cytoscape.io.write.CyWriterFactory;
+import org.cytoscape.io.write.CyWriterManager;
+
+import org.slf4j.LoggerFactory;
+import org.slf4j.Logger;
+
+
+public class AbstractWriterManager<T extends CyWriterFactory>  implements 
CyWriterManager {
+       protected final DataCategory category; 
+       protected final Map<CyFileFilter,T> factories;
+       private static final Logger logger = LoggerFactory.getLogger( 
AbstractWriterManager.class ); 
+
+       public AbstractWriterManager(DataCategory category) {
+               this.category = category;
+               factories = new HashMap<CyFileFilter,T>();
+       }
+
+       public List<CyFileFilter> getAvailableWriters() {
+               return new ArrayList<CyFileFilter>( factories.keySet() );
+       }
+       
+       @SuppressWarnings("unchecked")
+       public void addCyWriterFactory(T factory, Map props) {
+               if ( factory != null && 
factory.getCyFileFilter().getDataCategory() == category ) {
+                       logger.info("adding IO taskFactory ");
+                       factories.put(factory.getCyFileFilter(), factory);
+               } else
+                       logger.warn("Specified factory is null or has wrong 
DataCategory (" + category + ")");
+       }
+
+       @SuppressWarnings("unchecked")
+       public void removeCyWriterFactory(T factory, Map props) {
+               factories.remove(factory.getCyFileFilter());
+       }
+
+       public T getMatchingFactory(CyFileFilter filter, File file) {
+               for (T factory : factories.values()) {
+                       CyFileFilter cff = factory.getCyFileFilter();
+                       if ( filter.equals(cff) ) {
+                               factory.setOutputFile(file);
+                               return factory;
+                       }
+               }
+               logger.warn("Couldn't find matching factory for filter: " + 
filter.toString());
+
+               return null;
+       }
+}

Added: 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/CyTableWriterManagerImpl.java
===================================================================
--- 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/CyTableWriterManagerImpl.java
                             (rev 0)
+++ 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/write/CyTableWriterManagerImpl.java
     2010-09-10 00:43:33 UTC (rev 21783)
@@ -0,0 +1,28 @@
+package org.cytoscape.io.internal.read;
+
+
+import org.cytoscape.io.write.CyTableWriter;
+import org.cytoscape.io.write.CyTableWriterManager;
+import org.cytoscape.io.write.CyTableWriterFactory;
+import org.cytoscape.io.write.CyWriter;
+import org.cytoscape.io.DataCategory;
+import org.cytoscape.io.CyFileFilter;
+import org.cytoscape.model.CyTable;
+import java.io.File;
+
+
+public class CyTableWriterManagerImpl extends 
AbstractWriterManager<CyTableWriterFactory> 
+       implements CyTableWriterManager {
+
+       public CyTableWriterManagerImpl() {
+               super(DataCategory.TABLE);
+       }
+
+       public CyWriter getWriter(CyTable table, CyFileFilter filter, File 
outFile) {
+               CyTableWriterFactory tf = getMatchingFactory(filter,outFile);
+               if ( tf == null )
+                       throw new NullPointerException("Couldn't find matching 
factory for filter: " + filter);
+               tf.setTable(table);
+               return tf.getWriter();
+       }
+}

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