From 4ab9d0edb5bc0c5251175078a4b8933a29e73744 Mon Sep 17 00:00:00 2001 From: Ruslan Kashapov Date: Thu, 10 Dec 2020 10:49:59 +0200 Subject: Yang resource name persistence Issue-ID: CPS-125 Change-Id: I5ee2e893dd7c30abe86287150e8bef62966dd909 Signed-off-by: Ruslan Kashapov --- .../org/onap/cps/spi/entities/YangResource.java | 4 +++ .../spi/impl/CpsModulePersistenceServiceImpl.java | 34 ++++++++++++---------- cps-ri/src/main/resources/schema.sql | 3 +- 3 files changed, 24 insertions(+), 17 deletions(-) (limited to 'cps-ri/src/main') diff --git a/cps-ri/src/main/java/org/onap/cps/spi/entities/YangResource.java b/cps-ri/src/main/java/org/onap/cps/spi/entities/YangResource.java index 862b7aea6..b8a58d098 100644 --- a/cps-ri/src/main/java/org/onap/cps/spi/entities/YangResource.java +++ b/cps-ri/src/main/java/org/onap/cps/spi/entities/YangResource.java @@ -53,6 +53,10 @@ public class YangResource implements Serializable { @Column private String checksum; + @NotNull + @Column + private String name; + @NotNull @Column private String content; 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 e63ae5962..3067f4834 100644 --- 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 @@ -21,6 +21,7 @@ package org.onap.cps.spi.impl; import com.google.common.collect.ImmutableSet; +import java.util.Collection; import java.util.List; import java.util.Map; import java.util.Set; @@ -61,10 +62,10 @@ public class CpsModulePersistenceServiceImpl implements CpsModulePersistenceServ @Override @Transactional public void storeSchemaSet(final String dataspaceName, final String schemaSetName, - final Set yangResourcesAsStrings) { + final Map yangResourcesNameToContentMap) { final Dataspace dataspace = dataspaceRepository.getByName(dataspaceName); - final Set yangResources = synchronizeYangResources(yangResourcesAsStrings); + final Set yangResources = synchronizeYangResources(yangResourcesNameToContentMap); final SchemaSet schemaSet = new SchemaSet(); schemaSet.setName(schemaSetName); schemaSet.setDataspace(dataspace); @@ -76,24 +77,25 @@ public class CpsModulePersistenceServiceImpl implements CpsModulePersistenceServ } } - private Set synchronizeYangResources(final Set yangResourcesAsStrings) { - final Map checksumToContentMap = yangResourcesAsStrings.stream() - .collect(Collectors.toMap( - content -> DigestUtils.md5DigestAsHex(content.getBytes()), - content -> content) - ); - - final List existingYangResources = - yangResourceRepository.findAllByChecksumIn(checksumToContentMap.keySet()); - existingYangResources.forEach(yangFile -> checksumToContentMap.remove(yangFile.getChecksum())); - - final List newYangResources = checksumToContentMap.entrySet().stream() + private Set synchronizeYangResources(final Map yangResourcesNameToContentMap) { + final Map checksumToEntityMap = yangResourcesNameToContentMap.entrySet().stream() .map(entry -> { final YangResource yangResource = new YangResource(); - yangResource.setChecksum(entry.getKey()); + yangResource.setName(entry.getKey()); yangResource.setContent(entry.getValue()); + yangResource.setChecksum(DigestUtils.md5DigestAsHex(entry.getValue().getBytes())); return yangResource; - }).collect(Collectors.toList()); + }) + .collect(Collectors.toMap( + YangResource::getChecksum, + entity -> entity + )); + + final List existingYangResources = + yangResourceRepository.findAllByChecksumIn(checksumToEntityMap.keySet()); + existingYangResources.forEach(yangFile -> checksumToEntityMap.remove(yangFile.getChecksum())); + + final Collection newYangResources = checksumToEntityMap.values(); if (!newYangResources.isEmpty()) { yangResourceRepository.saveAll(newYangResources); } diff --git a/cps-ri/src/main/resources/schema.sql b/cps-ri/src/main/resources/schema.sql index d47f261ad..2dce470ae 100755 --- a/cps-ri/src/main/resources/schema.sql +++ b/cps-ri/src/main/resources/schema.sql @@ -29,8 +29,9 @@ CREATE TABLE IF NOT EXISTS SCHEMA_SET CREATE TABLE IF NOT EXISTS YANG_RESOURCE ( ID SERIAL PRIMARY KEY, - CHECKSUM TEXT NOT NULL, + NAME TEXT NOT NULL, CONTENT TEXT NOT NULL, + CHECKSUM TEXT NOT NULL, UNIQUE (CHECKSUM) ); -- cgit 1.2.3-korg