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.