package uk.bl.monitrix.extensions.imageqa.csv; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import uk.bl.monitrix.extensions.imageqa.model.ImageQALogEntry; /** * Example log line (with line breaks inserted at ';' where appropriate): * * 2013-03-21 16:38:01.850688;1.07782793045;http://www.acses.org.uk/; * http://www.webarchive.org.uk/thumbs/66158797/66128255c.jpg;66158797; * 1681;52;252;VERY DIFFERENT;60;30;0;438699;21483;2.6929;3.0; * DIFFERENT;http://127.0.0.1:8000/qa/orig/1363883878.13.png; * * @author Rainer Simon <rainer.simon@ait.ac.at> */ public class CsvImageQALogEntry implements ImageQALogEntry { private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); private String[] fields; CsvImageQALogEntry(String line) { fields = line.split(";"); if (fields.length != 18) throw new RuntimeException("Invalid number of log message fields (expected 19, found " + fields.length + ")"); } @Override public Date getTimestamp() { try { return DATE_FORMAT.parse(fields[0]); } catch (ParseException e) { throw new RuntimeException(e); } } @Override public double getExecutionTime() { return Double.parseDouble(fields[1]); } @Override public String getOriginalWebURL() { return fields[2]; } @Override public String getWaybackImageURL() { return fields[3]; } @Override public long getWaybackTimestamp() { return Long.parseLong(fields[4]); } @Override public int getFC1() { return Integer.parseInt(fields[5]); } @Override public int getFC2() { return Integer.parseInt(fields[6]); } @Override public int getMC() { return Integer.parseInt(fields[7]); } @Override public String getMessage() { return fields[8]; } @Override public int getTS1() { return Integer.parseInt(fields[9]); } @Override public int getTS2() { return Integer.parseInt(fields[10]); } @Override public int getOCR() { return Integer.parseInt(fields[11]); } @Override public int getImage1Size() { return Integer.parseInt(fields[12]); } @Override public int getImage2Size() { return Integer.parseInt(fields[13]); } @Override public double getPSNRSimilarity() { return Double.parseDouble(fields[14]); } @Override public double getPSNRThreshold() { return Double.parseDouble(fields[15]); } @Override public String getPSNRMessage() { return fields[16]; } @Override public String getOriginalImageURL() { return fields[17]; } @Override public String toString() { return getOriginalWebURL() + ", " + getWaybackImageURL() + ", " + getOriginalImageURL() + ", " + getMessage() + ", " + getPSNRMessage(); } }