Parameters Tester updated. Untested webservice code. generate xsd/wsdl?
[jabaws.git] / runner / compbio / runner / structure / RNAalifold.java
index ff89fcb..4ec1ec7 100644 (file)
@@ -6,6 +6,11 @@ import java.io.IOException;
 import java.util.Arrays;
 import java.util.List;
 
+//imports for filereader method
+import java.io.FileReader;
+import java.io.BufferedReader;
+import java.io.File;
+
 import org.apache.log4j.Logger;
 
 import compbio.data.sequence.Alignment;
@@ -15,23 +20,16 @@ import compbio.engine.client.SkeletalExecutable;
 import compbio.metadata.ResultNotAvailableException;
 import compbio.runner.Util;
 
+
+import compbio.engine.client.CommandBuilder;
+
 public class RNAalifold extends SkeletalExecutable<RNAalifold> 
                implements PipedExecutable<RNAalifold> {
        
        
-       
        private static Logger log = Logger.getLogger(RNAalifold.class);
 
        
-       @SuppressWarnings("unchecked")
-       @Override
-       // PlaceHolder method
-       public String getResults(String resultFile)
-                       throws ResultNotAvailableException {
-               return "null";
-       }
-
-       
        @Override
        public RNAalifold setOutput(String outFile) {
                log.info("Set ouput file: " + outFile.toString());
@@ -53,5 +51,60 @@ public class RNAalifold extends SkeletalExecutable<RNAalifold>
                return (Class<RNAalifold>) this.getClass();
        }
        
+       @SuppressWarnings("unchecked")
+       @Override
+       // PlaceHolder method
+       public String getResults(String workDirectory)
+                       throws ResultNotAvailableException {
+               try {
+                       // System.out.print(readRNAStruct(workDirectory, getOutput()));
+                       return readRNAStruct(workDirectory, getOutput());
+               } catch (FileNotFoundException e) {
+                       log.error(e.getMessage(), e.getCause());
+                       throw new ResultNotAvailableException(e);
+               } catch (IOException e) {
+                       log.error(e.getMessage(), e.getCause());
+                       throw new ResultNotAvailableException(e);
+               }
+       }
+
+       
+       // Simple and generic methods for reading a whole file
+       // Should surfice until a more detailed datamodel and parser are developed
+       private static String readRNAStruct(String workDirectory,
+                       String structFile) throws IOException, FileNotFoundException {
+               assert !compbio.util.Util.isEmpty(workDirectory);
+               assert !compbio.util.Util.isEmpty(structFile);
+               File sfile = new File(compbio.engine.client.Util.getFullPath(
+                               workDirectory, structFile));
+               log.trace("RNAALIFOLD OUTPUT FILE PATH: " + sfile.getAbsolutePath());
+               if(!(sfile.exists() && sfile.length() > 0)) {
+                       throw new FileNotFoundException("Result for the jobId "
+                                       + workDirectory + "with file name " + structFile
+                                       + " is not found!");
+               }
+               return readFile(sfile);
+       }
+       
+       private static BufferedReader input;
+       public static String readFile(File inputFile) throws 
+                       FileNotFoundException, IOException {
+               
+               input   = new BufferedReader(new FileReader(inputFile));
+               
+               String file = new String();
+               String line = new String();
+               
+               while (true) {
+                       line = input.readLine();
+                       
+                       if (line != null) {
+                               file = file + line + "\r\n";
+                       } else break;
+               }
+               // Close file
+               input.close();
+               return file;
+       }
        
 }