All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.javamoney.moneta.function.MonetarySummaryStatistics Maven / Gradle / Ivy

package org.javamoney.moneta.function;

import javax.money.CurrencyUnit;
import javax.money.MonetaryAmount;

/**
 * A state object for collecting statistics such as count, min, max, sum, and
 * average.
 * @author otaviojava
 * @author Anatole Tresch
 */
public interface MonetarySummaryStatistics {

	/**
	 * Records another value into the summary information.
	 * @param amount
	 *            the input amount value to be added, not null.
	 */
	void accept(MonetaryAmount amount);

	/**
	 * Combines the state of another {@code MonetarySummaryStatistics} into this
	 * one.
	 * @param summaryStatistics
	 *            another {@code MonetarySummaryStatistics}, not null.
	 */
	MonetarySummaryStatistics combine(
			MonetarySummaryStatistics summaryStatistics);

   /**
     * Get the number of items added to this summary instance.
     * @return the number of summarized items, >= 0.
     */
    long getCount();

    /**
     * Get the minimal amount found within this summary.
     * @return the minimal amount, or null if no amount was added to this summary instance.
     */
	MonetaryAmount getMin();

    /**
     * Get the maximal amount found within this summary.
     * @return the minimal amount, or null if no amount was added to this summary instance.
     */
	MonetaryAmount getMax();

    /**
     * Get the sum of all amounts within this summary.
     * @return the total amount, or null if no amount was added to this summary instance.
     */
	MonetaryAmount getSum();

    /**
     * Get the mean average of all amounts added.
     * @return the mean average amount, or null if no amount was added to this summary instance.
     */
	MonetaryAmount getAverage();

	/**
	 * will equals when the currencies were equals
	 */
	@Override
	boolean equals(Object obj);

	/**
	 * the currency unit used in summary
	 * @return the currency unit
	 */
	CurrencyUnit getCurrencyUnit();

	/**
	 * return if is possible do exchange rate or not with the MonetarySummary
	 * @return false;
	 */
	boolean isExchangeable();

	/**
	 * created the MonetarySummaryStatistics converted to {@link CurrencyUnit}
	 * @param unit
	 *            to be converted
	 * @return MonetarySummaryStatistics converted
	 * @throws UnsupportedOperationException
	 *             if {@link MonetarySummaryStatistics#isExchangeable()} was
	 *             false
	 * @throws NullPointerException
	 *             if unit was null
	 */
	MonetarySummaryStatistics to(CurrencyUnit unit);

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy