Author: mes
Date: 2010-08-20 14:43:30 -0700 (Fri, 20 Aug 2010)
New Revision: 21504

Added:
   
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/sif/SIFNetworkViewProducer.java
   
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/sif/SIFNetworkViewProducerFactory.java
   core3/io-impl/trunk/src/test/java/org/cytoscape/io/internal/read/sif/
   
core3/io-impl/trunk/src/test/java/org/cytoscape/io/internal/read/sif/InteractionTest.java
   
core3/io-impl/trunk/src/test/java/org/cytoscape/io/internal/read/sif/SIFNetworkViewProducerTest.java
   core3/io-impl/trunk/src/test/resources/testData/sif/
   core3/io-impl/trunk/src/test/resources/testData/sif/degenerate.sif
   core3/io-impl/trunk/src/test/resources/testData/sif/multiWordProteins.sif
   
core3/io-impl/trunk/src/test/resources/testData/sif/multiWordProteinsFileTrailingSpaces.sif
   core3/io-impl/trunk/src/test/resources/testData/sif/sample.sif
Removed:
   
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/sif/SIFNetwotkViewProducer.java
   
core3/io-impl/trunk/src/test/java/org/cytoscape/io/internal/BeanIntegrationTest.java
   core3/io-impl/trunk/src/test/java/org/cytoscape/io/read/
Modified:
   core3/io-impl/trunk/pom.xml
   
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/CyNetworkViewProducerManagerImpl.java
   
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/sif/Interaction.java
   
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/xgmml/XGMMLNetworkViewProducer.java
   core3/io-impl/trunk/src/main/resources/META-INF/spring/bundle-context.xml
Log:
fixed things to work propertly with new api

Modified: core3/io-impl/trunk/pom.xml
===================================================================
--- core3/io-impl/trunk/pom.xml 2010-08-20 21:41:59 UTC (rev 21503)
+++ core3/io-impl/trunk/pom.xml 2010-08-20 21:43:30 UTC (rev 21504)
@@ -218,13 +218,29 @@
                        <artifactId>work-api</artifactId>
                        <version>1.0-SNAPSHOT</version>
                </dependency>
-
                <dependency>
                        <groupId>org.cytoscape</groupId>
+                       <artifactId>core-task-api</artifactId>
+                       <version>1.0-SNAPSHOT</version>
+               </dependency>
+               <dependency>
+                       <groupId>org.cytoscape</groupId>
                        <artifactId>session-api</artifactId>
                        <version>1.0-SNAPSHOT</version>
                        <scope>provided</scope>
                </dependency>
+               <dependency>
+                       <groupId>org.cytoscape</groupId>
+                       <artifactId>test-support</artifactId>
+                       <version>1.0-SNAPSHOT</version>
+                       <scope>test</scope>
+               </dependency>
+    <dependency>
+      <groupId>org.mockito</groupId>
+      <artifactId>mockito-all</artifactId>
+      <version>1.8.1</version>
+      <scope>test</scope>
+    </dependency>
        </dependencies>
 
 </project>

Modified: 
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
   2010-08-20 21:41:59 UTC (rev 21503)
+++ 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/AbstractNetworkViewProducer.java
   2010-08-20 21:43:30 UTC (rev 21504)
@@ -5,63 +5,40 @@
 
 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;
+import org.cytoscape.model.CyNetworkFactory;
+import org.cytoscape.view.vizmap.VisualStyle;
+import org.cytoscape.task.AbstractTask;
 
 
-public abstract class AbstractNetworkViewProducer implements 
CyNetworkViewProducer{
+public abstract class AbstractNetworkViewProducer extends AbstractTask
+       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;
+    protected final CyNetworkViewFactory cyNetworkViewFactory;
+    protected final CyNetworkFactory cyNetworkFactory;
 
-       public CyNetworkView[] getNetworkViews() {
-               return cyNetworkViews;
-       }
+       // TODO this should come from model-api
+       public static final String NODE_NAME_ATTR_LABEL = "name";
 
-       public VisualStyle[] getVisualStyles() {
-               return visualstyles;
-       }
-       
-       public void setInputStream(InputStream is) {
-               if (is == null)
+       public AbstractNetworkViewProducer(InputStream inputStream, 
+                                          CyNetworkViewFactory 
cyNetworkViewFactory, 
+                                       CyNetworkFactory cyNetworkFactory) {
+               if (inputStream == null)
                        throw new NullPointerException("Input stream is null");
-               inputStream = is;
-               cancel = false;
-       }
-
-       public void setCyNetworkFactory(CyNetworkFactory cyNetworkFactory) {
+               this.inputStream = inputStream;
+               this.cyNetworkViewFactory = cyNetworkViewFactory;
                this.cyNetworkFactory = cyNetworkFactory;
        }
 
-       public void setCyNetworkViewFactory(CyNetworkViewFactory 
cyNetworkViewFactory) {
-               this.cyNetworkViewFactory = cyNetworkViewFactory;
+       public CyNetworkView[] getNetworkViews() {
+               return cyNetworkViews;
        }
 
-       public void setLayouts(CyLayouts layouts) {
-               this.layouts = layouts;
+       public VisualStyle[] getVisualStyles() {
+               return visualstyles;
        }
-
-       public void cancel()
-       {
-               if (cancel)
-                       throw new 
IllegalStateException("AbstractNetworkViewProducer has already been cancelled");
-
-               cancel = true;
-               try
-               {
-                       inputStream.close();
-               }
-               catch (IOException e) {}
-               inputStream = null;
-       }
-       
 }

Deleted: 
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
      2010-08-20 21:41:59 UTC (rev 21503)
+++ 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/CyNetworkViewProducerFactoryImpl.java
      2010-08-20 21:43:30 UTC (rev 21504)
@@ -1,71 +0,0 @@
-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;
-       }
-}

Modified: 
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
      2010-08-20 21:41:59 UTC (rev 21503)
+++ 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/CyNetworkViewProducerManagerImpl.java
      2010-08-20 21:43:30 UTC (rev 21504)
@@ -13,36 +13,17 @@
 import org.cytoscape.io.CyFileFilter;
 import org.cytoscape.io.DataCategory;
 
+import org.slf4j.LoggerFactory;
+import org.slf4j.Logger;
+
 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){
-               
-       }
+       private final DataCategory category = DataCategory.NETWORK;
+       private final Set<CyNetworkViewProducerFactory> factories = 
+               new HashSet<CyNetworkViewProducerFactory>();
+       private final Logger logger = 
LoggerFactory.getLogger(CyNetworkViewProducerManagerImpl.class); 
 
-       @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
@@ -71,79 +52,50 @@
         *            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;
-
-
+       public CyNetworkViewProducer getProducer(URI uri) {
                for (CyNetworkViewProducerFactory factory : factories) {
                        
-                       System.out.println("Checking factory ################# 
" + factory.getCyFileFilter().getDescription());
-                       
-                       
-                       cff = factory.getCyFileFilter();
+                       CyFileFilter cff = factory.getCyFileFilter();
 
                        if (uri != null) {
                                
                                boolean accept = false;
-                               try
-                               {
+                               try {
                                        accept = cff.accept(uri, category);
+                               } catch (IOException e) {
+                                       logger.warn("Failed to check file's 
contents: " + uri.toString(), e);
                                }
-                               catch (IOException e)
-                               {
-                                       throw new 
IllegalArgumentException("Failed to check file's contents: " + uri.toString(), 
e);
-                               }
-                               if (accept)
-                               {
-                                       try
-                                       {
-                                               networkViewProducer = 
factory.getNetworkViewProducer(uri);
+
+                               if (accept) {
+                                       try {
+                                               factory.setInputStream( 
uri.toURL().openStream() );
+                                               return factory.getTask();
+                                       } catch (IOException e) {
+                                               logger.error("Could not get 
proper reader for the file: " + uri.toString(), e);
                                        }
-                                       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.");
-               }
-               
-               System.out.println("### Producer found: " + 
networkViewProducer);
-               return networkViewProducer;
+               return null;
        }
 
-       
-       
-       
-       
-       
-       
-       
-       
+       public CyNetworkViewProducer getProducer(InputStream stream) {
+
+               for (CyNetworkViewProducerFactory factory : factories) {
+                       
+                       CyFileFilter cff = factory.getCyFileFilter();
+
+                       try {
+                               if (cff.accept(stream, category)) {
+                                       factory.setInputStream(stream);
+                                       return factory.getTask();       
+                               }
+                       } catch (IOException e) {
+                               logger.warn("Failed to check streams's 
contents: ", e);
+                       }
+               }
+
+               return null;
+       }
 }

Modified: 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/sif/Interaction.java
===================================================================
--- 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/sif/Interaction.java
       2010-08-20 21:41:59 UTC (rev 21503)
+++ 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/sif/Interaction.java
       2010-08-20 21:43:30 UTC (rev 21504)
@@ -43,7 +43,7 @@
 /**
  * Utility class for representing one line of SIF file.
  */
-public class Interaction {
+class Interaction {
 
        private String source;
        private List<String> targets = new ArrayList<String>();
@@ -57,7 +57,7 @@
         * @param delimiter
         *            DOCUMENT ME!
         */
-       public Interaction(final String rawText, final String delimiter) {
+       Interaction(final String rawText, final String delimiter) {
                final StringTokenizer strtok = new StringTokenizer(rawText, 
delimiter);
                int counter = 0;
 

Added: 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/sif/SIFNetworkViewProducer.java
===================================================================
--- 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/sif/SIFNetworkViewProducer.java
                            (rev 0)
+++ 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/sif/SIFNetworkViewProducer.java
    2010-08-20 21:43:30 UTC (rev 21504)
@@ -0,0 +1,179 @@
+/*
+ Copyright (c) 2006, The Cytoscape Consortium (www.cytoscape.org)
+
+ The Cytoscape Consortium is:
+ - Institute for Systems Biology
+ - University of California San Diego
+ - Memorial Sloan-Kettering Cancer Center
+ - Institut Pasteur
+ - Agilent Technologies
+
+ This library is free software; you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 2.1 of the License, or
+ any later version.
+
+ This library is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF
+ MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  The software and
+ documentation provided hereunder is on an "as is" basis, and the
+ Institute for Systems Biology and the Whitehead Institute
+ have no obligations to provide maintenance, support,
+ updates, enhancements or modifications.  In no event shall the
+ Institute for Systems Biology and the Whitehead Institute
+ be liable to any party for direct, indirect, special,
+ incidental or consequential damages, including lost profits, arising
+ out of the use of this software and its documentation, even if the
+ Institute for Systems Biology and the Whitehead Institute
+ have been advised of the possibility of such damage.  See
+ the GNU Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this library; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ */
+
+package org.cytoscape.io.internal.read.sif;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+import org.cytoscape.io.internal.util.ReadUtils;
+import org.cytoscape.io.internal.read.AbstractNetworkViewProducer;
+import org.cytoscape.model.CyEdge;
+import org.cytoscape.model.CyNetwork;
+import org.cytoscape.model.CyNode;
+import org.cytoscape.model.CyNetworkFactory;
+import org.cytoscape.view.model.CyNetworkView;
+import org.cytoscape.view.model.CyNetworkViewFactory;
+import org.cytoscape.work.TaskMonitor;
+import org.cytoscape.view.layout.CyLayouts;
+
+/**
+ * Reader for graphs in the interactions file format. Given the filename,
+ * provides the graph and attributes objects constructed from the file.
+ */
+public class SIFNetworkViewProducer extends AbstractNetworkViewProducer {
+
+       private static final String DEF_DELIMITER = " ";
+       private static final String LINE_SEP = 
System.getProperty("line.separator");
+       private static final String INTERACTION = "interaction";
+
+       private final Set<Interaction> interactions = new 
HashSet<Interaction>();
+       private final ReadUtils readUtil;
+       private final CyLayouts layouts;
+
+       public SIFNetworkViewProducer(InputStream is, ReadUtils readUtil, 
CyLayouts layouts, CyNetworkViewFactory cyNetworkViewFactory, CyNetworkFactory 
cyNetworkFactory) {
+               super(is,cyNetworkViewFactory, cyNetworkFactory);
+               this.readUtil = readUtil;
+               this.layouts = layouts;
+       }
+
+       public void run(TaskMonitor tm) throws IOException {
+               try {
+                       readInput(tm);
+                       createNetwork(tm);
+               } finally { 
+                       if (inputStream != null) {
+                               inputStream.close();
+                               inputStream = null;
+                       }
+               }
+       }
+
+       private void readInput(TaskMonitor tm) throws IOException {
+               tm.setProgress(0.00);
+               String delimiter = DEF_DELIMITER;
+
+               final String rawText = readUtil.getInputString(inputStream);
+
+               tm.setProgress(0.10);
+               if (rawText.indexOf("\t") >= 0)
+                       delimiter = "\t";
+
+               final String[] lines = rawText.split(LINE_SEP);
+
+               tm.setProgress(0.15);
+               final int size = lines.length;
+               for (int i = 0; i < size; i++) {
+                       if (lines[i].length() <= 0)
+                               continue;
+                       interactions.add(new Interaction(lines[i], delimiter));
+               }
+               tm.setProgress(0.20);
+       }
+
+       private void createNetwork(TaskMonitor tm) {
+               
+               final CyNetwork network = cyNetworkFactory.getInstance();
+               
+               Map<String, CyNode> nodeMap = new HashMap<String, CyNode>();
+
+               // put all node names in the Set
+               for (Interaction interaction : interactions) {
+                       nodeMap.put(interaction.getSource(), null);
+                       for (String target : interaction.getTargets())
+                               nodeMap.put(target, null);
+               }
+
+               tm.setProgress(0.25);
+                               
+               for (String nodeName : nodeMap.keySet()) {
+                       if (cancelTask){
+                               return;
+                       }
+
+                       //tm.setProgress(progress);
+                       
+                       CyNode node = network.addNode();
+                       node.attrs().set(NODE_NAME_ATTR_LABEL, nodeName);
+                       nodeMap.put(nodeName, node);
+               }
+
+               tm.setProgress(0.65);
+               
+               // Now loop over the interactions again, this time creating 
edges
+               // between
+               // all sources and each of their respective targets.
+               String srcName;
+               String interactionType;
+               CyEdge edge;
+               
+               for (Interaction interaction : interactions) {
+
+                       if (cancelTask){
+                               return;
+                       }
+
+                       //tm.setProgress(progress);
+
+                       srcName = interaction.getSource();
+                       interactionType = interaction.getType();
+
+                       for (String tgtName : interaction.getTargets()) {
+                               edge = network.addEdge(nodeMap.get(srcName), 
nodeMap
+                                               .get(tgtName), true);
+                               edge.attrs().set(NODE_NAME_ATTR_LABEL,
+                                               srcName + " (" + 
interactionType + ") " + tgtName);
+                               edge.attrs().set(INTERACTION, interactionType);
+                       }
+               }
+
+               tm.setProgress(0.90);
+               
+               final CyNetworkView view = 
cyNetworkViewFactory.getNetworkView(network);
+               layouts.getDefaultLayout().doLayout(view);
+               
+               // SIF always creates only one network.
+               this.cyNetworkViews = new CyNetworkView[] { view };
+               
+               nodeMap.clear();
+               nodeMap = null;
+
+               tm.setProgress(1.0);
+       }
+}

Added: 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/sif/SIFNetworkViewProducerFactory.java
===================================================================
--- 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/sif/SIFNetworkViewProducerFactory.java
                             (rev 0)
+++ 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/sif/SIFNetworkViewProducerFactory.java
     2010-08-20 21:43:30 UTC (rev 21504)
@@ -0,0 +1,91 @@
+/*
+ Copyright (c) 2006, The Cytoscape Consortium (www.cytoscape.org)
+
+ The Cytoscape Consortium is:
+ - Institute for Systems Biology
+ - University of California San Diego
+ - Memorial Sloan-Kettering Cancer Center
+ - Institut Pasteur
+ - Agilent Technologies
+
+ This library is free software; you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 2.1 of the License, or
+ any later version.
+
+ This library is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF
+ MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  The software and
+ documentation provided hereunder is on an "as is" basis, and the
+ Institute for Systems Biology and the Whitehead Institute
+ have no obligations to provide maintenance, support,
+ updates, enhancements or modifications.  In no event shall the
+ Institute for Systems Biology and the Whitehead Institute
+ be liable to any party for direct, indirect, special,
+ incidental or consequential damages, including lost profits, arising
+ out of the use of this software and its documentation, even if the
+ Institute for Systems Biology and the Whitehead Institute
+ have been advised of the possibility of such damage.  See
+ the GNU Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this library; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ */
+
+package org.cytoscape.io.internal.read.sif;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import org.cytoscape.io.internal.util.ReadUtils;
+import org.cytoscape.io.read.CyNetworkViewProducer;
+import org.cytoscape.io.read.CyNetworkViewProducerFactory;
+import org.cytoscape.io.CyFileFilter;
+import org.cytoscape.model.CyEdge;
+import org.cytoscape.model.CyNetwork;
+import org.cytoscape.model.CyNetworkFactory;
+import org.cytoscape.model.CyNode;
+import org.cytoscape.view.model.CyNetworkView;
+import org.cytoscape.view.model.CyNetworkViewFactory;
+import org.cytoscape.view.layout.CyLayouts;
+
+/**
+ */
+public class SIFNetworkViewProducerFactory implements 
CyNetworkViewProducerFactory {
+
+       private final ReadUtils readUtil;
+       private final CyFileFilter filter;
+       private final CyLayouts layouts;
+       private final CyNetworkViewFactory cyNetworkViewFactory;
+       private final CyNetworkFactory cyNetworkFactory;
+
+       private InputStream inputStream;
+
+       public SIFNetworkViewProducerFactory(ReadUtils readUtil, 
+                                            CyFileFilter filter, 
+                                            CyLayouts layouts, 
+                                            CyNetworkViewFactory 
cyNetworkViewFactory, 
+                                            CyNetworkFactory cyNetworkFactory) 
{
+               this.readUtil = readUtil;
+               this.filter = filter;
+               this.layouts = layouts;
+               this.cyNetworkViewFactory = cyNetworkViewFactory;
+               this.cyNetworkFactory = cyNetworkFactory;
+       }
+
+       public void setInputStream(InputStream is) {
+               if ( is == null )
+                       throw new NullPointerException("Input stream is null");
+               inputStream = is;
+       }
+
+       public CyNetworkViewProducer getTask() {
+               return new SIFNetworkViewProducer(inputStream, readUtil, 
layouts, 
+                                                 cyNetworkViewFactory, 
cyNetworkFactory);
+       }
+
+       public CyFileFilter getCyFileFilter() {
+               return filter;
+       }
+}

Deleted: 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/sif/SIFNetwotkViewProducer.java
===================================================================
--- 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/sif/SIFNetwotkViewProducer.java
    2010-08-20 21:41:59 UTC (rev 21503)
+++ 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/sif/SIFNetwotkViewProducer.java
    2010-08-20 21:43:30 UTC (rev 21504)
@@ -1,182 +0,0 @@
-/*
- File: InteractionsReader.java
-
- Copyright (c) 2006, The Cytoscape Consortium (www.cytoscape.org)
-
- The Cytoscape Consortium is:
- - Institute for Systems Biology
- - University of California San Diego
- - Memorial Sloan-Kettering Cancer Center
- - Institut Pasteur
- - Agilent Technologies
-
- This library is free software; you can redistribute it and/or modify it
- under the terms of the GNU Lesser General Public License as published
- by the Free Software Foundation; either version 2.1 of the License, or
- any later version.
-
- This library is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF
- MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  The software and
- documentation provided hereunder is on an "as is" basis, and the
- Institute for Systems Biology and the Whitehead Institute
- have no obligations to provide maintenance, support,
- updates, enhancements or modifications.  In no event shall the
- Institute for Systems Biology and the Whitehead Institute
- be liable to any party for direct, indirect, special,
- incidental or consequential damages, including lost profits, arising
- out of the use of this software and its documentation, even if the
- Institute for Systems Biology and the Whitehead Institute
- have been advised of the possibility of such damage.  See
- the GNU Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public License
- along with this library; if not, write to the Free Software Foundation,
- Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
- */
-
-package org.cytoscape.io.internal.read.sif;
-
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-
-import org.cytoscape.io.internal.util.ReadUtils;
-import org.cytoscape.io.internal.read.AbstractNetworkViewProducer;
-import org.cytoscape.model.CyEdge;
-import org.cytoscape.model.CyNetwork;
-import org.cytoscape.model.CyNode;
-import org.cytoscape.view.model.CyNetworkView;
-import org.cytoscape.work.TaskMonitor;
-
-/**
- * Reader for graphs in the interactions file format. Given the filename,
- * provides the graph and attributes objects constructed from the file.
- */
-public class SIFNetwotkViewProducer extends AbstractNetworkViewProducer {
-
-       private static final String DEF_DELIMITER = " ";
-       private static final String LINE_SEP = 
System.getProperty("line.separator");
-       private static final String INTERACTION = "interaction";
-       private ReadUtils readUtil;
-       private Set<Interaction> interactions;
-
-       public SIFNetwotkViewProducer(ReadUtils readUtil) {
-               super();
-               this.interactions = new HashSet<Interaction>();
-               this.readUtil = readUtil;
-       }
-
-       public void run(TaskMonitor tm) throws IOException {
-               refresh();
-
-               String delimiter = DEF_DELIMITER;
-
-               final String rawText = readUtil.getInputString(inputStream);
-
-               if (rawText.indexOf("\t") >= 0)
-                       delimiter = "\t";
-
-               final String[] lines = rawText.split(LINE_SEP);
-
-               final int size = lines.length;
-               for (int i = 0; i < size; i++) {
-                       if (lines[i].length() <= 0)
-                               continue;
-                       interactions.add(new Interaction(lines[i], delimiter));
-               }
-
-               if (inputStream != null) {
-                       inputStream.close();
-                       inputStream = null;
-               }
-
-               createNetwork(tm);
-       }
-
-
-       private void refresh() {
-               interactions.clear();
-               interactions = new HashSet<Interaction>();
-               this.cyNetworkViews = null;
-       }
-       
-       private void createNetwork(TaskMonitor tm) {
-
-               double progress = 0.01;
-               
-               final CyNetwork network = cyNetworkFactory.getInstance();
-               
-               Map<String, CyNode> nodeMap = new HashMap<String, CyNode>();
-
-               // put all node names in the Set
-               for (Interaction interaction : interactions) {
-                       nodeMap.put(interaction.getSource(), null);
-                       for (String target : interaction.getTargets())
-                               nodeMap.put(target, null);
-               }
-
-               tm.setProgress(0.05);
-                               
-               CyNode node;
-               for (String nodeName : nodeMap.keySet()) {
-                       if (this.cancel){
-                               return;
-                       }
-
-                       //progress = (??)/nodeCount;
-                       tm.setProgress(progress);
-                       
-                       node = network.addNode();
-                       node.attrs().set(NODE_NAME_ATTR_LABEL, nodeName);
-                       nodeMap.put(nodeName, node);
-               }
-
-               tm.setProgress(0.20);
-               
-               // Now loop over the interactions again, this time creating 
edges
-               // between
-               // all sources and each of their respective targets.
-               String srcName;
-               String interactionType;
-               CyEdge edge;
-               
-               for (Interaction interaction : interactions) {
-
-                       if (this.cancel){
-                               return;
-                       }
-                       //progress = (??)/edgeCount;
-                       tm.setProgress(progress);
-
-                       srcName = interaction.getSource();
-                       interactionType = interaction.getType();
-
-                       for (String tgtName : interaction.getTargets()) {
-                               edge = network.addEdge(nodeMap.get(srcName), 
nodeMap
-                                               .get(tgtName), true);
-                               edge.attrs().set(NODE_NAME_ATTR_LABEL,
-                                               srcName + " (" + 
interactionType + ") " + tgtName);
-                               edge.attrs().set(INTERACTION, interactionType);
-                       }
-               }
-
-               tm.setProgress(0.90);
-               
-               final CyNetworkView view = 
cyNetworkViewFactory.getNetworkView(network);
-               layouts.getDefaultLayout().doLayout(view);
-               
-               // SIF always creates only one network.
-               this.cyNetworkViews = new CyNetworkView[1];             
-               this.cyNetworkViews[0] = view;
-
-               tm.setProgress(0.99);
-               
-               nodeMap.clear();
-               nodeMap = null;
-
-       }
-       
-}

Modified: 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/xgmml/XGMMLNetworkViewProducer.java
===================================================================
--- 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/xgmml/XGMMLNetworkViewProducer.java
        2010-08-20 21:41:59 UTC (rev 21503)
+++ 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/xgmml/XGMMLNetworkViewProducer.java
        2010-08-20 21:43:30 UTC (rev 21504)
@@ -90,7 +90,7 @@
         * Constructor.
         */
        public XGMMLNetworkViewProducer() {
-               super();
+               super(null,null,null);
        }
 
        public void run(TaskMonitor tm) throws IOException {

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   
2010-08-20 21:41:59 UTC (rev 21503)
+++ core3/io-impl/trunk/src/main/resources/META-INF/spring/bundle-context.xml   
2010-08-20 21:43:30 UTC (rev 21504)
@@ -25,14 +25,6 @@
        </bean>
 -->
 
-       <bean id="sifNetworkViewProducerFactory" 
class="org.cytoscape.io.internal.read.CyNetworkViewProducerFactoryImpl">
-               <constructor-arg ref="sifFilter" />
-               <constructor-arg ref="sifNetworkViewProducer" />
-               <constructor-arg type="org.cytoscape.io.util.StreamUtil">
-                       <ref bean="streamUtil"/>
-               </constructor-arg>
-       </bean>
-
        <bean id="xgmmlNetworkViewProducerFactory" 
class="org.cytoscape.io.internal.read.CyNetworkViewProducerFactoryImpl">
                <constructor-arg ref="xgmmlFilter" />
                <constructor-arg ref="xgmmlReader" />
@@ -104,11 +96,12 @@
        </bean>
 
        <!-- Network Readers -->
-       <bean id="sifNetworkViewProducer" 
class="org.cytoscape.io.internal.read.sif.SIFNetwotkViewProducer">
+       <bean id="sifNetworkViewProducerFactory" 
class="org.cytoscape.io.internal.read.sif.SIFNetwotkViewProducerFactory">
                <constructor-arg ref="readUtil" />
-               <property name="cyNetworkFactory" 
ref="cyNetworkFactoryServiceRef" />
-               <property name="cyNetworkViewFactory" 
ref="cyNetworkViewFactoryServiceRef" />
-               <property name="layouts" ref="cyLayoutsServiceRef" />
+               <constructor-arg ref="sifFilter" />
+               <constructor-arg ref="cyLayoutsServiceRef" />
+               <constructor-arg ref="cyNetworkViewFactoryServiceRef" />
+               <constructor-arg ref="cyNetworkFactoryServiceRef" />
        </bean>
 
 

Deleted: 
core3/io-impl/trunk/src/test/java/org/cytoscape/io/internal/BeanIntegrationTest.java
===================================================================
--- 
core3/io-impl/trunk/src/test/java/org/cytoscape/io/internal/BeanIntegrationTest.java
        2010-08-20 21:41:59 UTC (rev 21503)
+++ 
core3/io-impl/trunk/src/test/java/org/cytoscape/io/internal/BeanIntegrationTest.java
        2010-08-20 21:43:30 UTC (rev 21504)
@@ -1,112 +0,0 @@
-package org.cytoscape.io.internal;
-
-import static org.easymock.EasyMock.*;
-import static org.junit.Assert.assertEquals;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.URI;
-import java.net.URL;
-
-import org.cytoscape.io.CyFileFilter;
-import org.cytoscape.io.DataCategory;
-//import org.cytoscape.io.read.CyReader;
-//import org.cytoscape.io.read.CyReaderFactory;
-//import org.cytoscape.io.read.CyReaderManager;
-//import org.cytoscape.io.internal.read.AbstractNetworkReader;
-//import org.cytoscape.io.internal.read.sif.InteractionsReader;
-//import org.cytoscape.io.internal.read.xgmml.XGMMLReader;
-import org.cytoscape.model.CyNetworkFactory;
-import org.cytoscape.view.model.CyNetworkViewFactory;
-import org.junit.Before;
-import org.junit.Test;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.test.context.ContextConfiguration;
-import 
org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests;
-
-
-/**
- * Integration test the bundle locally (outside of OSGi). Use AbstractOsgiTests
- * and a separate integration test project for testing inside of OSGi.
- */
-//@ContextConfiguration(locations = 
"classpath:META-INF/spring/bundle-context.xml")
-//public class BeanIntegrationTest extends AbstractJUnit4SpringContextTests {
-public class BeanIntegrationTest {
-
-//     @Autowired
-//     private CyReaderManager manager;
-       
-//     private CyReader sifReader;
-//     private CyReader xgmmlReader;
-       
-       private CyNetworkFactory factoryMock;
-       private CyNetworkViewFactory viewFactoryMock;
-
-       private CyFileFilter sifFilter;
-       
-       //private CyReaderFactory sifFactory;
-       
-       private URI sifFileLocation;
-       private URL xgmmlFile;
-       private URL xgmmlURL;
-       
-       //private CyReaderFactory xgmmlFactory;
-       
-
-       @Before public void initializeTest1() throws Exception {
-/*             
-               sifFileLocation = new 
URI("http://chianti.ucsd.edu/kono/data/galFiltered.sif";);
-               final File xFile = new 
File("src/test/resources/testData/galFiltered.xgmml");
-               xgmmlURL = new 
URL("http://chianti.ucsd.edu/kono/data/galFiltered.xgmml";);
-               
-               xgmmlFile = xFile.toURI().toURL();
-               sifReader = (CyReader) applicationContext.getBean("sifReader");
-               xgmmlReader = (CyReader) 
applicationContext.getBean("xgmmlReader");
-               sifFilter = (CyFileFilter) 
applicationContext.getBean("sifFilter");
-               sifFactory = (CyReaderFactory) 
applicationContext.getBean("sifReaderFactory");
-               xgmmlFactory = (CyReaderFactory) 
applicationContext.getBean("xgmmlReaderFactory");
-               
-               factoryMock = createMock(CyNetworkFactory.class);
-               viewFactoryMock = createMock(CyNetworkViewFactory.class);
-               
-               expect(factoryMock.getInstance()).andReturn(null).times(2);
-               
-               
-               
((AbstractNetworkReader)sifReader).setCyNetworkFactory(factoryMock);
-               
((AbstractNetworkReader)xgmmlReader).setCyNetworkFactory(factoryMock);
-               
-               System.out.println("--------------------------------------- SIF 
Description = " + sifFilter.getDescription());
-               */
-       }
-
-       
-       /**
-        * Test using mock service objects.
-        * @throws Exception 
-        * @throws IllegalArgumentException 
-        */
-       @Test public void readerManagerTest() throws Exception {
-               System.out.println("--------------------------------------- 
Reader Manager Test Begins");
-               
-/*             
-               // Register factories
-               manager.addReaderFactory(sifFactory, null);
-               manager.addReaderFactory(xgmmlFactory, null);
-               
-//             CyReader reader1 = manager.getReader(sifFileLocation, 
DataCategory.NETWORK);
-               
-//             assertEquals(InteractionsReader.class, reader1.getClass());
-               // TODO these keep returning sif readers - probably because 
CyFileFilters is
-               // broken for input streams.
-               replay(factoryMock);
-               CyReader reader2 = manager.getReader(xgmmlFile.openStream(), 
DataCategory.NETWORK);
-               assertEquals(XGMMLReader.class, reader2.getClass());
-               
-               CyReader reader3 = manager.getReader(xgmmlURL.openStream(), 
DataCategory.NETWORK);
-               assertEquals(XGMMLReader.class, reader3.getClass());
-               verify(factoryMock);
-*/             
-               
-               System.out.println("--------------------------------------- End 
of reader manager test");
-       }
-}

Added: 
core3/io-impl/trunk/src/test/java/org/cytoscape/io/internal/read/sif/InteractionTest.java
===================================================================
--- 
core3/io-impl/trunk/src/test/java/org/cytoscape/io/internal/read/sif/InteractionTest.java
                           (rev 0)
+++ 
core3/io-impl/trunk/src/test/java/org/cytoscape/io/internal/read/sif/InteractionTest.java
   2010-08-20 21:43:30 UTC (rev 21504)
@@ -0,0 +1,94 @@
+/*
+  File: InteractionTest.java
+
+  Copyright (c) 2006, The Cytoscape Consortium (www.cytoscape.org)
+
+  The Cytoscape Consortium is:
+  - Institute for Systems Biology
+  - University of California San Diego
+  - Memorial Sloan-Kettering Cancer Center
+  - Institut Pasteur
+  - Agilent Technologies
+
+  This library is free software; you can redistribute it and/or modify it
+  under the terms of the GNU Lesser General Public License as published
+  by the Free Software Foundation; either version 2.1 of the License, or
+  any later version.
+
+  This library is distributed in the hope that it will be useful, but
+  WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF
+  MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  The software and
+  documentation provided hereunder is on an "as is" basis, and the
+  Institute for Systems Biology and the Whitehead Institute
+  have no obligations to provide maintenance, support,
+  updates, enhancements or modifications.  In no event shall the
+  Institute for Systems Biology and the Whitehead Institute
+  be liable to any party for direct, indirect, special,
+  incidental or consequential damages, including lost profits, arising
+  out of the use of this software and its documentation, even if the
+  Institute for Systems Biology and the Whitehead Institute
+  have been advised of the possibility of such damage.  See
+  the GNU Lesser General Public License for more details.
+
+  You should have received a copy of the GNU Lesser General Public License
+  along with this library; if not, write to the Free Software Foundation,
+  Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+*/
+
+
+package org.cytoscape.io.internal.read.sif;
+
+import static org.junit.Assert.*;
+import org.junit.Test;
+
+public class InteractionTest {
+       private String delim = " ";
+       
+       @Test
+       public void test3ArgCtor() throws Exception {
+
+               String source = "YNL312W";
+               String type = "pd";
+               String target = "YPL111W";
+               String raw = source + " " + type + " " + target;
+
+               Interaction inter0 = new Interaction(raw, delim);
+               assertTrue(inter0.getSource().equals(source));
+               assertTrue(inter0.getType().equals(type));
+               assertTrue(inter0.numberOfTargets() == 1);
+               assertTrue(inter0.getTargets()[0].equals(target));
+       } 
+
+       @Test
+       public void test1ArgCtor() throws Exception {
+
+               String rawText0 = "YNL312W pp YPL111W";
+               Interaction inter0 = new Interaction(rawText0, delim);
+               assertTrue(inter0.getSource().equals("YNL312W"));
+               assertTrue(inter0.getType().equals("pp"));
+               assertTrue(inter0.numberOfTargets() == 1);
+               assertTrue(inter0.getTargets()[0].equals("YPL111W"));
+
+               String rawText1 = "YPL075W pd YDR050C YGR254W YHR174W";
+               Interaction inter1 = new Interaction(rawText1, delim);
+               assertTrue(inter1.getSource().equals("YPL075W"));
+               assertTrue(inter1.getType().equals("pd"));
+               assertTrue(inter1.numberOfTargets() == 3);
+               assertTrue(inter1.getTargets()[0].equals("YDR050C"));
+               assertTrue(inter1.getTargets()[1].equals("YGR254W"));
+               assertTrue(inter1.getTargets()[2].equals("YHR174W"));
+       } 
+
+       /** a degenerate form has -only- a source node:  no interaction type
+        * and no target node
+        */
+       @Test
+       public void test1ArgCtorOnDegenerateFrom() throws Exception {
+               String rawText0 = "YNL312W";
+               Interaction inter0 = new Interaction(rawText0, delim);
+               assertTrue(inter0.getSource().equals("YNL312W"));
+               assertTrue(inter0.getType() == null);
+               assertTrue(inter0.numberOfTargets() == 0);
+       } 
+
+} 

Added: 
core3/io-impl/trunk/src/test/java/org/cytoscape/io/internal/read/sif/SIFNetworkViewProducerTest.java
===================================================================
--- 
core3/io-impl/trunk/src/test/java/org/cytoscape/io/internal/read/sif/SIFNetworkViewProducerTest.java
                                (rev 0)
+++ 
core3/io-impl/trunk/src/test/java/org/cytoscape/io/internal/read/sif/SIFNetworkViewProducerTest.java
        2010-08-20 21:43:30 UTC (rev 21504)
@@ -0,0 +1,160 @@
+package org.cytoscape.io.internal.read.sif;
+
+import static org.junit.Assert.*;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.io.File;
+import java.io.FileInputStream;
+
+import java.util.List;
+
+import static org.mockito.Mockito.*;
+
+
+import org.cytoscape.test.support.NetworkTestSupport;
+import org.cytoscape.test.support.NetworkViewTestSupport;
+
+import org.cytoscape.io.internal.util.ReadUtils;
+import org.cytoscape.io.internal.util.StreamUtilImpl;
+
+import org.cytoscape.work.TaskMonitor;
+import org.cytoscape.model.CyNetwork;
+import org.cytoscape.model.CyNetworkFactory;
+import org.cytoscape.model.CyNode;
+import org.cytoscape.model.CyEdge;
+import org.cytoscape.view.model.CyNetworkView;
+import org.cytoscape.view.model.CyNetworkViewFactory;
+import org.cytoscape.view.layout.CyLayouts;
+import org.cytoscape.view.layout.CyLayoutAlgorithm;
+
+public class SIFNetworkViewProducerTest {
+
+       TaskMonitor taskMonitor;
+       CyNetworkFactory netFactory; 
+       CyNetworkViewFactory viewFactory;
+       ReadUtils readUtil;
+       CyLayouts layouts;
+       
+       @Before
+       public void setUp() throws Exception {
+               taskMonitor = mock(TaskMonitor.class);  
+
+               CyLayoutAlgorithm def = mock(CyLayoutAlgorithm.class);
+
+               layouts = mock(CyLayouts.class);
+               when(layouts.getDefaultLayout()).thenReturn(def);
+
+               NetworkTestSupport nts = new NetworkTestSupport();
+               netFactory = nts.getNetworkFactory();
+
+               NetworkViewTestSupport nvts = new NetworkViewTestSupport();
+               viewFactory = nvts.getNetworkViewFactory();
+
+               readUtil = new ReadUtils( new StreamUtilImpl() );
+       }
+
+       /**
+        * 'typical' means that all lines have the form "node1 pd node2 [node3 
node4 ...]
+        */
+       @Test
+       public void testReadFromTypicalFile() throws Exception {
+
+               CyNetworkView[] views = getViews("sample.sif");
+
+               CyNetwork net = checkNetwork(views, 31, 27);
+
+               findInteraction(net, "YNL312W", "YPL111W", "pd", 1);
+       } 
+
+       /** all lines have the degenerate form "node1"
+        *  that is, with no interaction type and no target
+        */ 
+       @Test
+       public void testReadFileWithNoInteractions() throws Exception {
+               CyNetworkView[] views = getViews("degenerate.sif");
+
+               CyNetwork net = checkNetwork(views, 9, 0);
+
+               for ( CyNode n : net.getNodeList() )
+                       assertTrue( 
n.attrs().get("name",String.class).startsWith("Y") );
+       } 
+
+       @Test
+       public void testReadMultiWordProteinsFile() throws Exception {
+
+               CyNetworkView[] views = getViews("multiWordProteins.sif");
+
+               CyNetwork net = checkNetwork(views, 28, 31);
+
+               findInteraction(net,"26S ubiquitin dependent proteasome", 
+                                                 "I-kappa-B-alpha", 
"interactsWith", 1);
+               findInteraction(net,"TRAF6", "RIP2",  "interactsWith", 13);
+               findInteraction(net,"TRAF6", "ABCDE oopah",  "interactsWith", 
13);
+               findInteraction(net,"TRAF6", "HJKOL coltrane",  
"interactsWith", 13);
+
+       } 
+
+       @Test
+       public void testReadMultiWordProteinsFileWithErrantSpaces() throws 
Exception {
+
+               CyNetworkView[] views = 
getViews("multiWordProteinsFileTrailingSpaces.sif");
+
+               CyNetwork net = checkNetwork(views, 28, 31);
+
+               findInteraction(net,"26S ubiquitin dependent proteasome", 
+                                                 "I-kappa-B-alpha", 
"interactsWith", 1);
+               findInteraction(net,"TRAF6", "RIP2",  "interactsWith", 13);
+               findInteraction(net,"TRAF6", "ABCDE oopah",  "interactsWith", 
13);
+               findInteraction(net,"TRAF6", "HJKOL coltrane",  
"interactsWith", 13);
+       } 
+
+
+       // will fail if it doesn't find the specified interaction
+       private void findInteraction(CyNetwork net, String source, String 
target, 
+                                        String interaction, int count) {
+               for ( CyNode n : net.getNodeList() ) {
+                       if ( n.attrs().get("name",String.class).equals(source) 
) {
+                               List<CyNode> neigh = 
net.getNeighborList(n,CyEdge.Type.ANY);
+                               assertEquals(count,neigh.size());
+                               for ( CyNode nn : neigh ) {
+                                       if ( 
nn.attrs().get("name",String.class).equals(target) ) {
+                                               List<CyEdge> con = 
net.getConnectingEdgeList(n,nn, CyEdge.Type.ANY);
+                                               for ( CyEdge e : con ) {
+                                                       if ( 
e.attrs().get("interaction",String.class).equals(interaction) ) {
+                                                               return;
+                                                       }
+                                               }
+                                       }
+                               }
+                       } 
+               } 
+               fail("couldn't find interaction: " + source + " " + interaction 
+ " " + target );
+       }
+
+       // in the SIF world, we only ever create one view for one network 
+       private CyNetwork checkNetwork(CyNetworkView[] views, int numNodes, int 
numEdges) {
+               assertNotNull(views);
+               assertEquals(1,views.length);
+
+               CyNetwork net = views[0].getModel();
+
+               assertNotNull( net );
+
+               assertEquals( numNodes, net.getNodeCount() );
+               assertEquals( numEdges, net.getEdgeCount() );
+
+               return net;
+       }
+
+       private CyNetworkView[] getViews(String file) throws Exception {
+               File f = new File("./src/test/resources/testData/sif/" + file);
+               SIFNetworkViewProducer snvp = new SIFNetworkViewProducer(new 
FileInputStream(f), 
+                                                             readUtil, 
layouts, viewFactory, netFactory);
+               snvp.run(taskMonitor);
+
+               return snvp.getNetworkViews();
+       }
+}

Added: core3/io-impl/trunk/src/test/resources/testData/sif/degenerate.sif
===================================================================
--- core3/io-impl/trunk/src/test/resources/testData/sif/degenerate.sif          
                (rev 0)
+++ core3/io-impl/trunk/src/test/resources/testData/sif/degenerate.sif  
2010-08-20 21:43:30 UTC (rev 21504)
@@ -0,0 +1,9 @@
+YNL312W
+YNL314W
+YOL051W
+YOR194C
+YOR377W
+YPL075W
+YPL248C
+YPL259C
+YPR065W

Added: core3/io-impl/trunk/src/test/resources/testData/sif/multiWordProteins.sif
===================================================================
--- core3/io-impl/trunk/src/test/resources/testData/sif/multiWordProteins.sif   
                        (rev 0)
+++ core3/io-impl/trunk/src/test/resources/testData/sif/multiWordProteins.sif   
2010-08-20 21:43:30 UTC (rev 21504)
@@ -0,0 +1,30 @@
+LPS    interactsWith   TLR4
+LPS    interactsWith   MD-2
+LPS    interactsWith   TLR4
+ADOH   interactsWith   LPS
+TLR4   interactsWith   MyD88
+TLR4   interactsWith   IRAK Complex
+TLR4   interactsWith   TIRAP
+TRAF6  interactsWith   IRAK Complex
+Uev1a/UBc13 Ubiquitin-conjugating Complex      interactsWith   TRAF6
+TRAF6  interactsWith   TAK1
+A20    interactsWith   TRAF6
+TAK1   interactsWith   IKK-beta
+IKK-beta       interactsWith   I-kappa-B-alpha
+I-kappa-B-alpha        interactsWith   p50
+I-kappa-B-alpha        interactsWith   p65
+SCF Ubiquitin Ligase   interactsWith   I-kappa-B-alpha
+26S ubiquitin dependent proteasome     interactsWith   I-kappa-B-alpha
+TLR4   interactsWith   TRIF
+TRIF   interactsWith   IRF3
+IRAK4  interactsWith   MyD88
+IRAK4  interactsWith   IRAK1
+IRAK1  interactsWith   MyD88
+IRAK1  interactsWith   TRAF6
+TRAF6  interactsWith   CD40
+TRAF6  interactsWith   RANK
+TRAF6  interactsWith   IRAK1
+TRAF6  interactsWith   IRAK2
+TRAF6  interactsWith   IRAKM
+TRAF6  interactsWith   RIP2    ABCDE oopah     HJKOL coltrane
+

Added: 
core3/io-impl/trunk/src/test/resources/testData/sif/multiWordProteinsFileTrailingSpaces.sif
===================================================================
--- 
core3/io-impl/trunk/src/test/resources/testData/sif/multiWordProteinsFileTrailingSpaces.sif
                         (rev 0)
+++ 
core3/io-impl/trunk/src/test/resources/testData/sif/multiWordProteinsFileTrailingSpaces.sif
 2010-08-20 21:43:30 UTC (rev 21504)
@@ -0,0 +1,30 @@
+LPS    interactsWith   TLR4
+LPS    interactsWith   MD-2
+LPS    interactsWith   TLR4
+ADOH   interactsWith   LPS
+TLR4   interactsWith   MyD88
+TLR4   interactsWith   IRAK Complex
+TLR4   interactsWith   TIRAP
+TRAF6  interactsWith   IRAK Complex
+Uev1a/UBc13 Ubiquitin-conjugating Complex      interactsWith   TRAF6
+TRAF6  interactsWith   TAK1
+A20    interactsWith   TRAF6
+TAK1   interactsWith   IKK-beta
+IKK-beta       interactsWith   I-kappa-B-alpha
+I-kappa-B-alpha        interactsWith   p50
+I-kappa-B-alpha        interactsWith   p65
+SCF Ubiquitin Ligase   interactsWith   I-kappa-B-alpha
+26S ubiquitin dependent proteasome     interactsWith   I-kappa-B-alpha
+TLR4   interactsWith   TRIF
+TRIF   interactsWith   IRF3
+IRAK4  interactsWith   MyD88
+IRAK4  interactsWith   IRAK1
+IRAK1  interactsWith   MyD88
+IRAK1  interactsWith   TRAF6
+TRAF6  interactsWith   CD40
+TRAF6  interactsWith   RANK
+TRAF6  interactsWith   IRAK1
+TRAF6  interactsWith   IRAK2
+TRAF6  interactsWith   IRAKM
+TRAF6  interactsWith   RIP2    ABCDE oopah     HJKOL coltrane
+

Added: core3/io-impl/trunk/src/test/resources/testData/sif/sample.sif
===================================================================
--- core3/io-impl/trunk/src/test/resources/testData/sif/sample.sif              
                (rev 0)
+++ core3/io-impl/trunk/src/test/resources/testData/sif/sample.sif      
2010-08-20 21:43:30 UTC (rev 21504)
@@ -0,0 +1,25 @@
+YNL312W pd YPL111W
+YNL314W pd YIR028W
+YNL314W pd YIR031C
+YOL051W pd YBR018C
+YOL051W pd YBR019C
+YOL051W pd YBR020W
+YOL051W pd YLR081W
+YOR194C pd YCL018W
+YOR377W pd YFL018C
+YPL075W pd YAL038W
+YPL075W pd YCR012W
+YPL075W pd YDR050C YGR254W YHR174W
+YPL075W pd YOL086C
+YPL248C pd MEL1
+YPL248C pd YBR018C
+YPL248C pd YBR019C
+YPL248C pd YBR020W
+YPL248C pd YJR048W
+YPL248C pd YLR081W
+YPL248C pd YML051W
+YPL248C pd YOR120W
+YPL259C pd YGR209C
+YPR065W pd YDR044W
+YPR065W pd YJR047C
+YPR065W pd YPR065W

-- 
You received this message because you are subscribed to the Google Groups 
"cytoscape-cvs" group.
To post to this group, send email to cytoscape-...@googlegroups.com.
To unsubscribe from this group, send email to 
cytoscape-cvs+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/cytoscape-cvs?hl=en.

Reply via email to