From 4c52e1a31c1424a954b2a1540117b4fbb443c578 Mon Sep 17 00:00:00 2001 From: shivasubedi Date: Thu, 12 Aug 2021 12:00:57 +0100 Subject: CPS-508: Create anchor/schemaset from new modules and existing modules Issue-ID: CPS-508 Signed-off-by: shivasubedi Change-Id: I8023a093334b77d0220f7c7d94de66863f5ba6dd --- .../spi/impl/CpsModulePersistenceServiceImpl.java | 17 ++++++++ .../SchemaSetYangResourceRepository.java | 29 ++++++++++++++ .../SchemaSetYangResourceRepositoryImpl.java | 45 ++++++++++++++++++++++ .../cps/spi/repository/YangResourceRepository.java | 7 +++- 4 files changed, 97 insertions(+), 1 deletion(-) create mode 100644 cps-ri/src/main/java/org/onap/cps/spi/repository/SchemaSetYangResourceRepository.java create mode 100644 cps-ri/src/main/java/org/onap/cps/spi/repository/SchemaSetYangResourceRepositoryImpl.java (limited to 'cps-ri/src/main/java') diff --git a/cps-ri/src/main/java/org/onap/cps/spi/impl/CpsModulePersistenceServiceImpl.java b/cps-ri/src/main/java/org/onap/cps/spi/impl/CpsModulePersistenceServiceImpl.java index 535cbe22ef..1c7828f32e 100755 --- a/cps-ri/src/main/java/org/onap/cps/spi/impl/CpsModulePersistenceServiceImpl.java +++ b/cps-ri/src/main/java/org/onap/cps/spi/impl/CpsModulePersistenceServiceImpl.java @@ -30,6 +30,7 @@ import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.nio.charset.StandardCharsets; +import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.List; @@ -143,6 +144,22 @@ public class CpsModulePersistenceServiceImpl implements CpsModulePersistenceServ } } + @Override + @Transactional + public void storeSchemaSetFromModules(final String dataspaceName, final String schemaSetName, + final Map newYangResourcesModuleNameToContentMap, + final List moduleReferenceList) { + storeSchemaSet(dataspaceName, schemaSetName, newYangResourcesModuleNameToContentMap); + final var dataspaceEntity = dataspaceRepository.getByName(dataspaceName); + final var schemaSetEntity = + schemaSetRepository.getByDataspaceAndName(dataspaceEntity, schemaSetName); + final List listOfYangResourceIds = new ArrayList<>(); + moduleReferenceList.forEach(moduleReference -> + listOfYangResourceIds.add(yangResourceRepository.getIdByModuleNameAndRevision( + moduleReference.getName(), moduleReference.getRevision()))); + yangResourceRepository.insertSchemaSetIdYangResourceId(schemaSetEntity.getId(), listOfYangResourceIds); + } + @Override @Transactional public void deleteSchemaSet(final String dataspaceName, final String schemaSetName, diff --git a/cps-ri/src/main/java/org/onap/cps/spi/repository/SchemaSetYangResourceRepository.java b/cps-ri/src/main/java/org/onap/cps/spi/repository/SchemaSetYangResourceRepository.java new file mode 100644 index 0000000000..0361749cdc --- /dev/null +++ b/cps-ri/src/main/java/org/onap/cps/spi/repository/SchemaSetYangResourceRepository.java @@ -0,0 +1,29 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2021 Nordix Foundation. + * ================================================================================ + * 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.cps.spi.repository; + +import java.util.List; + +public interface SchemaSetYangResourceRepository { + + void insertSchemaSetIdYangResourceId(final Integer schemaSetId, final List yangResourceId); + +} diff --git a/cps-ri/src/main/java/org/onap/cps/spi/repository/SchemaSetYangResourceRepositoryImpl.java b/cps-ri/src/main/java/org/onap/cps/spi/repository/SchemaSetYangResourceRepositoryImpl.java new file mode 100644 index 0000000000..04eaa453ef --- /dev/null +++ b/cps-ri/src/main/java/org/onap/cps/spi/repository/SchemaSetYangResourceRepositoryImpl.java @@ -0,0 +1,45 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2021 Nordix Foundation. + * ================================================================================ + * 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. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.cps.spi.repository; + +import java.util.List; +import javax.persistence.EntityManager; +import javax.persistence.PersistenceContext; +import org.springframework.transaction.annotation.Transactional; + +@Transactional +public class SchemaSetYangResourceRepositoryImpl implements SchemaSetYangResourceRepository { + + @PersistenceContext + private EntityManager entityManager; + + @Override + public void insertSchemaSetIdYangResourceId(final Integer schemaSetId, final List yangResourceId) { + final var query = "INSERT INTO SCHEMA_SET_YANG_RESOURCES (SCHEMA_SET_ID, YANG_RESOURCE_ID) " + + "VALUES ( :schemaSetId, :yangResourceId)"; + yangResourceId.forEach(id -> + entityManager.createNativeQuery(query) + .setParameter("schemaSetId", schemaSetId) + .setParameter("yangResourceId", id) + .executeUpdate() + ); + } +} diff --git a/cps-ri/src/main/java/org/onap/cps/spi/repository/YangResourceRepository.java b/cps-ri/src/main/java/org/onap/cps/spi/repository/YangResourceRepository.java index fe8787f93d..0b48eaaf63 100644 --- a/cps-ri/src/main/java/org/onap/cps/spi/repository/YangResourceRepository.java +++ b/cps-ri/src/main/java/org/onap/cps/spi/repository/YangResourceRepository.java @@ -28,16 +28,21 @@ import org.onap.cps.spi.entities.YangResourceModuleReference; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; @Repository -public interface YangResourceRepository extends JpaRepository { +public interface YangResourceRepository extends JpaRepository, + SchemaSetYangResourceRepository { List findAllByChecksumIn(@NotNull Set checksum); @Query(value = "SELECT module_name, revision FROM yang_resource", nativeQuery = true) List findAllModuleNameAndRevision(); + @Query(value = "SELECT id FROM yang_resource WHERE module_name=:name and revision=:revision", nativeQuery = true) + Long getIdByModuleNameAndRevision(@Param("name") String moduleName, @Param("revision") String revision); + @Modifying @Query(value = "DELETE FROM yang_resource yr WHERE NOT EXISTS " + "(SELECT 1 FROM schema_set_yang_resources ssyr WHERE ssyr.yang_resource_id = yr.id)", nativeQuery = true) -- cgit 1.2.3-korg