diff --git a/src/main/java/it/inaf/oats/vospace/persistence/JobDAO.java b/src/main/java/it/inaf/oats/vospace/persistence/JobDAO.java index 58a47e33ecfc732f9d8e049cd47ff822a969902a..0fee2b19b91a2f57f983848297e37adc5697cdf0 100644 --- a/src/main/java/it/inaf/oats/vospace/persistence/JobDAO.java +++ b/src/main/java/it/inaf/oats/vospace/persistence/JobDAO.java @@ -25,11 +25,14 @@ import org.springframework.stereotype.Repository; import java.util.ArrayList; import java.time.LocalDateTime; import java.math.BigDecimal; - +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; @Repository public class JobDAO { + private static final Logger LOG = LoggerFactory.getLogger(JobDAO.class); + private static final ObjectMapper MAPPER = new ObjectMapper(); private final JdbcTemplate jdbcTemplate; @@ -41,21 +44,19 @@ public class JobDAO { public void createJob(JobSummary jobSummary) { - Object jobPayload = getJobPayload(jobSummary); - String sql = "INSERT INTO job(job_id, owner_id, job_type, phase, job_info) VALUES (?, ?, ?, ?, ?)"; jdbcTemplate.update(sql, ps -> { int i = 0; ps.setString(++i, jobSummary.getJobId()); ps.setString(++i, jobSummary.getOwnerId()); - ps.setObject(++i, getJobType(jobPayload), Types.OTHER); + ps.setObject(++i, getJobType(jobSummary), Types.OTHER); ps.setObject(++i, jobSummary.getPhase().value(), Types.OTHER); - ps.setObject(++i, toJson(jobPayload), Types.OTHER); + ps.setObject(++i, toJson(jobSummary.getJobInfo()), Types.OTHER); }); } - private Object getJobPayload(JobSummary jobSummary) { + private String getJobType(JobSummary jobSummary) { List<Object> payload = jobSummary.getJobInfo().getAny(); if (payload.isEmpty()) { @@ -65,10 +66,7 @@ public class JobDAO { throw new UnsupportedOperationException("JobInfo as list not supported"); } - return payload.get(0); - } - - private String getJobType(Object jobPayload) { + Object jobPayload = payload.get(0); if (jobPayload instanceof Transfer) { Transfer transfer = (Transfer) jobPayload; @@ -102,14 +100,7 @@ public class JobDAO { jobSummary.setJobId(rs.getString("job_id")); jobSummary.setOwnerId(rs.getString("owner_id")); jobSummary.setPhase(ExecutionPhase.fromValue(rs.getString("phase"))); - - String jobType = rs.getString("job_type"); - - Object jobPayload = getJobPayload(jobType, rs.getString("job_info")); - JobSummary.JobInfo jobInfo = new JobSummary.JobInfo(); - jobInfo.getAny().add(jobPayload); - jobSummary.setJobInfo(jobInfo); - + jobSummary.setJobInfo(getJobPayload(rs.getString("job_info"))); jobSummary.setResults(getResults(rs.getString("results"))); return jobSummary; @@ -215,10 +206,9 @@ public class JobDAO { return sjd; } - private Object getJobPayload(String jobType, String json) { + private JobSummary.JobInfo getJobPayload(String json) { try { - // TODO: switch on jobType - return MAPPER.readValue(json, Transfer.class); + return MAPPER.readValue(json, JobSummary.JobInfo.class); } catch (JsonProcessingException ex) { throw new RuntimeException(ex); } @@ -255,27 +245,26 @@ public class JobDAO { throw new RuntimeException(ex); } } - - public static XMLGregorianCalendar toXMLGregorianCalendar(Timestamp t) - { + + public static XMLGregorianCalendar toXMLGregorianCalendar(Timestamp t) { XMLGregorianCalendar cal = null; - try{ + try { cal = DatatypeFactory.newInstance().newXMLGregorianCalendar(); - - LocalDateTime ldt = t.toLocalDateTime(); - - cal.setYear(ldt.getYear()); - cal.setMonth(ldt.getMonthValue()); - cal.setDay(ldt.getDayOfMonth()); - cal.setHour(ldt.getHour()); - cal.setMinute(ldt.getMinute()); - cal.setSecond(ldt.getSecond()); - cal.setFractionalSecond(new BigDecimal("0." + ldt.getNano())); - - } catch(Exception e) { - e.printStackTrace(); + + LocalDateTime ldt = t.toLocalDateTime(); + + cal.setYear(ldt.getYear()); + cal.setMonth(ldt.getMonthValue()); + cal.setDay(ldt.getDayOfMonth()); + cal.setHour(ldt.getHour()); + cal.setMinute(ldt.getMinute()); + cal.setSecond(ldt.getSecond()); + cal.setFractionalSecond(new BigDecimal("0." + ldt.getNano())); + + } catch (Exception e) { + LOG.error("Error while generating XMLGregorianCalendar", e); } - - return cal; + + return cal; } }