added generic fabric support to SO
[so.git] / mso-catalog-db / src / main / java / org / onap / so / db / catalog / beans / VfModule.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.List;
27
28 import javax.persistence.CascadeType;
29 import javax.persistence.Column;
30 import javax.persistence.Entity;
31 import javax.persistence.FetchType;
32 import javax.persistence.Id;
33 import javax.persistence.JoinColumn;
34 import javax.persistence.JoinTable;
35 import javax.persistence.ManyToOne;
36 import javax.persistence.OneToMany;
37 import javax.persistence.OneToOne;
38 import javax.persistence.PrePersist;
39 import javax.persistence.Table;
40 import javax.persistence.Temporal;
41 import javax.persistence.TemporalType;
42
43 import org.apache.commons.lang3.builder.EqualsBuilder;
44 import org.apache.commons.lang3.builder.HashCodeBuilder;
45 import org.apache.commons.lang3.builder.ToStringBuilder;
46
47 import com.fasterxml.jackson.annotation.JsonFormat;
48 import com.openpojo.business.annotation.BusinessKey;
49
50 import uk.co.blackpepper.bowman.annotation.LinkedResource;
51
52 @Entity
53 @Table(name = "vf_module")
54 public class VfModule implements Serializable {
55
56         private static final long serialVersionUID = 768026109321305392L;
57
58         @Id
59         @BusinessKey
60         @Column(name = "MODEL_UUID")
61         private String modelUUID;
62
63         @Column(name = "MODEL_INVARIANT_UUID")
64         private String modelInvariantUUID;
65
66         @Column(name = "MODEL_NAME")
67         private String modelName;
68
69         @Column(name = "MODEL_VERSION")
70         private String modelVersion;
71
72         @Column(name = "DESCRIPTION")
73         private String description;
74
75         @Column(name = "IS_BASE")
76         private Boolean isBase;
77
78         @OneToOne(cascade = CascadeType.ALL)
79         @JoinColumn(name = "VOL_HEAT_TEMPLATE_ARTIFACT_UUID")
80         private HeatTemplate volumeHeatTemplate;
81
82         @OneToOne(cascade = CascadeType.ALL)
83         @JoinColumn(name = "HEAT_TEMPLATE_ARTIFACT_UUID")
84         private HeatTemplate moduleHeatTemplate;
85
86         @Column(name = "CREATION_TIMESTAMP", updatable = false)
87         @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss.SSS")
88         @Temporal(TemporalType.TIMESTAMP)
89         private Date created;
90
91         @OneToMany(cascade = CascadeType.ALL)
92         @JoinTable(name = "vf_module_to_heat_files", joinColumns = @JoinColumn(name = "VF_MODULE_MODEL_UUID"), inverseJoinColumns = @JoinColumn(name = "HEAT_FILES_ARTIFACT_UUID"))
93         private List<HeatFiles> heatFiles;
94
95         @OneToMany(mappedBy = "vfModule")
96         private List<VfModuleCustomization> vfModuleCustomization;
97
98         @ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
99         @JoinColumn(name = "VNF_RESOURCE_MODEL_UUID")
100         private VnfResource vnfResources;
101
102         @Override
103         public String toString() {
104                 return new ToStringBuilder(this).append("modelUUID", modelUUID).append("modelInvariantUUID", modelInvariantUUID)
105                                 .append("modelName", modelName).append("modelVersion", modelVersion).append("description", description)
106                                 .append("isBase", isBase).append("volumeHeatTemplate", volumeHeatTemplate)
107                                 .append("moduleHeatTemplate", moduleHeatTemplate).append("created", created)
108                                 .append("heatFiles", heatFiles).append("vfModuleCustomization", vfModuleCustomization)
109                                 .append("vnfResources", vnfResources).toString();
110         }
111
112         @Override
113         public boolean equals(final Object other) {
114                 if (!(other instanceof VfModule)) {
115                         return false;
116                 }
117                 VfModule castOther = (VfModule) other;
118                 return new EqualsBuilder().append(modelUUID, castOther.modelUUID).isEquals();
119         }
120
121         @Override
122         public int hashCode() {
123                 return new HashCodeBuilder().append(modelUUID).toHashCode();
124         }
125
126         @PrePersist
127         protected void onCreate() {
128                 this.created = new Date();
129         }
130
131         public String getModelInvariantUUID() {
132                 return modelInvariantUUID;
133         }
134
135         public void setModelInvariantUUID(String modelInvariantUUID) {
136                 this.modelInvariantUUID = modelInvariantUUID;
137         }
138
139         @LinkedResource
140         public List<VfModuleCustomization> getVfModuleCustomization() {
141                 if (vfModuleCustomization == null)
142                         vfModuleCustomization = new ArrayList<>();
143
144                 return vfModuleCustomization;
145         }
146
147         public void setVfModuleCustomization(List<VfModuleCustomization> vfModuleCustomization) {
148                 this.vfModuleCustomization = vfModuleCustomization;
149         }
150
151         public String getModelName() {
152                 return this.modelName;
153         }
154
155         public void setModelName(String modelName) {
156                 this.modelName = modelName;
157         }
158
159         public Boolean getIsBase() {
160                 return isBase;
161         }
162
163         public void setIsBase(Boolean isBase) {
164                 this.isBase = isBase;
165         }
166
167         @LinkedResource
168         public List<HeatFiles> getHeatFiles() {
169                 if (heatFiles == null)
170                         heatFiles = new ArrayList<>();
171                 return heatFiles;
172         }
173
174         public void setHeatFiles(List<HeatFiles> heatFiles) {
175                 this.heatFiles = heatFiles;
176         }
177
178         @LinkedResource
179         public VnfResource getVnfResources() {
180                 return vnfResources;
181         }
182
183         public void setVnfResources(VnfResource vnfResources) {
184                 this.vnfResources = vnfResources;
185         }
186
187         public String getDescription() {
188                 return this.description;
189         }
190
191         public void setDescription(String description) {
192                 this.description = description;
193         }
194
195         public Date getCreated() {
196                 return created;
197         }
198
199         public String getModelUUID() {
200                 return modelUUID;
201         }
202
203         public void setModelUUID(String modelUUID) {
204                 this.modelUUID = modelUUID;
205         }
206
207         public String getModelVersion() {
208                 return modelVersion;
209         }
210
211         public void setModelVersion(String modelVersion) {
212                 this.modelVersion = modelVersion;
213         }
214
215         @LinkedResource
216         public HeatTemplate getVolumeHeatTemplate() {
217                 return volumeHeatTemplate;
218         }
219
220         public void setVolumeHeatTemplate(HeatTemplate volumeHeatTemplate) {
221                 this.volumeHeatTemplate = volumeHeatTemplate;
222         }
223
224         @LinkedResource
225         public HeatTemplate getModuleHeatTemplate() {
226                 return moduleHeatTemplate;
227         }
228
229         public void setModuleHeatTemplate(HeatTemplate moduleHeatTemplate) {
230                 this.moduleHeatTemplate = moduleHeatTemplate;
231         }
232 }