From 326b89a30ac0867073982effdff24aced04c9bcb Mon Sep 17 00:00:00 2001 From: Nicola Fulvio Calabria Date: Fri, 12 Mar 2021 20:46:39 +0100 Subject: [PATCH] #3824: Second part of implementation, update job status. Need to add tests --- .../controller/PutFileController.java | 34 ++++++-------- .../inaf/ia2/transfer/persistence/JobDAO.java | 46 +++++++++++++++++++ 2 files changed, 60 insertions(+), 20 deletions(-) create mode 100644 src/main/java/it/inaf/ia2/transfer/persistence/JobDAO.java diff --git a/src/main/java/it/inaf/ia2/transfer/controller/PutFileController.java b/src/main/java/it/inaf/ia2/transfer/controller/PutFileController.java index 7becad0..521bf6e 100644 --- a/src/main/java/it/inaf/ia2/transfer/controller/PutFileController.java +++ b/src/main/java/it/inaf/ia2/transfer/controller/PutFileController.java @@ -2,8 +2,7 @@ package it.inaf.ia2.transfer.controller; import it.inaf.ia2.transfer.persistence.FileDAO; import it.inaf.ia2.transfer.persistence.ListOfFilesDAO; -//import it.inaf.oats.vospace.persistence.JobDAO; -import net.ivoa.xml.uws.v1.JobSummary; +import it.inaf.ia2.transfer.persistence.JobDAO; import java.io.BufferedReader; import java.io.File; import java.io.IOException; @@ -37,8 +36,9 @@ public class PutFileController extends FileController { @Autowired private FileDAO fileDAO; - //@Autowired - //private JobDAO jobDAO; + @Autowired + private JobDAO jobDAO; + @Autowired private ListOfFilesDAO listOfFilesDAO; @@ -47,21 +47,17 @@ public class PutFileController extends FileController { @RequestParam("file") MultipartFile file, @RequestParam(value = "jobid", required = false) String jobId) throws IOException, NoSuchAlgorithmException { - String path = getPath(); - JobSummary job = null; + String path = getPath(); if (jobId == null) { LOG.debug("putFile called for path {}", path); } else { LOG.debug("putFile called for path {} with jobId {}", path, jobId); - /* - Optional resultJob = jobDAO.getJob(jobId); - if(resultJob.isPresent()) + + if(!jobDAO.isJobExisting(jobId)) { - job = resultJob.get(); - } else { return new ResponseEntity<>("Job "+jobId+ " not found", NOT_FOUND); - }*/ + } } Optional optFileInfo = fileDAO.getFileInfo(path); @@ -75,7 +71,7 @@ public class PutFileController extends FileController { } else { fileInfo.setContentType(file.getContentType()); fileInfo.setContentEncoding(contentEncoding); - storeGenericFile(fileInfo, in, job); + storeGenericFile(fileInfo, in, jobId); } } @@ -110,7 +106,7 @@ public class PutFileController extends FileController { return filePaths; } - private void storeGenericFile(FileInfo fileInfo, InputStream is, JobSummary job) throws IOException, NoSuchAlgorithmException { + private void storeGenericFile(FileInfo fileInfo, InputStream is, String jobId) throws IOException, NoSuchAlgorithmException { File file = new File(fileInfo.getOsPath()); @@ -143,15 +139,13 @@ public class PutFileController extends FileController { fileInfo.getContentEncoding(), fileSize, md5Checksum); - if (job != null) { - //job.setPhase(ExecutionPhase.COMPLETED); - //jobDAO.updateJob(job); + if (jobId != null) { + jobDAO.updateJobPhase(ExecutionPhase.COMPLETED, jobId); } } catch (IOException | NoSuchAlgorithmException ex) { - if (job != null) { - //job.setPhase(ExecutionPhase.ERROR); - //jobDAO.updateJob(job); + if (jobId != null) { + jobDAO.updateJobPhase(ExecutionPhase.ERROR, jobId); } throw ex; } finally { diff --git a/src/main/java/it/inaf/ia2/transfer/persistence/JobDAO.java b/src/main/java/it/inaf/ia2/transfer/persistence/JobDAO.java new file mode 100644 index 0000000..f25bb68 --- /dev/null +++ b/src/main/java/it/inaf/ia2/transfer/persistence/JobDAO.java @@ -0,0 +1,46 @@ +package it.inaf.ia2.transfer.persistence; + +import java.sql.Types; +import javax.sql.DataSource; +import net.ivoa.xml.uws.v1.ExecutionPhase; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Repository; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +@Repository +public class JobDAO { + + private final JdbcTemplate jdbcTemplate; + + @Autowired + public JobDAO(DataSource dataSource) { + jdbcTemplate = new JdbcTemplate(dataSource); + } + + public boolean isJobExisting(String jobId) { + + String sql = "SELECT * FROM job WHERE job_id = ?"; + + boolean result = jdbcTemplate.query(sql, + ps -> { + ps.setString(1, jobId); + }, rs -> { + return rs.next(); + }); + + return result; + } + + public void updateJobPhase(ExecutionPhase phase, String jobId) { + + String sql = "UPDATE job SET phase = ? WHERE job_id = ?"; + + jdbcTemplate.update(sql, ps -> { + ps.setObject(1, phase, Types.OTHER); + ps.setString(2, jobId); + }); + } + +} -- GitLab