Merge from ECOMP's repository
[vid.git] / vid-app-common / src / main / java / org / onap / vid / mso / model / BaseResourceInstantiationRequestDetails.java
1 package org.onap.vid.mso.model;
2
3 import com.fasterxml.jackson.annotation.JsonInclude;
4 import com.fasterxml.jackson.annotation.JsonProperty;
5 import com.fasterxml.jackson.annotation.JsonTypeInfo;
6 import com.fasterxml.jackson.annotation.JsonTypeName;
7
8 import java.util.List;
9
10 import static com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL;
11
12 @JsonInclude(NON_NULL)
13 public class BaseResourceInstantiationRequestDetails {
14
15     @JsonProperty("modelInfo")
16     protected ModelInfo modelInfo;
17
18     @JsonProperty("cloudConfiguration")
19     protected CloudConfiguration cloudConfiguration;
20
21     @JsonProperty("requestInfo")
22     protected RequestInfo requestInfo;
23
24     @JsonProperty("platform")
25     protected Platform platform;
26
27     @JsonProperty("lineOfBusiness")
28     protected LineOfBusiness lineOfBusiness;
29
30     @JsonProperty("relatedInstanceList")
31     protected List<RelatedInstance> relatedInstanceList;
32
33     @JsonProperty("requestParameters")
34     protected RequestParameters requestParameters;
35
36     public BaseResourceInstantiationRequestDetails(@JsonProperty(value = "modelInfo", required = true) ModelInfo modelInfo,
37                                                    @JsonProperty(value = "cloudConfiguration", required = true) CloudConfiguration cloudConfiguration,
38                                                    @JsonProperty(value = "requestInfo", required = true) RequestInfo requestInfo,
39                                                    @JsonProperty(value = "platform", required = true) Platform platform,
40                                                    @JsonProperty(value = "lineOfBusiness", required = true) LineOfBusiness lineOfBusiness,
41                                                    @JsonProperty(value = "relatedInstanceList", required = true) List<RelatedInstance> relatedInstanceList,
42                                                    @JsonProperty(value = "requestParameters", required = true) RequestParameters requestParameters)
43     {
44         this.modelInfo = modelInfo;
45         this.cloudConfiguration = cloudConfiguration;
46         this.requestInfo = requestInfo;
47         this.platform = platform;
48         this.lineOfBusiness = lineOfBusiness;
49         this.relatedInstanceList = relatedInstanceList;
50         this.requestParameters = requestParameters;
51     }
52
53     public BaseResourceInstantiationRequestDetails(@JsonProperty(value = "modelInfo", required = true) ModelInfo modelInfo,
54                                                    @JsonProperty(value = "cloudConfiguration", required = true) CloudConfiguration cloudConfiguration,
55                                                    @JsonProperty(value = "requestInfo", required = true) RequestInfo requestInfo,
56                                                    @JsonProperty(value = "relatedInstanceList", required = true) List<RelatedInstance> relatedInstanceList,
57                                                    @JsonProperty(value = "requestParameters", required = true) RequestParameters requestParameters)
58     {
59         this.modelInfo = modelInfo;
60         this.cloudConfiguration = cloudConfiguration;
61         this.requestInfo = requestInfo;
62         this.relatedInstanceList = relatedInstanceList;
63         this.requestParameters = requestParameters;
64     }
65
66      public static class RequestInfo {
67
68         @JsonInclude(NON_NULL) public final String instanceName;
69         @JsonInclude(NON_NULL) public final String productFamilyId;
70         public final String source;
71         public final boolean suppressRollback;
72         public final String requestorId;
73
74         public RequestInfo(String instanceName, String productFamilyId, String source, boolean rollbackOnFailure, String requestorId) {
75             this.instanceName = instanceName;
76             this.productFamilyId = productFamilyId;
77             this.source = source;
78             this.requestorId = requestorId;
79             // in the FE we are asking for "RollbackOnFailure" but to MSO we are passing the negative value "suppressRollback"
80             this.suppressRollback = !rollbackOnFailure;
81         }
82     }
83
84     public static class Project{
85         public final String projectName;
86
87         public Project(String projectName) {
88             this.projectName = projectName;
89         }
90     }
91
92     public static class Platform{
93         public final String platformName;
94
95         public Platform(String platformName) {
96             this.platformName = platformName;
97         }
98     }
99
100     public static class LineOfBusiness{
101         public final String lineOfBusinessName;
102
103         public LineOfBusiness(String lineOfBusiness) {
104             this.lineOfBusinessName = lineOfBusiness;
105         }
106     }
107
108     @JsonTypeName("relatedInstance")
109     @JsonTypeInfo(include = JsonTypeInfo.As.WRAPPER_OBJECT, use = JsonTypeInfo.Id.NAME)
110     public static class RelatedInstance{
111         public ModelInfo modelInfo;
112         @JsonInclude(NON_NULL) public String instanceId; //TODO ask Eylon - is this needed, and if yes, for other fields as well?
113         @JsonInclude(NON_NULL) public String instanceName;
114
115         public RelatedInstance (@JsonProperty(value = "modelInfo", required = true) ModelInfo modelInfo,
116                                 @JsonProperty (value = "instanceId", required = true) String instanceId){
117             this.modelInfo = modelInfo;
118             this.instanceId = instanceId;
119         }
120
121         public RelatedInstance (@JsonProperty(value = "modelInfo", required = true) ModelInfo modelInfo,
122                                 @JsonProperty (value = "instanceId", required = true) String instanceId,
123                                 @JsonProperty (value = "instanceName", required = true) String instanceName){
124             this.modelInfo = modelInfo;
125             this.instanceId = instanceId;
126             this.instanceName = instanceName;
127         }
128     }
129
130     public static class RequestParameters {
131         public final List<? extends UserParamTypes> userParams;
132
133         public RequestParameters(List<? extends UserParamTypes> userParams) {
134             this.userParams = userParams;
135         }
136
137         public List<? extends UserParamTypes> getUserParams() {
138             return userParams;
139         }
140     }
141 }
142