ips1ap101.lib.base.util.TemporalAddend.java Source code

Java tutorial

Introduction

Here is the source code for ips1ap101.lib.base.util.TemporalAddend.java

Source

/*
 * Este programa es software libre; usted puede redistribuirlo y/o modificarlo bajo los trminos
 * de la licencia "GNU General Public License" publicada por la Fundacin "Free Software Foundation".
 * Este programa se distribuye con la esperanza de que pueda ser til, pero SIN NINGUNA GARANTIA;
 * vea la licencia "GNU General Public License" para obtener mas informacin.
 */
package ips1ap101.lib.base.util;

import org.apache.commons.lang.ArrayUtils;
import org.apache.commons.lang.StringUtils;

/**
 * @author Jorge Campins
 */
public class TemporalAddend {

    private int _quantity;

    private char _unit;

    private static char[] _validUnits = { 'A', 'Y', 'M', 'D', 'h', 'm', 's' };

    public TemporalAddend() {
        init();
    }

    public TemporalAddend(int quantity, char unit) {
        _quantity = quantity;
        _unit = ArrayUtils.contains(_validUnits, unit) ? unit : '?';
    }

    public TemporalAddend(String string) {
        init();
        String trimmed = StringUtils.trimToNull(string);
        if (trimmed != null) {
            int end = trimmed.length() - 1;
            char unit = trimmed.charAt(end);
            boolean digit = Character.isDigit(unit);
            _quantity = digit ? quantityOf(trimmed) : quantityOf(trimmed.substring(0, end));
            _unit = ArrayUtils.contains(_validUnits, unit) ? unit : digit ? 'D' : '?';
        }
    }

    private void init() {
        _quantity = 0;
        _unit = '?';
    }

    private int quantityOf(String string) {
        try {
            return Integer.valueOf(string);
        } catch (Exception e) {
            return 0;
        }
    }

    /**
     * @return the quantity
     */
    public int getQuantity() {
        return _quantity;
    }

    /**
     * @return the unit
     */
    public char getUnit() {
        return _unit;
    }

    public boolean isValid() {
        return _quantity != 0 && ArrayUtils.contains(_validUnits, _unit);
    }

    @Override
    public String toString() {
        return _quantity + "" + _unit;
    }

}