From 0fce7537299e6af0d2b1fdb1d5c01654ce9573c0 Mon Sep 17 00:00:00 2001 From: Bartosz Gardziejewski Date: Thu, 6 May 2021 10:14:57 +0200 Subject: Rename PM_Dictionary_Validator to Dictionary_Validator Signed-off-by: Bartosz Gardziejewski Change-Id: Icb65e6f832804aa4a958e530422d35e079ffe3c1 Issue-ID: VNFSDK-769 --- .../onap/validation/rule/DictionaryValidate.java | 120 +++++++++++++++++++++ 1 file changed, 120 insertions(+) create mode 100644 dictionaryvalidation/src/main/java/org/onap/validation/rule/DictionaryValidate.java (limited to 'dictionaryvalidation/src/main/java/org/onap/validation/rule/DictionaryValidate.java') diff --git a/dictionaryvalidation/src/main/java/org/onap/validation/rule/DictionaryValidate.java b/dictionaryvalidation/src/main/java/org/onap/validation/rule/DictionaryValidate.java new file mode 100644 index 0000000..c3b96b4 --- /dev/null +++ b/dictionaryvalidation/src/main/java/org/onap/validation/rule/DictionaryValidate.java @@ -0,0 +1,120 @@ +/* + * Copyright 2019 Nokia + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.onap.validation.rule; + +import com.google.gson.Gson; +import org.onap.cli.fw.cmd.OnapCommand; +import org.onap.cli.fw.error.OnapCommandException; +import org.onap.cli.fw.output.OnapCommandResultType; +import org.onap.cli.fw.schema.OnapCommandSchema; +import org.onap.validation.cli.command.validate.ResponseModel; +import org.onap.validation.cli.command.validate.ResponseModel.ResponseStatus; +import org.onap.validation.cli.command.validate.ToJsonConverter; +import org.onap.validation.cli.command.validate.ToResponseModelConverter; +import org.onap.validation.cli.command.validate.ValidateDictionaryYamlCommand; +import org.onap.validation.cli.core.CommandException; +import org.onap.validation.cli.core.CommandResponse; +import org.onap.validation.yaml.util.Args; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.Date; +import java.util.List; + +/** + * Validates CSAR + */ +@OnapCommandSchema(schema = "dictionary-validate.yaml") +public class DictionaryValidate extends OnapCommand { + + private static final String VALIDATION_PASS = "PASS"; + private static final String VALIDATION_FAILED = "FAILED"; + public static final String PARAM_IN_YAML = "yaml"; + public static final String PARAM_OUT_FILE = "file"; + public static final String PARAM_OUT_DATE = "date"; + public static final String PARAM_OUT_CRITERIA = "criteria"; + public static final String PARAM_OUT_ERRORS = "errors"; + private final Gson gson = new Gson(); + + private static final Logger logger = LoggerFactory.getLogger(DictionaryValidate.class); + + @Override + protected void run() throws OnapCommandException { + + final Date timestamp = new Date(); + final String yamlPath = (String) getParametersMap().get(PARAM_IN_YAML).getValue(); + + try { + final ResponseModel responseModel = executeValidation(yamlPath); + handleResponse(responseModel, timestamp); + } catch (CommandException e) { + handleError(timestamp, yamlPath, e); + } + } + + private void handleResponse(ResponseModel responseModel, Date timestamp) { + setOclipResponse(responseModel.getFile(), + timestamp, + getCriteria(responseModel), + transformToJson(responseModel.getErrors()) + ); + } + + private void handleError(Date validationTimestamp, String path, CommandException e) { + setOclipResponse(path, + validationTimestamp, + VALIDATION_FAILED, + transformToJson(e.getMessage()) + ); + logger.error("Internal application error", e); + } + + private String getCriteria(ResponseModel responseModel) { + return responseModel.getStatus().equals(ResponseStatus.PASS) ? VALIDATION_PASS : VALIDATION_FAILED; + } + + private String transformToJson(T data) { + return gson.toJson(data); + } + + private void setOclipResponse(String pathToFile, Date timestamp, String criteria, String errors) { + final DictionaryValidateResponse dictionaryValidateResponse = new DictionaryValidateResponse( + pathToFile, + timestamp.toString(), + criteria, + errors + ); + setOclipResponse(dictionaryValidateResponse); + } + + private void setOclipResponse(DictionaryValidateResponse dictionaryValidateResponse) { + this.getResult().getRecordsMap().get(PARAM_OUT_FILE).getValues().add(dictionaryValidateResponse.getFile()); + this.getResult().getRecordsMap().get(PARAM_OUT_DATE).getValues().add(dictionaryValidateResponse.getDate()); + this.getResult().getRecordsMap().get(PARAM_OUT_CRITERIA).getValues().add(dictionaryValidateResponse.getCriteria()); + this.getResult().getRecordsMap().get(PARAM_OUT_ERRORS).getValues().add(dictionaryValidateResponse.getErrors()); + this.getResult().setOutput(transformToJson(dictionaryValidateResponse)); + this.getResult().setType(OnapCommandResultType.TEXT); + } + + private ResponseModel executeValidation(String path) throws CommandException { + final ValidateDictionaryYamlCommand validation = new ValidateDictionaryYamlCommand(new ToJsonConverter()); + final CommandResponse commandResponse = validation.execute(new Args(List.of(path))); + final String result = commandResponse.getResult(); + + return ToResponseModelConverter.toModel(result); + } +} -- cgit 1.2.3-korg