package compbio.runner.structure; import java.io.FileNotFoundException; 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; 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); @Override public RNAalifold setOutput(String outFile) { log.info("Set ouput file: " + outFile.toString()); super.setOutput(outFile); return this; } @Override public RNAalifold setInput(String inFile) { log.info("Set input file: " + inFile.toString()); cbuilder.setLast(inFile); super.setInput(inFile); return this; } @SuppressWarnings("unchecked") @Override public Class getType() { return (Class) 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; } }