Clean up logging system
[jabaws.git] / runner / compbio / runner / Util.java
index 8d77864..a0123a2 100644 (file)
@@ -19,6 +19,7 @@
 package compbio.runner;\r
 \r
 import java.io.File;\r
+import java.io.FileInputStream;\r
 import java.io.FileNotFoundException;\r
 import java.io.FileOutputStream;\r
 import java.io.IOException;\r
@@ -30,27 +31,22 @@ import org.apache.log4j.Logger;
 import compbio.data.sequence.Alignment;\r
 import compbio.data.sequence.ClustalAlignmentUtil;\r
 import compbio.data.sequence.FastaSequence;\r
+import compbio.data.sequence.RNAStructScoreManager;\r
 import compbio.data.sequence.Score;\r
+import compbio.data.sequence.RNAStructReader;\r
 import compbio.data.sequence.SequenceUtil;\r
 import compbio.data.sequence.UnknownFileFormatException;\r
 import compbio.engine.client.ConfExecutable;\r
 import compbio.engine.client.ConfiguredExecutable;\r
 import compbio.engine.client.Executable;\r
-import compbio.engine.conf.PropertyHelperManager;\r
 import compbio.metadata.JobSubmissionException;\r
 import compbio.metadata.PresetManager;\r
 import compbio.metadata.RunnerConfig;\r
-import compbio.util.PropertyHelper;\r
 \r
 public final class Util {\r
 \r
        public static Logger log = Logger.getLogger(Util.class);\r
 \r
-       private static final PropertyHelper ph = PropertyHelperManager\r
-                       .getPropertyHelper();\r
-\r
-       public static final String SPACE = " ";\r
-\r
        public static synchronized <T> RunnerConfig<T> getSupportedOptions(\r
                        Class<? extends Executable<T>> clazz) {\r
                try {\r
@@ -115,7 +111,6 @@ public final class Util {
 \r
        public static void writeInput(List<FastaSequence> sequences,\r
                        ConfiguredExecutable<?> exec) throws JobSubmissionException {\r
-\r
                try {\r
                        File filein = new File(exec.getInput());\r
                        FileOutputStream fout = new FileOutputStream(filein);\r
@@ -131,4 +126,53 @@ public final class Util {
                }\r
        }\r
 \r
+       public static void writeClustalInput(List<FastaSequence> sequences,\r
+                       ConfiguredExecutable<?> exec, char gapChar) throws JobSubmissionException {\r
+               \r
+               try {\r
+                       File filein = new File(exec.getInput());\r
+                       FileOutputStream fout = new FileOutputStream(filein);\r
+                       log.debug("File path: " + filein.getAbsolutePath());\r
+                       SequenceUtil.writeClustal(fout, sequences, gapChar);\r
+                       fout.close();\r
+               } catch (IOException e) {\r
+                       log.error("IOException while writing input file into the disk: "\r
+                                       + e.getLocalizedMessage(), e);\r
+                       throw new JobSubmissionException(\r
+                                       "We are sorry but JABAWS server seems to have a problem! "\r
+                                               + e.getLocalizedMessage(), e);\r
+               }\r
+       }\r
+\r
+       public static RNAStructScoreManager readRNAStruct(String workDirectory,\r
+                       String structFile) throws IOException, FileNotFoundException {\r
+               \r
+               assert !compbio.util.Util.isEmpty(workDirectory);\r
+               assert !compbio.util.Util.isEmpty(structFile);\r
+               // The stdout from RNAalifold\r
+               File sFile = new File(compbio.engine.client.Util.getFullPath(\r
+                               workDirectory, structFile));\r
+               // Base pair probability matrix (-p option)\r
+               File aliFile = new File(compbio.engine.client.Util.getFullPath(\r
+                               workDirectory, "alifold.out"));\r
+               // Check that stdout file exists\r
+               if(!(sFile.exists() && sFile.length() > 0)) {\r
+                       throw new FileNotFoundException("Result for the jobId "\r
+                                       + workDirectory + "with file name " + structFile\r
+                                       + " is not found!");\r
+               }\r
+               // Check that base pair probability file exists\r
+               if(!aliFile.exists()) {\r
+                       log.warn("The file alifold.out is not found for the jobId "\r
+                                       + workDirectory + "Is the -p or --MEA option not specified?");\r
+                       return RNAStructReader.readRNAStructStream(new FileInputStream(sFile));\r
+                       \r
+               } else {\r
+                       return RNAStructReader.readRNAStructStream(new FileInputStream(sFile), \r
+                                       new FileInputStream(aliFile));\r
+               }\r
+       }\r
+\r
 }\r
+\r
+\r