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

com.github.yin.flags.BasicFlag Maven / Gradle / Ivy

Go to download

Easy to use command-line parser, which enables you to define cmdline flags directly the class they are used in.

There is a newer version: 0.3.0-beta2
Show newest version
package com.github.yin.flags;

import javax.annotation.Nonnull;
import java.math.BigDecimal;
import java.math.BigInteger;

/**
 * Handles {@link #get()}, and {@link #validator(Validator)}, leaving {@link #parse(String)}
 * for implementation by clients.
 */
public abstract class BasicFlag implements Flag {
    public static class StringFlag extends BasicFlag {
        public StringFlag(@Nonnull String defaultz) {
            super(defaultz);
        }

        @Override
        public void parse(@Nonnull String value) {
            this.value = String.valueOf(value);
            if (validator != null) {
                validator.validate(this.value);
            }
        }
    }

    public static class BooleanFlag extends BasicFlag {
        public BooleanFlag(@Nonnull Boolean defaultz) {
            super(defaultz);
        }

        @Override
        public void parse(@Nonnull String value) {
            this.value = Boolean.valueOf(value);
            if (validator != null) {
                validator.validate(this.value);
            }
        }
    }

    public static class IntegerFlag extends BasicFlag {
        public IntegerFlag(@Nonnull Integer defaultz) {
            super(defaultz);
        }

        @Override
        public void parse(@Nonnull String value) {
            this.value = Integer.valueOf(value);
            if (validator != null) {
                validator.validate(this.value);
            }
        }
    }

    public static class LongFlag extends BasicFlag {
        public LongFlag(@Nonnull Long defaultz) {
            super(defaultz);
        }

        @Override
        public void parse(@Nonnull String value) {
            this.value = Long.valueOf(value);
            if (validator != null) {
                validator.validate(this.value);
            }
        }
    }

    public static class FloatFlag extends BasicFlag {
        public FloatFlag(@Nonnull Float defaultz) {
            super(defaultz);
        }

        @Override
        public void parse(@Nonnull String value) {
            this.value = Float.valueOf(value);
            if (validator != null) {
                validator.validate(this.value);
            }
        }
    }

    public static class DoubleFlag extends BasicFlag {
        public DoubleFlag(@Nonnull Double defaultz) {
            super(defaultz);
        }

        @Override
        public void parse(@Nonnull String value) {
            this.value = Double.valueOf(value);
            if (validator != null) {
                validator.validate(this.value);
            }
        }
    }

    public static class BigIntegerFlag extends BasicFlag {
        public BigIntegerFlag(@Nonnull BigInteger defaultz) {
            super(defaultz);
        }

        @Override
        public void parse(@Nonnull String value) {
            this.value = new BigInteger(value);
            if (validator != null) {
                validator.validate(this.value);
            }
        }
    }

    public static class BigDecimalFlag extends BasicFlag {
        public BigDecimalFlag(@Nonnull BigDecimal defaultz) {
            super(defaultz);
        }

        @Override
        public void parse(@Nonnull String value) {
            this.value = new BigDecimal(value);
            if (validator != null) {
                validator.validate(this.value);
            }
        }
    }

    protected Validator validator;
    protected T value;

    public BasicFlag(T defaultz) {
        value = defaultz;
    }

    @Override
    public T get() {
        return value;
    }

    @Override
    public Flag validator(Validator validator) {
        this.validator = validator;
        return this;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy