aboutsummaryrefslogtreecommitdiffstats
path: root/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/NetworkCmProxyCmHandlerQueryServiceImpl.java
diff options
context:
space:
mode:
Diffstat (limited to 'cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/NetworkCmProxyCmHandlerQueryServiceImpl.java')
-rw-r--r--cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/NetworkCmProxyCmHandlerQueryServiceImpl.java109
1 files changed, 99 insertions, 10 deletions
diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/NetworkCmProxyCmHandlerQueryServiceImpl.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/NetworkCmProxyCmHandlerQueryServiceImpl.java
index 1674c52fc..a8fc6d705 100644
--- a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/NetworkCmProxyCmHandlerQueryServiceImpl.java
+++ b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/NetworkCmProxyCmHandlerQueryServiceImpl.java
@@ -20,11 +20,11 @@
package org.onap.cps.ncmp.api.impl;
+import static org.onap.cps.ncmp.api.impl.utils.RestQueryParametersValidator.validateCpsPathConditionProperties;
+import static org.onap.cps.ncmp.api.impl.utils.RestQueryParametersValidator.validateModuleNameConditionProperties;
import static org.onap.cps.ncmp.api.impl.utils.YangDataConverter.convertYangModelCmHandleToNcmpServiceCmHandle;
import static org.onap.cps.spi.FetchDescendantsOption.FETCH_DIRECT_CHILDREN_ONLY;
import static org.onap.cps.spi.FetchDescendantsOption.INCLUDE_ALL_DESCENDANTS;
-import static org.onap.cps.utils.CmHandleQueryRestParametersValidator.validateCpsPathConditionProperties;
-import static org.onap.cps.utils.CmHandleQueryRestParametersValidator.validateModuleNameConditionProperties;
import java.util.ArrayList;
import java.util.Collection;
@@ -40,16 +40,18 @@ import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.onap.cps.cpspath.parser.PathParsingException;
import org.onap.cps.ncmp.api.NetworkCmProxyCmHandlerQueryService;
+import org.onap.cps.ncmp.api.impl.utils.CmHandleQueryConditions;
+import org.onap.cps.ncmp.api.impl.utils.InventoryQueryConditions;
import org.onap.cps.ncmp.api.impl.utils.YangDataConverter;
import org.onap.cps.ncmp.api.inventory.CmHandleQueries;
import org.onap.cps.ncmp.api.inventory.InventoryPersistence;
+import org.onap.cps.ncmp.api.inventory.enums.PropertyType;
+import org.onap.cps.ncmp.api.models.CmHandleQueryServiceParameters;
import org.onap.cps.ncmp.api.models.NcmpServiceCmHandle;
import org.onap.cps.spi.exceptions.DataValidationException;
import org.onap.cps.spi.model.Anchor;
-import org.onap.cps.spi.model.CmHandleQueryServiceParameters;
import org.onap.cps.spi.model.ConditionProperties;
import org.onap.cps.spi.model.DataNode;
-import org.onap.cps.utils.ValidQueryProperties;
import org.springframework.stereotype.Service;
@Service
@@ -113,6 +115,92 @@ public class NetworkCmProxyCmHandlerQueryServiceImpl implements NetworkCmProxyCm
return moduleNameQueryResult;
}
+ @Override
+ public Set<String> queryCmHandleIdsForInventory(
+ final CmHandleQueryServiceParameters cmHandleQueryServiceParameters) {
+
+ if (cmHandleQueryServiceParameters.getCmHandleQueryParameters().isEmpty()) {
+ return getAllCmHandleIds();
+ }
+
+ final Map<String, NcmpServiceCmHandle> publicPropertiesQueryResult = queryCmHandlesByPublicProperties(
+ cmHandleQueryServiceParameters);
+ if (publicPropertiesQueryResult != null && publicPropertiesQueryResult.isEmpty()) {
+ return Collections.emptySet();
+ }
+
+ final Map<String, NcmpServiceCmHandle> privatePropertiesQueryResult = queryCmHandlesByPrivateProperties(
+ cmHandleQueryServiceParameters);
+ if (privatePropertiesQueryResult != null && privatePropertiesQueryResult.isEmpty()) {
+ return Collections.emptySet();
+ }
+
+ final Map<String, NcmpServiceCmHandle> dmiPropertiesQueryResult = queryCmHandlesByDmiPlugin(
+ cmHandleQueryServiceParameters);
+ if (dmiPropertiesQueryResult != null && dmiPropertiesQueryResult.isEmpty()) {
+ return Collections.emptySet();
+ }
+
+ final Map<String, NcmpServiceCmHandle> combinedResult =
+ combineQueryResults(publicPropertiesQueryResult, privatePropertiesQueryResult, dmiPropertiesQueryResult);
+
+ return combinedResult.keySet();
+ }
+
+ private Map<String, NcmpServiceCmHandle> queryCmHandlesByDmiPlugin(
+ final CmHandleQueryServiceParameters cmHandleQueryServiceParameters) {
+ final Map<String, String> dmiPropertyQueryPairs =
+ getPropertyPairs(cmHandleQueryServiceParameters.getCmHandleQueryParameters(),
+ InventoryQueryConditions.CM_HANDLE_WITH_DMI_PLUGIN.getName());
+ if (dmiPropertyQueryPairs.isEmpty()) {
+ return NO_QUERY_TO_EXECUTE;
+ }
+
+ final String dmiPluginIdentifierValue = dmiPropertyQueryPairs.get(
+ PropertyType.DMI_PLUGIN.getYangContainerName());
+
+ final Set<NcmpServiceCmHandle> cmHandlesByDmiPluginIdentifier = cmHandleQueries
+ .getCmHandlesByDmiPluginIdentifier(dmiPluginIdentifierValue);
+
+ return cmHandlesByDmiPluginIdentifier.stream()
+ .collect(Collectors.toMap(NcmpServiceCmHandle::getCmHandleId, cmH -> cmH));
+ }
+
+ private Map<String, NcmpServiceCmHandle> queryCmHandlesByPrivateProperties(
+ final CmHandleQueryServiceParameters cmHandleQueryServiceParameters) {
+
+ final Map<String, String> privatePropertyQueryPairs =
+ getPropertyPairs(cmHandleQueryServiceParameters.getCmHandleQueryParameters(),
+ InventoryQueryConditions.HAS_ALL_ADDITIONAL_PROPERTIES.getName());
+
+ return privatePropertyQueryPairs.isEmpty()
+ ? NO_QUERY_TO_EXECUTE
+ : cmHandleQueries.queryCmHandleAdditionalProperties(privatePropertyQueryPairs);
+ }
+
+ private Map<String, NcmpServiceCmHandle> queryCmHandlesByPublicProperties(
+ final CmHandleQueryServiceParameters cmHandleQueryServiceParameters) {
+
+ final Map<String, String> publicPropertyQueryPairs =
+ getPropertyPairs(cmHandleQueryServiceParameters.getCmHandleQueryParameters(),
+ CmHandleQueryConditions.HAS_ALL_PROPERTIES.getConditionName());
+
+ return publicPropertyQueryPairs.isEmpty()
+ ? NO_QUERY_TO_EXECUTE
+ : cmHandleQueries.queryCmHandlePublicProperties(publicPropertyQueryPairs);
+ }
+
+ private Map<String, NcmpServiceCmHandle> combineQueryResults(
+ final Map<String, NcmpServiceCmHandle> publicPropertiesQueryResult,
+ final Map<String, NcmpServiceCmHandle> privatePropertiesQueryResult,
+ final Map<String, NcmpServiceCmHandle> dmiPropertiesQueryResult) {
+
+ final Map<String, NcmpServiceCmHandle> propertiesCombinedResult = cmHandleQueries
+ .combineCmHandleQueries(publicPropertiesQueryResult, privatePropertiesQueryResult);
+ return cmHandleQueries
+ .combineCmHandleQueries(propertiesCombinedResult, dmiPropertiesQueryResult);
+ }
+
private Map<String, NcmpServiceCmHandle> combineWithModuleNameQuery(
final CmHandleQueryServiceParameters cmHandleQueryServiceParameters,
final Map<String, NcmpServiceCmHandle> previousQueryResult) {
@@ -164,7 +252,8 @@ public class NetworkCmProxyCmHandlerQueryServiceImpl implements NetworkCmProxyCm
}
final Map<String, String> publicPropertyQueryPairs =
- getPublicPropertyPairs(cmHandleQueryServiceParameters.getCmHandleQueryParameters());
+ getPropertyPairs(cmHandleQueryServiceParameters.getCmHandleQueryParameters(),
+ CmHandleQueryConditions.HAS_ALL_PROPERTIES.getConditionName());
final Map<String, NcmpServiceCmHandle> propertiesQueryResult = publicPropertyQueryPairs.isEmpty()
? NO_QUERY_TO_EXECUTE : cmHandleQueries.queryCmHandlePublicProperties(publicPropertyQueryPairs);
@@ -178,7 +267,7 @@ public class NetworkCmProxyCmHandlerQueryServiceImpl implements NetworkCmProxyCm
private Collection<String> getModuleNamesForQuery(final List<ConditionProperties> conditionProperties) {
final List<String> result = new ArrayList<>();
- getConditions(conditionProperties, ValidQueryProperties.HAS_ALL_MODULES.getQueryProperty())
+ getConditions(conditionProperties, CmHandleQueryConditions.HAS_ALL_MODULES.getConditionName())
.parallelStream().forEach(
conditionProperty -> {
validateModuleNameConditionProperties(conditionProperty);
@@ -190,15 +279,15 @@ public class NetworkCmProxyCmHandlerQueryServiceImpl implements NetworkCmProxyCm
private Map<String, String> getCpsPath(final List<ConditionProperties> conditionProperties) {
final Map<String, String> result = new HashMap<>();
- getConditions(conditionProperties, ValidQueryProperties.WITH_CPS_PATH.getQueryProperty()).forEach(
+ getConditions(conditionProperties, CmHandleQueryConditions.WITH_CPS_PATH.getConditionName()).forEach(
result::putAll);
return result;
}
- private Map<String, String> getPublicPropertyPairs(final List<ConditionProperties> conditionProperties) {
+ private Map<String, String> getPropertyPairs(final List<ConditionProperties> conditionProperties,
+ final String queryProperty) {
final Map<String, String> result = new HashMap<>();
- getConditions(conditionProperties,
- ValidQueryProperties.HAS_ALL_PROPERTIES.getQueryProperty()).forEach(result::putAll);
+ getConditions(conditionProperties, queryProperty).forEach(result::putAll);
return result;
}