public Token split(Token ltoken, Token rtoken, double ratioToLeft) { BigDecimal left = ltoken.equals(MINIMUM) ? BigDecimal.ZERO : new BigDecimal(((BigIntegerToken)ltoken).token), right = rtoken.equals(MINIMUM) ? BigDecimal.ZERO : new BigDecimal(((BigIntegerToken)rtoken).token), ratio = BigDecimal.valueOf(ratioToLeft); BigInteger newToken; if (left.compareTo(right) < 0) { newToken = right.subtract(left).multiply(ratio).add(left).toBigInteger(); } else { // wrapping case // L + ((R - min) + (max - L)) * ratio BigDecimal max = new BigDecimal(MAXIMUM); newToken = max.add(right).subtract(left).multiply(ratio).add(left).toBigInteger().mod(MAXIMUM); } assert isValidToken(newToken) : "Invalid tokens from split"; return new BigIntegerToken(newToken); }
public Token split(Token ltoken, Token rtoken, double ratioToLeft) { BigDecimal left = ltoken.equals(MINIMUM) ? BigDecimal.ZERO : new BigDecimal(((BigIntegerToken)ltoken).token), right = rtoken.equals(MINIMUM) ? BigDecimal.ZERO : new BigDecimal(((BigIntegerToken)rtoken).token), ratio = BigDecimal.valueOf(ratioToLeft); BigInteger newToken; if (left.compareTo(right) < 0) { newToken = right.subtract(left).multiply(ratio).add(left).toBigInteger(); } else { // wrapping case // L + ((R - min) + (max - L)) * ratio BigDecimal max = new BigDecimal(MAXIMUM); newToken = max.add(right).subtract(left).multiply(ratio).add(left).toBigInteger().mod(MAXIMUM); } assert isValidToken(newToken) : "Invalid tokens from split"; return new BigIntegerToken(newToken); }
public Token split(Token ltoken, Token rtoken, double ratioToLeft) { BigDecimal left = ltoken.equals(MINIMUM) ? BigDecimal.ZERO : new BigDecimal(((BigIntegerToken)ltoken).token), right = rtoken.equals(MINIMUM) ? BigDecimal.ZERO : new BigDecimal(((BigIntegerToken)rtoken).token), ratio = BigDecimal.valueOf(ratioToLeft); BigInteger newToken; if (left.compareTo(right) < 0) { newToken = right.subtract(left).multiply(ratio).add(left).toBigInteger(); } else { // wrapping case // L + ((R - min) + (max - L)) * ratio BigDecimal max = new BigDecimal(MAXIMUM); newToken = max.add(right).subtract(left).multiply(ratio).add(left).toBigInteger().mod(MAXIMUM); } assert isValidToken(newToken) : "Invalid tokens from split"; return new BigIntegerToken(newToken); }
public Token split(Token ltoken, Token rtoken, double ratioToLeft) { BigDecimal left = ltoken.equals(MINIMUM) ? BigDecimal.ZERO : new BigDecimal(((BigIntegerToken)ltoken).token), right = rtoken.equals(MINIMUM) ? BigDecimal.ZERO : new BigDecimal(((BigIntegerToken)rtoken).token), ratio = BigDecimal.valueOf(ratioToLeft); BigInteger newToken; if (left.compareTo(right) < 0) { newToken = right.subtract(left).multiply(ratio).add(left).toBigInteger(); } else { // wrapping case // L + ((R - min) + (max - L)) * ratio BigDecimal max = new BigDecimal(MAXIMUM); newToken = max.add(right).subtract(left).multiply(ratio).add(left).toBigInteger().mod(MAXIMUM); } assert isValidToken(newToken) : "Invalid tokens from split"; return new BigIntegerToken(newToken); }
public Token getMaximumToken() { return new BigIntegerToken(MAXIMUM); }
@Override public Token add(long n) { return new BigIntegerToken(this.token.add(BigInteger.valueOf(n))); }
public Token increaseSlightly() { return new BigIntegerToken(token.add(BigInteger.ONE)); }
public Token fromByteArray(ByteBuffer bytes) { return new BigIntegerToken(new BigInteger(ByteBufferUtil.getArray(bytes))); }
public Token tokenForValue(BigInteger value) { return new BigIntegerToken(value); }
public Token fromByteArray(ByteBuffer bytes) { return new BigIntegerToken(new BigInteger(ByteBufferUtil.getArray(bytes))); }
public Token increaseSlightly() { return new BigIntegerToken(token.add(BigInteger.ONE)); }
public Token increaseSlightly() { return new BigIntegerToken(token.add(BigInteger.ONE)); }
public Token tokenForValue(BigInteger value) { return new BigIntegerToken(value); }
public Token getMaximumToken() { return new BigIntegerToken(MAXIMUM); }
public Token getMaximumToken() { return new BigIntegerToken(MAXIMUM); }
public BigIntegerToken getToken(ByteBuffer key) { if (key.remaining() == 0) return MINIMUM; return new BigIntegerToken(hashToBigInteger(key)); }
public BigIntegerToken getRandomToken() { BigInteger token = hashToBigInteger(GuidGenerator.guidAsBytes()); if ( token.signum() == -1 ) token = token.multiply(BigInteger.valueOf(-1L)); return new BigIntegerToken(token); }
public Token fromString(String string) { return new BigIntegerToken(new BigInteger(string)); } };
public BigIntegerToken getRandomToken(Random random) { BigInteger token = FBUtilities.hashToBigInteger(GuidGenerator.guidAsBytes(random, "host/127.0.0.1", 0)); if ( token.signum() == -1 ) token = token.multiply(BigInteger.valueOf(-1L)); return new BigIntegerToken(token); }
public Token fromByteArray(ByteBuffer bytes) { return new BigIntegerToken(new BigInteger(ByteBufferUtil.getArray(bytes))); }