Skip to content
Snippets Groups Projects
Commit 22392731 authored by Sonia Zorba's avatar Sonia Zorba
Browse files

Used generic JobInfo objects instead of Transfer objects in job_info column

parent 47342b33
No related branches found
No related tags found
No related merge requests found
Pipeline #968 passed
...@@ -25,11 +25,14 @@ import org.springframework.stereotype.Repository; ...@@ -25,11 +25,14 @@ import org.springframework.stereotype.Repository;
import java.util.ArrayList; import java.util.ArrayList;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.math.BigDecimal; import java.math.BigDecimal;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@Repository @Repository
public class JobDAO { public class JobDAO {
private static final Logger LOG = LoggerFactory.getLogger(JobDAO.class);
private static final ObjectMapper MAPPER = new ObjectMapper(); private static final ObjectMapper MAPPER = new ObjectMapper();
private final JdbcTemplate jdbcTemplate; private final JdbcTemplate jdbcTemplate;
...@@ -41,21 +44,19 @@ public class JobDAO { ...@@ -41,21 +44,19 @@ public class JobDAO {
public void createJob(JobSummary jobSummary) { public void createJob(JobSummary jobSummary) {
Object jobPayload = getJobPayload(jobSummary);
String sql = "INSERT INTO job(job_id, owner_id, job_type, phase, job_info) VALUES (?, ?, ?, ?, ?)"; String sql = "INSERT INTO job(job_id, owner_id, job_type, phase, job_info) VALUES (?, ?, ?, ?, ?)";
jdbcTemplate.update(sql, ps -> { jdbcTemplate.update(sql, ps -> {
int i = 0; int i = 0;
ps.setString(++i, jobSummary.getJobId()); ps.setString(++i, jobSummary.getJobId());
ps.setString(++i, jobSummary.getOwnerId()); 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, 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(); List<Object> payload = jobSummary.getJobInfo().getAny();
if (payload.isEmpty()) { if (payload.isEmpty()) {
...@@ -65,10 +66,7 @@ public class JobDAO { ...@@ -65,10 +66,7 @@ public class JobDAO {
throw new UnsupportedOperationException("JobInfo as list not supported"); throw new UnsupportedOperationException("JobInfo as list not supported");
} }
return payload.get(0); Object jobPayload = payload.get(0);
}
private String getJobType(Object jobPayload) {
if (jobPayload instanceof Transfer) { if (jobPayload instanceof Transfer) {
Transfer transfer = (Transfer) jobPayload; Transfer transfer = (Transfer) jobPayload;
...@@ -102,14 +100,7 @@ public class JobDAO { ...@@ -102,14 +100,7 @@ public class JobDAO {
jobSummary.setJobId(rs.getString("job_id")); jobSummary.setJobId(rs.getString("job_id"));
jobSummary.setOwnerId(rs.getString("owner_id")); jobSummary.setOwnerId(rs.getString("owner_id"));
jobSummary.setPhase(ExecutionPhase.fromValue(rs.getString("phase"))); jobSummary.setPhase(ExecutionPhase.fromValue(rs.getString("phase")));
jobSummary.setJobInfo(getJobPayload(rs.getString("job_info")));
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.setResults(getResults(rs.getString("results"))); jobSummary.setResults(getResults(rs.getString("results")));
return jobSummary; return jobSummary;
...@@ -215,10 +206,9 @@ public class JobDAO { ...@@ -215,10 +206,9 @@ public class JobDAO {
return sjd; return sjd;
} }
private Object getJobPayload(String jobType, String json) { private JobSummary.JobInfo getJobPayload(String json) {
try { try {
// TODO: switch on jobType return MAPPER.readValue(json, JobSummary.JobInfo.class);
return MAPPER.readValue(json, Transfer.class);
} catch (JsonProcessingException ex) { } catch (JsonProcessingException ex) {
throw new RuntimeException(ex); throw new RuntimeException(ex);
} }
...@@ -256,8 +246,7 @@ public class JobDAO { ...@@ -256,8 +246,7 @@ public class JobDAO {
} }
} }
public static XMLGregorianCalendar toXMLGregorianCalendar(Timestamp t) public static XMLGregorianCalendar toXMLGregorianCalendar(Timestamp t) {
{
XMLGregorianCalendar cal = null; XMLGregorianCalendar cal = null;
try { try {
cal = DatatypeFactory.newInstance().newXMLGregorianCalendar(); cal = DatatypeFactory.newInstance().newXMLGregorianCalendar();
...@@ -273,7 +262,7 @@ public class JobDAO { ...@@ -273,7 +262,7 @@ public class JobDAO {
cal.setFractionalSecond(new BigDecimal("0." + ldt.getNano())); cal.setFractionalSecond(new BigDecimal("0." + ldt.getNano()));
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); LOG.error("Error while generating XMLGregorianCalendar", e);
} }
return cal; return cal;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment