Fix for Penetration test _ Session and cookie management
[vid.git] / vid-app-common / src / main / java / org / onap / vid / model / serviceInstantiation / BaseResource.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.model.serviceInstantiation;
22
23 import static com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL;
24
25 import com.fasterxml.jackson.annotation.JsonIgnore;
26 import com.fasterxml.jackson.annotation.JsonInclude;
27 import com.fasterxml.jackson.annotation.JsonProperty;
28 import com.google.common.collect.ImmutableMap;
29 import java.util.Collection;
30 import java.util.Collections;
31 import java.util.List;
32 import java.util.Map;
33 import javax.annotation.Nullable;
34 import org.apache.commons.lang3.StringUtils;
35 import org.onap.vid.job.JobAdapter;
36 import org.onap.vid.job.JobType;
37 import org.onap.vid.model.Action;
38 import org.onap.vid.mso.model.ModelInfo;
39
40 public abstract class BaseResource implements JobAdapter.AsyncJobRequest {
41
42         public enum PauseInstantiation {
43                 afterCompletion
44         }
45
46         protected String instanceId;
47
48         protected ModelInfo modelInfo;
49
50         protected String instanceName;
51
52         protected Action action;
53
54         protected String lcpCloudRegionId;
55
56         protected String tenantId;
57
58         protected List<Map<String, String>> instanceParams;
59
60         protected boolean rollbackOnFailure;
61
62         protected String trackById;
63
64         protected Boolean isFailed;
65
66         protected String statusMessage;
67
68         protected Integer position;
69
70         @JsonInclude(NON_NULL)
71         protected String originalName; //not used at backend, but stored for fronted
72
73         @JsonInclude(NON_NULL)
74         protected final PauseInstantiation pauseInstantiation;
75
76         private static final Map<String, Action> actionStingToEnumMap = ImmutableMap.<String, Action>builder()
77                         .put("Delete", Action.Delete)
78                         .put("Create", Action.Create)
79                         .put("None", Action.None)
80                         .put("Update_Delete", Action.Delete)
81                         .put("None_Delete", Action.Delete)
82                         .put("Resume", Action.Resume)
83                         .put("Upgrade", Action.Upgrade)
84                         .put("None_Upgrade", Action.Upgrade)
85                         .build();
86
87
88         protected BaseResource(@JsonProperty("modelInfo") ModelInfo modelInfo,
89                 @JsonProperty("instanceName") String instanceName,
90                 @JsonProperty("action") String action,
91                 @JsonProperty("lcpCloudRegionId") String lcpCloudRegionId,
92                 @JsonProperty("legacyRegion") String legacyRegion,
93                 @JsonProperty("tenantId") String tenantId,
94                 @JsonProperty("instanceParams") List<Map<String, String>> instanceParams,
95                 @JsonProperty("rollbackOnFailure") boolean rollbackOnFailure,
96                 @JsonProperty("instanceId") String instanceId,
97                 @JsonProperty("trackById") String trackById,
98                 @JsonProperty("isFailed") Boolean isFailed,
99                 @JsonProperty("statusMessage") String statusMessage,
100                 @JsonProperty("position") Integer position,
101                 @JsonProperty("pauseInstantiation") PauseInstantiation pauseInstantiation,
102                 @JsonProperty("originalName") String originalName) {
103                 this.modelInfo = modelInfo;
104                 this.modelInfo.setModelType(getModelType());
105                 this.rollbackOnFailure = rollbackOnFailure;
106                 this.instanceName = StringUtils.defaultString(instanceName, "");
107                 this.action = actionStringToEnum(action);
108                 this.lcpCloudRegionId = StringUtils.isNotEmpty(legacyRegion) ? legacyRegion : lcpCloudRegionId;
109                 this.tenantId = tenantId;
110                 this.instanceParams = instanceParams;
111                 this.instanceId = instanceId;
112                 this.trackById = trackById;
113                 this.isFailed = isFailed!= null ? isFailed: false;
114                 this.statusMessage = statusMessage;
115                 this.position = position;
116                 this.pauseInstantiation = pauseInstantiation;
117                 this.originalName = originalName;
118         }
119
120         private Action actionStringToEnum(String actionAsString) {
121                 return actionStingToEnumMap.get(actionAsString);
122         }
123
124         public ModelInfo getModelInfo() {
125                 return modelInfo;
126         }
127
128         public String getInstanceName() {
129                 return instanceName;
130         }
131
132         public Action getAction() {
133                 return (action == null ? Action.Create : action);
134         }
135
136         public String getLcpCloudRegionId() {
137                 return lcpCloudRegionId;
138         }
139
140         public String getTenantId() {
141                 return tenantId;
142         }
143
144         public List<Map<String, String>> getInstanceParams() {
145                 return instanceParams == null ? Collections.emptyList() : instanceParams;
146         }
147
148         public boolean isRollbackOnFailure() { return rollbackOnFailure; }
149
150         public String getInstanceId() {
151                 return instanceId;
152         }
153
154         protected abstract String getModelType();
155
156         public String getTrackById() {
157                 return trackById;
158         }
159
160         public void setTrackById(String trackById) {
161                 this.trackById = trackById;
162         }
163
164         public Boolean getIsFailed() {
165                 return isFailed;
166         }
167
168         public void setIsFailed(Boolean isFailed) {
169                 this.isFailed = isFailed;
170         }
171
172         public void setInstanceId(String instanceId) {
173                 this.instanceId = instanceId;
174         }
175
176         public void setAction(Action action) {
177                 this.action = action;
178         }
179
180         public String getStatusMessage() {
181                 return statusMessage;
182         }
183
184         public void setStatusMessage(String statusMessage) {
185                 this.statusMessage = statusMessage;
186         }
187
188         public Integer getPosition() {
189                 return position;
190         }
191
192         public void setPosition(Integer position) {
193                 this.position = position;
194         }
195
196         public String getOriginalName() {
197                 return originalName;
198         }
199
200         @JsonIgnore
201         public abstract Collection<? extends BaseResource> getChildren();
202
203         @JsonIgnore
204         public abstract JobType getJobType();
205
206         @Nullable
207         public PauseInstantiation getPauseInstantiation() {
208                 return pauseInstantiation;
209         }
210 }