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