import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
import compbio.cassandra.JpredParser;
import compbio.data.sequence.FastaReader;
private int countNoData;
private static boolean archiving = false;
private static final PropertyHelper ph = ProteoCachePropertyHelperManager.getPropertyHelper();
+ static SimpleDateFormat timeformatter = new SimpleDateFormat("yyyy/MM/dd:H:m:s");
public JpredParserHTTP() {
dirprefix = "http://www.compbio.dundee.ac.uk/www-jpred/results";
}
return protein;
}
+
private String parseSeqFile(final InputStream stream, String jobid) throws FileNotFoundException {
final FastaReader fr = new FastaReader(stream);
String protein = "";
return protein;
}
- private String parseLogFile(final InputStream stream) throws IOException {
+ private String parseLogFile(final InputStream stream, JpredJob job) throws IOException {
String out = "";
BufferedReader buffer = new BufferedReader(new InputStreamReader(stream));
String line;
+ if (null != (out = buffer.readLine()) && (out.contains("version"))) {
+ Matcher matcher = Pattern.compile("((\\d|\\.)+)").matcher(out);
+ if (matcher.find())
+ job.setProgramVersion(matcher.group(0));
+ }
while (null != (line = buffer.readLine())) {
- out += line;
+ out += line;
}
return out;
}
boolean LogfileExists = false;
JpredJob job = new JpredJob(jobinfo[jobinfo.length - 1], jobinfo[0], jobinfo[1]);
job.setIP(jobinfo[2]);
+ job.setProgramName("Jpred");
Date currDate = new Date();
String maindir = dirprefix + "/" + job.getJobID() + "/";
try {
+ Date finishTime = timeformatter.parse(jobinfo[1]);
+ long delay = currDate.getTime() / 1000 - finishTime.getTime() / 1000;
+ if (delay < 120) return 0;
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+
+ try {
URL dirurl = new URL(maindir);
HttpURLConnection httpConnection_dirurl = (HttpURLConnection) dirurl.openConnection();
if (httpConnection_dirurl.getResponseCode() < 199 || 300 <= httpConnection_dirurl.getResponseCode()) {
if (199 < httpConnection_conciseurl.getResponseCode() && httpConnection_conciseurl.getResponseCode() < 300) {
ConcisefileExists = true;
running = false;
- try {
+ try {
job.setProtein(parsePredictions(conciseurl.openStream(), job.getJobID()));
} catch (IOException e) {
e.printStackTrace();
}
if (199 < httpConnection_logurl.getResponseCode() && httpConnection_logurl.getResponseCode() < 300) {
LogfileExists = true;
- job.setLog(parseLogFile(logurl.openStream()));
+ job.setLog(parseLogFile(logurl.openStream(), job));
} else {
// The job has not been started at all...
+ System.out.println ("WARNING! Job " + job.getJobID() + " has status FAIL/STOPPED");
job.setExecutionStatus("FAIL");
job.setFinalStatus("STOPPED");
running = false;