Skip to content
JobService.java 1.5 KiB
Newer Older
package it.inaf.oats.vospace;

import it.inaf.oats.vospace.persistence.JobDAO;
import net.ivoa.xml.uws.v1.ExecutionPhase;
import net.ivoa.xml.uws.v1.JobSummary;
import net.ivoa.xml.vospace.v2.Transfer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class JobService {

    @Autowired
    private JobDAO jobDAO;

    @Autowired
    private UriService uriService;

    @Autowired
    private TapeService tapeService;

    enum JobType {
        pullToVoSpace,
        pullFromVoSpace,
        moveNode,
        copyNode
    }

    public void startJob(JobSummary job) {

        switch (getJobType(job)) {
            case pullToVoSpace:
                handlePullToVoSpace(job);
                break;
            case pullFromVoSpace:
                handlePullFromVoSpace(job);
                break;
            default:
                throw new UnsupportedOperationException("Not implemented yet");
        }
    }

    private void handlePullToVoSpace(JobSummary job) {
        // TODO: check protocol
        tapeService.startJob(job);
    }

    private void handlePullFromVoSpace(JobSummary job) {
        job.setPhase(ExecutionPhase.EXECUTING);
        uriService.setTransferJobResult(job);
        jobDAO.updateJob(job);
    }

    private JobType getJobType(JobSummary job) {

        // TODO: check types
        Transfer transfer = (Transfer) job.getJobInfo().getAny().get(0);

        return JobType.valueOf(transfer.getDirection());
    }
}