package compbio.runner.structure;
-import java.util.Scanner; //temp
-import java.io.File; //temp
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
+
+
+
+
import org.apache.log4j.Logger;
-import compbio.data.sequence.Alignment;
+import compbio.data.sequence.ScoreManager;
+import compbio.data.sequence.RNAStruct;
import compbio.data.sequence.UnknownFileFormatException;
+import compbio.engine.client.PipedExecutable;
import compbio.engine.client.SkeletalExecutable;
import compbio.metadata.ResultNotAvailableException;
import compbio.runner.Util;
-public class RNAalifold extends SkeletalExecutable<RNAalifold> {
+
+import compbio.engine.client.CommandBuilder;
+
+public class RNAalifold extends SkeletalExecutable<RNAalifold>
+ implements PipedExecutable<RNAalifold> {
- @SuppressWarnings("unchecked")
- @Override
- //temp
- public String getResults(String resultFile)
- throws ResultNotAvailableException {
- Scanner s;
- try {
- System.out.println("testfrom RNAalifold.getResults");
- s = new Scanner(new File(resultFile));
- System.out.println(s.nextLine());
- return "null";
- } catch (FileNotFoundException e) {
- System.out.println("file not found");
- throw new ResultNotAvailableException(e);
- }
- }
+
+ private static Logger log = Logger.getLogger(RNAalifold.class);
+ // May not be necessary as defult is "<space>" but still dont know
+ // How to deal with different key value separators for different params
+ public static final String KEY_VALUE_SEPARATOR = " ";
+
+ public RNAalifold() {
+ super(KEY_VALUE_SEPARATOR);
+ }
@Override
public RNAalifold setOutput(String outFile) {
- System.out.println("Set ouput file: " + outFile.toString());
super.setOutput(outFile);
return this;
}
@Override
public RNAalifold setInput(String inFile) {
- System.out.println("Set input file: " + inFile.toString());
+ cbuilder.setLast(inFile);
super.setInput(inFile);
return this;
}
return (Class<RNAalifold>) this.getClass();
}
+ @SuppressWarnings("unchecked")
+ @Override
+ // PlaceHolder method
+ public ScoreManager getResults(String workDirectory)
+ throws ResultNotAvailableException {
+ try {
+ return Util.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);
+ }
+ }
+
+
+ // the new currently used methods for reading are found in
+ // - compbio.data.sequence.SequenceUtil and
+ // - compbio.runner.Util
+
+ // Simple and generic methods for reading a whole file
+// 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;
+// }
}