package compbio.runner.structure; 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.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; import compbio.engine.client.CommandBuilder; public class RNAalifold extends SkeletalExecutable implements PipedExecutable { private static Logger log = Logger.getLogger(RNAalifold.class); // May not be necessary as defult is "" 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) { super.setOutput(outFile); return this; } @Override public RNAalifold setInput(String inFile) { cbuilder.setLast(inFile); super.setInput(inFile); return this; } @SuppressWarnings("unchecked") @Override public Class getType() { return (Class) 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; // } }