Package betsy.bpel.cli

Source Code of betsy.bpel.cli.BPELCliParser

package betsy.bpel.cli;

import betsy.bpel.engines.AbstractEngine;
import betsy.bpel.model.BPELProcess;
import betsy.bpel.repositories.EngineRepository;
import betsy.common.config.Configuration;
import configuration.bpel.BPELProcessRepository;
import org.apache.commons.cli.*;

import java.util.Collections;
import java.util.List;

public class BPELCliParser {

    public static final BPELCliParameter HELP_ONLY = new BPELCliParameter() {
        @Override
        public List<AbstractEngine> getEngines() {
            return Collections.emptyList();
        }

        @Override
        public List<BPELProcess> getProcesses() {
            return Collections.emptyList();
        }

        @Override
        public boolean openResultsInBrowser() {
            return false;
        }

        @Override
        public boolean checkDeployment() {
            return false;
        }

        @Override
        public boolean hasCustomPartnerAddress() {
            return false;
        }

        @Override
        public boolean transformToCoreBpel() {
            return false;
        }

        @Override
        public String getCoreBPELTransformations() {
            return null;
        }

        @Override
        public String getCustomPartnerAddress() {
            return null;
        }

        @Override
        public boolean useExternalPartnerService() {
            return false;
        }

        @Override
        public boolean buildArtifactsOnly() {
            return false;
        }


        @Override
        public boolean showHelp() {
            return true;
        }
    };
    public static final String HELP = "help";
    public static final String OPEN_RESULTS_IN_BROWSER = "open-results-in-browser";
    public static final String CHECK_DEPLOYMENT = "check-deployment";
    public static final String USE_EXTERNAL_PARTNER_SERVICE = "use-external-partner-service";
    public static final String BUILD_ONLY = "build-only";
    public static final String PARTNER_ADDRESS = "partner-address";
    public static final String TO_CORE_BPEL = "to-core-bpel";

    private final String[] args;

    public BPELCliParser(String[] args) {
        this.args = args;
    }

    public BPELCliParameter parse() {
        CommandLineParser parser = new BasicParser();
        try {
            CommandLine cmd = parser.parse(getOptions(), args);

            for(Option option : cmd.getOptions()) {
                System.out.println(option.toString());
            }

            if (cmd.hasOption(HELP)) {
                printUsage();
                System.exit(-1);
            }


            return new BPELCliParameter() {
                @Override
                public List<AbstractEngine> getEngines() {
                    return new EngineParser(cmd.getArgs()).parse();
                }

                @Override
                public List<BPELProcess> getProcesses() {
                    return new ProcessParser(cmd.getArgs()).parse();
                }

                @Override
                public boolean openResultsInBrowser() {
                    return cmd.hasOption(OPEN_RESULTS_IN_BROWSER);
                }

                @Override
                public boolean checkDeployment() {
                    return cmd.hasOption(CHECK_DEPLOYMENT);
                }

                @Override
                public boolean hasCustomPartnerAddress() {
                    return cmd.hasOption(PARTNER_ADDRESS);
                }

                @Override
                public boolean transformToCoreBpel() {
                    return cmd.hasOption(TO_CORE_BPEL);
                }

                @Override
                public String getCoreBPELTransformations() {
                    return cmd.getOptionValue(TO_CORE_BPEL);
                }

                @Override
                public String getCustomPartnerAddress() {
                    return cmd.getOptionValue(PARTNER_ADDRESS);
                }

                @Override
                public boolean useExternalPartnerService() {
                    return cmd.hasOption(USE_EXTERNAL_PARTNER_SERVICE);
                }

                @Override
                public boolean buildArtifactsOnly() {
                    return cmd.hasOption(BUILD_ONLY);
                }

                @Override
                public boolean showHelp() {
                    return cmd.hasOption(HELP);
                }
            };
        } catch (ParseException e) {
            return HELP_ONLY;
        }
    }

    private Options getOptions() {
        Options options = new Options();
        options.addOption("o", OPEN_RESULTS_IN_BROWSER, false, "Opens results in default browser");
        options.addOption("h", HELP, false, "Print usage information.");
        options.addOption("c", CHECK_DEPLOYMENT, false, "Verifies deployment instead of test success");
        options.addOption("e", USE_EXTERNAL_PARTNER_SERVICE, false, "Use external partner service instead of internal one");
        options.addOption("b", BUILD_ONLY, false, "Builds only the artifacts. Does nothing else.");

        options.addOption("p", PARTNER_ADDRESS, true, "Partner IP and Port (defaults to " + Configuration.get("partner.ipAndPort") + ")");
        options.addOption("t", TO_CORE_BPEL, true, "Transform to Core BPEL");
        return options;
    }

    public void printUsage() {
        String firstLine = "betsy bpel [OPTIONS] <ENGINES> <PROCESSES>";
        String header = "\nOptions:\n";
        String footer = "\nGROUPS for <ENGINES> and <PROCESSES> are in CAPITAL LETTERS.\n" +
                "<ENGINES>: " + new EngineRepository().getNames() + "\n\n\n" +
                "<PROCESSES>: " + new BPELProcessRepository().getNames() + "\n\n\n" +
                "Please report issues at https://github.com/uniba-dsg/betsy/issues";
        new HelpFormatter().printHelp(firstLine,
                header,
                getOptions(),
                footer);
    }

}

TOP

Related Classes of betsy.bpel.cli.BPELCliParser

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.