com.t3.util.math.CappedInteger.java Source code

Java tutorial

Introduction

Here is the source code for com.t3.util.math.CappedInteger.java

Source

/*
 * Copyright (c) 2014 tabletoptool.com team.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the GNU Public License v3.0
 * which accompanies this distribution, and is available at
 * http://www.gnu.org/licenses/gpl.html
 * 
 * Contributors:
 *     rptools.com team - initial implementation
 *     tabletoptool.com team - further development
 */
package com.t3.util.math;

import org.apache.commons.lang3.StringUtils;

import com.t3.xstreamversioned.version.SerializationVersion;

@SerializationVersion(0)
public class CappedInteger {
    private int value;
    private int max;
    private int min;

    /**
     * This constructor is for serialization only
     */
    public CappedInteger() {
    }

    public CappedInteger(int value, int min, int max) {
        super();
        this.value = value;
        this.max = max;
        this.min = min;
    }

    public int getValue() {
        return value;
    }

    public void setValue(int value) {
        this.value = Math.max(Math.min(value, max), min);
    }

    public void forceValue(int value) {
        this.value = value;
    }

    public int getMax() {
        return max;
    }

    public void setMax(int max) {
        this.max = Math.max(max, min);
    }

    public int getMin() {
        return min;
    }

    public void setMin(int min) {
        this.min = Math.min(max, min);
    }

    @Override
    public String toString() {
        return value + " in range [" + min + ';' + max + ']';
    }

    public static CappedInteger valueOf(String str) {
        String[] parts = StringUtils.split(str, " inrage[;]");
        if (parts.length != 3)
            throw new IllegalArgumentException("The Input '" + str + "' is not of the form 123@[123;123]");
        int value = Integer.parseInt(parts[0]);
        int min = Integer.parseInt(parts[1]);
        int max = Integer.parseInt(parts[2]);
        return new CappedInteger(value, min, max);
    }

    public boolean isValidValue(int v) {
        return v >= min && v <= max;
    }

    public boolean isValidValue() {
        return value >= min && value <= max;
    }
}