Package com.tangosol.util.aggregator
Class AbstractBigDecimalAggregator<T>
java.lang.Object
com.tangosol.util.Base
com.tangosol.util.BitHelper
com.tangosol.util.ExternalizableHelper
com.tangosol.util.aggregator.AbstractAggregator<Object,Object,T,Number,BigDecimal>
com.tangosol.util.aggregator.AbstractBigDecimalAggregator<T>
- Type Parameters:
T
- the type of the value to extract from
- All Implemented Interfaces:
ExternalizableLite
,PortableObject
,InvocableMap.EntryAggregator<Object,
,Object, BigDecimal> InvocableMap.StreamingAggregator<Object,
,Object, Object, BigDecimal> Serializable
,Cloneable
- Direct Known Subclasses:
BigDecimalAverage
,BigDecimalMax
,BigDecimalMin
,BigDecimalSum
public abstract class AbstractBigDecimalAggregator<T>
extends AbstractAggregator<Object,Object,T,Number,BigDecimal>
Abstract aggregator that processes
Number
values extracted from
a set of entries in a Map and returns a result in a form of a
BigDecimal
value. All the extracted objects will be
treated as BigDecimal
, BigInteger
or
Java double values.
If the set of entries is empty, a null result is returned.- Since:
- Coherence 3.2
- Author:
- gg 2006.02.13, Gunnar Hillert 2022.06.01
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class com.tangosol.util.ExternalizableHelper
ExternalizableHelper.DecoratedMultiBufferReadBuffer, ExternalizableHelper.DefaultObjectStreamFactory, ExternalizableHelper.FormatAwareCompressor, ExternalizableHelper.IntDecoratedObject, ExternalizableHelper.Shielded, ExternalizableHelper.ShieldedDataOutputStream, ExternalizableHelper.ShieldedInputStream, ExternalizableHelper.ShieldedObjectOutputStream, ExternalizableHelper.ShieldedOutputStream, ExternalizableHelper.SimpleXmlBeanClassCache, ExternalizableHelper.Stats, ExternalizableHelper.XmlBeanClassCache
Nested classes/interfaces inherited from class com.tangosol.util.Base
Base.LoggingWriter
-
Field Summary
Modifier and TypeFieldDescriptionprotected int
The count of processed entries.protected BigDecimal
The running result value.protected boolean
Shall trailing zeros be removed from the aggregation result?protected MathContext
TheMathContext
to provide the precision.protected RoundingMode
TheRoundingMode
used for the aggregated calculation.protected Integer
The scale used for the aggregated calculation.Fields inherited from class com.tangosol.util.aggregator.AbstractAggregator
m_fParallel
Fields inherited from class com.tangosol.util.ExternalizableHelper
BINARY_SIZE, CHUNK_SIZE, CHUNK_THRESHOLD, CONVERTER_FROM_BINARY, CONVERTER_STRIP_INTDECO, CONVERTER_TO_BINARY, DECO_APP_1, DECO_APP_2, DECO_APP_3, DECO_BACKUP, DECO_CUSTOM, DECO_EXPIRY, DECO_ID_MAX, DECO_ID_MIN, DECO_JCACHE, DECO_JCACHE_SYNTHETIC, DECO_MEMCACHED, DECO_PUSHREP, DECO_QUEUE_METADATA, DECO_RSVD_1, DECO_STORE, DECO_TX, DECO_VALUE, DECO_WLS, EMPTY_BINARY_ARRAY, FMT_B_ARRAY, FMT_BIN_DECO, FMT_BIN_EXT_DECO, FMT_BINARY, FMT_BOOLEAN, FMT_BYTE, FMT_DECIMAL, FMT_DOUBLE, FMT_EXT, FMT_FLOAT, FMT_IDO, FMT_INT, FMT_INTEGER, FMT_LONG, FMT_NONE, FMT_NULL, FMT_OBJ_EXT, FMT_OBJ_SER, FMT_OPT, FMT_OPT_DOUBLE, FMT_OPT_INT, FMT_OPT_LONG, FMT_SHORT, FMT_STRING, FMT_UNKNOWN, FMT_XML_BEAN, FMT_XML_SER, FORCE_RESOLVING_STREAMS, LAMBDA_SERIALIZATION, MAX_DECO_HEADER_BYTES, PACKED_INT_SIZE, PACKED_LONG_SIZE, PROPERTY_CONFIG, s_streamfactory, TRINT_DOMAIN_SPAN, TRINT_MAX_VALUE, TRINT_MAX_VARIANCE, USE_POF_STREAMS, USE_XMLBEAN_CLASS_CACHE, XMLBEAN_CLASS_CACHE
Fields inherited from class com.tangosol.util.Base
LOG_ALWAYS, LOG_CONFIG, LOG_DEBUG, LOG_ERR, LOG_INFO, LOG_MAX, LOG_MIN, LOG_QUIET, LOG_WARN, POWER_0, POWER_G, POWER_K, POWER_M, POWER_T, UNIT_D, UNIT_H, UNIT_M, UNIT_MS, UNIT_NS, UNIT_S, UNIT_US
Fields inherited from interface com.tangosol.util.InvocableMap.StreamingAggregator
ALLOW_INCONSISTENCIES, BY_MEMBER, BY_PARTITION, PARALLEL, PRESENT_ONLY, RETAINS_ENTRIES, SERIAL
-
Constructor Summary
ConstructorDescriptionDefault constructor (necessary for the ExternalizableLite interface).AbstractBigDecimalAggregator
(ValueExtractor<? super T, ? extends Number> extractor) Construct an AbstractBigDecimalAggregator object.AbstractBigDecimalAggregator
(String sMethod) Construct an AbstractBigDecimalAggregator object. -
Method Summary
Modifier and TypeMethodDescriptionstatic BigDecimal
ensureBigDecimal
(Number num) Ensure the specified Number is a BigDecimal value or convert it into a new BigDecimal object.boolean
Compares this object with another object for equality.protected Object
finalizeResult
(boolean fFinal) Obtain the result of the aggregation.Returns the specifiedMathContext
or null.Returns theRoundingMode
that is applied to aggregation results.getScale()
Returns the specified scale.int
hashCode()
Returns a hash code value for this object.protected void
init
(boolean fFinal) Initialize the aggregation result.boolean
Shall trailing zeros be removed from the aggregation result?void
setMathContext
(MathContext mathContext) Sets the MathContext (allowing you to work with precision instead of scale).void
setRoundingMode
(RoundingMode roundingMode) Sets theRoundingMode
for the results, e.g. if scale is applied to the aggregation result.void
Specifies the scale to be applied to the aggregated result.void
setStripTrailingZeros
(boolean fStripTrailingZeros) Allows you to set the property totrue
to remove trailing zeros from the aggregation result.Methods inherited from class com.tangosol.util.aggregator.AbstractAggregator
accumulate, accumulate, combine, ensureInitialized, finalizeResult, getPartialResult, getValueExtractor, process, processEntry, readExternal, readExternal, supply, toString, writeExternal, writeExternal
Methods inherited from class com.tangosol.util.ExternalizableHelper
asBinary, calculatePackedLength, calculatePackedLength, checkObjectInputFilter, checkObjectInputFilter, checkObjectInputFilter, convertUTF, decodeExpiry, decorate, decorate, decorate, decorate, decorate, decorateBinary, encodeExpiry, ensureSerializer, extractIntDecoration, fromBinary, fromBinary, fromBinary, fromBinary, fromBinary, fromBinary, fromByteArray, fromByteArray, getClass, getConfigSerialFilter, getConfigSerialFilterFactory, getDecoration, getDecoration, getDecorations, getDeltaCompressor, getInputStream, getNewObjectInput, getObjectInput, getObjectInputFilter, getObjectOutput, getObjectStreamFactory, getOutputStream, getShieldedOutputStream, getStreamFormat, getUndecorated, getUndecorated, isDecorated, isDecorated, isIntDecorated, isIntDecorated, isResolving, isSerializable, isSerializerCompatible, isVersionCompatible, isVersionCompatible, isVersionCompatible, isVersionCompatible, loadClass, loadResource, main, makeTrint, readBigDecimal, readBigInteger, readBooleanArray, readBooleanArray, readByteArray, readCharArray, readCharArray, readCollection, readDate, readDoubleArray, readDoubleArray, readExternalizableLite, readExternalizableLite, readFloatArray, readFloatArray, readInt, readInt, readIntArray, readIntArray, readIntArray2d, readLargeBooleanArray, readLargeByteArray, readLargeCharArray, readLargeDoubleArray, readLargeFloatArray, readLargeIntArray, readLargeLongArray, readLargeObjectArray, readLargeStringArray, readLong, readLong, readLongArray, readLongArray, readMap, readMap, readObject, readObject, readObjectArray, readObjectArray, readSafeUTF, readSafeUTF, readSerializable, readSerializable, readStringArray, readStringArray, readTime, readTimestamp, readTrint, readUnsignedTrint, readUTF, readXmlBean, readXmlSerializable, readXmlSerializable, realize, removeIntDecoration, removeIntDecoration, replace, reportIncompatibleSerializers, setObjectStreamFactory, toBinary, toBinary, toBinary, toByteArray, toByteArray, toByteArray, toLiteBinary, toLong, undecorate, undecorate, validateBufferSize, validateLoadArray, validateLoadClass, writeBigDecimal, writeBigInteger, writeBooleanArray, writeByteArray, writeCollection, writeDate, writeDoubleArray, writeExternalizableLite, writeFloatArray, writeInt, writeInt, writeIntArray2d, writeLong, writeLong, writeMap, writeObject, writeSafeUTF, writeSafeUTF, writeSerializable, writeStringArray, writeTime, writeTimestamp, writeTrint, writeTrint, writeUTF, writeXmlBean, writeXmlSerializable
Methods inherited from class com.tangosol.util.BitHelper
countBits, countBits, countBits, indexOfLSB, indexOfLSB, indexOfLSB, indexOfMSB, indexOfMSB, indexOfMSB, rotateLeft, rotateLeft, rotateLeft, rotateRight, rotateRight, rotateRight, toBitString, toBitString, toBitString, toBytes, toBytes, toBytes, toBytes, toInt, toInt, toLong
Methods inherited from class com.tangosol.util.Base
azzert, azzert, azzert, azzertFailed, breakLines, breakLines, capitalize, checkNotEmpty, checkNotNull, checkRange, computeSafeWaitTime, decimalValue, dup, dup, ensureClassLoader, ensureRuntimeException, ensureRuntimeException, equals, equalsDeep, err, err, err, err, err, escape, formatDateTime, getCallerStackFrame, getCommonMonitor, getCommonMonitor, getCommonMonitor, getContextClassLoader, getContextClassLoader, getDeepMessage, getErr, getLastSafeTimeMillis, getLog, getMaxDecDigits, getMaxHexDigits, getOriginalException, getOut, getProcessRandom, getRandom, getRandomBinary, getRandomBinary, getRandomString, getSafeTimeMillis, getStackFrame, getStackFrames, getStackTrace, getStackTrace, getStackTrace, getThreadFactory, getTimeZone, getUpTimeMillis, hashCode, hexValue, indentString, indentString, isDecimal, isHex, isLogEcho, isOctal, log, log, log, log, log, makeInteger, makeLong, makeThread, mergeArray, mergeBooleanArray, mergeByteArray, mergeCharArray, mergeDoubleArray, mergeFloatArray, mergeIntArray, mergeLongArray, mod, mod, octalValue, out, out, out, out, out, pad, parseBandwidth, parseBandwidth, parseDelimitedString, parseHex, parseHex, parseMemorySize, parseMemorySize, parsePercentage, parseTime, parseTime, parseTimeNanos, parseTimeNanos, printStackTrace, randomize, randomize, randomize, randomize, read, read, read, read, read, read, read, replace, setErr, setLog, setLogEcho, setOut, sleep, toBandwidthString, toBandwidthString, toCharEscape, toCrc, toCrc, toCrc, toCrc, toCrc, toDecString, toDelimitedString, toDelimitedString, toDelimitedString, toDelimitedString, toHex, toHex, toHexDump, toHexEscape, toHexEscape, toHexEscape, toHexEscape, toHexString, toMemorySizeString, toMemorySizeString, toQuotedCharEscape, toQuotedStringEscape, toSqlString, toString, toString, toStringEscape, toUnicodeEscape, trace, trace, trace, trace, trace, trace, trace, trace, trace, truncateString, truncateString, wait
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface com.tangosol.util.InvocableMap.StreamingAggregator
aggregate, characteristics, isAllowInconsistencies, isByMember, isByPartition, isParallel, isPresentOnly, isRetainsEntries, isSerial
-
Field Details
-
m_count
protected transient int m_countThe count of processed entries. -
m_decResult
The running result value. -
m_scale
The scale used for the aggregated calculation. Is null by default, in which case the defaults of the underlyingBigDecimal
are being used. -
m_mathContext
TheMathContext
to provide the precision. Is null by default, in which case the defaults of the underlyingBigDecimal
are being used. -
m_roundingMode
TheRoundingMode
used for the aggregated calculation. Is null by default, in which case the defaults of the underlyingBigDecimal
are being used. -
m_fStripTrailingZeros
protected boolean m_fStripTrailingZerosShall trailing zeros be removed from the aggregation result? Defaults tofalse
.
-
-
Constructor Details
-
AbstractBigDecimalAggregator
public AbstractBigDecimalAggregator()Default constructor (necessary for the ExternalizableLite interface). -
AbstractBigDecimalAggregator
Construct an AbstractBigDecimalAggregator object.- Parameters:
extractor
- the extractor that provides a value in the form of any Java object that is aNumber
-
AbstractBigDecimalAggregator
Construct an AbstractBigDecimalAggregator object.- Parameters:
sMethod
- the name of the method that returns a value in the form of any Java object that is aNumber
-
-
Method Details
-
init
protected void init(boolean fFinal) Initialize the aggregation result.- Specified by:
init
in classAbstractAggregator<Object,
Object, T, Number, BigDecimal> - Parameters:
fFinal
- true is passed if the aggregation process that is being initialized must produce a final aggregation result; this will only be false if a parallel approach is being used and the initial (partial) aggregation process is being initialized
-
finalizeResult
Obtain the result of the aggregation.If the fFinal parameter is true, the returned object must be the final result of the aggregation; otherwise, the returned object will be treated as a partial result that should be incorporated into the final result.
- Specified by:
finalizeResult
in classAbstractAggregator<Object,
Object, T, Number, BigDecimal> - Parameters:
fFinal
- true to indicate that the final result of the aggregation process should be returned; this will only be false if a parallel approach is being used- Returns:
- the result of the aggregation process
-
equals
Description copied from class:AbstractAggregator
Compares this object with another object for equality.- Overrides:
equals
in classAbstractAggregator<Object,
Object, T, Number, BigDecimal> - Parameters:
o
- an object reference or null- Returns:
- true iff the passed object reference is of the same class and has the same state as this object
-
hashCode
public int hashCode()Description copied from class:AbstractAggregator
Returns a hash code value for this object.- Overrides:
hashCode
in classAbstractAggregator<Object,
Object, T, Number, BigDecimal> - Returns:
- a hash code value for this object
-
ensureBigDecimal
Ensure the specified Number is a BigDecimal value or convert it into a new BigDecimal object.- Parameters:
num
- a Number object- Returns:
- a BigDecimal object that is equal to the passed in Number
-
getScale
Returns the specified scale. Can be null.- Returns:
- the scale to return. Can be null.
-
setScale
Specifies the scale to be applied to the aggregated result. Typically, scale is set together withsetRoundingMode(RoundingMode)
. However, if the specified scaling operation would require rounding then a ArithmeticException will be thrown. IfsetMathContext(MathContext)
is specified and the operation supports theMathContext
then thesetScale(Integer)
property is ignored.- Parameters:
scale
- the scale to set.
-
getMathContext
Returns the specifiedMathContext
or null.- Returns:
- the MathContext. Can be null.
-
setMathContext
Sets the MathContext (allowing you to work with precision instead of scale). If aBigDecimal
operation supports bothMathContext
or scale and both properties are specified, then theMathContext
is used and the scale is ignored.- Parameters:
mathContext
- the MathContext to set.
-
getRoundingMode
Returns theRoundingMode
that is applied to aggregation results.- Returns:
- The RoundingMode. Can be null.
-
setRoundingMode
Sets theRoundingMode
for the results, e.g. if scale is applied to the aggregation result.- Parameters:
roundingMode
- the RoundingMode to set. Can be null.
-
isStripTrailingZeros
public boolean isStripTrailingZeros()Shall trailing zeros be removed from the aggregation result?- Returns:
- true if trailing zeros are removed.
-
setStripTrailingZeros
public void setStripTrailingZeros(boolean fStripTrailingZeros) Allows you to set the property totrue
to remove trailing zeros from the aggregation result.- Parameters:
fStripTrailingZeros
- Defaults to false if not set.
-