added generic fabric support to SO
[so.git] / mso-catalog-db / src / main / java / org / onap / so / db / catalog / beans / VnfResourceCustomization.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP - SO
4  * ================================================================================
5  * Copyright (C) 2017 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.so.db.catalog.beans;
22
23 import java.io.Serializable;
24 import java.util.ArrayList;
25 import java.util.Date;
26 import java.util.HashSet;
27 import java.util.List;
28 import java.util.Set;
29
30 import javax.persistence.CascadeType;
31 import javax.persistence.Column;
32 import javax.persistence.Entity;
33 import javax.persistence.FetchType;
34 import javax.persistence.Id;
35 import javax.persistence.JoinColumn;
36 import javax.persistence.JoinTable;
37 import javax.persistence.ManyToOne;
38 import javax.persistence.OneToMany;
39 import javax.persistence.PrePersist;
40 import javax.persistence.Table;
41 import javax.persistence.Temporal;
42 import javax.persistence.TemporalType;
43
44 import org.apache.commons.lang3.builder.EqualsBuilder;
45 import org.apache.commons.lang3.builder.HashCodeBuilder;
46 import org.apache.commons.lang3.builder.ToStringBuilder;
47
48 import com.fasterxml.jackson.annotation.JsonFormat;
49 import com.openpojo.business.annotation.BusinessKey;
50
51 import uk.co.blackpepper.bowman.annotation.LinkedResource;
52
53 @Entity
54 @Table(name = "vnf_resource_customization")
55 public class VnfResourceCustomization implements Serializable {
56
57         private static final long serialVersionUID = 768026109321305392L;
58
59         @BusinessKey
60         @Id
61         @Column(name = "MODEL_CUSTOMIZATION_UUID")
62         private String modelCustomizationUUID;
63
64         @Column(name = "MODEL_INSTANCE_NAME")
65         private String modelInstanceName;
66
67         @Column(name = "CREATION_TIMESTAMP", updatable = false)
68         @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss.SSS")
69         @Temporal(TemporalType.TIMESTAMP)
70         private Date created;
71
72         public void setCreated(Date created) {
73                 this.created = created;
74         }
75
76         @Column(name = "MIN_INSTANCES")
77         private Integer minInstances;
78
79         @Column(name = "MAX_INSTANCES")
80         private Integer maxInstances;
81
82         @Column(name = "AVAILABILITY_ZONE_MAX_COUNT")
83         private Integer availabilityZoneMaxCount;
84
85         @Column(name = "NF_FUNCTION")
86         private String nfFunction;
87
88         @Column(name = "NF_TYPE")
89         private String nfType;
90
91         @Column(name = "NF_ROLE")
92         private String nfRole;
93
94         @Column(name = "NF_NAMING_CODE")
95         private String nfNamingCode;
96
97         @Column(name = "MULTI_STAGE_DESIGN")
98         private String multiStageDesign;
99
100         @ManyToOne(cascade = CascadeType.ALL)
101         @JoinColumn(name = "VNF_RESOURCE_MODEL_UUID")
102         private VnfResource vnfResources;
103
104         @OneToMany(cascade = CascadeType.ALL)
105         @JoinTable(name = "vnf_res_custom_to_vf_module_custom", joinColumns = @JoinColumn(name = "VNF_RESOURCE_CUST_MODEL_CUSTOMIZATION_UUID", referencedColumnName = "MODEL_CUSTOMIZATION_UUID"), inverseJoinColumns = @JoinColumn(name = "VF_MODULE_CUST_MODEL_CUSTOMIZATION_UUID", referencedColumnName = "MODEL_CUSTOMIZATION_UUID"))
106         private List<VfModuleCustomization> vfModuleCustomizations;
107
108         @OneToMany(fetch = FetchType.LAZY, mappedBy = "vnfResourceCust")
109         private List<VnfcInstanceGroupCustomization> vnfcInstanceGroupCustomizations;
110         
111         @OneToMany(cascade = CascadeType.ALL, mappedBy = "modelCustomizationUUID")
112         private Set<VnfVfmoduleCvnfcConfigurationCustomization> vnfVfmoduleCvnfcConfigurationCustomization;
113         
114         @OneToMany(cascade = CascadeType.ALL, mappedBy = "modelCustomizationUUID")
115         private List<CvnfcCustomization> cvnfcCustomization;
116
117         @Override
118         public String toString() {
119                 return new ToStringBuilder(this).append("modelCustomizationUUID", modelCustomizationUUID)
120                                 .append("modelInstanceName", modelInstanceName).append("created", created)
121                                 .append("minInstances", minInstances).append("maxInstances", maxInstances)
122                                 .append("availabilityZoneMaxCount", availabilityZoneMaxCount).append("nfFunction", nfFunction)
123                                 .append("nfType", nfType).append("nfRole", nfRole).append("nfNamingCode", nfNamingCode)
124                                 .append("multiStageDesign", multiStageDesign).append("vnfResources", vnfResources)
125                                 .append("vfModuleCustomizations", vfModuleCustomizations)
126                                 .append("vnfcInstanceGroupCustomizations", vnfcInstanceGroupCustomizations).toString();
127         }
128
129         @Override
130         public boolean equals(final Object other) {
131                 if (!(other instanceof VnfResourceCustomization)) {
132                         return false;
133                 }
134                 VnfResourceCustomization castOther = (VnfResourceCustomization) other;
135                 return new EqualsBuilder().append(modelCustomizationUUID, castOther.modelCustomizationUUID).isEquals();
136         }
137
138         @Override
139         public int hashCode() {
140                 return new HashCodeBuilder().append(modelCustomizationUUID).toHashCode();
141         }
142
143         @PrePersist
144         protected void onCreate() {
145                 this.created = new Date();
146         }
147
148         public String getModelCustomizationUUID() {
149                 return modelCustomizationUUID;
150         }
151
152         public void setModelCustomizationUUID(String modelCustomizationUUID) {
153                 this.modelCustomizationUUID = modelCustomizationUUID;
154         }
155
156         public String getModelInstanceName() {
157                 return this.modelInstanceName;
158         }
159
160         public void setModelInstanceName(String modelInstanceName) {
161                 this.modelInstanceName = modelInstanceName;
162         }
163
164         public Date getCreationTimestamp() {
165                 return this.created;
166         }
167
168         public Integer getMinInstances() {
169                 return this.minInstances;
170         }
171
172         public void setMinInstances(Integer minInstances) {
173                 this.minInstances = minInstances;
174         }
175
176         public Integer getMaxInstances() {
177                 return this.maxInstances;
178         }
179
180         public void setMaxInstances(Integer maxInstances) {
181                 this.maxInstances = maxInstances;
182         }
183
184         public Integer getAvailabilityZoneMaxCount() {
185                 return this.availabilityZoneMaxCount;
186         }
187
188         public void setAvailabilityZoneMaxCount(Integer availabilityZoneMaxCount) {
189                 this.availabilityZoneMaxCount = availabilityZoneMaxCount;
190         }
191
192         public String getNfFunction() {
193                 return nfFunction;
194         }
195
196         public void setNfFunction(String nfFunction) {
197                 this.nfFunction = nfFunction;
198         }
199
200         public String getNfType() {
201                 return nfType;
202         }
203
204         public void setNfType(String nfType) {
205                 this.nfType = nfType;
206         }
207
208         public String getNfRole() {
209                 return nfRole;
210         }
211
212         public void setNfRole(String nfRole) {
213                 this.nfRole = nfRole;
214         }
215
216         public String getNfNamingCode() {
217                 return nfNamingCode;
218         }
219
220         public void setNfNamingCode(String nfNamingCode) {
221                 this.nfNamingCode = nfNamingCode;
222         }
223
224         public String getMultiStageDesign() {
225                 return this.multiStageDesign;
226         }
227
228         public void setMultiStageDesign(String multiStageDesign) {
229                 this.multiStageDesign = multiStageDesign;
230         }
231
232         @LinkedResource
233         public List<VfModuleCustomization> getVfModuleCustomizations() {
234                 if (vfModuleCustomizations == null)
235                         vfModuleCustomizations = new ArrayList<>();
236                 return vfModuleCustomizations;
237         }
238
239         public void setVfModuleCustomizations(List<VfModuleCustomization> vfModuleCustomizations) {
240                 this.vfModuleCustomizations = vfModuleCustomizations;
241         }
242
243         @LinkedResource
244         public VnfResource getVnfResources() {
245                 return vnfResources;
246         }
247
248         public void setVnfResources(VnfResource vnfResources) {
249                 this.vnfResources = vnfResources;
250         }
251
252         public Date getCreated() {
253                 return created;
254         }
255
256         @LinkedResource
257         public List<VnfcInstanceGroupCustomization> getVnfcInstanceGroupCustomizations() {
258                 return vnfcInstanceGroupCustomizations;
259         }
260
261         public void setVnfcInstanceGroupCustomizations(
262                         List<VnfcInstanceGroupCustomization> vnfcInstanceGroupCustomizations) {
263                 this.vnfcInstanceGroupCustomizations = vnfcInstanceGroupCustomizations;
264         }
265         
266         @LinkedResource
267         public Set<VnfVfmoduleCvnfcConfigurationCustomization> getVnfVfmoduleCvnfcConfigurationCustomization() {
268                 if (vnfVfmoduleCvnfcConfigurationCustomization == null)
269                         vnfVfmoduleCvnfcConfigurationCustomization = new HashSet<>();
270                 return vnfVfmoduleCvnfcConfigurationCustomization;
271         }
272         
273         public void setVnfVfmoduleCvnfcConfigurationCustomization(
274                         Set<VnfVfmoduleCvnfcConfigurationCustomization> vnfVfmoduleCvnfcConfigurationCustomization) {
275                 this.vnfVfmoduleCvnfcConfigurationCustomization = vnfVfmoduleCvnfcConfigurationCustomization;
276         }
277         
278         @LinkedResource
279         public List<CvnfcCustomization> getCvnfcCustomization() {
280                 return cvnfcCustomization;
281         }
282
283         public void setCvnfcCustomization(List<CvnfcCustomization> cvnfcCustomization) {
284                 this.cvnfcCustomization = cvnfcCustomization;
285         }
286 }