Commit 326b89a3 authored by Nicola Fulvio Calabria's avatar Nicola Fulvio Calabria
Browse files

#3824: Second part of implementation, update job status. Need to add tests

parent b67a408f
Loading
Loading
Loading
Loading
Loading
+14 −20
Original line number Diff line number Diff line
@@ -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;

@@ -48,20 +48,16 @@ public class PutFileController extends FileController {
            @RequestParam(value = "jobid", required = false) String jobId) throws IOException, NoSuchAlgorithmException {

        String path = getPath();        
        JobSummary job = null;

        if (jobId == null) {
            LOG.debug("putFile called for path {}", path);
        } else {
            LOG.debug("putFile called for path {} with jobId {}", path, jobId);
            /*
            Optional<JobSummary> 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<FileInfo> 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 {
+46 −0
Original line number Diff line number Diff line
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);
        });
    }

}