Newer
Older
java-lab / src / main / java / se / progic / javalab / Cli.java
@Marcus Bengtsson Marcus Bengtsson on 6 Nov 1 KB Session 1 cleanup
package se.progic.javalab;

import java.util.List;
import java.util.concurrent.Callable;
import picocli.CommandLine.Command;
import picocli.CommandLine.Option;
import se.progic.javalab.QueueInfo.DataRow;

@Command(
    name = "dstat",
    mixinStandardHelpOptions = true,
    version = "1.0.0"
)
public class Cli implements Callable<Integer> {

    @Option(names = {"-u", "--url"}, required = true)
    private String[] urls;

    @Option(names = {"-n", "--username"}, required = true)
    private String username;

    @Option(names = {"-p", "--password"}, required = true)
    private String password;

    @Option(names = {"-f", "--filter"})
    private String filter;

    @Override
    public Integer call() {

        try {
            final AmqClient amqClient = new AmqClient();
            final String connectionString = amqClient.createConnectionString(urls);
            final String result = amqClient.listQueues(connectionString, username, password);

            final OutputParser outputParser = new OutputParser();
            final List<DataRow> dataRows = outputParser.parseJson(result, filter);
            outputParser.printOutput(dataRows);

            return 0;

        } catch (CliException e) {
            System.err.println("Command failed with message: " + e.getMessage());
            return 1;
        }
    }
}