Package com.wesabe.api.accounts.analytics

Source Code of com.wesabe.api.accounts.analytics.MonetarySummary

package com.wesabe.api.accounts.analytics;

import java.util.Collection;
import java.util.Currency;

import com.wesabe.api.util.money.Money;

public class MonetarySummary {
  private final SumOfMoney spending, earnings, net;
 
  public static MonetarySummary summarize(Collection<Money> amounts, Currency currency) {
    int spendingCount = 0, earningsCount = 0;
    Money spendingSum = Money.zero(currency), earningsSum = Money.zero(currency);
   
    for (Money amount : amounts) {
      if (amount.signum() > 0) {
        earningsCount++;
        earningsSum = earningsSum.add(amount);
      } else if (amount.signum() < 0) {
        spendingCount++;
        spendingSum = spendingSum.add(amount.abs());
      }
    }
   
    return new MonetarySummary(
        new SumOfMoney(spendingSum, spendingCount),
        new SumOfMoney(earningsSum, earningsCount)
    );
  }
 
  public MonetarySummary(SumOfMoney spending, SumOfMoney earnings) {
    this.spending = spending;
    this.earnings = earnings;
    this.net = calculateNet(spending, earnings);
  }
 
  public SumOfMoney getSpending() {
    return spending;
  }
 
  public SumOfMoney getEarnings() {
    return earnings;
  }
 
  public SumOfMoney getNet() {
    return net;
  }
 
  private SumOfMoney calculateNet(SumOfMoney spending, SumOfMoney earnings) {
    final Money amount = earnings.getAmount().subtract(spending.getAmount());
    final int count = earnings.getCount() + spending.getCount();
    return new SumOfMoney(amount, count);
  }

}
TOP

Related Classes of com.wesabe.api.accounts.analytics.MonetarySummary

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.