Implant vid-app-common org.onap.vid.job (main and test)
[vid.git] / vid-app-common / src / main / java / org / onap / vid / job / Job.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * VID
4  * ================================================================================
5  * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.onap.vid.job;
22
23 import com.fasterxml.jackson.annotation.JsonIgnore;
24 import org.onap.vid.job.impl.JobSharedData;
25
26 import java.util.List;
27 import java.util.Map;
28 import java.util.UUID;
29 import java.util.stream.Collectors;
30 import java.util.stream.Stream;
31
32 public interface Job {
33
34     UUID getUuid();
35
36     void setUuid(UUID uuid);
37
38     JobStatus getStatus();
39
40     void setStatus(JobStatus status);
41
42     @JsonIgnore
43     Map<String, Object> getData();
44
45     JobSharedData getSharedData();
46
47     void setTypeAndData(JobType jobType, Map<String, Object> data);
48
49     UUID getTemplateId();
50
51     void setTemplateId(UUID templateId);
52
53     Integer getIndexInBulk();
54
55     void setIndexInBulk(Integer indexInBulk);
56
57     JobType getType();
58
59     enum JobStatus {
60         COMPLETED(true, false),
61         FAILED(true, true),
62         IN_PROGRESS(false),
63         RESOURCE_IN_PROGRESS(false),
64         PAUSE(false),
65         PENDING(false),
66         STOPPED(true, true),
67         COMPLETED_WITH_ERRORS(true, true),
68         COMPLETED_WITH_NO_ACTION(true, false),
69         CREATING(false),
70         PENDING_RESOURCE(false),
71         ;
72
73         private final Boolean finalStatus;
74         public Boolean isFinal(){return finalStatus;}
75
76         private final Boolean failure;
77         public Boolean isFailure() {
78             return failure;
79         }
80
81         JobStatus(Boolean finalStatus)
82         {
83             this(finalStatus, false);
84         }
85
86         JobStatus(Boolean finalStatus, boolean failure) {
87             this.finalStatus = finalStatus;
88             this.failure = failure;
89         }
90
91         public static final List<JobStatus> FINAL_STATUS = Stream.of(JobStatus.values()).filter(JobStatus::isFinal).collect(Collectors.toList());
92
93     }
94 }