Author: kono
Date: 2011-05-04 13:33:23 -0700 (Wed, 04 May 2011)
New Revision: 24921

Added:
   
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/quickstart/datasource/AbstractFilePreprocessor.java
   
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/quickstart/datasource/LineProcessor.java
   
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/quickstart/datasource/PsiMiToSifLineProcessor.java
Removed:
   
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/quickstart/datasource/PsiMiToSif.java
Modified:
   
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/quickstart/ImportNetworkFromPublicDataSetTask.java
   
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/quickstart/datasource/BioGridPreprocessor.java
   
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/quickstart/datasource/InteractionFilePreprocessor.java
   
core3/core-task-impl/trunk/src/test/java/org/cytoscape/task/internal/quickstart/remote/BioGridPreprocessorTest.java
Log:
Refactored BioGridReader for later use.

Modified: 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/quickstart/ImportNetworkFromPublicDataSetTask.java
===================================================================
--- 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/quickstart/ImportNetworkFromPublicDataSetTask.java
     2011-05-04 19:35:31 UTC (rev 24920)
+++ 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/quickstart/ImportNetworkFromPublicDataSetTask.java
     2011-05-04 20:33:23 UTC (rev 24921)
@@ -30,12 +30,9 @@
        final Set<InteractionFilePreprocessor> processors;
        private final StreamUtil streamUtil;
 
-       public ImportNetworkFromPublicDataSetTask(
-                       final Set<InteractionFilePreprocessor> processors,
-                       final CyNetworkViewReaderManager mgr,
-                       final CyNetworkManager networkManager,
-                       final CyNetworkViewManager networkViewManager,
-                       final Properties props, final CyNetworkNaming 
namingUtil,
+       public ImportNetworkFromPublicDataSetTask(final 
Set<InteractionFilePreprocessor> processors,
+                       final CyNetworkViewReaderManager mgr, final 
CyNetworkManager networkManager,
+                       final CyNetworkViewManager networkViewManager, final 
Properties props, final CyNetworkNaming namingUtil,
                        final StreamUtil streamUtil) {
                super(mgr, networkManager, networkViewManager, props, 
namingUtil);
 
@@ -50,7 +47,7 @@
                for (InteractionFilePreprocessor processor : processors) {
 
                        try {
-                               processor.processFile(null);
+                               processor.processFile();
                        } catch (IOException e) {
                                throw new IllegalStateException("Could not init 
processor");
                        }
@@ -75,8 +72,7 @@
                this.taskMonitor = taskMonitor;
                name = url.toString();
 
-               taskMonitor
-                               .setTitle(String.format("Loading Network from 
\'%s\'", name));
+               taskMonitor.setTitle(String.format("Loading Network from 
\'%s\'", name));
 
                taskMonitor.setStatusMessage("Checking URL...");
                try {
@@ -89,15 +85,14 @@
                        return;
 
                taskMonitor.setStatusMessage("Finding network reader...");
-               reader = mgr.getReader(url.toURI(),url.toString());
+               reader = mgr.getReader(url.toURI(), url.toString());
 
                if (cancelled)
                        return;
 
                if (reader == null)
-                       throw new NullPointerException(
-                                       "Failed to find reader for specified 
URL: " + name);
-               
+                       throw new NullPointerException("Failed to find reader 
for specified URL: " + name);
+
                insertTasksAfterCurrentTask(new SetNetworkNameTask(reader, 
selected));
 
                taskMonitor.setStatusMessage("Loading network...");

Added: 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/quickstart/datasource/AbstractFilePreprocessor.java
===================================================================
--- 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/quickstart/datasource/AbstractFilePreprocessor.java
                            (rev 0)
+++ 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/quickstart/datasource/AbstractFilePreprocessor.java
    2011-05-04 20:33:23 UTC (rev 24921)
@@ -0,0 +1,110 @@
+package org.cytoscape.task.internal.quickstart.datasource;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.net.URL;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Properties;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipInputStream;
+
+import org.cytoscape.property.CyProperty;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public abstract class AbstractFilePreprocessor implements 
InteractionFilePreprocessor {
+
+       private static final Logger logger = 
LoggerFactory.getLogger(AbstractFilePreprocessor.class);
+       
+       private static final String INTERACTION_DIR_NAME = "interactions";
+       private static final String DEF_USER_DIR = 
System.getProperty("user.home");
+       
+       protected final Map<String, URL> sourceMap;
+       protected LineProcessor processor;
+       
+       protected final File dataFileDirectory;
+
+       
+       public AbstractFilePreprocessor(final CyProperty<Properties> 
properties) {
+               if (properties == null)
+                       throw new NullPointerException("Property service is 
null.");
+
+               final Properties props = properties.getProperties();
+
+               if (props == null)
+                       throw new NullPointerException("Property is missing.");
+
+               String configDirectory = 
props.getProperty(CyProperty.DEFAULT_CONFIG_DIR);
+               if (configDirectory == null || configDirectory.trim().length() 
== 0)
+                       configDirectory = DEF_USER_DIR;
+
+               final File configFileLocation = new File(configDirectory, 
CyProperty.DEFAULT_CONFIG_DIR);
+               this.dataFileDirectory = new File(configFileLocation, 
INTERACTION_DIR_NAME);
+               if (!dataFileDirectory.exists())
+                       dataFileDirectory.mkdir();
+               
+               this.sourceMap = new HashMap<String, URL>();
+       }
+       
+
+       protected void processZipTextFile(final URL source) throws IOException {
+               ZipInputStream zis = new ZipInputStream(source.openStream());
+               try {
+
+                       // Extract list of entries
+                       ZipEntry zen = null;
+                       String entryName = null;
+
+                       while ((zen = zis.getNextEntry()) != null) {
+                               entryName = zen.getName();
+                               File outFile = new File(dataFileDirectory, 
entryName + ".sif");
+                               
+                               processOneEntry(outFile, zis, entryName);
+                               zis.closeEntry();
+                       }
+
+               } finally {
+                       if (zis != null)
+                               zis.close();
+                       zis = null;
+               }
+               
+               logger.info("Processed and created " + this.sourceMap.size() + 
" data files.");
+       }
+       
+       private void processOneEntry(File outFile, InputStream is, String name) 
throws IOException {
+               outFile.createNewFile();
+               FileWriter outWriter = new FileWriter(outFile);
+               String line;
+               final BufferedReader br = new BufferedReader(new 
InputStreamReader(is));
+
+               int count = 0;
+               while ((line = br.readLine()) != null) {
+                       if (line.startsWith("#"))
+                               continue;
+                       outWriter.write(processor.processLine(line) + "\n");
+                       count++;
+               }
+               outWriter.close();
+               this.sourceMap.put(createFileName(name), 
outFile.toURI().toURL());
+       }
+       
+       abstract String createFileName(final String originalFileName);
+
+       @Override
+       public boolean isLatest() {
+               // TODO Auto-generated method stub
+               return false;
+       }
+
+       @Override
+       public Map<String, URL> getDataSourceMap() {
+               return this.sourceMap;
+       }
+
+}

Modified: 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/quickstart/datasource/BioGridPreprocessor.java
===================================================================
--- 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/quickstart/datasource/BioGridPreprocessor.java
 2011-05-04 19:35:31 UTC (rev 24920)
+++ 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/quickstart/datasource/BioGridPreprocessor.java
 2011-05-04 20:33:23 UTC (rev 24921)
@@ -1,98 +1,60 @@
 package org.cytoscape.task.internal.quickstart.datasource;
 
-import java.io.BufferedReader;
 import java.io.File;
-import java.io.FileWriter;
 import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
 import java.net.MalformedURLException;
 import java.net.URL;
-import java.util.HashMap;
 import java.util.Map;
 import java.util.Properties;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipInputStream;
 
 import org.cytoscape.property.CyProperty;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public class BioGridPreprocessor implements InteractionFilePreprocessor {
+public class BioGridPreprocessor extends AbstractFilePreprocessor {
 
-       private static final Logger logger = LoggerFactory
-                       .getLogger(BioGridPreprocessor.class);
 
        private static final String DB_NAME = "BioGRID";
        private static final String SOURCE_URL = 
"http://thebiogrid.org/downloads/archives/Release%20Archive/BIOGRID-3.1.74/BIOGRID-ORGANISM-3.1.74.mitab.zip";;
 
-       private static final String INTERACTION_DIR_NAME = "interactions";
-       private static final String DEF_USER_DIR = 
System.getProperty("user.home");
-
-       private final PsiMiToSif p2s;
-       private final File dataFileDirectory;
-
-       private final Map<String, URL> sourceMap;
-
        private URL sourceFileLocation;
 
        private boolean isLatest;
 
        public BioGridPreprocessor(final CyProperty<Properties> properties) {
+               super(properties);
+               
                this.isLatest = false;
 
-               this.p2s = new PsiMiToSif();
-               this.sourceMap = new HashMap<String, URL>();
+               this.processor = new PsiMiToSifLineProcessor();
                try {
                        sourceFileLocation = new URL(SOURCE_URL);
                } catch (MalformedURLException e) {
                        e.printStackTrace();
                }
+       }
 
-               if (properties == null)
-                       throw new NullPointerException("Property service is 
null.");
-
-               final Properties props = properties.getProperties();
-
-               if (props == null)
-                       throw new NullPointerException("Property is missing.");
-
-               String configDirectory = props
-                               .getProperty(CyProperty.DEFAULT_CONFIG_DIR);
-               if (configDirectory == null || configDirectory.trim().length() 
== 0)
-                       configDirectory = DEF_USER_DIR;
-
-               final File configFileLocation = new File(configDirectory,
-                               CyProperty.DEFAULT_CONFIG_DIR);
-               this.dataFileDirectory = new File(configFileLocation,
-                               INTERACTION_DIR_NAME);
-               if (!dataFileDirectory.exists())
-                       dataFileDirectory.mkdir();
-
-               logger.debug("BioGrid interaction data directory: "
-                               + dataFileDirectory.toString());
+       public void setSource(final URL sourceFileLocation) {
+               this.sourceFileLocation = sourceFileLocation;
        }
 
        @Override
-       public void processFile(URL source) throws IOException {
-               if (source != null)
-                       this.sourceFileLocation = source;
+       public void processFile() throws IOException {
 
                boolean test = isUpToDate();
                if (!test) {
-                       final InputStream is = sourceFileLocation.openStream();
-                       extractEntrey(is);
+                       processZipTextFile(sourceFileLocation);
                }
        }
 
        private boolean isUpToDate() throws IOException {
                final File[] files = this.dataFileDirectory.listFiles();
-        boolean up2date = false;
-        
+               boolean up2date = false;
+
                for (File file : files) {
-                       final String name = file.getName();                     
+                       final String name = file.getName();
                        final Pattern pattern = Pattern.compile("BIOGRID");
                        final Matcher matcher = pattern.matcher(name);
                        boolean test = matcher.find();
@@ -104,48 +66,10 @@
                return up2date;
        }
 
-       private void extractEntrey(final InputStream sourceInputStream)
-                       throws IOException {
-               ZipInputStream zis = new ZipInputStream(sourceInputStream);
-               try {
 
-                       // Extract list of entries
-                       ZipEntry zen = null;
-                       String entryName = null;
-
-                       while ((zen = zis.getNextEntry()) != null) {
-                               entryName = zen.getName();
-                               File outFile = new File(dataFileDirectory, 
entryName + ".sif");
-                               outFile.createNewFile();
-                               FileWriter outWriter = new FileWriter(outFile);
-                               String line;
-                               final BufferedReader br = new BufferedReader(
-                                               new InputStreamReader(zis));
-
-                               int count = 0;
-                               while ((line = br.readLine()) != null) {
-                                       if (line.startsWith("#"))
-                                               continue;
-                                       outWriter.write(p2s.toSif(line) + "\n");
-                                       count++;
-                               }
-                               zis.closeEntry();
-                               outWriter.close();
-                               this.sourceMap.put(createFileName(entryName), 
outFile.toURI()
-                                               .toURL());
-                               logger.debug("Entries: " + count);
-                       }
-
-               } finally {
-                       if (zis != null)
-                               zis.close();
-                       zis = null;
-               }
-       }
-
-       private String createFileName(final String originalFileName) {
-               final String sourceName = DB_NAME + ": "
-                               + originalFileName.split("-")[2] + " 
Interactome";
+       @Override
+       protected String createFileName(final String originalFileName) {
+               final String sourceName = DB_NAME + ": " + 
originalFileName.split("-")[2] + " Interactome";
                return sourceName;
        }
 
@@ -154,10 +78,4 @@
                // TODO Auto-generated method stub
                return true;
        }
-
-       @Override
-       public Map<String, URL> getDataSourceMap() {
-               return sourceMap;
-       }
-
 }

Modified: 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/quickstart/datasource/InteractionFilePreprocessor.java
===================================================================
--- 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/quickstart/datasource/InteractionFilePreprocessor.java
 2011-05-04 19:35:31 UTC (rev 24920)
+++ 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/quickstart/datasource/InteractionFilePreprocessor.java
 2011-05-04 20:33:23 UTC (rev 24921)
@@ -5,20 +5,20 @@
 import java.util.Map;
 
 public interface InteractionFilePreprocessor {
-       
+
        /**
         * 
         * @param sourceFileLocation
         * @throws IOException
         */
-       void processFile(URL source) throws IOException;
-       
+       void processFile() throws IOException;
+
        /**
         * Check local data is up-to-date or not.
         * 
         * @return true if latest.
         */
        boolean isLatest();
-       
+
        Map<String, URL> getDataSourceMap();
 }

Added: 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/quickstart/datasource/LineProcessor.java
===================================================================
--- 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/quickstart/datasource/LineProcessor.java
                               (rev 0)
+++ 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/quickstart/datasource/LineProcessor.java
       2011-05-04 20:33:23 UTC (rev 24921)
@@ -0,0 +1,16 @@
+package org.cytoscape.task.internal.quickstart.datasource;
+
+
+/**
+ * Takes a line of entry and returns one SIF entry.
+ *
+ */
+public interface LineProcessor {
+       
+       /**
+        * 
+        * @param line
+        * @return SIF formatted line (source (interaction) target).
+        */
+       String processLine(final String line);
+}

Deleted: 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/quickstart/datasource/PsiMiToSif.java
===================================================================
--- 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/quickstart/datasource/PsiMiToSif.java
  2011-05-04 19:35:31 UTC (rev 24920)
+++ 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/quickstart/datasource/PsiMiToSif.java
  2011-05-04 20:33:23 UTC (rev 24921)
@@ -1,28 +0,0 @@
-package org.cytoscape.task.internal.quickstart.datasource;
-
-public class PsiMiToSif {
-
-       private static final String TAB = "\t";
-       private static final String SEPARATOR = "\\|";
-       private static final int COLUMN_COUNT = 15;
-       
-       public String toSif(final String line) {
-               final String[] entry = line.split(TAB);
-               
-               // Validate entry list.
-               if (entry == null || entry.length < COLUMN_COUNT)
-                       return null;
-
-               String[] sourceID = entry[0].split(SEPARATOR);
-               String[] targetID = entry[1].split(SEPARATOR);
-               final String sourceRawID = sourceID[0].split(":")[1];
-               final String targetRawID = targetID[0].split(":")[1];
-               
-               final String[] interactionID = entry[13].split(SEPARATOR);
-               final String interaction = interactionID[0];
-               if(interaction == null || interaction.length() == 0)
-                       return null;
-               
-               return sourceRawID + " " + interaction + " " + targetRawID;
-       }
-}

Copied: 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/quickstart/datasource/PsiMiToSifLineProcessor.java
 (from rev 24900, 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/quickstart/datasource/PsiMiToSif.java)
===================================================================
--- 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/quickstart/datasource/PsiMiToSifLineProcessor.java
                             (rev 0)
+++ 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/quickstart/datasource/PsiMiToSifLineProcessor.java
     2011-05-04 20:33:23 UTC (rev 24921)
@@ -0,0 +1,28 @@
+package org.cytoscape.task.internal.quickstart.datasource;
+
+public class PsiMiToSifLineProcessor implements LineProcessor {
+
+       private static final String TAB = "\t";
+       private static final String SEPARATOR = "\\|";
+       private static final int COLUMN_COUNT = 15;
+       
+       public String processLine(final String line) {
+               final String[] entry = line.split(TAB);
+               
+               // Validate entry list.
+               if (entry == null || entry.length < COLUMN_COUNT)
+                       return null;
+
+               String[] sourceID = entry[0].split(SEPARATOR);
+               String[] targetID = entry[1].split(SEPARATOR);
+               final String sourceRawID = sourceID[0].split(":")[1];
+               final String targetRawID = targetID[0].split(":")[1];
+               
+               final String[] interactionID = entry[13].split(SEPARATOR);
+               final String interaction = interactionID[0];
+               if(interaction == null || interaction.length() == 0)
+                       return null;
+               
+               return sourceRawID + " " + interaction + " " + targetRawID;
+       }
+}

Modified: 
core3/core-task-impl/trunk/src/test/java/org/cytoscape/task/internal/quickstart/remote/BioGridPreprocessorTest.java
===================================================================
--- 
core3/core-task-impl/trunk/src/test/java/org/cytoscape/task/internal/quickstart/remote/BioGridPreprocessorTest.java
 2011-05-04 19:35:31 UTC (rev 24920)
+++ 
core3/core-task-impl/trunk/src/test/java/org/cytoscape/task/internal/quickstart/remote/BioGridPreprocessorTest.java
 2011-05-04 20:33:23 UTC (rev 24921)
@@ -1,6 +1,5 @@
 package org.cytoscape.task.internal.quickstart.remote;
 
-
 import static org.mockito.Mockito.when;
 
 import java.io.File;
@@ -15,27 +14,29 @@
 import org.mockito.MockitoAnnotations;
 
 public class BioGridPreprocessorTest {
-       
-       @Mock CyProperty<Properties> properties;
 
+       @Mock
+       CyProperty<Properties> properties;
+
        @Before
        public void setUp() throws Exception {
                MockitoAnnotations.initMocks(this);
-               
+
                when(properties.getProperties()).thenReturn(new Properties());
-               
+
        }
 
        @After
        public void tearDown() throws Exception {
        }
-       
+
        @Test
        public void bioGridPreprocessorTest() throws Exception {
                final File file = new 
File("src/test/resources/BIOGRID-ORGANISM-3.1.74.mitab.zip");
                final BioGridPreprocessor processor = new 
BioGridPreprocessor(properties);
-               
-               processor.processFile(file.toURI().toURL());
+
+               processor.setSource(file.toURI().toURL());
+               processor.processFile();
        }
 
 }

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