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.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());
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;
+ }
}