package eu.simstadt.nf4j; import java.util.Objects; /** * Import jobs are requests to store, change or delete CityGML models. Every valid import job has an id and a status. * * @author Marcel Bruse */ public class ImportJob extends Job { /** * Initializes a new import job instance with unknown state. This is a convenient method. * * @return Returns a new import job instance with unknown state. */ public static ImportJob getNewInstance() { return new ImportJob(JobStatus.UNKOWN); } /** * Initializes a new import job instance with unknown state and connector instance. This is a * convenient method. * * @param The nF connector which answers status requests for this job. * @return Returns a new import job instance with unknown state. */ public static ImportJob getNewInstance(NFConnector nFConnector) { ImportJob result = getNewInstance(); result.setNFConnector(nFConnector); return result; } /** * This constructor forces the job to have a defined state. * * @param status */ public ImportJob(JobStatus status) { super(status); } /** * Connects to the nF and refreshes the status of this job. If there is no nF connector set, * this operation will throw a FailedTransmissionException. * * @throws FailedTransmissionException If the connection to the nF is broken you will get some of this. */ public void updateStatus() throws FailedTransmissionException { if (Objects.nonNull(getNFConnector())) { Job job = getNFConnector().requestImportJob(getJobId()); setStatus(job.getStatus()); } else { throw new FailedTransmissionException(); } } /** * Sets the status of this job depending on the given nF status code. nF status codes will be sent * to you in http responses. * * @param statusCode The nF status code for this job. */ @Override public void setStatusForCode(int statusCode) { switch (statusCode) { case 0: setStatus(JobStatus.READY_TO_RUN); break; case 10: setStatus(JobStatus.RUNNING); break; case 20: setStatus(JobStatus.ERROR); break; case 25: setStatus(JobStatus.WARNING); break; case 30: setStatus(JobStatus.FINISHED); break; case 40: setStatus(JobStatus.APPROVE); break; case 45: setStatus(JobStatus.REJECT); break; case 50: setStatus(JobStatus.APPROVE_RUNNING); break; case 55: setStatus(JobStatus.REJECT_RUNNING); break; case 60: setStatus(JobStatus.APPROVE_REJECT_ERROR); break; case 70: setStatus(JobStatus.APPROVE_REJECT_OK); break; case 80: setStatus(JobStatus.IMPORTED_WARNING); break; default: setStatus(JobStatus.UNKOWN); } } }