org.javamoney.moneta.function.GroupMonetarySummaryStatistics Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of moneta-bp Show documentation
Show all versions of moneta-bp Show documentation
JSR 354 provides an API for representing, transporting, and performing comprehensive calculations with
Money and Currency.
This module implements JSR 354.
/*
* Copyright (c) 2012, 2014, Credit Suisse (Anatole Tresch), Werner Keil and others by the @author tag.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package org.javamoney.moneta.function;
import java.util.Map;
import java.util.Objects;
import javax.money.CurrencyUnit;
import javax.money.MonetaryAmount;
/**
* Internal class implementing grouped statistic functionality.
*/
public class GroupMonetarySummaryStatistics {
private final Map groupSummary = new MonetarySummaryMap();
GroupMonetarySummaryStatistics() {
}
public Map get() {
return groupSummary;
}
public GroupMonetarySummaryStatistics accept(MonetaryAmount amount) {
CurrencyUnit currency = Objects.requireNonNull(amount).getCurrency();
MonetarySummaryStatistics summary = groupSummary.get(currency);
if(summary==null){
summary = new DefaultMonetarySummaryStatistics(currency);
groupSummary.put(currency, summary);
}
summary.accept(amount);
return this;
}
@Override
public int hashCode() {
return Objects.hash(groupSummary);
}
@Override
public boolean equals(Object obj) {
if (GroupMonetarySummaryStatistics.class.isInstance(obj)) {
GroupMonetarySummaryStatistics other = GroupMonetarySummaryStatistics.class
.cast(obj);
return Objects.equals(groupSummary, other.groupSummary);
}
return false;
}
@Override
public String toString() {
return "GroupMonetarySummaryStatistics: " + groupSummary.toString();
}
public GroupMonetarySummaryStatistics combine(
GroupMonetarySummaryStatistics another) {
Objects.requireNonNull(another);
for (CurrencyUnit keyCurrency : another.groupSummary.keySet()) {
MonetarySummaryStatistics stats = groupSummary.get(keyCurrency);
if(stats==null){
stats = new DefaultMonetarySummaryStatistics(keyCurrency);
groupSummary.put(keyCurrency,stats);
}
MonetarySummaryStatistics oldValue = groupSummary.get(keyCurrency);
MonetarySummaryStatistics newValue = another.groupSummary.get(keyCurrency);
if(oldValue!=null) {
newValue = oldValue.combine(another.groupSummary.get(keyCurrency));
}
groupSummary.put(keyCurrency, newValue);
}
return this;
}
}