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

io.dangernoodle.grt.cli.CommandLineExecutor Maven / Gradle / Ivy

package io.dangernoodle.grt.cli;

import java.io.File;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import io.dangernoodle.grt.Arguments;
import io.dangernoodle.grt.internal.FileLoader;
import io.dangernoodle.grt.utils.JsonTransformer;


public abstract class CommandLineExecutor
{
    protected final FileLoader loader;

    protected final Logger logger;

    protected final JsonTransformer transformer;

    public CommandLineExecutor(Arguments arguments, JsonTransformer transformer)
    {
        this.transformer = transformer;
        this.loader = new FileLoader(arguments.getRepoDir());

        this.logger = LoggerFactory.getLogger(getClass());
    }

    public abstract void execute() throws Exception;

    public static abstract class RepositoryExecutor extends CommandLineExecutor
    {
        public RepositoryExecutor(Arguments arguments, JsonTransformer transformer)
        {
            super(arguments, transformer);
        }

        @Override
        public void execute() throws Exception
        {
            File defaults = loader.loadRepositoryDefaults();
            File overrides = loader.loadRepository(getRepositoryName());

            execute(defaults, overrides);
        }

        protected abstract void execute(File defaults, File overrides) throws Exception;

        protected abstract String getRepositoryName();
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy