X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=cps-ri%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fcps%2Fspi%2Fimpl%2FCpsDataPersistenceServiceImpl.java;h=2d9588e8f3e956ec6ae96e8a56c19e6f5e5deaea;hb=760e597acc7854a736363a0136343b5a77462cfb;hp=fd4e768cab379ec955fa290220c3726632c45ce4;hpb=55c4135bff02800659ddc4d2de15222ba229ac51;p=cps.git diff --git a/cps-ri/src/main/java/org/onap/cps/spi/impl/CpsDataPersistenceServiceImpl.java b/cps-ri/src/main/java/org/onap/cps/spi/impl/CpsDataPersistenceServiceImpl.java index fd4e768cab..2d9588e8f3 100644 --- a/cps-ri/src/main/java/org/onap/cps/spi/impl/CpsDataPersistenceServiceImpl.java +++ b/cps-ri/src/main/java/org/onap/cps/spi/impl/CpsDataPersistenceServiceImpl.java @@ -21,6 +21,7 @@ package org.onap.cps.spi.impl; import static org.onap.cps.spi.FetchDescendantsOption.INCLUDE_ALL_DESCENDANTS; +import static org.onap.cps.spi.FetchDescendantsOption.OMIT_DESCENDANTS; import com.google.common.collect.ImmutableSet; import com.google.common.collect.ImmutableSet.Builder; @@ -38,6 +39,7 @@ import org.onap.cps.spi.entities.DataspaceEntity; import org.onap.cps.spi.entities.FragmentEntity; import org.onap.cps.spi.model.DataNode; import org.onap.cps.spi.model.DataNodeBuilder; +import org.onap.cps.spi.query.CpsPathQuery; import org.onap.cps.spi.repository.AnchorRepository; import org.onap.cps.spi.repository.DataspaceRepository; import org.onap.cps.spi.repository.FragmentRepository; @@ -124,6 +126,19 @@ public class CpsDataPersistenceServiceImpl implements CpsDataPersistenceService return fragmentRepository.getByDataspaceAndAnchorAndXpath(dataspaceEntity, anchorEntity, xpath); } + @Override + public List queryDataNodes(final String dataspaceName, final String anchorName, final String cpsPath) { + final DataspaceEntity dataspaceEntity = dataspaceRepository.getByName(dataspaceName); + final AnchorEntity anchorEntity = anchorRepository.getByDataspaceAndName(dataspaceEntity, anchorName); + final CpsPathQuery cpsPathQuery = CpsPathQuery.createFrom(cpsPath); + final List fragmentEntities = fragmentRepository + .getByAnchorAndXpathAndLeafAttributes(anchorEntity.getId(), cpsPathQuery + .getXpathPrefix(), cpsPathQuery.getLeafName(), cpsPathQuery.getLeafValue()); + return fragmentEntities.stream() + .map(fragmentEntity -> toDataNode(fragmentEntity, OMIT_DESCENDANTS)) + .collect(Collectors.toUnmodifiableList()); + } + private static DataNode toDataNode(final FragmentEntity fragmentEntity, final FetchDescendantsOption fetchDescendantsOption) { final Map leaves = GSON.fromJson(fragmentEntity.getAttributes(), Map.class);