All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.logz.sawmill.parser.ExecutionStepDefinitionParser Maven / Gradle / Ivy

The newest version!
package io.logz.sawmill.parser;

import io.logz.sawmill.utilities.JsonUtils;

import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

public class ExecutionStepDefinitionParser {
    public static List parse(List> configMapList) {
        if (configMapList == null) return null;

        return configMapList.stream().map(ExecutionStepDefinitionParser::parse).collect(Collectors.toList());
    }

    private static ExecutionStepDefinition parse(Map configMap) {
        String type = JsonUtils.getTheOnlyKeyFrom(configMap);
        Map executionStepConfig = JsonUtils.getMap(configMap, type, true);

        if (type.equals("if")) {
            return parseConditional(executionStepConfig);
        }
        return parseProcessor(type, executionStepConfig);
    }

    private static ConditionalExecutionStepDefinition parseConditional(Map config) {
        Map condition = JsonUtils.getMap(config, "condition", true);
        List> onTrue = JsonUtils.getList(config, "then", true);
        List> onFalse = JsonUtils.getList(config, "else", false);

        ConditionDefinition conditionDefinition = ConditionDefinitionParser.parse(condition);
        List onTrueDefinitions = parse(onTrue);
        List onFalseDefinitions = parse(onFalse);
        return new ConditionalExecutionStepDefinition(conditionDefinition, onTrueDefinitions, onFalseDefinitions);
    }

    private static ProcessorExecutionStepDefinition parseProcessor(String processorType, Map config) {
        String name = JsonUtils.getString(config, "name", false);
        Map processorConfig = JsonUtils.getMap(config, "config", true);
        ProcessorDefinition processorDefinition = new ProcessorDefinition(processorType, processorConfig);

        List> onFailure = JsonUtils.getList(config, "onFailure", false);
        List onFailureExecutionStepDefinitions = parse(onFailure);

        List> onSuccess = JsonUtils.getList(config, "onSuccess", false);
        List onSuccessExecutionStepDefinitions = parse(onSuccess);

        return new ProcessorExecutionStepDefinition(processorDefinition, name, onFailureExecutionStepDefinitions, onSuccessExecutionStepDefinitions);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy