package de.invesdwin.util.math.decimal.internal; import java.math.RoundingMode; import java.util.Collections; import java.util.Iterator; import java.util.List; import javax.annotation.concurrent.Immutable; import org.apache.commons.math3.random.RandomGenerator; import de.invesdwin.util.collections.iterable.EmptyCloseableIterator; import de.invesdwin.util.math.decimal.ADecimal; import de.invesdwin.util.math.decimal.IDecimalAggregate; import de.invesdwin.util.math.decimal.config.BSplineInterpolationConfig; import de.invesdwin.util.math.decimal.config.InterpolationConfig; import de.invesdwin.util.math.decimal.config.LoessInterpolationConfig; @Immutable public final class DummyDecimalAggregate<E extends ADecimal<E>> implements IDecimalAggregate<E> { @SuppressWarnings("rawtypes") private static final DummyDecimalAggregate INSTANCE = new DummyDecimalAggregate(); private DummyDecimalAggregate() {} @Override public IDecimalAggregate<E> growthRates() { return this; } @Override public E growthRate() { return (E) null; } @Override public E growthRatesTrend() { return (E) null; } @Override public IDecimalAggregate<E> reverse() { return this; } @Override public E avgWeightedAsc() { return (E) null; } @Override public E avgWeightedDesc() { return (E) null; } @Override public E sum() { return (E) null; } @Override public E avg() { return (E) null; } @Override public E product() { return (E) null; } @Override public E geomAvg() { return (E) null; } @Override public E max() { return (E) null; } @Override public E min() { return (E) null; } @Override public E minMaxDistance() { return (E) null; } @Override public E sampleStandardDeviation() { return (E) null; } @Override public E standardDeviation() { return (E) null; } @Override public E variance() { return (E) null; } @Override public E sampleVariance() { return (E) null; } @SuppressWarnings("unchecked") public static <T extends ADecimal<T>> IDecimalAggregate<T> getInstance() { return INSTANCE; } @Override public List<E> values() { return Collections.emptyList(); } @Override public IDecimalAggregate<E> round() { return this; } @Override public IDecimalAggregate<E> round(final RoundingMode roundingMode) { return this; } @Override public IDecimalAggregate<E> round(final int scale) { return this; } @Override public IDecimalAggregate<E> round(final int scale, final RoundingMode roundingMode) { return this; } @Override public IDecimalAggregate<E> roundToStep(final E step) { return this; } @Override public IDecimalAggregate<E> roundToStep(final E step, final RoundingMode roundingMode) { return this; } @Override public String toString() { return "[]"; } @Override public IDecimalAggregate<E> positiveValues() { return this; } @Override public IDecimalAggregate<E> negativeValues() { return this; } @Override public IDecimalAggregate<E> positiveNonZeroValues() { return this; } @Override public IDecimalAggregate<E> negativeOrZeroValues() { return this; } @Override public IDecimalAggregate<E> nonZeroValues() { return this; } @Override public IDecimalAggregate<E> addEach(final E augend) { return this; } @Override public IDecimalAggregate<E> subtractEach(final E subtrahend) { return this; } @Override public IDecimalAggregate<E> multiplyEach(final E multiplicant) { return this; } @Override public IDecimalAggregate<E> divideEach(final E divisor) { return this; } @Override public boolean isStableOrRisingEach() { return false; } @Override public boolean isStableOrFallingEach() { return false; } @Override public IDecimalAggregate<E> nullToZeroEach() { return this; } @Override public IDecimalAggregate<E> removeNullValues() { return this; } @Override public IDecimalAggregate<E> loessInterpolation(final LoessInterpolationConfig config) { return this; } @Override public IDecimalAggregate<E> bSplineInterpolation(final BSplineInterpolationConfig config) { return this; } @Override public IDecimalAggregate<E> cubicBSplineInterpolation(final InterpolationConfig config) { return this; } @Override public IDecimalAggregate<E> bezierCurveInterpolation(final InterpolationConfig config) { return this; } @Override public E coefficientOfVariation() { return null; } @Override public E sampleCoefficientOfVariation() { return null; } @Override public int size() { return 0; } @Override public Integer bestValueIndex(final boolean isHigherBetter) { return null; } @Override public IDecimalAggregate<E> normalize() { return this; } @Override public IDecimalAggregate<E> detrendAbsolute() { return this; } @Override public IDecimalAggregate<E> detrendRelative() { return this; } @Override public IDecimalAggregate<E> removeFlatSequences() { return this; } @Override public Iterator<E> randomizeShuffle(final RandomGenerator random) { return EmptyCloseableIterator.getInstance(); } @Override public Iterator<E> randomizeBootstrap(final RandomGenerator random) { return EmptyCloseableIterator.getInstance(); } @Override public Iterator<E> randomizeCircularBlockBootstrap(final RandomGenerator random) { return EmptyCloseableIterator.getInstance(); } @Override public Iterator<E> randomizeStationaryBootstrap(final RandomGenerator random) { return EmptyCloseableIterator.getInstance(); } @Override public Iterator<E> randomizeWeightedChunksDescending(final RandomGenerator random, final int chunkCount) { return EmptyCloseableIterator.getInstance(); } @Override public Iterator<E> randomizeWeightedChunksAscending(final RandomGenerator random, final int chunkCount) { return EmptyCloseableIterator.getInstance(); } @Override public E median() { return null; } @Override public IDecimalAggregate<E> sortAscending() { return this; } @Override public IDecimalAggregate<E> sortDescending() { return this; } @Override public IDecimalAggregate<E> stopSequenceBeforeNegativeOrZero() { return this; } }