X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=cps-ri%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fcps%2Fspi%2Fimpl%2FCpsAdminPersistenceServiceImpl.java;h=847a4a32fe621eb83e804524b31b0b66b69f8b56;hb=ad9b701a00c237ae8e462de76b500c8612866da6;hp=2e7bb7e969f767b683330d1ca6da4e02825ee3b9;hpb=243c675e428a0b96646f3b183d0cb8d04135e2a3;p=cps.git diff --git a/cps-ri/src/main/java/org/onap/cps/spi/impl/CpsAdminPersistenceServiceImpl.java b/cps-ri/src/main/java/org/onap/cps/spi/impl/CpsAdminPersistenceServiceImpl.java index 2e7bb7e96..847a4a32f 100755 --- a/cps-ri/src/main/java/org/onap/cps/spi/impl/CpsAdminPersistenceServiceImpl.java +++ b/cps-ri/src/main/java/org/onap/cps/spi/impl/CpsAdminPersistenceServiceImpl.java @@ -1,8 +1,9 @@ /* * ============LICENSE_START======================================================= - * Copyright (C) 2020-2022 Nordix Foundation. + * Copyright (C) 2020-2023 Nordix Foundation. * Modifications Copyright (C) 2020-2022 Bell Canada. * Modifications Copyright (C) 2021 Pantheon.tech + * Modifications Copyright (C) 2022 TechMahindra Ltd. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,11 +24,12 @@ package org.onap.cps.spi.impl; import java.util.Collection; +import java.util.Collections; import java.util.List; -import java.util.Set; import java.util.stream.Collectors; import javax.transaction.Transactional; -import lombok.AllArgsConstructor; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.onap.cps.spi.CpsAdminPersistenceService; import org.onap.cps.spi.entities.AnchorEntity; import org.onap.cps.spi.entities.DataspaceEntity; @@ -35,26 +37,26 @@ import org.onap.cps.spi.entities.SchemaSetEntity; import org.onap.cps.spi.entities.YangResourceModuleReference; import org.onap.cps.spi.exceptions.AlreadyDefinedException; import org.onap.cps.spi.exceptions.DataspaceInUseException; +import org.onap.cps.spi.exceptions.DataspaceNotFoundException; import org.onap.cps.spi.exceptions.ModuleNamesNotFoundException; import org.onap.cps.spi.model.Anchor; -import org.onap.cps.spi.model.CmHandleQueryParameters; +import org.onap.cps.spi.model.Dataspace; import org.onap.cps.spi.repository.AnchorRepository; import org.onap.cps.spi.repository.DataspaceRepository; -import org.onap.cps.spi.repository.ModuleReferenceRepository; import org.onap.cps.spi.repository.SchemaSetRepository; import org.onap.cps.spi.repository.YangResourceRepository; import org.springframework.dao.DataIntegrityViolationException; import org.springframework.stereotype.Component; +@Slf4j @Component -@AllArgsConstructor +@RequiredArgsConstructor public class CpsAdminPersistenceServiceImpl implements CpsAdminPersistenceService { private final DataspaceRepository dataspaceRepository; private final AnchorRepository anchorRepository; private final SchemaSetRepository schemaSetRepository; private final YangResourceRepository yangResourceRepository; - private final ModuleReferenceRepository moduleReferenceRepository; @Override public void createDataspace(final String dataspaceName) { @@ -81,6 +83,19 @@ public class CpsAdminPersistenceServiceImpl implements CpsAdminPersistenceServic dataspaceRepository.delete(dataspaceEntity); } + @Override + public Dataspace getDataspace(final String dataspaceName) { + final DataspaceEntity dataspaceEntity = dataspaceRepository.getByName(dataspaceName); + return toDataspace(dataspaceEntity); + } + + @Override + public Collection getAllDataspaces() { + final Collection dataspaceEntities = dataspaceRepository.findAll(); + return dataspaceEntities.stream().map(CpsAdminPersistenceServiceImpl::toDataspace) + .collect(Collectors.toSet()); + } + @Override public void createAnchor(final String dataspaceName, final String schemaSetName, final String anchorName) { final var dataspaceEntity = dataspaceRepository.getByName(dataspaceName); @@ -115,9 +130,22 @@ public class CpsAdminPersistenceServiceImpl implements CpsAdminPersistenceServic .collect(Collectors.toSet()); } + @Override + public Collection getAnchors(final String dataspaceName, final Collection schemaSetNames) { + final DataspaceEntity dataspaceEntity = dataspaceRepository.getByName(dataspaceName); + return anchorRepository.findAllByDataspaceAndSchemaSetNameIn(dataspaceEntity, schemaSetNames) + .stream().map(CpsAdminPersistenceServiceImpl::toAnchor).collect(Collectors.toSet()); + } + @Override public Collection queryAnchors(final String dataspaceName, final Collection inputModuleNames) { - validateDataspaceAndModuleNames(dataspaceName, inputModuleNames); + try { + validateDataspaceAndModuleNames(dataspaceName, inputModuleNames); + } catch (DataspaceNotFoundException | ModuleNamesNotFoundException e) { + log.info("Module search encountered unknown dataspace or modulename, treating this as nothing found"); + return Collections.emptySet(); + } + final DataspaceEntity dataspaceEntity = dataspaceRepository.getByName(dataspaceName); final Collection anchorEntities = anchorRepository .getAnchorsByDataspaceIdAndModuleNames(dataspaceEntity.getId(), inputModuleNames, inputModuleNames.size()); @@ -136,9 +164,23 @@ public class CpsAdminPersistenceServiceImpl implements CpsAdminPersistenceServic anchorRepository.delete(anchorEntity); } + @Transactional @Override - public Set queryCmHandles(final CmHandleQueryParameters cmHandleQueryParameters) { - return moduleReferenceRepository.queryCmHandles(cmHandleQueryParameters); + public void deleteAnchors(final String dataspaceName, final Collection anchorNames) { + final var dataspaceEntity = dataspaceRepository.getByName(dataspaceName); + anchorRepository.deleteAllByDataspaceAndNameIn(dataspaceEntity, anchorNames); + } + + @Transactional + @Override + public void updateAnchorSchemaSet(final String dataspaceName, + final String anchorName, + final String schemaSetName) { + final DataspaceEntity dataspaceEntity = dataspaceRepository.getByName(dataspaceName); + final AnchorEntity anchorEntity = anchorRepository.getByDataspaceAndName(dataspaceEntity, anchorName); + final SchemaSetEntity schemaSetEntity = schemaSetRepository + .getByDataspaceAndName(dataspaceEntity, schemaSetName); + anchorRepository.updateAnchorSchemaSetId(schemaSetEntity.getId(), anchorEntity.getId()); } private AnchorEntity getAnchorEntity(final String dataspaceName, final String anchorName) { @@ -154,6 +196,10 @@ public class CpsAdminPersistenceServiceImpl implements CpsAdminPersistenceServic .build(); } + private static Dataspace toDataspace(final DataspaceEntity dataspaceEntity) { + return Dataspace.builder().name(dataspaceEntity.getName()).build(); + } + private void validateDataspaceAndModuleNames(final String dataspaceName, final Collection inputModuleNames) { final Collection retrievedModuleReferences = @@ -164,12 +210,10 @@ public class CpsAdminPersistenceServiceImpl implements CpsAdminPersistenceServic verifyDataspaceName(dataspaceName); } if (inputModuleNames.size() > retrievedModuleReferences.size()) { - final List moduleNamesNotFound = inputModuleNames.stream() + final List unknownModules = inputModuleNames.stream() .filter(moduleName -> !retrievedModuleReferences.contains(moduleName)) .collect(Collectors.toList()); - if (!moduleNamesNotFound.isEmpty()) { - throw new ModuleNamesNotFoundException(dataspaceName, moduleNamesNotFound); - } + throw new ModuleNamesNotFoundException(dataspaceName, unknownModules); } }