Add posibility to look at failed jobs
[proteocache.git] / datadb / compbio / cassandra / JpredParserHTTP.java
index ac9ed4f..453f01f 100644 (file)
@@ -93,6 +93,17 @@ public class JpredParserHTTP implements JpredParser {
                }
                return protein;
        }
+       private String parseSeqFile(final InputStream stream, String jobid) throws FileNotFoundException {
+               final FastaReader fr = new FastaReader(stream);
+               String protein = "";
+               final FastaSequence fs = fr.next();
+               protein = fs.getSequence().replaceAll("\n", "");
+               if (fr.hasNext()) {
+                       // this is an aligment job...
+                       return "alignment";
+               }
+               return protein;
+       }
 
        private String parseLogFile(final InputStream stream) throws IOException {
                String out = "";
@@ -170,9 +181,22 @@ public class JpredParserHTTP implements JpredParser {
                }
 
                if (!running) {
+                       // logging the job
                        job.setAlignment(alignment);
                        job.setPredictions(predictions);
+                       if (job.getExecutionStatus().equals("FAIL")) {
+                               URL sequrl = new URL(maindir + job.getJobID() + ".seq");
+                               HttpURLConnection httpConnection_sequrl = (HttpURLConnection) sequrl.openConnection();
+                               if (199 < httpConnection_sequrl.getResponseCode() && httpConnection_sequrl.getResponseCode() < 300) {
+                                       try {
+                                               job.setProtein(parseSeqFile(sequrl.openStream(), job.getJobID()));
+                                       } catch (IOException e) {
+                                               e.printStackTrace();
+                                       }
+                               }
+                       }
                        cw.FormQueryTables(job);
+
                        // archiving the job
                        if (archiving) {
                                ArchivedJob ajob = new ArchivedJob(job.getJobID());