Commit 722dd5be authored by Sonia Zorba's avatar Sonia Zorba
Browse files

Used generic JobInfo objects instead of Transfer objects in job_info column

parent 1481cdfd
Loading
Loading
Loading
Loading
+29 −40
Original line number Diff line number Diff line
@@ -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);
        }
@@ -256,8 +246,7 @@ public class JobDAO {
        }
    }

    public static XMLGregorianCalendar toXMLGregorianCalendar(Timestamp t)
    {
    public static XMLGregorianCalendar toXMLGregorianCalendar(Timestamp t) {
        XMLGregorianCalendar cal = null;
        try {
            cal = DatatypeFactory.newInstance().newXMLGregorianCalendar();
@@ -273,7 +262,7 @@ public class JobDAO {
            cal.setFractionalSecond(new BigDecimal("0." + ldt.getNano()));

        } catch (Exception e) {
           e.printStackTrace();
            LOG.error("Error while generating XMLGregorianCalendar", e);
        }

        return cal;