package com.comphenix.xp.expressions; import java.util.Collection; import java.util.Random; import org.apache.commons.lang.builder.EqualsBuilder; import org.apache.commons.lang.builder.HashCodeBuilder; import com.comphenix.xp.SampleRange; public class RangeExpression extends VariableFunction { protected SampleRange range; protected double multiplier; public RangeExpression(SampleRange range, double multiplier) { this.range = range; this.multiplier = multiplier; } /** * Creates a simple range container with a multiplier of one. * @param value - value of the range. */ public RangeExpression(double value) { this(new SampleRange(value), 1); } /** * Creates a simple range container with a multiplier of one. * @param start - start value of range. * @param end - end value of range. */ public RangeExpression(double start, double end) { this(new SampleRange(start, end), 1); } @Override public double apply(Random rnd, Collection<NamedParameter> params) throws Exception { return range.multiply(multiplier).sampleInt(rnd); } @Override public VariableFunction withMultiplier(double newMultiplier) { return new RangeExpression(range, newMultiplier); } @Override public double getMultiplier() { return multiplier; } @Override public String toString() { return range.multiply(multiplier).toString(); } @Override public int hashCode() { return new HashCodeBuilder(17, 31). append(range). append(multiplier). toHashCode(); } @Override public boolean equals(Object obj) { if (obj == null) return false; if (obj == this) return true; if (obj.getClass() != getClass()) return false; RangeExpression other = (RangeExpression) obj; return new EqualsBuilder(). append(range, other.range). append(multiplier, other.multiplier). isEquals(); } }