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

io.logz.sawmill.Pipeline Maven / Gradle / Ivy

The newest version!
package io.logz.sawmill;

import io.logz.sawmill.parser.ExecutionStepsParser;
import io.logz.sawmill.parser.PipelineDefinition;
import io.logz.sawmill.parser.PipelineDefinitionJsonParser;
import org.apache.commons.collections4.CollectionUtils;

import java.util.List;
import java.util.Optional;
import java.util.UUID;

import static com.google.common.base.Preconditions.checkState;

public class Pipeline {

    private final String id;
    private final List executionSteps;
    private final boolean stopOnFailure;

    public Pipeline(String id, List executionSteps, boolean stopOnFailure) {
        checkState(!id.isEmpty(), "id cannot be empty");
        checkState(CollectionUtils.isNotEmpty(executionSteps), "executionSteps cannot be empty");

        this.id = id;
        this.executionSteps = executionSteps;
        this.stopOnFailure = stopOnFailure;
    }

    public String getId() { return id; }

    public List getExecutionSteps() { return executionSteps; }

    public boolean isStopOnFailure() {
        return stopOnFailure;
    }

    public static final class Factory {

        private final ExecutionStepsParser executionStepsParser;

        public Factory(SawmillConfiguration... sawmillConfigurations) {
            this(
                    new ProcessorFactoryRegistry(new ProcessorFactoriesLoader(new TemplateService(), sawmillConfigurations)),
                    new ConditionFactoryRegistry(new ConditionalFactoriesLoader(new TemplateService(), sawmillConfigurations))
            );
        }
        public Factory(ProcessorFactoryRegistry processorFactoryRegistry,
                       ConditionFactoryRegistry conditionFactoryRegistry) {

            executionStepsParser = new ExecutionStepsParser(processorFactoryRegistry, conditionFactoryRegistry);
        }

        public Pipeline create(String config) {
            String id = UUID.randomUUID().toString();
            return create(id, config);
        }

        public Pipeline create(String id, String config) {
            PipelineDefinition pipelineDefinition = PipelineDefinitionJsonParser.parse(config);
            return create(id, pipelineDefinition);
        }

        public Pipeline create(String id, PipelineDefinition pipelineDefinition) {
            List executionSteps = executionStepsParser.parse(pipelineDefinition.getExecutionSteps());
            Optional stopOnFailureNullable = pipelineDefinition.isStopOnFailure();
            boolean stopOnFailure = stopOnFailureNullable.orElse(false);

            return new Pipeline(id, executionSteps, stopOnFailure);
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy