From f758bb0ae798a53eee005b3e6e4a115f84b4ae19 Mon Sep 17 00:00:00 2001 From: Michael Hwang Date: Fri, 19 Jan 2018 10:43:43 -0500 Subject: Change package from openecomp to onap Change-Id: I2a79eb123e5fbb6a6c2f0e72030d6781fbbd7513 Issue-ID: DCAEGEN2-225 Signed-off-by: Michael Hwang --- .../inventory/dbthings/StringListArgument.java | 57 +++++++ .../mappers/DCAEServiceComponentObjectMapper.java | 48 ++++++ .../dbthings/mappers/DCAEServiceObjectMapper.java | 51 +++++++ .../mappers/DCAEServiceTypeObjectMapper.java | 73 +++++++++ .../models/DCAEServiceComponentObject.java | 146 ++++++++++++++++++ .../dbthings/models/DCAEServiceObject.java | 168 +++++++++++++++++++++ .../dbthings/models/DCAEServiceTypeObject.java | 142 +++++++++++++++++ 7 files changed, 685 insertions(+) create mode 100644 src/main/java/org/onap/dcae/inventory/dbthings/StringListArgument.java create mode 100644 src/main/java/org/onap/dcae/inventory/dbthings/mappers/DCAEServiceComponentObjectMapper.java create mode 100644 src/main/java/org/onap/dcae/inventory/dbthings/mappers/DCAEServiceObjectMapper.java create mode 100644 src/main/java/org/onap/dcae/inventory/dbthings/mappers/DCAEServiceTypeObjectMapper.java create mode 100644 src/main/java/org/onap/dcae/inventory/dbthings/models/DCAEServiceComponentObject.java create mode 100644 src/main/java/org/onap/dcae/inventory/dbthings/models/DCAEServiceObject.java create mode 100644 src/main/java/org/onap/dcae/inventory/dbthings/models/DCAEServiceTypeObject.java (limited to 'src/main/java/org/onap/dcae/inventory/dbthings') diff --git a/src/main/java/org/onap/dcae/inventory/dbthings/StringListArgument.java b/src/main/java/org/onap/dcae/inventory/dbthings/StringListArgument.java new file mode 100644 index 0000000..b08bec1 --- /dev/null +++ b/src/main/java/org/onap/dcae/inventory/dbthings/StringListArgument.java @@ -0,0 +1,57 @@ +/*- + * ============LICENSE_START======================================================= + * dcae-inventory + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.dcae.inventory.dbthings; + +import org.skife.jdbi.v2.StatementContext; +import org.skife.jdbi.v2.tweak.Argument; +import org.skife.jdbi.v2.tweak.ArgumentFactory; + +import java.sql.Array; +import java.sql.PreparedStatement; +import java.sql.SQLException; +import java.util.List; + +/** + * This class if needed for jdbi queries to be able to properly bind List objects. + * + * http://stackoverflow.com/questions/33062516/insert-2d-array-into-postresql-db-using-jdbi + * + * Created by mhwang on 5/4/16. + */ +public class StringListArgument implements ArgumentFactory> { + + @Override + public boolean accepts(Class expectedType, Object value, StatementContext statementContext) { + return value != null && List.class.isAssignableFrom(value.getClass()); + } + + @Override + public Argument build(Class expectedType, List value, StatementContext statementContext) { + return new Argument() { + @Override + public void apply(int position, PreparedStatement statement, StatementContext ctx) throws SQLException { + Array values = statement.getConnection().createArrayOf("varchar", value.toArray()); + statement.setArray(position, values); + } + }; + } + +} diff --git a/src/main/java/org/onap/dcae/inventory/dbthings/mappers/DCAEServiceComponentObjectMapper.java b/src/main/java/org/onap/dcae/inventory/dbthings/mappers/DCAEServiceComponentObjectMapper.java new file mode 100644 index 0000000..f214839 --- /dev/null +++ b/src/main/java/org/onap/dcae/inventory/dbthings/mappers/DCAEServiceComponentObjectMapper.java @@ -0,0 +1,48 @@ +/*- + * ============LICENSE_START======================================================= + * dcae-inventory + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.dcae.inventory.dbthings.mappers; + +import org.onap.dcae.inventory.dbthings.models.DCAEServiceComponentObject; +import org.joda.time.DateTime; +import org.skife.jdbi.v2.StatementContext; +import org.skife.jdbi.v2.tweak.ResultSetMapper; + +import java.sql.ResultSet; +import java.sql.SQLException; + +/** + * Created by mhwang on 4/19/16. + */ +public class DCAEServiceComponentObjectMapper implements ResultSetMapper { + + @Override + public DCAEServiceComponentObject map(int i, ResultSet resultSet, StatementContext statementContext) throws SQLException { + DCAEServiceComponentObject object = new DCAEServiceComponentObject(); + object.setComponentId(resultSet.getString("component_id")); + object.setComponentType(resultSet.getString("component_type")); + object.setComponentSource(resultSet.getString("component_source")); + object.setShareable(resultSet.getInt("shareable")); + object.setCreated(new DateTime(resultSet.getTimestamp("created"))); + object.setModified(new DateTime(resultSet.getTimestamp("modified"))); + return object; + } + +} diff --git a/src/main/java/org/onap/dcae/inventory/dbthings/mappers/DCAEServiceObjectMapper.java b/src/main/java/org/onap/dcae/inventory/dbthings/mappers/DCAEServiceObjectMapper.java new file mode 100644 index 0000000..f60be7b --- /dev/null +++ b/src/main/java/org/onap/dcae/inventory/dbthings/mappers/DCAEServiceObjectMapper.java @@ -0,0 +1,51 @@ +/*- + * ============LICENSE_START======================================================= + * dcae-inventory + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.dcae.inventory.dbthings.mappers; + +import org.onap.dcae.inventory.dbthings.models.DCAEServiceObject; +import org.joda.time.DateTime; +import org.skife.jdbi.v2.StatementContext; +import org.skife.jdbi.v2.tweak.ResultSetMapper; + +import java.sql.ResultSet; +import java.sql.SQLException; + +/** + * Created by mhwang on 4/19/16. + */ +public class DCAEServiceObjectMapper implements ResultSetMapper { + + @Override + public DCAEServiceObject map(int i, ResultSet resultSet, StatementContext statementContext) throws SQLException { + DCAEServiceObject object = new DCAEServiceObject(); + object.setServiceId(resultSet.getString("service_id")); + object.setTypeId(resultSet.getString("type_id")); + object.setVnfId(resultSet.getString("vnf_id")); + object.setVnfType(resultSet.getString("vnf_type")); + object.setVnfLocation(resultSet.getString("vnf_location")); + object.setDeploymentRef(resultSet.getString("deployment_ref")); + object.setCreated(new DateTime(resultSet.getTimestamp("created"))); + object.setModified(new DateTime(resultSet.getTimestamp("modified"))); + object.setStatus(DCAEServiceObject.DCAEServiceStatus.valueOf(resultSet.getString("status"))); + return object; + } + +} diff --git a/src/main/java/org/onap/dcae/inventory/dbthings/mappers/DCAEServiceTypeObjectMapper.java b/src/main/java/org/onap/dcae/inventory/dbthings/mappers/DCAEServiceTypeObjectMapper.java new file mode 100644 index 0000000..bda4423 --- /dev/null +++ b/src/main/java/org/onap/dcae/inventory/dbthings/mappers/DCAEServiceTypeObjectMapper.java @@ -0,0 +1,73 @@ +/*- + * ============LICENSE_START======================================================= + * dcae-inventory + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.dcae.inventory.dbthings.mappers; + +import org.onap.dcae.inventory.dbthings.models.DCAEServiceTypeObject; +import org.joda.time.DateTime; +import org.skife.jdbi.v2.StatementContext; +import org.skife.jdbi.v2.tweak.ResultSetMapper; + +import java.sql.Array; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Timestamp; +import java.util.Arrays; + +/** + * Created by mhwang on 5/3/16. + */ +public class DCAEServiceTypeObjectMapper implements ResultSetMapper { + + @Override + public DCAEServiceTypeObject map(int i, ResultSet resultSet, StatementContext statementContext) throws SQLException { + DCAEServiceTypeObject object = new DCAEServiceTypeObject(); + object.setTypeId(resultSet.getString("type_id")); + object.setTypeName(resultSet.getString("type_name")); + object.setTypeVersion(resultSet.getInt("type_version")); + object.setOwner(resultSet.getString("owner")); + String[] vnfTypes = (String[]) resultSet.getArray("vnf_types").getArray(); + object.setVnfTypes(Arrays.asList(vnfTypes)); + + Array serviceIdsArray = resultSet.getArray("service_ids"); + + if (serviceIdsArray != null) { + String[] serviceIds = (String[]) serviceIdsArray.getArray(); + object.setServiceIds(Arrays.asList(serviceIds)); + } + + Array serviceLocationsArray = resultSet.getArray("service_locations"); + + if (serviceLocationsArray != null) { + String[] serviceLocations = (String[]) serviceLocationsArray.getArray(); + object.setServiceLocations(Arrays.asList(serviceLocations)); + } + + object.setBlueprintTemplate(resultSet.getString("blueprint_template")); + object.setAsdcServiceId(resultSet.getString("asdc_service_id")); + object.setAsdcResourceId(resultSet.getString("asdc_resource_id")); + object.setCreated(new DateTime(resultSet.getTimestamp("created"))); + + Timestamp deactivated = resultSet.getTimestamp("deactivated"); + object.setDeactivated(deactivated == null ? null : new DateTime(deactivated)); + return object; + } + +} diff --git a/src/main/java/org/onap/dcae/inventory/dbthings/models/DCAEServiceComponentObject.java b/src/main/java/org/onap/dcae/inventory/dbthings/models/DCAEServiceComponentObject.java new file mode 100644 index 0000000..b262fc0 --- /dev/null +++ b/src/main/java/org/onap/dcae/inventory/dbthings/models/DCAEServiceComponentObject.java @@ -0,0 +1,146 @@ +/*- + * ============LICENSE_START======================================================= + * dcae-inventory + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.dcae.inventory.dbthings.models; + +import io.swagger.model.DCAEServiceComponentRequest; +import org.joda.time.DateTime; +import org.joda.time.DateTimeZone; + +/** + * Created by mhwang on 4/19/16. + */ +public class DCAEServiceComponentObject { + + private String componentId = null; + private DateTime created = null; + private DateTime modified = null; + private String componentType = null; + private String componentSource = null; + private Integer shareable = null; + + public String getComponentId() { + return componentId; + } + + public void setComponentId(String componentId) { + this.componentId = componentId; + } + + public DateTime getCreated() { + return created; + } + + public void setCreated(DateTime created) { + this.created = created; + } + + public DateTime getModified() { + return modified; + } + + public void setModified(DateTime modified) { + this.modified = modified; + } + + public String getComponentType() { + return componentType; + } + + public void setComponentType(String componentType) { + this.componentType = componentType; + } + + public String getComponentSource() { + return componentSource; + } + + public void setComponentSource(String componentSource) { + this.componentSource = componentSource; + } + + public Integer getShareable() { + return shareable; + } + + public void setShareable(Integer shareable) { + this.shareable = shareable; + } + + public DCAEServiceComponentObject() { + } + + /** + * Intended to be used for inserts - new objects. + * + * @param request + */ + public DCAEServiceComponentObject(DCAEServiceComponentRequest request) { + DateTime now = DateTime.now(DateTimeZone.UTC); + this.setComponentId(request.getComponentId()); + this.setComponentType(request.getComponentType()); + this.setComponentSource(request.getComponentSource()); + this.setCreated(now); + this.setModified(now); + this.setShareable(request.getShareable()); + } + + /** + * Intended to be used for updates - some fields should not be updated. + * + * @param source + * @param updateRequest + */ + public DCAEServiceComponentObject(DCAEServiceComponentObject source, DCAEServiceComponentRequest updateRequest) { + // Immutable fields + this.setComponentId(source.getComponentId()); + this.setCreated(source.getCreated()); + + // Mutable fields + this.setComponentType(updateRequest.getComponentType()); + this.setComponentSource(updateRequest.getComponentSource()); + this.setShareable(updateRequest.getShareable()); + this.setModified(DateTime.now(DateTimeZone.UTC)); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class DCAEServiceComponentObject {\n"); + + sb.append(" componentId: ").append(toIndentedString(componentId)).append("\n"); + sb.append(" componentType: ").append(toIndentedString(componentType)).append("\n"); + sb.append(" componentSource: ").append(toIndentedString(componentSource)).append("\n"); + sb.append(" shareable: ").append(toIndentedString(shareable)).append("\n"); + sb.append("}"); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces + * (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} diff --git a/src/main/java/org/onap/dcae/inventory/dbthings/models/DCAEServiceObject.java b/src/main/java/org/onap/dcae/inventory/dbthings/models/DCAEServiceObject.java new file mode 100644 index 0000000..83e2bfe --- /dev/null +++ b/src/main/java/org/onap/dcae/inventory/dbthings/models/DCAEServiceObject.java @@ -0,0 +1,168 @@ +/*- + * ============LICENSE_START======================================================= + * dcae-inventory + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.dcae.inventory.dbthings.models; + +import io.swagger.model.DCAEServiceRequest; +import org.joda.time.DateTime; +import org.joda.time.DateTimeZone; + +/** + * Created by mhwang on 4/19/16. + */ +public class DCAEServiceObject { + + public static enum DCAEServiceStatus { + RUNNING, + REMOVED + } + + private String serviceId = null; + private String typeId = null; + private DateTime created = null; + private DateTime modified = null; + private String vnfId = null; + private String vnfType = null; + private String vnfLocation = null; + private String deploymentRef = null; + + // These properties are meant to be used internally in the service only + private DCAEServiceStatus status = null; + + public String getServiceId() { + return serviceId; + } + + public void setServiceId(String serviceId) { + this.serviceId = serviceId; + } + + public String getTypeId() { + return typeId; + } + + public void setTypeId(String typeId) { + this.typeId = typeId; + } + + public DateTime getCreated() { + return created; + } + + public void setCreated(DateTime created) { + this.created = created; + } + + public DateTime getModified() { + return modified; + } + + public void setModified(DateTime modified) { + this.modified = modified; + } + + public DCAEServiceStatus getStatus() { + return status; + } + + public void setStatus(DCAEServiceStatus status) { + this.status = status; + } + + public String getVnfId() { + return vnfId; + } + + public void setVnfId(String vnfId) { + this.vnfId = vnfId; + } + + public String getVnfType() { + return vnfType; + } + + public void setVnfType(String vnfType) { + this.vnfType = vnfType; + } + + public String getVnfLocation() { + return vnfLocation; + } + + public void setVnfLocation(String vnfLocation) { + this.vnfLocation = vnfLocation; + } + + public String getDeploymentRef() { + return deploymentRef; + } + + public void setDeploymentRef(String deploymentRef) { + this.deploymentRef = deploymentRef; + } + + public DCAEServiceObject() { + } + + // TODO: Move the constructors functionality below out into the actual handlers. + + /** + * Intended to be used for inserts - new objects. + * + * @param serviceId + * @param request + */ + public DCAEServiceObject(String serviceId, DCAEServiceRequest request) { + DateTime now = DateTime.now(DateTimeZone.UTC); + this.setServiceId(serviceId); + this.setTypeId(request.getTypeId()); + this.setVnfId(request.getVnfId()); + this.setVnfType(request.getVnfType()); + this.setVnfLocation(request.getVnfLocation()); + this.setDeploymentRef(request.getDeploymentRef()); + this.setCreated(now); + this.setModified(now); + // Assumption here is that you are here from the PUT which means that the service is RUNNING. + this.setStatus(DCAEServiceStatus.RUNNING); + } + + /** + * Intended to be used for updates - some fields should not be updated. + * + * @param source + * @param updateRequest + */ + public DCAEServiceObject(DCAEServiceObject source, DCAEServiceRequest updateRequest) { + // Immutable fields + this.setServiceId(source.getServiceId()); + this.setCreated(source.getCreated()); + + // Mutable fields + this.setTypeId(updateRequest.getTypeId()); + this.setVnfId(updateRequest.getVnfId()); + this.setVnfType(updateRequest.getVnfType()); + this.setVnfLocation(updateRequest.getVnfLocation()); + this.setDeploymentRef(updateRequest.getDeploymentRef()); + this.setModified(DateTime.now(DateTimeZone.UTC)); + // Assumption here is that you are here from the PUT which means that the service is RUNNING. + this.setStatus(DCAEServiceStatus.RUNNING); + } + +} diff --git a/src/main/java/org/onap/dcae/inventory/dbthings/models/DCAEServiceTypeObject.java b/src/main/java/org/onap/dcae/inventory/dbthings/models/DCAEServiceTypeObject.java new file mode 100644 index 0000000..f264c99 --- /dev/null +++ b/src/main/java/org/onap/dcae/inventory/dbthings/models/DCAEServiceTypeObject.java @@ -0,0 +1,142 @@ +/*- + * ============LICENSE_START======================================================= + * dcae-inventory + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.dcae.inventory.dbthings.models; + +import org.joda.time.DateTime; + +import java.util.List; + +/** + * POJO representation of a record in dcae_service_types table. + * + * Created by mhwang on 5/3/16. + */ +public class DCAEServiceTypeObject { + + private String typeId = null; + private String typeName = null; + private Integer typeVersion = null; + private String blueprintTemplate = null; + private String owner = null; + private List vnfTypes = null; + private List serviceIds = null; + private List serviceLocations = null; + private String asdcServiceId = null; + private String asdcResourceId = null; + private DateTime created = null; + private DateTime deactivated = null; + + public String getTypeId() { + return typeId; + } + + public void setTypeId(String typeId) { + this.typeId = typeId; + } + + public String getTypeName() { + return typeName; + } + + public void setTypeName(String typeName) { + this.typeName = typeName; + } + + public Integer getTypeVersion() { + return typeVersion; + } + + public void setTypeVersion(Integer typeVersion) { + this.typeVersion = typeVersion; + } + + public String getBlueprintTemplate() { + return blueprintTemplate; + } + + public void setBlueprintTemplate(String blueprintTemplate) { + this.blueprintTemplate = blueprintTemplate; + } + + public String getOwner() { + return owner; + } + + public void setOwner(String owner) { + this.owner = owner; + } + + public List getVnfTypes() { + return vnfTypes; + } + + public void setVnfTypes(List vnfTypes) { + this.vnfTypes = vnfTypes; + } + + public List getServiceIds() { + return serviceIds; + } + + public void setServiceIds(List serviceIds) { + this.serviceIds = serviceIds; + } + + public List getServiceLocations() { + return serviceLocations; + } + + public void setServiceLocations(List serviceLocations) { + this.serviceLocations = serviceLocations; + } + + public String getAsdcServiceId() { + return asdcServiceId; + } + + public void setAsdcServiceId(String asdcServiceId) { + this.asdcServiceId = asdcServiceId; + } + + public String getAsdcResourceId() { + return asdcResourceId; + } + + public void setAsdcResourceId(String asdcResourceId) { + this.asdcResourceId = asdcResourceId; + } + + public DateTime getCreated() { + return created; + } + + public void setCreated(DateTime created) { + this.created = created; + } + + public DateTime getDeactivated() { + return deactivated; + } + + public void setDeactivated(DateTime deactivated) { + this.deactivated = deactivated; + } +} -- cgit 1.2.3-korg