aboutsummaryrefslogtreecommitdiffstats
path: root/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc
diff options
context:
space:
mode:
Diffstat (limited to 'resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc')
-rw-r--r--resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/AllocationItem.java37
-rw-r--r--resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/AllocationItemJdbcDao.java35
-rw-r--r--resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/AllocationItemJdbcDaoImpl.java126
-rw-r--r--resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/Resource.java32
-rw-r--r--resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/ResourceDaoImpl.java370
-rw-r--r--resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/ResourceJdbcDao.java39
-rw-r--r--resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/ResourceJdbcDaoImpl.java144
-rw-r--r--resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/ResourceLoad.java33
-rw-r--r--resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/ResourceLoadJdbcDao.java36
-rw-r--r--resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/ResourceLoadJdbcDaoImpl.java112
10 files changed, 964 insertions, 0 deletions
diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/AllocationItem.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/AllocationItem.java
new file mode 100644
index 0000000..274fd08
--- /dev/null
+++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/AllocationItem.java
@@ -0,0 +1,37 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * openECOMP : SDN-C
+ * ================================================================================
+ * 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.openecomp.sdnc.rm.dao.jdbc;
+
+import java.util.Date;
+
+public class AllocationItem {
+
+ public long id;
+ public long resourceId;
+ public String applicationId;
+ public String resourceSetId, resourceUnionId;
+ public String resourceShareGroupList;
+ public long ltUsed;
+ public String llLabel;
+ public String rrUsed;
+ public Date allocationTime;
+}
diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/AllocationItemJdbcDao.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/AllocationItemJdbcDao.java
new file mode 100644
index 0000000..9ed1eb2
--- /dev/null
+++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/AllocationItemJdbcDao.java
@@ -0,0 +1,35 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * openECOMP : SDN-C
+ * ================================================================================
+ * 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.openecomp.sdnc.rm.dao.jdbc;
+
+import java.util.List;
+
+public interface AllocationItemJdbcDao {
+
+ void add(AllocationItem ai);
+
+ List<AllocationItem> getAllocationItems(long resourceId);
+
+ void update(AllocationItem ai);
+
+ void delete(long id);
+}
diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/AllocationItemJdbcDaoImpl.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/AllocationItemJdbcDaoImpl.java
new file mode 100644
index 0000000..5087163
--- /dev/null
+++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/AllocationItemJdbcDaoImpl.java
@@ -0,0 +1,126 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * openECOMP : SDN-C
+ * ================================================================================
+ * 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.openecomp.sdnc.rm.dao.jdbc;
+
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Timestamp;
+import java.util.Collections;
+import java.util.List;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.jdbc.core.PreparedStatementCreator;
+import org.springframework.jdbc.core.RowMapper;
+import org.springframework.jdbc.support.GeneratedKeyHolder;
+import org.springframework.jdbc.support.KeyHolder;
+
+public class AllocationItemJdbcDaoImpl implements AllocationItemJdbcDao {
+
+ @SuppressWarnings("unused")
+ private static final Logger log = LoggerFactory.getLogger(ResourceJdbcDaoImpl.class);
+
+ private static final String INSERT_SQL = "INSERT INTO ALLOCATION_ITEM (\n"
+ + " resource_id, application_id, resource_set_id, resource_union_id, resource_share_group_list,\n"
+ + " lt_used, ll_label, rr_used, allocation_time)\nVALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)";
+
+ private static final String UPDATE_SQL = "UPDATE ALLOCATION_ITEM SET\n"
+ + " resource_share_group_list = ?, lt_used = ?, ll_label = ?, rr_used = ?, allocation_time = ?\n"
+ + "WHERE allocation_item_id = ?";
+
+ private static final String DELETE_SQL = "DELETE FROM ALLOCATION_ITEM WHERE allocation_item_id = ?";
+
+ private static final String GET_SQL = "SELECT * FROM ALLOCATION_ITEM WHERE resource_id = ?";
+
+ private JdbcTemplate jdbcTemplate;
+ private AllocationItemRowMapper allocationItemRowMapper = new AllocationItemRowMapper();
+
+ @Override
+ public void add(final AllocationItem ai) {
+ PreparedStatementCreator psc = new PreparedStatementCreator() {
+
+ @Override
+ public PreparedStatement createPreparedStatement(Connection dbc) throws SQLException {
+ PreparedStatement ps = dbc.prepareStatement(INSERT_SQL, new String[] { "allocation_item_id" });
+ ps.setLong(1, ai.resourceId);
+ ps.setString(2, ai.applicationId);
+ ps.setString(3, ai.resourceSetId);
+ ps.setString(4, ai.resourceUnionId);
+ ps.setString(5, ai.resourceShareGroupList);
+ ps.setLong(6, ai.ltUsed);
+ ps.setString(7, ai.llLabel);
+ ps.setString(8, ai.rrUsed);
+ ps.setTimestamp(9, new Timestamp(ai.allocationTime.getTime()));
+ return ps;
+ }
+ };
+ KeyHolder keyHolder = new GeneratedKeyHolder();
+ jdbcTemplate.update(psc, keyHolder);
+ ai.id = keyHolder.getKey().longValue();
+ }
+
+ @Override
+ public void update(AllocationItem ai) {
+ Long ltUsed = ai.ltUsed <= 0 ? null : ai.ltUsed;
+ jdbcTemplate.update(UPDATE_SQL, ai.resourceShareGroupList, ltUsed, ai.llLabel, ai.rrUsed, ai.allocationTime,
+ ai.id);
+ }
+
+ @Override
+ public void delete(long id) {
+ jdbcTemplate.update(DELETE_SQL, id);
+ }
+
+ @Override
+ public List<AllocationItem> getAllocationItems(long resourceId) {
+ if (resourceId <= 0)
+ return Collections.emptyList();
+
+ return jdbcTemplate.query(GET_SQL, new Object[] { resourceId }, allocationItemRowMapper);
+ }
+
+ private static class AllocationItemRowMapper implements RowMapper<AllocationItem> {
+
+ @Override
+ public AllocationItem mapRow(ResultSet rs, int n) throws SQLException {
+ AllocationItem ai = new AllocationItem();
+ ai.id = rs.getLong("allocation_item_id");
+ ai.resourceId = rs.getLong("resource_id");
+ ai.applicationId = rs.getString("application_id");
+ ai.resourceSetId = rs.getString("resource_set_id");
+ ai.resourceUnionId = rs.getString("resource_union_id");
+ ai.resourceShareGroupList = rs.getString("resource_share_group_list");
+ ai.ltUsed = rs.getLong("lt_used");
+ ai.llLabel = rs.getString("ll_label");
+ ai.rrUsed = rs.getString("rr_used");
+ ai.allocationTime = rs.getTimestamp("allocation_time");
+ return ai;
+ }
+ }
+
+ public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
+ this.jdbcTemplate = jdbcTemplate;
+ }
+}
diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/Resource.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/Resource.java
new file mode 100644
index 0000000..5d24b71
--- /dev/null
+++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/Resource.java
@@ -0,0 +1,32 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * openECOMP : SDN-C
+ * ================================================================================
+ * 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.openecomp.sdnc.rm.dao.jdbc;
+
+public class Resource {
+
+ public long id;
+ public String assetId, name, type;
+ public long ltUsed;
+ public String llLabel;
+ public int llReferenceCount;
+ public String rrUsed;
+}
diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/ResourceDaoImpl.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/ResourceDaoImpl.java
new file mode 100644
index 0000000..15c53d2
--- /dev/null
+++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/ResourceDaoImpl.java
@@ -0,0 +1,370 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * openECOMP : SDN-C
+ * ================================================================================
+ * 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.openecomp.sdnc.rm.dao.jdbc;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+
+import org.openecomp.sdnc.rm.dao.ResourceDao;
+import org.openecomp.sdnc.rm.data.LabelAllocationItem;
+import org.openecomp.sdnc.rm.data.LabelResource;
+import org.openecomp.sdnc.rm.data.LimitAllocationItem;
+import org.openecomp.sdnc.rm.data.LimitResource;
+import org.openecomp.sdnc.rm.data.RangeAllocationItem;
+import org.openecomp.sdnc.rm.data.RangeResource;
+import org.openecomp.sdnc.rm.data.ResourceKey;
+import org.openecomp.sdnc.rm.data.ResourceType;
+import org.openecomp.sdnc.util.str.StrUtil;
+
+public class ResourceDaoImpl implements ResourceDao {
+
+ private ResourceJdbcDao resourceJdbcDao;
+ private ResourceLoadJdbcDao resourceLoadJdbcDao;
+ private AllocationItemJdbcDao allocationItemJdbcDao;
+
+ @Override
+ public org.openecomp.sdnc.rm.data.Resource getResource(String assetId, String resourceName) {
+ Resource rEntity = resourceJdbcDao.getResource(assetId, resourceName);
+ org.openecomp.sdnc.rm.data.Resource r = createResource(rEntity);
+
+ if (r != null) {
+ List<AllocationItem> aiEntityList = allocationItemJdbcDao.getAllocationItems(rEntity.id);
+ r.allocationItems = new ArrayList<org.openecomp.sdnc.rm.data.AllocationItem>();
+ for (AllocationItem aiEntity : aiEntityList) {
+ org.openecomp.sdnc.rm.data.AllocationItem ai = createAllocationItem(r, aiEntity);
+ r.allocationItems.add(ai);
+ }
+
+ List<ResourceLoad> rlEntityList = resourceLoadJdbcDao.getResourceLoads(rEntity.id);
+ r.resourceLoadList = new ArrayList<org.openecomp.sdnc.rm.data.ResourceLoad>();
+ for (ResourceLoad rlEntity : rlEntityList) {
+ org.openecomp.sdnc.rm.data.ResourceLoad rl = createResourceLoad(r, rlEntity);
+ r.resourceLoadList.add(rl);
+ }
+ }
+
+ return r;
+ }
+
+ @Override
+ public void saveResource(org.openecomp.sdnc.rm.data.Resource resource) {
+ if (resource == null)
+ return;
+
+ org.openecomp.sdnc.rm.dao.jdbc.Resource resourceEntity =
+ resourceJdbcDao.getResource(resource.resourceKey.assetId, resource.resourceKey.resourceName);
+ if (resourceEntity == null) {
+ resourceEntity = createResourceEntity(resource);
+ resourceJdbcDao.add(resourceEntity);
+ if (resource.allocationItems != null)
+ for (org.openecomp.sdnc.rm.data.AllocationItem ai : resource.allocationItems) {
+ AllocationItem aiEntity = createAllocationItemEntity(resourceEntity.id, ai);
+ allocationItemJdbcDao.add(aiEntity);
+ }
+ if (resource.resourceLoadList != null)
+ for (org.openecomp.sdnc.rm.data.ResourceLoad rl : resource.resourceLoadList) {
+ ResourceLoad rlEntity = createResourceLoadEntity(resourceEntity.id, rl);
+ resourceLoadJdbcDao.add(rlEntity);
+ }
+ } else {
+ updateResourceEntity(resourceEntity, resource);
+ resourceJdbcDao.update(resourceEntity);
+
+ List<AllocationItem> oldAiEntityList = allocationItemJdbcDao.getAllocationItems(resourceEntity.id);
+ if (resource.allocationItems != null)
+ for (org.openecomp.sdnc.rm.data.AllocationItem newai : resource.allocationItems) {
+ AllocationItem foundAiEntity = null;
+ for (AllocationItem oldAiEntity : oldAiEntityList)
+ if (oldAiEntity.resourceSetId.equals(newai.resourceSetId)) {
+ foundAiEntity = oldAiEntity;
+ break;
+ }
+ if (foundAiEntity != null) {
+ updateAllocationItemEntity(foundAiEntity, newai);
+ allocationItemJdbcDao.update(foundAiEntity);
+ } else {
+ AllocationItem newAiEntity = createAllocationItemEntity(resourceEntity.id, newai);
+ allocationItemJdbcDao.add(newAiEntity);
+ }
+ }
+ for (AllocationItem oldAiEntity : oldAiEntityList) {
+ boolean found = false;
+ if (resource.allocationItems != null)
+ for (org.openecomp.sdnc.rm.data.AllocationItem newai : resource.allocationItems)
+ if (oldAiEntity.resourceSetId.equals(newai.resourceSetId)) {
+ found = true;
+ break;
+ }
+ if (!found)
+ allocationItemJdbcDao.delete(oldAiEntity.id);
+ }
+
+ List<ResourceLoad> oldRlEntityList = resourceLoadJdbcDao.getResourceLoads(resourceEntity.id);
+ if (resource.resourceLoadList != null)
+ for (org.openecomp.sdnc.rm.data.ResourceLoad newrl : resource.resourceLoadList) {
+ ResourceLoad foundRlEntity = null;
+ for (ResourceLoad oldRlEntity : oldRlEntityList)
+ if (oldRlEntity.applicationId.equals(newrl.applicationId)) {
+ foundRlEntity = oldRlEntity;
+ break;
+ }
+ if (foundRlEntity != null) {
+ updateResourceLoadEntity(foundRlEntity, newrl);
+ resourceLoadJdbcDao.update(foundRlEntity);
+ } else {
+ ResourceLoad newRlEntity = createResourceLoadEntity(resourceEntity.id, newrl);
+ resourceLoadJdbcDao.add(newRlEntity);
+ }
+ }
+ for (ResourceLoad oldRlEntity : oldRlEntityList) {
+ boolean found = false;
+ if (resource.resourceLoadList != null)
+ for (org.openecomp.sdnc.rm.data.ResourceLoad newrl : resource.resourceLoadList)
+ if (oldRlEntity.applicationId.equals(newrl.applicationId)) {
+ found = true;
+ break;
+ }
+ if (!found)
+ resourceLoadJdbcDao.delete(oldRlEntity.id);
+ }
+ }
+ }
+
+ @Override
+ public void deleteResource(String assetId, String resourceName) {
+ org.openecomp.sdnc.rm.dao.jdbc.Resource resourceEntity = resourceJdbcDao.getResource(assetId, resourceName);
+ if (resourceEntity != null)
+ resourceJdbcDao.delete(resourceEntity.id);
+ }
+
+ @Override
+ public List<org.openecomp.sdnc.rm.data.Resource> getResourceSet(String resourceSetId) {
+ List<Resource> rEntityList = resourceJdbcDao.getResourceSet(resourceSetId);
+ List<org.openecomp.sdnc.rm.data.Resource> rlist = new ArrayList<org.openecomp.sdnc.rm.data.Resource>();
+ for (Resource rEntity : rEntityList) {
+ org.openecomp.sdnc.rm.data.Resource r = createResource(rEntity);
+ rlist.add(r);
+
+ List<AllocationItem> aiEntityList = allocationItemJdbcDao.getAllocationItems(rEntity.id);
+ r.allocationItems = new ArrayList<org.openecomp.sdnc.rm.data.AllocationItem>();
+ for (AllocationItem aiEntity : aiEntityList) {
+ org.openecomp.sdnc.rm.data.AllocationItem ai = createAllocationItem(r, aiEntity);
+ r.allocationItems.add(ai);
+ }
+
+ List<ResourceLoad> rlEntityList = resourceLoadJdbcDao.getResourceLoads(rEntity.id);
+ r.resourceLoadList = new ArrayList<org.openecomp.sdnc.rm.data.ResourceLoad>();
+ for (ResourceLoad rlEntity : rlEntityList) {
+ org.openecomp.sdnc.rm.data.ResourceLoad rl = createResourceLoad(r, rlEntity);
+ r.resourceLoadList.add(rl);
+ }
+ }
+ return rlist;
+ }
+
+ @Override
+ public List<org.openecomp.sdnc.rm.data.Resource> getResourceUnion(String resourceUnionId) {
+ List<Resource> rEntityList = resourceJdbcDao.getResourceUnion(resourceUnionId);
+ List<org.openecomp.sdnc.rm.data.Resource> rlist = new ArrayList<org.openecomp.sdnc.rm.data.Resource>();
+ for (Resource rEntity : rEntityList) {
+ org.openecomp.sdnc.rm.data.Resource r = createResource(rEntity);
+ rlist.add(r);
+
+ List<AllocationItem> aiEntityList = allocationItemJdbcDao.getAllocationItems(rEntity.id);
+ r.allocationItems = new ArrayList<org.openecomp.sdnc.rm.data.AllocationItem>();
+ for (AllocationItem aiEntity : aiEntityList) {
+ org.openecomp.sdnc.rm.data.AllocationItem ai = createAllocationItem(r, aiEntity);
+ r.allocationItems.add(ai);
+ }
+
+ List<ResourceLoad> rlEntityList = resourceLoadJdbcDao.getResourceLoads(rEntity.id);
+ r.resourceLoadList = new ArrayList<org.openecomp.sdnc.rm.data.ResourceLoad>();
+ for (ResourceLoad rlEntity : rlEntityList) {
+ org.openecomp.sdnc.rm.data.ResourceLoad rl = createResourceLoad(r, rlEntity);
+ r.resourceLoadList.add(rl);
+ }
+ }
+ return rlist;
+ }
+
+ private Resource createResourceEntity(org.openecomp.sdnc.rm.data.Resource resource) {
+ Resource resourceEntity = new Resource();
+ resourceEntity.assetId = resource.resourceKey.assetId;
+ resourceEntity.name = resource.resourceKey.resourceName;
+ resourceEntity.type = resource.resourceType.toString();
+ if (resource.resourceType == ResourceType.Limit)
+ resourceEntity.ltUsed = ((LimitResource) resource).used;
+ else if (resource.resourceType == ResourceType.Label) {
+ resourceEntity.llLabel = ((LabelResource) resource).label;
+ resourceEntity.llReferenceCount = ((LabelResource) resource).referenceCount;
+ } else if (resource.resourceType == ResourceType.Range)
+ resourceEntity.rrUsed = StrUtil.listInt(((RangeResource) resource).used);
+
+ return resourceEntity;
+ }
+
+ private ResourceLoad createResourceLoadEntity(long resourceId, org.openecomp.sdnc.rm.data.ResourceLoad rl) {
+ ResourceLoad rlEntity = new ResourceLoad();
+ rlEntity.resourceId = resourceId;
+ rlEntity.applicationId = rl.applicationId;
+ rlEntity.loadTime = rl.resourceLoadTime;
+ rlEntity.expirationTime = rl.resourceExpirationTime;
+ return rlEntity;
+ }
+
+ private void updateResourceLoadEntity(ResourceLoad rlEntity, org.openecomp.sdnc.rm.data.ResourceLoad rl) {
+ rlEntity.loadTime = rl.resourceLoadTime;
+ rlEntity.expirationTime = rl.resourceExpirationTime;
+ }
+
+ private AllocationItem createAllocationItemEntity(long resourceId, org.openecomp.sdnc.rm.data.AllocationItem ai) {
+ AllocationItem aiEntity = new AllocationItem();
+ aiEntity.resourceId = resourceId;
+ aiEntity.resourceSetId = ai.resourceSetId;
+ aiEntity.resourceUnionId = ai.resourceUnionId;
+ aiEntity.resourceShareGroupList = StrUtil.listStr(ai.resourceShareGroupList);
+ aiEntity.applicationId = ai.applicationId;
+ aiEntity.allocationTime = ai.allocationTime;
+ if (ai.resourceType == ResourceType.Limit)
+ aiEntity.ltUsed = ((LimitAllocationItem) ai).used;
+ else if (ai.resourceType == ResourceType.Label)
+ aiEntity.llLabel = ((LabelAllocationItem) ai).label;
+ else if (ai.resourceType == ResourceType.Range)
+ aiEntity.rrUsed = StrUtil.listInt(((RangeAllocationItem) ai).used);
+ return aiEntity;
+ }
+
+ private void updateAllocationItemEntity(AllocationItem aiEntity, org.openecomp.sdnc.rm.data.AllocationItem ai) {
+ aiEntity.resourceShareGroupList = StrUtil.listStr(ai.resourceShareGroupList);
+ aiEntity.allocationTime = ai.allocationTime;
+ if (ai.resourceType == ResourceType.Limit)
+ aiEntity.ltUsed = ((LimitAllocationItem) ai).used;
+ else if (ai.resourceType == ResourceType.Label)
+ aiEntity.llLabel = ((LabelAllocationItem) ai).label;
+ else if (ai.resourceType == ResourceType.Range)
+ aiEntity.rrUsed = StrUtil.listInt(((RangeAllocationItem) ai).used);
+ }
+
+ private void updateResourceEntity(Resource resourceEntity, org.openecomp.sdnc.rm.data.Resource resource) {
+ if (resource.resourceType == ResourceType.Limit)
+ resourceEntity.ltUsed = ((LimitResource) resource).used;
+ else if (resource.resourceType == ResourceType.Label) {
+ resourceEntity.llLabel = ((LabelResource) resource).label;
+ resourceEntity.llReferenceCount = ((LabelResource) resource).referenceCount;
+ } else if (resource.resourceType == ResourceType.Range)
+ resourceEntity.rrUsed = StrUtil.listInt(((RangeResource) resource).used);
+ }
+
+ private org.openecomp.sdnc.rm.data.Resource createResource(Resource resourceEntity) {
+ if (resourceEntity == null)
+ return null;
+
+ org.openecomp.sdnc.rm.data.Resource r = null;
+ ResourceType type = ResourceType.valueOf(resourceEntity.type);
+ if (type == ResourceType.Limit) {
+ LimitResource l = new LimitResource();
+ l.used = resourceEntity.ltUsed;
+ r = l;
+ } else if (type == ResourceType.Label) {
+ LabelResource l = new LabelResource();
+ l.label = resourceEntity.llLabel;
+ l.referenceCount = resourceEntity.llReferenceCount;
+ r = l;
+ } else if (type == ResourceType.Range) {
+ RangeResource rr = new RangeResource();
+ rr.used =
+ StrUtil.listInt(resourceEntity.rrUsed, "Invalid data found in DB in for Resource Id: " +
+ resourceEntity.id + ": RESOURCE.RR_USED: " + resourceEntity.rrUsed);
+ r = rr;
+ }
+
+ r.resourceType = type;
+ r.resourceKey = new ResourceKey();
+ r.resourceKey.assetId = resourceEntity.assetId;
+ r.resourceKey.resourceName = resourceEntity.name;
+
+ return r;
+ }
+
+ private org.openecomp.sdnc.rm.data.AllocationItem createAllocationItem(
+ org.openecomp.sdnc.rm.data.Resource r,
+ AllocationItem aiEntity) {
+ if (r == null || aiEntity == null)
+ return null;
+
+ org.openecomp.sdnc.rm.data.AllocationItem ai = null;
+ if (r.resourceType == ResourceType.Limit) {
+ LimitAllocationItem lai = new LimitAllocationItem();
+ lai.used = aiEntity.ltUsed;
+ ai = lai;
+ } else if (r.resourceType == ResourceType.Label) {
+ LabelAllocationItem lai = new LabelAllocationItem();
+ lai.label = aiEntity.llLabel;
+ ai = lai;
+ } else if (r.resourceType == ResourceType.Range) {
+ RangeAllocationItem rai = new RangeAllocationItem();
+ rai.used =
+ StrUtil.listInt(aiEntity.rrUsed, "Invalid data found in DB in for Allocation Item Id: " +
+ aiEntity.id + ": ALLOCATION_ITEM.RR_USED: " + aiEntity.rrUsed);
+ ai = rai;
+ }
+
+ ai.resourceType = r.resourceType;
+ ai.resourceKey = r.resourceKey;
+ ai.resourceSetId = aiEntity.resourceSetId;
+ ai.resourceUnionId = aiEntity.resourceUnionId;
+ if (aiEntity.resourceShareGroupList != null)
+ ai.resourceShareGroupList = new HashSet<String>(StrUtil.listStr(aiEntity.resourceShareGroupList));
+ ai.applicationId = aiEntity.applicationId;
+ ai.allocationTime = aiEntity.allocationTime;
+
+ return ai;
+ }
+
+ private org.openecomp.sdnc.rm.data.ResourceLoad createResourceLoad(
+ org.openecomp.sdnc.rm.data.Resource r,
+ ResourceLoad rlEntity) {
+ if (rlEntity == null)
+ return null;
+
+ org.openecomp.sdnc.rm.data.ResourceLoad rl = new org.openecomp.sdnc.rm.data.ResourceLoad();
+ rl.resourceKey = r.resourceKey;
+ rl.applicationId = rlEntity.applicationId;
+ rl.resourceLoadTime = rlEntity.loadTime;
+ rl.resourceExpirationTime = rlEntity.expirationTime;
+
+ return rl;
+ }
+
+ public void setResourceJdbcDao(ResourceJdbcDao resourceJdbcDao) {
+ this.resourceJdbcDao = resourceJdbcDao;
+ }
+
+ public void setResourceLoadJdbcDao(ResourceLoadJdbcDao resourceLoadJdbcDao) {
+ this.resourceLoadJdbcDao = resourceLoadJdbcDao;
+ }
+
+ public void setAllocationItemJdbcDao(AllocationItemJdbcDao allocationItemJdbcDao) {
+ this.allocationItemJdbcDao = allocationItemJdbcDao;
+ }
+}
diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/ResourceJdbcDao.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/ResourceJdbcDao.java
new file mode 100644
index 0000000..e2c3456
--- /dev/null
+++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/ResourceJdbcDao.java
@@ -0,0 +1,39 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * openECOMP : SDN-C
+ * ================================================================================
+ * 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.openecomp.sdnc.rm.dao.jdbc;
+
+import java.util.List;
+
+public interface ResourceJdbcDao {
+
+ Resource getResource(String assetId, String resourceName);
+
+ List<Resource> getResourceSet(String resourceSetId);
+
+ List<Resource> getResourceUnion(String resourceUnionId);
+
+ void add(Resource r);
+
+ void delete(long id);
+
+ void update(Resource r);
+}
diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/ResourceJdbcDaoImpl.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/ResourceJdbcDaoImpl.java
new file mode 100644
index 0000000..3dee596
--- /dev/null
+++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/ResourceJdbcDaoImpl.java
@@ -0,0 +1,144 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * openECOMP : SDN-C
+ * ================================================================================
+ * 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.openecomp.sdnc.rm.dao.jdbc;
+
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.Collections;
+import java.util.List;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.jdbc.core.PreparedStatementCreator;
+import org.springframework.jdbc.core.RowMapper;
+import org.springframework.jdbc.support.GeneratedKeyHolder;
+import org.springframework.jdbc.support.KeyHolder;
+
+public class ResourceJdbcDaoImpl implements ResourceJdbcDao {
+
+ @SuppressWarnings("unused")
+ private static final Logger log = LoggerFactory.getLogger(ResourceJdbcDaoImpl.class);
+
+ private static final String RESOURCE_SQL = "SELECT * FROM RESOURCE WHERE asset_id = ? AND resource_name = ?";
+
+ private static final String RESOURCE_SET_SQL = "SELECT * FROM RESOURCE WHERE resource_id IN (\n"
+ + "SELECT DISTINCT resource_id FROM ALLOCATION_ITEM WHERE resource_set_id = ?)";
+
+ private static final String RESOURCE_UNION_SQL = "SELECT * FROM RESOURCE WHERE resource_id IN (\n"
+ + "SELECT DISTINCT resource_id FROM ALLOCATION_ITEM WHERE resource_union_id = ?)";
+
+ private static final String INSERT_SQL = "INSERT INTO RESOURCE (\n"
+ + " asset_id, resource_name, resource_type, lt_used, ll_label, ll_reference_count, rr_used)\n"
+ + "VALUES (?, ?, ?, ?, ?, ?, ?)";
+
+ private static final String UPDATE_SQL = "UPDATE RESOURCE SET\n"
+ + " lt_used = ?, ll_label = ?, ll_reference_count = ?, rr_used = ?\nWHERE resource_id = ?";
+
+ private static final String DELETE_SQL = "DELETE FROM RESOURCE WHERE resource_id = ?";
+
+ private JdbcTemplate jdbcTemplate;
+ private ResourceRowMapper resourceRowMapper = new ResourceRowMapper();
+
+ @Override
+ public Resource getResource(String assetId, String resourceName) {
+ if (assetId == null || assetId.trim().length() == 0 || resourceName == null ||
+ resourceName.trim().length() == 0)
+ return null;
+
+ List<Resource> ll = jdbcTemplate.query(RESOURCE_SQL, new Object[] { assetId, resourceName }, resourceRowMapper);
+ return ll.isEmpty() ? null : ll.get(0);
+ }
+
+ @Override
+ public List<Resource> getResourceSet(String resourceSetId) {
+ if (resourceSetId == null)
+ return Collections.emptyList();
+
+ return jdbcTemplate.query(RESOURCE_SET_SQL, new Object[] { resourceSetId }, resourceRowMapper);
+ }
+
+ @Override
+ public List<Resource> getResourceUnion(String resourceUnionId) {
+ if (resourceUnionId == null)
+ return Collections.emptyList();
+
+ return jdbcTemplate.query(RESOURCE_UNION_SQL, new Object[] { resourceUnionId }, resourceRowMapper);
+ }
+
+ @Override
+ public void add(final Resource r) {
+ PreparedStatementCreator psc = new PreparedStatementCreator() {
+
+ @Override
+ public PreparedStatement createPreparedStatement(Connection dbc) throws SQLException {
+ PreparedStatement ps = dbc.prepareStatement(INSERT_SQL, new String[] { "resource_id" });
+ ps.setString(1, r.assetId);
+ ps.setString(2, r.name);
+ ps.setString(3, r.type);
+ ps.setLong(4, r.ltUsed);
+ ps.setString(5, r.llLabel);
+ ps.setInt(6, r.llReferenceCount);
+ ps.setString(7, r.rrUsed);
+ return ps;
+ }
+ };
+ KeyHolder keyHolder = new GeneratedKeyHolder();
+ jdbcTemplate.update(psc, keyHolder);
+ r.id = keyHolder.getKey().longValue();
+ }
+
+ @Override
+ public void update(Resource r) {
+ Long ltUsed = r.ltUsed <= 0 ? null : r.ltUsed;
+ Integer llRefCount = r.llReferenceCount <= 0 ? null : r.llReferenceCount;
+ jdbcTemplate.update(UPDATE_SQL, ltUsed, r.llLabel, llRefCount, r.rrUsed, r.id);
+ }
+
+ @Override
+ public void delete(long id) {
+ jdbcTemplate.update(DELETE_SQL, id);
+ }
+
+ private static class ResourceRowMapper implements RowMapper<Resource> {
+
+ @Override
+ public Resource mapRow(ResultSet rs, int arg1) throws SQLException {
+ Resource r = new Resource();
+ r.id = rs.getLong("resource_id");
+ r.assetId = rs.getString("asset_id");
+ r.name = rs.getString("resource_name");
+ r.type = rs.getString("resource_type");
+ r.ltUsed = rs.getLong("lt_used");
+ r.llLabel = rs.getString("ll_label");
+ r.llReferenceCount = rs.getInt("ll_reference_count");
+ r.rrUsed = rs.getString("rr_used");
+ return r;
+ }
+ }
+
+ public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
+ this.jdbcTemplate = jdbcTemplate;
+ }
+}
diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/ResourceLoad.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/ResourceLoad.java
new file mode 100644
index 0000000..ede82ec
--- /dev/null
+++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/ResourceLoad.java
@@ -0,0 +1,33 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * openECOMP : SDN-C
+ * ================================================================================
+ * 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.openecomp.sdnc.rm.dao.jdbc;
+
+import java.util.Date;
+
+public class ResourceLoad {
+
+ public long id;
+ public long resourceId;
+ public String applicationId;
+ public Date loadTime;
+ public Date expirationTime;
+}
diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/ResourceLoadJdbcDao.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/ResourceLoadJdbcDao.java
new file mode 100644
index 0000000..7a167db
--- /dev/null
+++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/ResourceLoadJdbcDao.java
@@ -0,0 +1,36 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * openECOMP : SDN-C
+ * ================================================================================
+ * 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.openecomp.sdnc.rm.dao.jdbc;
+
+import java.util.List;
+
+public interface ResourceLoadJdbcDao {
+
+ void add(ResourceLoad rl);
+
+ List<ResourceLoad> getResourceLoads(long resourceId);
+
+ void update(ResourceLoad rl);
+
+ void delete(long id);
+
+}
diff --git a/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/ResourceLoadJdbcDaoImpl.java b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/ResourceLoadJdbcDaoImpl.java
new file mode 100644
index 0000000..f41edc3
--- /dev/null
+++ b/resource-assignment/provider/src/main/java/org/openecomp/sdnc/rm/dao/jdbc/ResourceLoadJdbcDaoImpl.java
@@ -0,0 +1,112 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * openECOMP : SDN-C
+ * ================================================================================
+ * 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.openecomp.sdnc.rm.dao.jdbc;
+
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Timestamp;
+import java.util.Collections;
+import java.util.List;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.jdbc.core.PreparedStatementCreator;
+import org.springframework.jdbc.core.RowMapper;
+import org.springframework.jdbc.support.GeneratedKeyHolder;
+import org.springframework.jdbc.support.KeyHolder;
+
+public class ResourceLoadJdbcDaoImpl implements ResourceLoadJdbcDao {
+
+ @SuppressWarnings("unused")
+ private static final Logger log = LoggerFactory.getLogger(ResourceJdbcDaoImpl.class);
+
+ private static final String INSERT_SQL = "INSERT INTO RESOURCE_LOAD (\n"
+ + " resource_id, application_id, resource_load_time, resource_expiration_time)\nVALUES (?, ?, ?, ?)";
+
+ private static final String UPDATE_SQL = "UPDATE RESOURCE_LOAD SET\n"
+ + " resource_load_time = ?, resource_expiration_time = ?\nWHERE resource_id = ?";
+
+ private static final String DELETE_SQL = "DELETE FROM RESOURCE_LOAD WHERE resource_load_id = ?";
+
+ private static final String GET_SQL = "SELECT * FROM RESOURCE_LOAD WHERE resource_id = ?";
+
+ private JdbcTemplate jdbcTemplate;
+ private ResourceLoadRowMapper resourceLoadRowMapper = new ResourceLoadRowMapper();
+
+ @Override
+ public void add(final ResourceLoad rl) {
+ PreparedStatementCreator psc = new PreparedStatementCreator() {
+
+ @Override
+ public PreparedStatement createPreparedStatement(Connection dbc) throws SQLException {
+ PreparedStatement ps = dbc.prepareStatement(INSERT_SQL, new String[] { "resource_load_id" });
+ ps.setLong(1, rl.resourceId);
+ ps.setString(2, rl.applicationId);
+ ps.setTimestamp(3, new Timestamp(rl.loadTime.getTime()));
+ ps.setTimestamp(4, new Timestamp(rl.expirationTime.getTime()));
+ return ps;
+ }
+ };
+ KeyHolder keyHolder = new GeneratedKeyHolder();
+ jdbcTemplate.update(psc, keyHolder);
+ rl.id = keyHolder.getKey().longValue();
+ }
+
+ @Override
+ public void update(ResourceLoad rl) {
+ jdbcTemplate.update(UPDATE_SQL, rl.loadTime, rl.expirationTime, rl.id);
+ }
+
+ @Override
+ public void delete(long id) {
+ jdbcTemplate.update(DELETE_SQL, id);
+ }
+
+ @Override
+ public List<ResourceLoad> getResourceLoads(long resourceId) {
+ if (resourceId <= 0)
+ return Collections.emptyList();
+
+ return jdbcTemplate.query(GET_SQL, new Object[] { resourceId }, resourceLoadRowMapper);
+ }
+
+ private static class ResourceLoadRowMapper implements RowMapper<ResourceLoad> {
+
+ @Override
+ public ResourceLoad mapRow(ResultSet rs, int n) throws SQLException {
+ ResourceLoad rl = new ResourceLoad();
+ rl.id = rs.getLong("allocation_item_id");
+ rl.resourceId = rs.getLong("resource_id");
+ rl.applicationId = rs.getString("application_id");
+ rl.loadTime = rs.getTimestamp("resource_load_time");
+ rl.expirationTime = rs.getTimestamp("resource_expiration_time");
+ return rl;
+ }
+ }
+
+ public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
+ this.jdbcTemplate = jdbcTemplate;
+ }
+}