net.sf.saxon.value

Class BigIntegerValue

Implemented Interfaces:
Comparable, ConversionResult, GroundedValue, Item, PullEvent, Serializable, SequenceIterable, ValueRepresentation

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 class
BigIntegerValue.BigIntegerComparable

Field Summary

static BigInteger
MAX_LONG
IntegerValue representing the maximum value for a long
static BigInteger
MAX_UNSIGNED_LONG
static BigInteger
MIN_LONG
IntegerValue representing the minimum value for a long
static BigIntegerValue
ZERO
IntegerValue representing the value zero

Fields inherited from class net.sf.saxon.value.IntegerValue

MAX_LONG, MINUS_ONE, MIN_LONG, PLUS_ONE, SMALL_INTEGERS, ZERO

Fields inherited from class net.sf.saxon.value.AtomicValue

typeLabel

Fields inherited from class net.sf.saxon.value.Value

EMPTY_CLASS_ARRAY, INDETERMINATE_ORDERING

Fields inherited from interface net.sf.saxon.om.ValueRepresentation

EMPTY_VALUE_ARRAY

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

BigInteger
asBigInteger()
Get the value as a BigInteger
BigDecimal
asDecimal()
Convert the value to a BigDecimal
NumericValue
ceiling()
Implement the XPath ceiling() function
int
compareTo(Object other)
Compare the value to another numeric value
int
compareTo(long other)
Compare the value to a long
ConversionResult
convertPrimitive(BuiltInAtomicType requiredType, boolean validate, XPathContext context)
Convert to target data type
Object
convertToJava(Class target, XPathContext context)
Convert to Java object (for passing to external functions)
ValidationFailure
convertToSubType(BuiltInAtomicType type, boolean validate)
This class allows subtypes of xs:integer to be held, as well as xs:integer values.
AtomicValue
copyAsSubType(AtomicType typeLabel)
Create a copy of this atomic value, with a different type label
NumericValue
div(IntegerValue other)
Divide by another integer
boolean
effectiveBooleanValue()
Return the effective boolean value of this integer
NumericValue
floor()
Implement the XPath floor() function
BigDecimal
getDecimalValue()
Get the numeric value converted to a decimal
double
getDoubleValue()
Get the numeric value as a double
Comparable
getSchemaComparable()
Get an object that implements XML Schema comparison semantics
String
getStringValue()
Get the value as a String
int
hashCode()
Get the hashCode.
IntegerValue
idiv(IntegerValue other)
Integer divide by another integer
boolean
isWholeNumber()
Determine whether the value is a whole number, that is, whether it compares equal to some integer
boolean
isWithinLongRange()
Test whether the value is within the range that can be held in a 64-bit signed integer
long
longValue()
Get the value as a long
IntegerValue
minus(IntegerValue other)
Subtract another integer
IntegerValue
mod(IntegerValue other)
Take modulo another integer
NumericValue
negate()
Negate the value
IntegerValue
plus(IntegerValue other)
Add another integer
Value
reduce()
Reduce a value to its simplest form.
NumericValue
round()
Implement the XPath round() function
NumericValue
roundHalfToEven(int scale)
Implement the XPath round-to-half-even() function
double
signum()
Determine whether the value is negative, zero, or positive
IntegerValue
times(IntegerValue other)
Multiply by another integer
ValidationFailure
validateAgainstSubType(BuiltInAtomicType type)
This class allows subtypes of xs:integer to be held, as well as xs:integer values.

Methods inherited from class net.sf.saxon.value.IntegerValue

asBigInteger, checkBigRange, checkRange, convertToSubType, div, getPrimitiveType, idiv, isWholeNumber, makeIntegerValue, minus, mod, plus, signum, stringToInteger, times, validateAgainstSubType

Methods inherited from class net.sf.saxon.value.NumericValue

ceiling, compareTo, compareTo, equals, floor, getDecimalValue, getDoubleValue, getFloatValue, getXPathComparable, hashCode, isInteger, isWholeNumber, longValue, negate, parseNumber, promote, round, roundHalfToEven, signum, toString

Methods inherited from class net.sf.saxon.value.AtomicValue

asAtomic, checkPermittedContents, convert, convert, convertPrimitive, copyAsSubType, effectiveBooleanValue, equals, getCardinality, getComponent, getItemType, getLength, getPrimitiveType, getSchemaComparable, getStringValue, getStringValueCS, getTypeLabel, getTypedValue, getXPathComparable, isNaN, itemAt, iterate, process, setTypeLabel, subsequence, toString

Methods inherited from class net.sf.saxon.value.Value

asItem, asItem, asIterator, asValue, checkPermittedContents, convertJavaObjectToXPath, convertToJava, convertToJava, effectiveBooleanValue, equals, fromItem, getCanonicalLexicalRepresentation, getCardinality, getItemType, getIterator, getLength, getSchemaComparable, getStringValue, getStringValueCS, itemAt, iterate, iterate, makeQNameValue, process, reduce, stringToNumber, toString

Field Details

MAX_LONG

public static final BigInteger MAX_LONG
IntegerValue representing the maximum value for a long

MAX_UNSIGNED_LONG

public static final BigInteger MAX_UNSIGNED_LONG

MIN_LONG

public static final BigInteger MIN_LONG
IntegerValue representing the minimum value for a long

ZERO

public static final BigIntegerValue ZERO
IntegerValue representing the value zero

Constructor Details

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 Details

asBigInteger

public BigInteger asBigInteger()
Get the value as a BigInteger
Overrides:
asBigInteger in interface IntegerValue
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
Overrides:
ceiling in interface NumericValue
Returns:
the integer value, unchanged

compareTo

public int compareTo(Object other)
Compare the value to another numeric value
Overrides:
compareTo in interface NumericValue
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
Overrides:
compareTo in interface NumericValue
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
Overrides:
convertPrimitive in interface AtomicValue
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

convertToJava

public Object convertToJava(Class target,
                            XPathContext context)
            throws XPathException
Convert to Java object (for passing to external functions)
Overrides:
convertToJava in interface Value
Parameters:
target - The Java class to which conversion is required
Returns:
the Java object that results from the conversion; always an instance of the target class
Throws:
XPathException - if conversion is not possible, or fails

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.
Overrides:
convertToSubType in interface IntegerValue
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
Overrides:
copyAsSubType in interface AtomicValue
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)
            throws XPathException
Divide by another integer
Overrides:
div in interface IntegerValue
Throws:
XPathException - if the other integer is zero

effectiveBooleanValue

public boolean effectiveBooleanValue()
Return the effective boolean value of this integer
Overrides:
effectiveBooleanValue in interface AtomicValue
Returns:
false if the integer is zero, otherwise true

floor

public NumericValue floor()
Implement the XPath floor() function
Overrides:
floor in interface NumericValue
Returns:
the integer value, unchanged

getDecimalValue

public BigDecimal getDecimalValue()
Get the numeric value converted to a decimal
Overrides:
getDecimalValue in interface NumericValue
Returns:
a decimal representing this numeric value;

getDoubleValue

public double getDoubleValue()
Get the numeric value as a double
Overrides:
getDoubleValue in interface NumericValue
Returns:
A double representing this numeric value; NaN if it cannot be converted

getSchemaComparable

public Comparable getSchemaComparable()
Get an object that implements XML Schema comparison semantics
Overrides:
getSchemaComparable in interface AtomicValue

getStringValue

public String getStringValue()
Get the value as a String
Specified by:
getStringValue in interface Item
getStringValue in interface ValueRepresentation
Overrides:
getStringValue in interface AtomicValue
Returns:
a String representation of the value

hashCode

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

idiv

public IntegerValue idiv(IntegerValue other)
            throws XPathException
Integer divide by another integer
Overrides:
idiv in interface IntegerValue
Throws:
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
Overrides:
isWholeNumber in interface IntegerValue
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
Overrides:
longValue in interface NumericValue
Returns:
the value of the xs:integer, as a Java long

minus

public IntegerValue minus(IntegerValue other)
Subtract another integer
Overrides:
minus in interface IntegerValue

mod

public IntegerValue mod(IntegerValue other)
            throws XPathException
Take modulo another integer
Overrides:
mod in interface IntegerValue
Throws:
XPathException - if the other integer is zero

negate

public NumericValue negate()
Negate the value
Overrides:
negate in interface NumericValue
Returns:
the result of inverting the sign of the value

plus

public IntegerValue plus(IntegerValue other)
Add another integer
Overrides:
plus in interface IntegerValue

reduce

public Value reduce()
            throws XPathException
Reduce a value to its simplest form.
Overrides:
reduce in interface Value

round

public NumericValue round()
Implement the XPath round() function
Overrides:
round in interface NumericValue
Returns:
the integer value, unchanged

roundHalfToEven

public NumericValue roundHalfToEven(int scale)
Implement the XPath round-to-half-even() function
Overrides:
roundHalfToEven in interface NumericValue
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
Overrides:
signum in interface NumericValue
Returns:
-1 if negative, 0 if zero, +1 if positive, NaN if NaN

times

public IntegerValue times(IntegerValue other)
Multiply by another integer
Overrides:
times in interface IntegerValue

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.
Overrides:
validateAgainstSubType in interface IntegerValue
Parameters:
type - the subtype of integer required
Returns:
null if the operation succeeds, or a ValidationException if the value is out of range