Author: pwang
Date: 2010-08-17 17:12:19 -0700 (Tue, 17 Aug 2010)
New Revision: 21430

Added:
   
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/AbstractNetworkViewProducer.java
   
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/CyNetworkViewProducerFactoryImpl.java
   
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/CyNetworkViewProducerManagerImpl.java
Log:
Original creation

Added: 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/AbstractNetworkViewProducer.java
===================================================================
--- 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/AbstractNetworkViewProducer.java
                           (rev 0)
+++ 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/AbstractNetworkViewProducer.java
   2010-08-18 00:12:19 UTC (rev 21430)
@@ -0,0 +1,67 @@
+package org.cytoscape.io.internal.read;
+
+import java.io.InputStream;
+import java.io.IOException;
+
+import org.cytoscape.io.read.CyNetworkViewProducer;
+import org.cytoscape.view.model.CyNetworkView;
+import org.cytoscape.view.vizmap.VisualStyle;
+import org.cytoscape.view.layout.CyLayouts;
+import org.cytoscape.model.CyNetworkFactory;
+import org.cytoscape.view.model.CyNetworkViewFactory;
+
+
+public abstract class AbstractNetworkViewProducer implements 
CyNetworkViewProducer{
+
+       protected static final String NODE_NAME_ATTR_LABEL = "name";
+       protected CyNetworkView[] cyNetworkViews;
+       protected VisualStyle[] visualstyles;
+       protected boolean cancel = false;
+       protected InputStream inputStream;
+       protected CyNetworkFactory cyNetworkFactory;
+       protected CyNetworkViewFactory cyNetworkViewFactory;
+
+       protected CyLayouts layouts;
+
+       public CyNetworkView[] getNetworkViews(){
+               return cyNetworkViews;
+       }
+
+       public VisualStyle[] getVisualStyles() {
+               return visualstyles;
+       }
+       
+       public void setInputStream(InputStream is) {
+               if (is == null)
+                       throw new NullPointerException("Input stream is null");
+               inputStream = is;
+               cancel = false;
+       }
+
+       public void setCyNetworkFactory(CyNetworkFactory cyNetworkFactory) {
+               this.cyNetworkFactory = cyNetworkFactory;
+       }
+
+       public void setCyNetworkViewFactory(CyNetworkViewFactory 
cyNetworkViewFactory) {
+               this.cyNetworkViewFactory = cyNetworkViewFactory;
+       }
+
+       public void setLayouts(CyLayouts layouts) {
+               this.layouts = layouts;
+       }
+
+       public void cancel()
+       {
+               if (cancel)
+                       throw new 
IllegalStateException("AbstractNetworkViewProducer has already been cancelled");
+
+               cancel = true;
+               try
+               {
+                       inputStream.close();
+               }
+               catch (IOException e) {}
+               inputStream = null;
+       }
+       
+}

Added: 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/CyNetworkViewProducerFactoryImpl.java
===================================================================
--- 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/CyNetworkViewProducerFactoryImpl.java
                              (rev 0)
+++ 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/CyNetworkViewProducerFactoryImpl.java
      2010-08-18 00:12:19 UTC (rev 21430)
@@ -0,0 +1,71 @@
+package org.cytoscape.io.internal.read;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.Proxy;
+import java.net.URI;
+
+import org.cytoscape.io.CyFileFilter;
+import org.cytoscape.io.read.CyNetworkViewProducer;
+import org.cytoscape.io.read.CyNetworkViewProducerFactory;
+import org.cytoscape.io.util.StreamUtil;
+
+public class CyNetworkViewProducerFactoryImpl implements 
CyNetworkViewProducerFactory {
+
+       private CyFileFilter filter;
+       private CyNetworkViewProducer producer;
+       private StreamUtil streamUtil;
+       private InputStream is;
+       
+       // This should be an OSGi service.
+       private Proxy proxy;
+
+       public CyNetworkViewProducerFactoryImpl(CyFileFilter filter, 
CyNetworkViewProducer producer, StreamUtil streamUtil)
+                       throws IllegalArgumentException {
+               this.filter = filter;
+               this.producer = producer;
+
+               if (this.producer == null) {
+                       throw new IllegalArgumentException("Reader cannot be 
null.");
+               } else if (this.producer == null) {
+                       throw new IllegalArgumentException("CyFileFilter cannot 
be null.");
+               }
+               this.streamUtil = streamUtil;
+       }
+
+       public void setProxy(Proxy proxy) {
+               this.proxy = proxy;
+       }
+
+       public CyNetworkViewProducer getTask(){
+               ///?????
+               return null;
+       }
+       public void setInputStream(InputStream is) {
+               //????
+               this.is = is;
+       }
+
+       
+       /**
+        * Gets Graph Reader.
+        * 
+        * @param fileName
+        *            File name.
+        * @return GraphReader Object.
+        * @throws IOException
+        */
+       public CyNetworkViewProducer getNetworkViewProducer(URI uri) throws 
IOException {
+               InputStream is = streamUtil.getInputStream(uri.toURL());
+               return getNetworkViewProducer(is);
+       }
+
+       public CyNetworkViewProducer getNetworkViewProducer(InputStream stream) 
throws IOException {
+               producer.setInputStream(stream);
+               return producer;
+       }
+
+       public CyFileFilter getCyFileFilter() {
+               return filter;
+       }
+}

Added: 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/CyNetworkViewProducerManagerImpl.java
===================================================================
--- 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/CyNetworkViewProducerManagerImpl.java
                              (rev 0)
+++ 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/CyNetworkViewProducerManagerImpl.java
      2010-08-18 00:12:19 UTC (rev 21430)
@@ -0,0 +1,149 @@
+package org.cytoscape.io.internal.read;
+
+import java.io.InputStream;
+import java.net.URI;
+import java.util.Map;
+import java.util.Set;
+import java.util.HashSet;
+import java.io.IOException;
+
+import org.cytoscape.io.read.CyNetworkViewProducer;
+import org.cytoscape.io.read.CyNetworkViewProducerFactory;
+import org.cytoscape.io.read.CyNetworkViewProducerManager;
+import org.cytoscape.io.CyFileFilter;
+import org.cytoscape.io.DataCategory;
+
+public class CyNetworkViewProducerManagerImpl implements 
CyNetworkViewProducerManager{
+
+       private DataCategory category = DataCategory.NETWORK;
+       
+       /*
+        * Not generic because Spring does not support it now.
+        */
+       @SuppressWarnings("unchecked")
+       public void addInputStreamFactory(CyNetworkViewProducerFactory factory, 
Map props){
+               
+       }
+
+       @SuppressWarnings("unchecked")
+       public void removeInputStreamFactory(CyNetworkViewProducerFactory 
factory, Map props){
+               
+       }
+
+       
+       //////////////////
+
+       private Set<CyNetworkViewProducerFactory> factories;
+
+       /**
+        * Constructor.
+        */
+       public CyNetworkViewProducerManagerImpl() {
+               factories = new HashSet<CyNetworkViewProducerFactory>();
+       }
+
+       /**
+        * Listener for OSGi service
+        * 
+        * @param factory
+        * @param props
+        */
+       @SuppressWarnings("unchecked")
+       public void addNetworkViewProducerFactory(CyNetworkViewProducerFactory 
factory, Map props) {
+               factories.add(factory);
+       }
+
+       /**
+        * Listener for OSGi service
+        * 
+        * @param factory
+        * @param props
+        */
+       @SuppressWarnings("unchecked")
+       public void 
removeNetworkViewProducerFactory(CyNetworkViewProducerFactory factory, Map 
props) {
+               factories.remove(factory);
+       }
+
+       /**
+        * Gets the GraphReader that is capable of reading the specified file.
+        * 
+        * @param fileName
+        *            File name or null if no reader is capable of reading the 
file.
+        * @return GraphReader capable of reading the specified file.
+        */
+       public CyNetworkViewProducer getProducer(URI fileLocation)
+                       throws IllegalArgumentException {
+               return getProducer(fileLocation, null);
+       }
+
+       public CyNetworkViewProducer getProducer(InputStream stream)
+                       throws IllegalArgumentException {
+               return getProducer(null, stream);
+       }
+
+       private CyNetworkViewProducer getProducer(URI uri, InputStream stream) {
+
+               CyFileFilter cff;
+               CyNetworkViewProducer networkViewProducer = null;
+
+
+               for (CyNetworkViewProducerFactory factory : factories) {
+                       
+                       System.out.println("Checking factory ################# 
" + factory.getCyFileFilter().getDescription());
+                       
+                       
+                       cff = factory.getCyFileFilter();
+
+                       if (uri != null) {
+                               
+                               boolean accept = false;
+                               try
+                               {
+                                       accept = cff.accept(uri, category);
+                               }
+                               catch (IOException e)
+                               {
+                                       throw new 
IllegalArgumentException("Failed to check file's contents: " + uri.toString(), 
e);
+                               }
+                               if (accept)
+                               {
+                                       try
+                                       {
+                                               networkViewProducer = 
factory.getNetworkViewProducer(uri);
+                                       }
+                                       catch (IOException e)
+                                       {
+                                               throw new 
IllegalArgumentException("Could not get proper reader for the file.", e);
+                                       }
+                               }
+                       } else {
+                               System.out.println("################# " + 
cff.getClass());
+                               //if (cff.accept(stream, category))
+                               try
+                               {
+                                       networkViewProducer = 
factory.getNetworkViewProducer(stream);
+                               }
+                               catch (IOException e)
+                               {
+                                       throw new 
IllegalArgumentException("Could not get proper reader for the file.", e);
+                               }
+                       }
+               }
+
+               if (networkViewProducer == null) {
+                       throw new IllegalArgumentException("File type is not 
supported.");
+               }
+
+               return networkViewProducer;
+
+       }
+
+       
+       
+       
+       
+       
+       
+       
+       
+}

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