From b835031b83230c36649c6e77787867a465e0ac47 Mon Sep 17 00:00:00 2001 From: "andre.schmid" Date: Mon, 21 Jun 2021 22:25:28 +0100 Subject: Create REST endpoint to retrieve models MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: Ifca0095d84d5da4ab4b055942d893e9c6a259eb7 Issue-ID: SDC-3622 Signed-off-by: André Schmid --- .../exception/ModelOperationExceptionSupplier.java | 6 +++ .../be/model/operations/impl/ModelOperation.java | 55 +++++++++++++++++----- 2 files changed, 48 insertions(+), 13 deletions(-) (limited to 'catalog-model/src/main/java/org') diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/jsonjanusgraph/operations/exception/ModelOperationExceptionSupplier.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/jsonjanusgraph/operations/exception/ModelOperationExceptionSupplier.java index c2ad071d13..6622bf5bd8 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/jsonjanusgraph/operations/exception/ModelOperationExceptionSupplier.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/jsonjanusgraph/operations/exception/ModelOperationExceptionSupplier.java @@ -21,6 +21,7 @@ package org.openecomp.sdc.be.model.jsonjanusgraph.operations.exception; import java.util.function.Supplier; import org.openecomp.sdc.be.dao.api.ActionStatus; +import org.openecomp.sdc.be.dao.janusgraph.JanusGraphOperationStatus; /** * Supplies operation exception needed by the the Model logic @@ -47,4 +48,9 @@ public class ModelOperationExceptionSupplier { return () -> new OperationException(ActionStatus.MODEL_ALREADY_EXISTS, modelName); } + public static Supplier failedToRetrieveModels(final JanusGraphOperationStatus janusGraphOperationStatus) { + var errorMsg = String.format("Failed to retrieve models. Status '%s'", janusGraphOperationStatus); + return () -> new OperationException(ActionStatus.GENERAL_ERROR, errorMsg); + } + } diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ModelOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ModelOperation.java index ccc18e57dd..ddc0367a44 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ModelOperation.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ModelOperation.java @@ -20,6 +20,7 @@ package org.openecomp.sdc.be.model.operations.impl; import fj.data.Either; import java.nio.charset.StandardCharsets; +import java.util.Collections; import java.util.EnumMap; import java.util.List; import java.util.Map; @@ -99,18 +100,11 @@ public class ModelOperation { final Map props = new EnumMap<>(GraphPropertyEnum.class); props.put(GraphPropertyEnum.NAME, name); props.put(GraphPropertyEnum.UNIQUE_ID, UniqueIdBuilder.buildModelUid(name)); - final Either, JanusGraphOperationStatus> result = janusGraphDao.getByCriteria(VertexTypeEnum.MODEL, props); - if (result.isRight()) { - final JanusGraphOperationStatus janusGraphOperationStatus = result.right().value(); - if (janusGraphOperationStatus == JanusGraphOperationStatus.NOT_FOUND) { - return Optional.empty(); - } - log.error(EcompLoggerErrorCode.DATA_ERROR, this.getClass().getName(), - String.format("Problem while getting model %s. reason %s", name, janusGraphOperationStatus)); - throw new OperationException(ActionStatus.GENERAL_ERROR, - String.format("Failed to get model %s on JanusGraph with %s error", name, janusGraphOperationStatus)); + final List modelVerticesList = findModelVerticesByCriteria(props); + if (modelVerticesList.isEmpty()) { + return Optional.empty(); } - return Optional.ofNullable(result.left().value().get(0)); + return Optional.ofNullable(modelVerticesList.get(0)); } public Optional findModelByName(final String name) { @@ -123,8 +117,7 @@ public class ModelOperation { } final GraphVertex graphVertex = modelVertexOpt.get(); - final var model = new Model((String) graphVertex.getMetadataProperty(GraphPropertyEnum.NAME)); - return Optional.of(model); + return Optional.of(convertToModel(graphVertex)); } public void createModelImports(final String modelId, final Map zipContent) { @@ -144,6 +137,42 @@ public class ModelOperation { }).collect(Collectors.toList()); toscaModelImportCassandraDao.importAll(modelId, toscaImportByModelList); } + + /** + * Finds all the models. + * + * @return the list of models + */ + public List findAllModels() { + return findModelsByCriteria(Collections.emptyMap()); + } + + private List findModelsByCriteria(final Map propertyCriteria) { + final List modelVerticesByCriteria = findModelVerticesByCriteria(propertyCriteria); + if (modelVerticesByCriteria.isEmpty()) { + return Collections.emptyList(); + } + + return modelVerticesByCriteria.stream().map(this::convertToModel).collect(Collectors.toList()); + } + + private List findModelVerticesByCriteria(final Map propertyCriteria) { + final Either, JanusGraphOperationStatus> result = janusGraphDao.getByCriteria(VertexTypeEnum.MODEL, propertyCriteria); + if (result.isRight()) { + final var janusGraphOperationStatus = result.right().value(); + if (janusGraphOperationStatus == JanusGraphOperationStatus.NOT_FOUND) { + return Collections.emptyList(); + } + final var operationException = ModelOperationExceptionSupplier.failedToRetrieveModels(janusGraphOperationStatus).get(); + log.error(EcompLoggerErrorCode.DATA_ERROR, this.getClass().getName(), operationException.getMessage()); + throw operationException; + } + return result.left().value(); + } + + private Model convertToModel(final GraphVertex modelGraphVertex) { + return new Model((String) modelGraphVertex.getMetadataProperty(GraphPropertyEnum.NAME)); + } } -- cgit 1.2.3-korg