hip.util.CliCommonOpts.java Source code

Java tutorial

Introduction

Here is the source code for hip.util.CliCommonOpts.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package hip.util;

import org.apache.commons.lang3.StringUtils;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;

import java.io.IOException;

import static hip.util.Cli.ArgBuilder;

/**
 *
 * @author bchandley
 */
public class CliCommonOpts {

    public enum IOOptions implements Cli.ArgInfo {
        INPUT(true, true, "Input directory for the job."), OUTPUT(true, true, "Output directory for the job."),;
        private final boolean hasArgument;
        private final boolean isRequired;
        private final String description;

        IOOptions(boolean hasArgument, boolean isRequired, String description) {
            this.hasArgument = hasArgument;
            this.isRequired = isRequired;
            this.description = description;
        }

        @Override
        public String getArgName() {
            return name().toLowerCase();
        }

        @Override
        public String getArgDescription() {
            return description;
        }

        @Override
        public boolean isRequired() {
            return isRequired;
        }

        @Override
        public boolean hasArg() {
            return hasArgument;
        }
    }

    public enum InputFileOption implements Cli.ArgInfo {
        INPUT(true, true, "Input file"),;
        private final boolean hasArgument;
        private final boolean isRequired;
        private final String description;

        InputFileOption(boolean hasArgument, boolean isRequired, String description) {
            this.hasArgument = hasArgument;
            this.isRequired = isRequired;
            this.description = description;
        }

        @Override
        public String getArgName() {
            return name().toLowerCase();
        }

        @Override
        public String getArgDescription() {
            return description;
        }

        @Override
        public boolean isRequired() {
            return isRequired;
        }

        @Override
        public boolean hasArg() {
            return hasArgument;
        }
    }

    public enum OutputFileOption implements Cli.ArgInfo {
        OUTPUT(true, true, "Output file"),;
        private final boolean hasArgument;
        private final boolean isRequired;
        private final String description;

        OutputFileOption(boolean hasArgument, boolean isRequired, String description) {
            this.hasArgument = hasArgument;
            this.isRequired = isRequired;
            this.description = description;
        }

        @Override
        public String getArgName() {
            return name().toLowerCase();
        }

        @Override
        public String getArgDescription() {
            return description;
        }

        @Override
        public boolean isRequired() {
            return isRequired;
        }

        @Override
        public boolean hasArg() {
            return hasArgument;
        }
    }

    public enum IOFileOpts implements Cli.ArgGetter {
        INPUT(ArgBuilder.builder().hasArgument(true).required(true).description("Input file")), OUTPUT(
                ArgBuilder.builder().hasArgument(true).required(true).description("Output file"));
        private final Cli.ArgInfo argInfo;

        IOFileOpts(final ArgBuilder builder) {
            this.argInfo = builder.setArgName(name()).build();
        }

        @Override
        public Cli.ArgInfo getArgInfo() {
            return argInfo;
        }
    }

    public enum MrIoOpts implements Cli.ArgGetter {
        INPUT(ArgBuilder.builder().hasArgument(true).required(true).description("Input file or directory")), OUTPUT(
                ArgBuilder.builder().hasArgument(true).required(true).description("HDFS output directory"));
        private final Cli.ArgInfo argInfo;

        MrIoOpts(final ArgBuilder builder) {
            this.argInfo = builder.setArgName(name()).build();
        }

        @Override
        public Cli.ArgInfo getArgInfo() {
            return argInfo;
        }
    }

    public enum MrIOpts implements Cli.ArgGetter {
        INPUT(ArgBuilder.builder().hasArgument(true).required(true).description("Input file or directory"));
        private final Cli.ArgInfo argInfo;

        MrIOpts(final ArgBuilder builder) {
            this.argInfo = builder.setArgName(name()).build();
        }

        @Override
        public Cli.ArgInfo getArgInfo() {
            return argInfo;
        }
    }

    public enum FileOption implements Cli.ArgInfo {
        FILE(true, true, "One or more comma-separated files"),;
        private final boolean hasArgument;
        private final boolean isRequired;
        private final String description;

        FileOption(boolean hasArgument, boolean isRequired, String description) {
            this.hasArgument = hasArgument;
            this.isRequired = isRequired;
            this.description = description;
        }

        @Override
        public String getArgName() {
            return name().toLowerCase();
        }

        @Override
        public String getArgDescription() {
            return description;
        }

        @Override
        public boolean isRequired() {
            return isRequired;
        }

        @Override
        public boolean hasArg() {
            return hasArgument;
        }
    }

    public static String[] extractFilesFromOpts(Cli cli) {
        return StringUtils.split(cli.getArgValueAsString(CliCommonOpts.FileOption.FILE), ",");
    }

    public static Iterable<Path> extractPathsFromOpts(Configuration conf, Cli cli) throws IOException {
        return HdfsIoUtils.stringsToPaths(conf, extractFilesFromOpts(cli));
    }
}