net.sf.saxon.value

Class BigIntegerValue

public final class BigIntegerValue extends IntegerValue

An integer value: note this is a subtype of decimal in XML Schema, not a primitive type. The abstract class IntegerValue is used to represent any xs:integer value; this implementation is used for values that do not fit comfortably in a Java long; including the built-in subtype xs:unsignedLong
Nested Class Summary
protected static classBigIntegerValue.BigIntegerComparable
Field Summary
static BigIntegerMAX_LONG
static BigIntegerMAX_UNSIGNED_LONG
static BigIntegerMIN_LONG
static BigIntegerValueZERO
Constructor Summary
BigIntegerValue(BigInteger value)
Construct an xs:integer value from a Java BigInteger
BigIntegerValue(BigInteger value, AtomicType typeLabel)
Construct an xs:integer value from a Java BigInteger, supplying a type label.
BigIntegerValue(long value)
Construct an xs:integer value from a Java long.
Method Summary
NumericValueabs()
Get the absolute value as defined by the XPath abs() function
BigIntegerasBigInteger()
Get the value as a BigInteger
BigDecimalasDecimal()
Convert the value to a BigDecimal
NumericValueceiling()
Implement the XPath ceiling() function
intcompareTo(Object other)
Compare the value to another numeric value
intcompareTo(long other)
Compare the value to a long
ConversionResultconvertPrimitive(BuiltInAtomicType requiredType, boolean validate, XPathContext context)
Convert to target data type
ValidationFailureconvertToSubType(BuiltInAtomicType type, boolean validate)
This class allows subtypes of xs:integer to be held, as well as xs:integer values.
AtomicValuecopyAsSubType(AtomicType typeLabel)
Create a copy of this atomic value, with a different type label
NumericValuediv(IntegerValue other)
Divide by another integer
booleaneffectiveBooleanValue()
Return the effective boolean value of this integer
NumericValuefloor()
Implement the XPath floor() function
BigDecimalgetDecimalValue()
Get the numeric value converted to a decimal
doublegetDoubleValue()
Get the numeric value as a double
StringgetPrimitiveStringValue()
Get the value as a String
ComparablegetSchemaComparable()
Get an object that implements XML Schema comparison semantics
inthashCode()
Get the hashCode.
IntegerValueidiv(IntegerValue other)
Integer divide by another integer
booleanisWholeNumber()
Determine whether the value is a whole number, that is, whether it compares equal to some integer
booleanisWithinLongRange()
Test whether the value is within the range that can be held in a 64-bit signed integer
longlongValue()
Get the value as a long
IntegerValueminus(IntegerValue other)
Subtract another integer
IntegerValuemod(IntegerValue other)
Take modulo another integer
NumericValuenegate()
Negate the value
IntegerValueplus(IntegerValue other)
Add another integer
Valuereduce()
Reduce a value to its simplest form.
NumericValueround()
Implement the XPath round() function
NumericValueroundHalfToEven(int scale)
Implement the XPath round-to-half-even() function
doublesignum()
Determine whether the value is negative, zero, or positive
IntegerValuetimes(IntegerValue other)
Multiply by another integer
ValidationFailurevalidateAgainstSubType(BuiltInAtomicType type)
This class allows subtypes of xs:integer to be held, as well as xs:integer values.

Field Detail

MAX_LONG

public static final BigInteger MAX_LONG

MAX_UNSIGNED_LONG

public static final BigInteger MAX_UNSIGNED_LONG

MIN_LONG

public static final BigInteger MIN_LONG

ZERO

public static final BigIntegerValue ZERO

Constructor Detail

BigIntegerValue

public BigIntegerValue(BigInteger value)
Construct an xs:integer value from a Java BigInteger

Parameters: value the supplied BigInteger

BigIntegerValue

public BigIntegerValue(BigInteger value, AtomicType typeLabel)
Construct an xs:integer value from a Java BigInteger, supplying a type label. It is the caller's responsibility to ensure that the supplied value conforms with the rules for the specified type.

Parameters: value the value of the integer typeLabel the type, which must represent a type derived from xs:integer

BigIntegerValue

public BigIntegerValue(long value)
Construct an xs:integer value from a Java long. Note: normally, if the value fits in a long, then an Int64Value should be used. This constructor is largely for internal use, when operations are required that require two integers to use the same implementation class to be used.

Parameters: value the supplied Java long

Method Detail

abs

public NumericValue abs()
Get the absolute value as defined by the XPath abs() function

Returns: the absolute value

asBigInteger

public BigInteger asBigInteger()
Get the value as a BigInteger

Returns: the value of the xs:integer as a Java BigInteger

asDecimal

public BigDecimal asDecimal()
Convert the value to a BigDecimal

Returns: the resulting BigDecimal

ceiling

public NumericValue ceiling()
Implement the XPath ceiling() function

Returns: the integer value, unchanged

compareTo

public int compareTo(Object other)
Compare the value to another numeric value

Parameters: other the numeric value to be compared to this value

Returns: -1 if this value is less than the other, 0 if they are equal, +1 if this value is greater

compareTo

public int compareTo(long other)
Compare the value to a long

Parameters: other the value to be compared with

Returns: -1 if this is less, 0 if this is equal, +1 if this is greater or if this is NaN

convertPrimitive

public ConversionResult convertPrimitive(BuiltInAtomicType requiredType, boolean validate, XPathContext context)
Convert to target data type

Parameters: requiredType identifies the required atomic type context the XPath dynamic evaluation context

Returns: an AtomicValue, a value of the required type; or an ErrorValue

convertToSubType

public ValidationFailure convertToSubType(BuiltInAtomicType type, boolean validate)
This class allows subtypes of xs:integer to be held, as well as xs:integer values. This method sets the required type label. Note that this method modifies the value in situ.

Parameters: type the subtype of integer required

Returns: null if the operation succeeds, or a ValidationException if the value is out of range

copyAsSubType

public AtomicValue copyAsSubType(AtomicType typeLabel)
Create a copy of this atomic value, with a different type label

Parameters: typeLabel the type label of the new copy. The caller is responsible for checking that the value actually conforms to this type.

div

public NumericValue div(IntegerValue other)
Divide by another integer

Throws: net.sf.saxon.trans.XPathException if the other integer is zero

effectiveBooleanValue

public boolean effectiveBooleanValue()
Return the effective boolean value of this integer

Returns: false if the integer is zero, otherwise true

floor

public NumericValue floor()
Implement the XPath floor() function

Returns: the integer value, unchanged

getDecimalValue

public BigDecimal getDecimalValue()
Get the numeric value converted to a decimal

Returns: a decimal representing this numeric value;

getDoubleValue

public double getDoubleValue()
Get the numeric value as a double

Returns: A double representing this numeric value; NaN if it cannot be converted

getPrimitiveStringValue

public String getPrimitiveStringValue()
Get the value as a String

Returns: a String representation of the value

getSchemaComparable

public Comparable getSchemaComparable()
Get an object that implements XML Schema comparison semantics

hashCode

public int hashCode()
Get the hashCode. This must conform to the rules for other NumericValue hashcodes

See Also: NumericValue

idiv

public IntegerValue idiv(IntegerValue other)
Integer divide by another integer

Throws: net.sf.saxon.trans.XPathException if the other integer is zero

isWholeNumber

public boolean isWholeNumber()
Determine whether the value is a whole number, that is, whether it compares equal to some integer

Returns: always true for this implementation

isWithinLongRange

public boolean isWithinLongRange()
Test whether the value is within the range that can be held in a 64-bit signed integer

Returns: true if the value is within range for a long

longValue

public long longValue()
Get the value as a long

Returns: the value of the xs:integer, as a Java long

minus

public IntegerValue minus(IntegerValue other)
Subtract another integer

mod

public IntegerValue mod(IntegerValue other)
Take modulo another integer

Throws: net.sf.saxon.trans.XPathException if the other integer is zero

negate

public NumericValue negate()
Negate the value

Returns: the result of inverting the sign of the value

plus

public IntegerValue plus(IntegerValue other)
Add another integer

reduce

public Value reduce()
Reduce a value to its simplest form.

round

public NumericValue round()
Implement the XPath round() function

Returns: the integer value, unchanged

roundHalfToEven

public NumericValue roundHalfToEven(int scale)
Implement the XPath round-to-half-even() function

Parameters: scale number of digits required after the decimal point; the value -2 (for example) means round to a multiple of 100

Returns: if the scale is >=0, return this value unchanged. Otherwise round it to a multiple of 10**-scale

signum

public double signum()
Determine whether the value is negative, zero, or positive

Returns: -1 if negative, 0 if zero, +1 if positive, NaN if NaN

times

public IntegerValue times(IntegerValue other)
Multiply by another integer

validateAgainstSubType

public ValidationFailure validateAgainstSubType(BuiltInAtomicType type)
This class allows subtypes of xs:integer to be held, as well as xs:integer values. This method checks that the value is valid against the rules for a given subtype.

Parameters: type the subtype of integer required

Returns: null if the operation succeeds, or a ValidationException if the value is out of range