ImportJob.java 3.2 KB
Newer Older
1
package eu.simstadt.nf4j;
2

3
4
import java.util.Objects;

5
6
7
8
9
/**
 * Import jobs are requests to store, change or delete CityGML models. Every valid import job has an id and a status.
 * 
 * @author Marcel Bruse
 */
10
public class ImportJob extends Job<ImportJobDescriptorImpl> {
11
12
	
	/**
13
14
15
	 * This constructor forces the job to have a description and a connector instance. Every job which
	 * is created by this constructor will have the status "local", because it is assumed that it has an unsent
	 * description and no job id yet.
16
	 * 
17
18
	 * @param connector The job will use this connector to synchronize itself with the nF.
	 * @param descriptor The description of this job.
19
	 */
20
21
22
	public ImportJob(ImportJobDescriptorImpl descriptor, NFConnector connector) {
		super(descriptor, connector);
		status = JobStatus.LOCAL;
23
24
	}
	
25
	/**
26
27
28
	 * This constructor forces the job to have a id and a connector instance. Every job which is created by this
	 * constructor will have the status "sent", because it is assumed that the job is already enqueued at the 
	 * nF job queue.  
29
	 * 
30
31
32
	 * @param id The job id. If you call updateStatus() and the nF "knows" the job id, then the job status
	 * will be updated. If you call updateStatus() and the job id is "unkown" on the server side, then     
	 * @param connector The job will use this connector to synchronize itself with the nF.
33
	 */
34
35
36
	public ImportJob(int id, NFConnector connector) {
		super(id, connector);
		status = JobStatus.SENT;
37
	}
38
39
40
41
42
43
44
45
46
	
	/**
	 * 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())) {
47
			Job<ImportJobDescriptorImpl> job = getNFConnector().requestImportJob(getId());
48
49
50
51
52
			setStatus(job.getStatus());
		} else {
			throw new FailedTransmissionException();
		}
	}
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90

	/**
	 * 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);
		}
	}
91
92
93
94
95
96

	@Override
	public void send() throws InvalidJobDescriptorException,
			FailedTransmissionException {
		connector.sendAndUpdateImportJob(this);
	}
97
98
	
}