Java tutorial
/* * 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; } }