2 * ============LICENSE_START=======================================================
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
11 * http://www.apache.org/licenses/LICENSE-2.0
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=========================================================
21 package org.onap.so.db.catalog.beans;
23 import java.io.Serializable;
24 import java.util.ArrayList;
25 import java.util.Date;
26 import java.util.List;
29 import javax.persistence.CascadeType;
30 import javax.persistence.Column;
31 import javax.persistence.Entity;
32 import javax.persistence.Id;
33 import javax.persistence.JoinColumn;
34 import javax.persistence.JoinTable;
35 import javax.persistence.ManyToOne;
36 import javax.persistence.MapKey;
37 import javax.persistence.OneToMany;
38 import javax.persistence.PrePersist;
39 import javax.persistence.Table;
40 import javax.persistence.Temporal;
41 import javax.persistence.TemporalType;
43 import org.apache.commons.lang3.builder.EqualsBuilder;
44 import org.apache.commons.lang3.builder.HashCodeBuilder;
45 import org.apache.commons.lang3.builder.ToStringBuilder;
47 import com.fasterxml.jackson.annotation.JsonFormat;
48 import com.openpojo.business.annotation.BusinessKey;
50 import uk.co.blackpepper.bowman.annotation.LinkedResource;
53 @Table(name = "service")
54 public class Service implements Serializable {
56 private static final long serialVersionUID = 768026109321305392L;
58 @Column(name = "MODEL_NAME")
59 private String modelName;
61 @Column(name = "DESCRIPTION", length = 1200)
62 private String description;
66 @Column(name = "MODEL_UUID")
67 private String modelUUID;
69 @Column(name = "MODEL_INVARIANT_UUID")
70 private String modelInvariantUUID;
72 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss.SSS")
73 @Column(name = "CREATION_TIMESTAMP", updatable = false)
74 @Temporal(TemporalType.TIMESTAMP)
77 @Column(name = "MODEL_VERSION")
78 private String modelVersion;
80 @Column(name = "SERVICE_TYPE")
81 private String serviceType;
83 @Column(name = "SERVICE_ROLE")
84 private String serviceRole;
86 @Column(name = "ENVIRONMENT_CONTEXT")
87 private String environmentContext;
89 @Column(name = "WORKLOAD_CONTEXT")
90 private String workloadContext;
92 @Column(name = "SERVICE_CATEGORY")
93 private String category;
95 @Column(name = "RESOURCE_ORDER")
96 private String resourceOrder;
98 @OneToMany(cascade = CascadeType.ALL)
99 @JoinTable(name = "network_resource_customization_to_service", joinColumns = @JoinColumn(name = "SERVICE_MODEL_UUID"), inverseJoinColumns = @JoinColumn(name = "RESOURCE_MODEL_CUSTOMIZATION_UUID"))
100 private List<NetworkResourceCustomization> networkCustomizations;
102 @OneToMany(cascade = CascadeType.ALL)
103 @JoinTable(name = "vnf_resource_customization_to_service", joinColumns = @JoinColumn(name = "SERVICE_MODEL_UUID"), inverseJoinColumns = @JoinColumn(name = "RESOURCE_MODEL_CUSTOMIZATION_UUID"))
104 private List<VnfResourceCustomization> vnfCustomizations;
106 @OneToMany(cascade = CascadeType.ALL)
107 @JoinTable(name = "allotted_resource_customization_to_service", joinColumns = @JoinColumn(name = "SERVICE_MODEL_UUID"), inverseJoinColumns = @JoinColumn(name = "RESOURCE_MODEL_CUSTOMIZATION_UUID"))
108 private List<AllottedResourceCustomization> allottedCustomizations;
110 @OneToMany(cascade = CascadeType.ALL)
111 @JoinTable(name = "collection_resource_customization_to_service", joinColumns = @JoinColumn(name = "SERVICE_MODEL_UUID"), inverseJoinColumns = @JoinColumn(name = "RESOURCE_MODEL_CUSTOMIZATION_UUID"))
112 private List<CollectionResourceCustomization> collectionResourceCustomizations;
114 @OneToMany(cascade = CascadeType.ALL)
115 @JoinTable(name = "service_proxy_customization_to_service", joinColumns = @JoinColumn(name = "SERVICE_MODEL_UUID"), inverseJoinColumns = @JoinColumn(name = "RESOURCE_MODEL_CUSTOMIZATION_UUID"))
116 private List<ServiceProxyResourceCustomization> serviceProxyCustomizations;
118 @OneToMany(cascade = CascadeType.ALL)
119 @JoinTable(name = "configuration_customization_to_service", joinColumns = @JoinColumn(name = "SERVICE_MODEL_UUID"), inverseJoinColumns = @JoinColumn(name = "RESOURCE_MODEL_CUSTOMIZATION_UUID"))
120 private List<ConfigurationResourceCustomization> configurationCustomizations;
122 @OneToMany(cascade = CascadeType.ALL)
123 @JoinTable(name = "pnf_resource_customization_to_service", joinColumns = @JoinColumn(name = "SERVICE_MODEL_UUID"), inverseJoinColumns = @JoinColumn(name = "RESOURCE_MODEL_CUSTOMIZATION_UUID"))
124 private List<PnfResourceCustomization> pnfCustomizations;
126 @OneToMany(cascade = CascadeType.ALL, mappedBy = "service")
127 @MapKey(name = "action")
128 private Map<String, ServiceRecipe> recipes;
130 @ManyToOne(cascade = CascadeType.ALL)
131 @JoinColumn(name = "TOSCA_CSAR_ARTIFACT_UUID")
132 private ToscaCsar csar;
135 public String toString() {
136 return new ToStringBuilder(this).append("modelName", modelName).append("description", description)
137 .append("modelUUID", modelUUID).append("modelInvariantUUID", modelInvariantUUID)
138 .append("created", created).append("modelVersion", modelVersion).append("serviceType", serviceType)
139 .append("serviceRole", serviceRole).append("environmentContext", environmentContext)
140 .append("workloadContext", workloadContext).append("category", category)
141 .append("networkCustomizations", networkCustomizations).append("vnfCustomizations", vnfCustomizations)
142 .append("allottedCustomizations", allottedCustomizations)
143 .append("collectionResourceCustomizations", collectionResourceCustomizations)
144 .append("serviceProxyCustomizations", serviceProxyCustomizations)
145 .append("configurationCustomizations", configurationCustomizations)
146 .append("pnfCustomizations", pnfCustomizations)
147 .append("recipes", recipes)
148 .append("csar", csar).toString();
152 protected void onCreate() {
153 this.created = new Date();
157 public boolean equals(final Object other) {
158 if (!(other instanceof Service)) {
161 Service castOther = (Service) other;
162 return new EqualsBuilder().append(modelUUID, castOther.modelUUID).isEquals();
166 public int hashCode() {
167 return new HashCodeBuilder().append(modelUUID).toHashCode();
171 public List<ServiceProxyResourceCustomization> getServiceProxyCustomizations() {
172 return serviceProxyCustomizations;
175 public void setServiceProxyCustomizations(List<ServiceProxyResourceCustomization> serviceProxyCustomizations) {
176 this.serviceProxyCustomizations = serviceProxyCustomizations;
180 public List<NetworkResourceCustomization> getNetworkCustomizations() {
181 if (networkCustomizations == null) {
182 networkCustomizations = new ArrayList<>();
184 return networkCustomizations;
187 public void setNetworkCustomizations(List<NetworkResourceCustomization> networkCustomizations) {
188 this.networkCustomizations = networkCustomizations;
192 public List<VnfResourceCustomization> getVnfCustomizations() {
193 if (vnfCustomizations == null) {
194 vnfCustomizations = new ArrayList<>();
196 return vnfCustomizations;
199 public void setVnfCustomizations(List<VnfResourceCustomization> vnfCustomizations) {
200 this.vnfCustomizations = vnfCustomizations;
204 public List<AllottedResourceCustomization> getAllottedCustomizations() {
205 if (allottedCustomizations == null) {
206 allottedCustomizations = new ArrayList<>();
208 return allottedCustomizations;
211 public void setAllottedCustomizations(List<AllottedResourceCustomization> allotedCustomizations) {
212 this.allottedCustomizations = allotedCustomizations;
216 public List<CollectionResourceCustomization> getCollectionResourceCustomizations() {
217 if (collectionResourceCustomizations == null) {
218 collectionResourceCustomizations = new ArrayList<>();
220 return collectionResourceCustomizations;
223 public void setCollectionResourceCustomizations(
224 List<CollectionResourceCustomization> collectionResourceCustomizations) {
225 this.collectionResourceCustomizations = collectionResourceCustomizations;
229 public List<ConfigurationResourceCustomization> getConfigurationCustomizations() {
230 if (configurationCustomizations == null) {
231 configurationCustomizations = new ArrayList<>();
233 return configurationCustomizations;
236 public void setConfigurationCustomizations(List<ConfigurationResourceCustomization> configurationCustomizations) {
237 this.configurationCustomizations = configurationCustomizations;
241 public List<PnfResourceCustomization> getPnfCustomizations() {
242 if (pnfCustomizations == null) {
243 pnfCustomizations = new ArrayList<>();
245 return pnfCustomizations;
248 public void setPnfCustomizations(List<PnfResourceCustomization> pnfCustomizations) {
249 this.pnfCustomizations = pnfCustomizations;
252 public String getModelName() {
256 public void setModelName(String modelName) {
257 this.modelName = modelName;
260 public String getDescription() {
264 public void setDescription(String description) {
265 this.description = description;
269 public Map<String, ServiceRecipe> getRecipes() {
273 public void setRecipes(Map<String, ServiceRecipe> recipes) {
274 this.recipes = recipes;
277 public Date getCreated() {
281 public String getModelUUID() {
285 public void setModelUUID(String modelUUID) {
286 this.modelUUID = modelUUID;
289 public String getModelInvariantUUID() {
290 return modelInvariantUUID;
293 public void setModelInvariantUUID(String modelInvariantUUID) {
294 this.modelInvariantUUID = modelInvariantUUID;
297 public String getModelVersion() {
301 public void setModelVersion(String modelVersion) {
302 this.modelVersion = modelVersion;
306 * @return Returns the category.
308 public String getCategory() {
313 * @param category The category to set.
315 public void setCategory(String category) {
316 this.category = category;
319 public String getServiceType() {
323 public void setServiceType(String serviceType) {
324 this.serviceType = serviceType;
327 public String getServiceRole() {
331 public void setServiceRole(String serviceRole) {
332 this.serviceRole = serviceRole;
335 public String getEnvironmentContext() {
336 return this.environmentContext;
339 public void setEnvironmentContext(String environmentContext) {
340 this.environmentContext = environmentContext;
344 public ToscaCsar getCsar() {
348 public void setCsar(ToscaCsar csar) {
352 public String getWorkloadContext() {
353 return this.workloadContext;
356 public void setWorkloadContext(String workloadContext) {
357 this.workloadContext = workloadContext;
360 public String getResourceOrder() {
361 return resourceOrder;
364 public void setResourceOrder(String resourceOrder) {
365 this.resourceOrder = resourceOrder;