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;
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.MapKey;
39 import javax.persistence.OneToMany;
40 import javax.persistence.PrePersist;
41 import javax.persistence.Table;
42 import javax.persistence.Temporal;
43 import javax.persistence.TemporalType;
45 import org.apache.commons.lang3.builder.EqualsBuilder;
46 import org.apache.commons.lang3.builder.HashCodeBuilder;
47 import org.apache.commons.lang3.builder.ToStringBuilder;
49 import com.fasterxml.jackson.annotation.JsonFormat;
50 import com.openpojo.business.annotation.BusinessKey;
52 import uk.co.blackpepper.bowman.annotation.LinkedResource;
55 @Table(name = "service")
56 public class Service implements Serializable {
58 private static final long serialVersionUID = 768026109321305392L;
60 @Column(name = "MODEL_NAME")
61 private String modelName;
63 @Column(name = "DESCRIPTION", length = 1200)
64 private String description;
68 @Column(name = "MODEL_UUID")
69 private String modelUUID;
71 @Column(name = "MODEL_INVARIANT_UUID")
72 private String modelInvariantUUID;
74 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss.SSS")
75 @Column(name = "CREATION_TIMESTAMP", updatable = false)
76 @Temporal(TemporalType.TIMESTAMP)
79 @Column(name = "MODEL_VERSION")
80 private String modelVersion;
82 @Column(name = "SERVICE_TYPE")
83 private String serviceType;
85 @Column(name = "SERVICE_ROLE")
86 private String serviceRole;
88 @Column(name = "ENVIRONMENT_CONTEXT")
89 private String environmentContext;
91 @Column(name = "WORKLOAD_CONTEXT")
92 private String workloadContext;
94 @Column(name = "SERVICE_CATEGORY")
95 private String category;
97 @Column(name = "RESOURCE_ORDER")
98 private String resourceOrder;
100 @OneToMany(cascade = CascadeType.ALL)
101 @JoinTable(name = "network_resource_customization_to_service", joinColumns = @JoinColumn(name = "SERVICE_MODEL_UUID"), inverseJoinColumns = @JoinColumn(name = "RESOURCE_MODEL_CUSTOMIZATION_UUID"))
102 private List<NetworkResourceCustomization> networkCustomizations;
104 @OneToMany(cascade = CascadeType.ALL, mappedBy = "service")
105 private List<VnfResourceCustomization> vnfCustomizations;
107 @OneToMany(cascade = CascadeType.ALL)
108 @JoinTable(name = "allotted_resource_customization_to_service", joinColumns = @JoinColumn(name = "SERVICE_MODEL_UUID"), inverseJoinColumns = @JoinColumn(name = "RESOURCE_MODEL_CUSTOMIZATION_UUID"))
109 private List<AllottedResourceCustomization> allottedCustomizations;
111 @OneToMany(cascade = CascadeType.ALL)
112 @JoinTable(name = "collection_resource_customization_to_service", joinColumns = @JoinColumn(name = "SERVICE_MODEL_UUID"), inverseJoinColumns = @JoinColumn(name = "RESOURCE_MODEL_CUSTOMIZATION_UUID"))
113 private List<CollectionResourceCustomization> collectionResourceCustomizations;
115 @OneToMany(cascade = CascadeType.ALL)
116 @JoinTable(name = "service_proxy_customization_to_service", joinColumns = @JoinColumn(name = "SERVICE_MODEL_UUID"), inverseJoinColumns = @JoinColumn(name = "RESOURCE_MODEL_CUSTOMIZATION_UUID"))
117 private List<ServiceProxyResourceCustomization> serviceProxyCustomizations;
119 @OneToMany(cascade = CascadeType.ALL)
120 @JoinTable(name = "configuration_customization_to_service", joinColumns = @JoinColumn(name = "SERVICE_MODEL_UUID"), inverseJoinColumns = @JoinColumn(name = "RESOURCE_MODEL_CUSTOMIZATION_UUID"))
121 private List<ConfigurationResourceCustomization> configurationCustomizations;
123 @OneToMany(cascade = CascadeType.ALL)
124 @JoinTable(name = "pnf_resource_customization_to_service", joinColumns = @JoinColumn(name = "SERVICE_MODEL_UUID"), inverseJoinColumns = @JoinColumn(name = "RESOURCE_MODEL_CUSTOMIZATION_UUID"))
125 private List<PnfResourceCustomization> pnfCustomizations;
127 @OneToMany(cascade = CascadeType.ALL, mappedBy = "service")
128 @MapKey(name = "action")
129 private Map<String, ServiceRecipe> recipes;
131 @ManyToOne(cascade = CascadeType.ALL)
132 @JoinColumn(name = "TOSCA_CSAR_ARTIFACT_UUID")
133 private ToscaCsar csar;
136 public String toString() {
137 return new ToStringBuilder(this).append("modelName", modelName).append("description", description)
138 .append("modelUUID", modelUUID).append("modelInvariantUUID", modelInvariantUUID)
139 .append("created", created).append("modelVersion", modelVersion).append("serviceType", serviceType)
140 .append("serviceRole", serviceRole).append("environmentContext", environmentContext)
141 .append("workloadContext", workloadContext).append("category", category)
142 .append("networkCustomizations", networkCustomizations).append("vnfCustomizations", vnfCustomizations)
143 .append("allottedCustomizations", allottedCustomizations)
144 .append("collectionResourceCustomizations", collectionResourceCustomizations)
145 .append("serviceProxyCustomizations", serviceProxyCustomizations)
146 .append("configurationCustomizations", configurationCustomizations)
147 .append("pnfCustomizations", pnfCustomizations)
148 .append("recipes", recipes)
149 .append("csar", csar).toString();
153 protected void onCreate() {
154 this.created = new Date();
158 public boolean equals(final Object other) {
159 if (!(other instanceof Service)) {
162 Service castOther = (Service) other;
163 return new EqualsBuilder().append(modelUUID, castOther.modelUUID).isEquals();
167 public int hashCode() {
168 return new HashCodeBuilder().append(modelUUID).toHashCode();
172 public List<ServiceProxyResourceCustomization> getServiceProxyCustomizations() {
173 return serviceProxyCustomizations;
176 public void setServiceProxyCustomizations(List<ServiceProxyResourceCustomization> serviceProxyCustomizations) {
177 this.serviceProxyCustomizations = serviceProxyCustomizations;
181 public List<NetworkResourceCustomization> getNetworkCustomizations() {
182 if (networkCustomizations == null) {
183 networkCustomizations = new ArrayList<>();
185 return networkCustomizations;
188 public void setNetworkCustomizations(List<NetworkResourceCustomization> networkCustomizations) {
189 this.networkCustomizations = networkCustomizations;
193 public List<VnfResourceCustomization> getVnfCustomizations() {
194 if (vnfCustomizations == null) {
195 vnfCustomizations = new ArrayList<>();
197 return vnfCustomizations;
200 public void setVnfCustomizations(List<VnfResourceCustomization> vnfCustomizations) {
201 this.vnfCustomizations = vnfCustomizations;
205 public List<AllottedResourceCustomization> getAllottedCustomizations() {
206 if (allottedCustomizations == null) {
207 allottedCustomizations = new ArrayList<>();
209 return allottedCustomizations;
212 public void setAllottedCustomizations(List<AllottedResourceCustomization> allotedCustomizations) {
213 this.allottedCustomizations = allotedCustomizations;
217 public List<CollectionResourceCustomization> getCollectionResourceCustomizations() {
218 if (collectionResourceCustomizations == null) {
219 collectionResourceCustomizations = new ArrayList<>();
221 return collectionResourceCustomizations;
224 public void setCollectionResourceCustomizations(
225 List<CollectionResourceCustomization> collectionResourceCustomizations) {
226 this.collectionResourceCustomizations = collectionResourceCustomizations;
230 public List<ConfigurationResourceCustomization> getConfigurationCustomizations() {
231 if (configurationCustomizations == null) {
232 configurationCustomizations = new ArrayList<>();
234 return configurationCustomizations;
237 public void setConfigurationCustomizations(List<ConfigurationResourceCustomization> configurationCustomizations) {
238 this.configurationCustomizations = configurationCustomizations;
242 public List<PnfResourceCustomization> getPnfCustomizations() {
243 if (pnfCustomizations == null) {
244 pnfCustomizations = new ArrayList<>();
246 return pnfCustomizations;
249 public void setPnfCustomizations(List<PnfResourceCustomization> pnfCustomizations) {
250 this.pnfCustomizations = pnfCustomizations;
253 public String getModelName() {
257 public void setModelName(String modelName) {
258 this.modelName = modelName;
261 public String getDescription() {
265 public void setDescription(String description) {
266 this.description = description;
270 public Map<String, ServiceRecipe> getRecipes() {
274 public void setRecipes(Map<String, ServiceRecipe> recipes) {
275 this.recipes = recipes;
278 public Date getCreated() {
282 public String getModelUUID() {
286 public void setModelUUID(String modelUUID) {
287 this.modelUUID = modelUUID;
290 public String getModelInvariantUUID() {
291 return modelInvariantUUID;
294 public void setModelInvariantUUID(String modelInvariantUUID) {
295 this.modelInvariantUUID = modelInvariantUUID;
298 public String getModelVersion() {
302 public void setModelVersion(String modelVersion) {
303 this.modelVersion = modelVersion;
307 * @return Returns the category.
309 public String getCategory() {
314 * @param category The category to set.
316 public void setCategory(String category) {
317 this.category = category;
320 public String getServiceType() {
324 public void setServiceType(String serviceType) {
325 this.serviceType = serviceType;
328 public String getServiceRole() {
332 public void setServiceRole(String serviceRole) {
333 this.serviceRole = serviceRole;
336 public String getEnvironmentContext() {
337 return this.environmentContext;
340 public void setEnvironmentContext(String environmentContext) {
341 this.environmentContext = environmentContext;
345 public ToscaCsar getCsar() {
349 public void setCsar(ToscaCsar csar) {
353 public String getWorkloadContext() {
354 return this.workloadContext;
357 public void setWorkloadContext(String workloadContext) {
358 this.workloadContext = workloadContext;
361 public String getResourceOrder() {
362 return resourceOrder;
365 public void setResourceOrder(String resourceOrder) {
366 this.resourceOrder = resourceOrder;