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;
import org.onap.cps.spi.entities.SchemaSet;
import org.onap.cps.spi.entities.YangResource;
import org.onap.cps.spi.exceptions.SchemaSetAlreadyDefinedException;
+import org.onap.cps.spi.model.ModuleReference;
import org.onap.cps.spi.repository.DataspaceRepository;
import org.onap.cps.spi.repository.SchemaSetRepository;
import org.onap.cps.spi.repository.YangResourceRepository;
+import org.onap.cps.yang.YangTextSchemaSourceSetBuilder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataIntegrityViolationException;
import org.springframework.stereotype.Component;
@Override
public void storeModule(final String namespace, final String moduleContent, final String revision,
- final String dataspaceName) {
+ final String dataspaceName) {
// TODO this method should be removed as obsolete.
// Modules to be processed within schema sets only.
}
@Override
@Transactional
public void storeSchemaSet(final String dataspaceName, final String schemaSetName,
- final Set<String> yangResourcesAsStrings) {
+ final Map<String, String> yangResourcesNameToContentMap) {
final Dataspace dataspace = dataspaceRepository.getByName(dataspaceName);
- final Set<YangResource> yangResources = synchronizeYangResources(yangResourcesAsStrings);
+ final Set<YangResource> yangResources = synchronizeYangResources(yangResourcesNameToContentMap);
final SchemaSet schemaSet = new SchemaSet();
schemaSet.setName(schemaSetName);
schemaSet.setDataspace(dataspace);
}
}
- private Set<YangResource> synchronizeYangResources(final Set<String> yangResourcesAsStrings) {
- final Map<String, String> checksumToContentMap = yangResourcesAsStrings.stream()
- .collect(Collectors.toMap(
- content -> DigestUtils.md5DigestAsHex(content.getBytes()),
- content -> content)
- );
-
- final List<YangResource> existingYangResources =
- yangResourceRepository.findAllByChecksumIn(checksumToContentMap.keySet());
- existingYangResources.forEach(yangFile -> checksumToContentMap.remove(yangFile.getChecksum()));
-
- final List<YangResource> newYangResources = checksumToContentMap.entrySet().stream()
+ private Set<YangResource> synchronizeYangResources(final Map<String, String> yangResourcesNameToContentMap) {
+ final Map<String, YangResource> 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<YangResource> existingYangResources =
+ yangResourceRepository.findAllByChecksumIn(checksumToEntityMap.keySet());
+ existingYangResources.forEach(yangFile -> checksumToEntityMap.remove(yangFile.getChecksum()));
+
+ final Collection<YangResource> newYangResources = checksumToEntityMap.values();
if (!newYangResources.isEmpty()) {
yangResourceRepository.saveAll(newYangResources);
}
.build();
}
+ @Override
+ public Collection<ModuleReference> getModuleReferences(final String dataspaceName, final String schemaSetName) {
+ final Dataspace dataspace = dataspaceRepository.getByName(dataspaceName);
+ final SchemaSet schemaSet = schemaSetRepository.getByDataspaceAndName(dataspace, schemaSetName);
+ final Map<String, String> yangResourceNameToContent = schemaSet.getYangResources().stream().collect(
+ Collectors.toMap(YangResource::getName, YangResource::getContent));
+ return YangTextSchemaSourceSetBuilder.of(yangResourceNameToContent).getModuleReferences();
+ }
}