Merge changes from topics "VID-14", "VID-13", "VID-12"
[vid.git] / vid-app-common / src / main / java / org / onap / vid / model / ServiceInfo.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;
22
23
24 import com.fasterxml.jackson.annotation.JsonProperty;
25 import java.io.Serializable;
26 import java.util.Date;
27 import java.util.Objects;
28 import java.util.Set;
29 import java.util.UUID;
30 import javax.persistence.Column;
31 import javax.persistence.Entity;
32 import javax.persistence.EnumType;
33 import javax.persistence.Enumerated;
34 import javax.persistence.GeneratedValue;
35 import javax.persistence.GenerationType;
36 import javax.persistence.Id;
37 import javax.persistence.Table;
38 import javax.persistence.Transient;
39 import org.hibernate.annotations.DynamicUpdate;
40 import org.hibernate.annotations.SelectBeforeUpdate;
41 import org.hibernate.annotations.Type;
42 import org.onap.portalsdk.core.domain.support.DomainVo;
43 import org.onap.vid.job.Job;
44
45 /*
46  The following 2 annotations let hibernate to update only fields that actually have been changed.
47  DynamicUpdate tell hibernate to update only dirty fields.
48  SelectBeforeUpdate is needed since during update the entity is detached (get and update are in different sessions)
49 */
50 @DynamicUpdate()
51 @SelectBeforeUpdate()
52 @Entity
53 @Table(name = "vid_service_info")
54 public class ServiceInfo extends DomainVo {
55
56     public enum ServiceAction {
57         INSTANTIATE,
58         DELETE,
59         UPDATE,
60         RESUME,
61         UPGRADE
62     }
63
64     private UUID jobId;
65     private UUID templateId;
66     private String userId;
67     private UUID msoRequestId;
68     private boolean aLaCarte;
69     private Job.JobStatus jobStatus;
70     private Date statusModifiedDate;
71     private boolean hidden;
72     private boolean pause;
73     private boolean retryEnabled;
74     private Date deletedAt;
75     private String owningEntityId;
76     private String owningEntityName;
77     private String project;
78     private String aicZoneId;
79     private String aicZoneName;
80     private String tenantId;
81     private String tenantName;
82     private String regionId;
83     private String regionName;
84     private String serviceType;
85     private String subscriberName;
86     private String subscriberId;
87     private String serviceInstanceId;
88     private String serviceInstanceName;
89     private String serviceModelId;
90     private String serviceModelName;
91     private String serviceModelVersion;
92     private Date createdBulkDate;
93     private ServiceAction action;
94
95     public ServiceInfo(){
96
97     }
98
99     public ServiceInfo(String userId, Boolean aLaCarte, Job.JobStatus jobStatus, boolean pause, UUID jobId, UUID templateId,
100                        String owningEntityId, String owningEntityName, String project, String aicZoneId, String aicZoneName,
101                        String tenantId, String tenantName, String regionId, String regionName, String serviceType,
102                        String subscriberName, String subscriberId, String serviceInstanceId, String serviceInstanceName,
103                        String serviceModelId, String serviceModelName, String serviceModelVersion, Date createdBulkDate,
104                        ServiceAction action, boolean retryEnabled) {
105         this.userId = userId;
106         this.aLaCarte = aLaCarte;
107         this.jobStatus = jobStatus;
108         this.jobId = jobId;
109         this.templateId = templateId;
110         this.pause = pause;
111         this.owningEntityId = owningEntityId;
112         this.owningEntityName = owningEntityName;
113         this.project = project;
114         this.aicZoneId = aicZoneId;
115         this.aicZoneName = aicZoneName;
116         this.tenantId = tenantId;
117         this.tenantName = tenantName;
118         this.regionId = regionId;
119         this.regionName = regionName;
120         this.serviceType = serviceType;
121         this.subscriberName = subscriberName;
122         this.subscriberId = subscriberId;
123         this.serviceInstanceId = serviceInstanceId;
124         this.serviceInstanceName = serviceInstanceName;
125         this.serviceModelId = serviceModelId;
126         this.serviceModelName = serviceModelName;
127         this.serviceModelVersion = serviceModelVersion;
128         this.createdBulkDate = createdBulkDate;
129         this.action = action;
130         this.retryEnabled = retryEnabled;
131     }
132
133     @Column(name = "JOB_ID", columnDefinition = "CHAR(36)")
134     @Type(type="org.hibernate.type.UUIDCharType")
135     public UUID getJobId() {
136         return jobId;
137     }
138
139     @Column(name = "TEMPLATE_ID", columnDefinition = "CHAR(36)")
140     @Type(type="org.hibernate.type.UUIDCharType")
141     public UUID getTemplateId() {
142         return templateId;
143     }
144
145     @Column(name="USER_ID")
146     public String getUserId() {
147         return userId;
148     }
149
150     @Column(name = "MSO_REQUEST_ID", columnDefinition = "CHAR(36)")
151     @Type(type="org.hibernate.type.UUIDCharType")
152     public UUID getMsoRequestId() {
153         return msoRequestId;
154     }
155
156     @Column(name="IS_A_LA_CARTE")
157     @JsonProperty("aLaCarte")
158     public boolean isALaCarte() {
159         return aLaCarte;
160     }
161
162     @Column(name="JOB_STATUS")
163     @Enumerated(EnumType.STRING)
164     public Job.JobStatus getJobStatus() {
165         return jobStatus;
166     }
167
168     @Column(name="STATUS_MODIFIED_DATE")
169     public Date getStatusModifiedDate() {
170         return statusModifiedDate;
171     }
172
173     @Column(name="IS_HIDDEN")
174     public boolean isHidden() {
175         return hidden;
176     }
177
178     @Column(name="IS_PAUSE")
179     public boolean isPause() {
180         return pause;
181     }
182
183     @Column(name="IS_RETRY_ENABLED")
184     @JsonProperty("isRetryEnabled")
185     public boolean isRetryEnabled() {
186         return retryEnabled;
187     }
188
189     @Column(name="OWNING_ENTITY_ID")
190     public String getOwningEntityId() {
191         return owningEntityId;
192     }
193
194     @Column(name="OWNING_ENTITY_NAME")
195     public String getOwningEntityName() {
196         return owningEntityName;
197     }
198
199     @Column(name="PROJECT")
200     public String getProject() {
201         return project;
202     }
203
204     @Column(name="AIC_ZONE_ID")
205     public String getAicZoneId() {
206         return aicZoneId;
207     }
208
209     @Column(name="AIC_ZONE_NAME")
210     public String getAicZoneName() {
211         return aicZoneName;
212     }
213
214     @Column(name="TENANT_ID")
215     public String getTenantId() {
216         return tenantId;
217     }
218
219     @Column(name="TENANT_NAME")
220     public String getTenantName() {
221         return tenantName;
222     }
223
224     @Column(name="REGION_ID")
225     public String getRegionId() {
226         return regionId;
227     }
228
229     @Column(name="REGION_NAME")
230     public String getRegionName() {
231         return regionName;
232     }
233
234     @Column(name="SERVICE_TYPE")
235     public String getServiceType() {
236         return serviceType;
237     }
238
239     @Column(name="SUBSCRIBER_NAME")
240     public String getSubscriberName() {
241         return subscriberName;
242     }
243
244     @Column(name="SUBSCRIBER_ID")
245     public String getSubscriberId() {
246         return subscriberId;
247     }
248
249     @Column(name="SERVICE_INSTANCE_ID")
250     public String getServiceInstanceId() {
251         return serviceInstanceId;
252     }
253
254     @Column(name="SERVICE_INSTANCE_NAME")
255     public String getServiceInstanceName() {
256         return serviceInstanceName;
257     }
258
259     @Column(name="SERVICE_MODEL_ID")
260     public String getServiceModelId() {
261         return serviceModelId;
262     }
263
264     @Column(name="SERVICE_MODEL_NAME")
265     public String getServiceModelName() {
266         return serviceModelName;
267     }
268
269     @Column(name="SERVICE_MODEL_VERSION")
270     public String getServiceModelVersion() {
271         return serviceModelVersion;
272     }
273
274     @Column(name="CREATED_BULK_DATE")
275     public Date getCreatedBulkDate() {
276         return createdBulkDate;
277     }
278
279     @Column(name="DELETED_AT")
280     public Date getDeletedAt() {
281         return deletedAt;
282     }
283
284     @Column(name="ACTION")
285     @Enumerated(EnumType.STRING)
286     public ServiceAction getAction() {
287         return action;
288     }
289
290     @Id
291     @GeneratedValue(strategy = GenerationType.IDENTITY)
292     @Override
293     @Column(name = "ID", columnDefinition = "INT(11)")
294     public Long getId() {
295         return this.id;
296     }
297
298     @Override
299     @Column(name = "CREATED_DATE")
300     public Date getCreated() {
301         return super.getCreated();
302     }
303
304     @Override
305     @Column(name = "MODIFIED_DATE")
306     public Date getModified() {
307         return super.getModified();
308     }
309
310     @Override
311     @Transient
312     public Long getCreatedId() {
313         return super.getCreatedId();
314     }
315
316     @Override
317     @Transient
318     public Long getModifiedId() {
319         return super.getModifiedId();
320     }
321
322     @Override
323     @Transient
324     public Serializable getAuditUserId() {
325         return super.getAuditUserId();
326     }
327
328     @Override
329     @Transient
330     public Long getRowNum() {
331         return super.getRowNum();
332     }
333
334     @Override
335     @Transient
336     public Set getAuditTrail() {
337         return super.getAuditTrail();
338     }
339
340     public void setUserId(String userId) {
341         this.userId = userId;
342     }
343     public void setJobId(UUID jobId) {
344         this.jobId = jobId;
345     }
346
347     public void setTemplateId(UUID templateId) {
348         this.templateId = templateId;
349     }
350
351     public void setMsoRequestId(UUID requestId) {
352         this.msoRequestId = requestId;
353     }
354
355     public void setALaCarte(boolean aLaCarte) {
356         this.aLaCarte = aLaCarte;
357     }
358
359     public void setJobStatus(Job.JobStatus jobStatus) {
360         this.jobStatus = jobStatus;
361     }
362
363     public void setStatusModifiedDate(Date statusModifiedDate) {
364         this.statusModifiedDate = statusModifiedDate;
365     }
366
367     public void setHidden(boolean isHidden) {
368         hidden = isHidden;
369     }
370
371     public void setPause(boolean pause) {
372         this.pause = pause;
373     }
374
375     public void setRetryEnabled(boolean retryEnabled) {
376         this.retryEnabled = retryEnabled;
377     }
378
379     public void setOwningEntityId(String owningEntityId) {
380         this.owningEntityId = owningEntityId;
381     }
382
383     public void setOwningEntityName(String owningEntityName) {
384         this.owningEntityName = owningEntityName;
385     }
386
387     public void setProject(String project) {
388         this.project = project;
389     }
390
391     public void setAicZoneId(String aicZoneId) {
392         this.aicZoneId = aicZoneId;
393     }
394
395     public void setAicZoneName(String aicZoneName) {
396         this.aicZoneName = aicZoneName;
397     }
398
399     public void setTenantId(String tenantId) {
400         this.tenantId = tenantId;
401     }
402
403     public void setTenantName(String tenantName) {
404         this.tenantName = tenantName;
405     }
406
407     public void setRegionId(String regionId) {
408         this.regionId = regionId;
409     }
410
411     public void setRegionName(String regionName) {
412         this.regionName = regionName;
413     }
414
415     public void setServiceType(String serviceType) {
416         this.serviceType = serviceType;
417     }
418
419     public void setSubscriberName(String subscriberName) {
420         this.subscriberName = subscriberName;
421     }
422
423     public void setSubscriberId(String subscriberId) {
424         this.subscriberId = subscriberId;
425     }
426
427     public void setServiceInstanceId(String serviceInstanceId) {
428         this.serviceInstanceId = serviceInstanceId;
429     }
430
431     public void setServiceInstanceName(String serviceInstanceName) {
432         this.serviceInstanceName = serviceInstanceName;
433     }
434
435     public void setServiceModelId(String serviceModelId) {
436         this.serviceModelId = serviceModelId;
437     }
438
439     public void setServiceModelName(String serviceModelName) {
440         this.serviceModelName = serviceModelName;
441     }
442
443     public void setServiceModelVersion(String serviceModelVersion) {
444         this.serviceModelVersion = serviceModelVersion;
445     }
446
447     public void setCreatedBulkDate(Date createdBulkDate) {
448         this.createdBulkDate = createdBulkDate;
449     }
450
451     public void setDeletedAt(Date deletedAt) {
452         this.deletedAt = deletedAt;
453     }
454
455     public void setAction(ServiceAction action) { this.action = action; }
456
457     @Override
458     public boolean equals(Object o) {
459         if (this == o) return true;
460         if (!(o instanceof ServiceInfo)) return false;
461         ServiceInfo that = (ServiceInfo) o;
462         return aLaCarte == that.aLaCarte &&
463                 isHidden() == that.isHidden() &&
464                 isPause() == that.isPause() &&
465                 isRetryEnabled() == that.isRetryEnabled() &&
466                 Objects.equals(getJobId(), that.getJobId()) &&
467                 Objects.equals(getTemplateId(), that.getTemplateId()) &&
468                 Objects.equals(getUserId(), that.getUserId()) &&
469                 Objects.equals(getMsoRequestId(), that.getMsoRequestId()) &&
470                 getJobStatus() == that.getJobStatus() &&
471                 Objects.equals(getStatusModifiedDate(), that.getStatusModifiedDate()) &&
472                 Objects.equals(getDeletedAt(), that.getDeletedAt()) &&
473                 Objects.equals(getOwningEntityId(), that.getOwningEntityId()) &&
474                 Objects.equals(getOwningEntityName(), that.getOwningEntityName()) &&
475                 Objects.equals(getProject(), that.getProject()) &&
476                 Objects.equals(getAicZoneId(), that.getAicZoneId()) &&
477                 Objects.equals(getAicZoneName(), that.getAicZoneName()) &&
478                 Objects.equals(getTenantId(), that.getTenantId()) &&
479                 Objects.equals(getTenantName(), that.getTenantName()) &&
480                 Objects.equals(getRegionId(), that.getRegionId()) &&
481                 Objects.equals(getRegionName(), that.getRegionName()) &&
482                 Objects.equals(getServiceType(), that.getServiceType()) &&
483                 Objects.equals(getSubscriberName(), that.getSubscriberName()) &&
484                 Objects.equals(getSubscriberId(), that.getSubscriberId()) &&
485                 Objects.equals(getServiceInstanceId(), that.getServiceInstanceId()) &&
486                 Objects.equals(getServiceInstanceName(), that.getServiceInstanceName()) &&
487                 Objects.equals(getServiceModelId(), that.getServiceModelId()) &&
488                 Objects.equals(getServiceModelName(), that.getServiceModelName()) &&
489                 Objects.equals(getServiceModelVersion(), that.getServiceModelVersion()) &&
490                 Objects.equals(getCreatedBulkDate(), that.getCreatedBulkDate()) &&
491                 getAction() == that.getAction();
492     }
493
494     @Override
495     public int hashCode() {
496         return Objects.hash(getJobId(), getTemplateId(), getUserId(), getMsoRequestId(), aLaCarte, getJobStatus(),
497                 getStatusModifiedDate(), isHidden(), isPause(), isRetryEnabled(), getDeletedAt(), getOwningEntityId(), getOwningEntityName(),
498                 getProject(), getAicZoneId(), getAicZoneName(), getTenantId(), getTenantName(), getRegionId(), getRegionName(), getServiceType(),
499                 getSubscriberName(), getSubscriberId(), getServiceInstanceId(), getServiceInstanceName(), getServiceModelId(), getServiceModelName(),
500                 getServiceModelVersion(), getCreatedBulkDate(), getAction());
501     }
502 }