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.