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

humanize.util.Parameters Maven / Gradle / Ivy

The newest version!
package humanize.util;

import static humanize.util.Constants.DEFAULT_SLUG_SEPARATOR;
import humanize.time.TimeMillis;

import com.google.common.base.Preconditions;

/**
 * Parameterization classes collection.
 * 
 */
public final class Parameters
{

    private Parameters()
    {
        //
    }

    /**
     * Pace format parameters.
     * 
     */
    public final static class PaceParameters
    {
        /**
         * Builder method.
         * 
         * @param one
         *            Format for a single element
         * @return a new pace parameters instance
         */
        public static PaceParameters begin(String one)
        {
            PaceParameters p = new PaceParameters();
            return p.one(one);
        }

        /**
         * Pluralization formats
         */
        public PluralizeParams plural;

        /**
         * The interval of the pace in milliseconds.
         * 
         * @see TimeMillis
         */
        public long interval;

        private PaceParameters()
        {
            //
        }

        public void checkArguments()
        {
            Preconditions.checkArgument(plural != null, "Plural parameters are required");
        }

        public PaceParameters exts(Object... exts)
        {
            this.plural.exts(exts);
            return this;
        }

        public PaceParameters interval(long interval)
        {
            this.interval = interval;
            return this;
        }

        public PaceParameters interval(TimeMillis interval)
        {
            this.interval = interval.millis();
            return this;
        }

        public PaceParameters many(String many)
        {
            this.plural.many(many);
            return this;
        }

        public PaceParameters none(String none)
        {
            this.plural.none(none);
            return this;
        }

        public PaceParameters one(String one)
        {
            this.plural = PluralizeParams.begin(one);
            return this;
        }

        public PaceParameters plural(PluralizeParams plural)
        {
            this.plural = plural;
            return this;
        }
    }

    /**
     * Parameterization for pluralize calls.
     * 
     */
    public final static class PluralizeParams
    {
        /**
         * Builder method.
         * 
         * @param one
         *            Format for a single element
         * @return a new pluralize parameters instance
         */
        public static PluralizeParams begin(String one)
        {
            PluralizeParams p = new PluralizeParams();
            return p.one(one);
        }

        /**
         * Format for a single element
         */
        public String one;

        /**
         * Format for many elements
         */
        public String many;

        /**
         * Format for no element
         */
        public String none;

        /**
         * Extended parameters for the specified formats
         */
        public Object[] exts;

        private PluralizeParams()
        {
            //
        }

        public PluralizeParams exts(Object... exts)
        {
            this.exts = exts;
            return this;
        }

        public PluralizeParams many(String many)
        {
            this.many = many;
            return this;
        }

        public PluralizeParams none(String none)
        {
            this.none = none;
            return this;
        }

        public PluralizeParams one(String one)
        {
            this.one = one;
            return this;
        }

    }

    /**
     * Parameterization for slugify calls.
     * 
     */
    public final static class SlugifyParams
    {
        /**
         * Builder method.
         * 
         * @return a new slugify parameters instance
         */
        public static SlugifyParams begin()
        {
            return new SlugifyParams();
        }

        /**
         * Separator slug
         */
        public String separator;

        /**
         * Controls the transformation to lowercase
         */
        public boolean isToLowerCase;

        private SlugifyParams()
        {
            this.separator = DEFAULT_SLUG_SEPARATOR;
            this.isToLowerCase = true;
        }

        public SlugifyParams separator(String separator)
        {
            this.separator = separator;
            return this;
        }

        public SlugifyParams toLowerCase(boolean isToLowerCase)
        {
            this.isToLowerCase = isToLowerCase;
            return this;
        }

    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy