From 4f9d0fa36cf57d0488dfd8c54af08887a4e52512 Mon Sep 17 00:00:00 2001 From: Christoph Atteneder Date: Mon, 10 Feb 2020 13:15:56 +0100 Subject: [PATCH] Remove duplicates when delivered from storage --- .../statistics/TradeStatisticsManager.java | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/core/src/main/java/bisq/core/trade/statistics/TradeStatisticsManager.java b/core/src/main/java/bisq/core/trade/statistics/TradeStatisticsManager.java index ee0fbc03d4..d8ef03c153 100644 --- a/core/src/main/java/bisq/core/trade/statistics/TradeStatisticsManager.java +++ b/core/src/main/java/bisq/core/trade/statistics/TradeStatisticsManager.java @@ -40,6 +40,7 @@ import java.io.File; import java.util.ArrayList; import java.util.List; +import java.util.Objects; import java.util.Optional; import java.util.Set; import java.util.stream.Collectors; @@ -81,6 +82,9 @@ public class TradeStatisticsManager { Set collect = tradeStatistics2StorageService.getMap().values().stream() .filter(e -> e instanceof TradeStatistics2) .map(e -> (TradeStatistics2) e) + .map(WrapperTradeStatistics2::new) + .distinct() + .map(WrapperTradeStatistics2::unwrap) .filter(TradeStatistics2::isValid) .collect(Collectors.toSet()); observableTradeStatisticsSet.addAll(collect); @@ -150,4 +154,30 @@ public class TradeStatisticsManager { jsonFileManager.writeToDisc(Utilities.objectToJson(array), "trade_statistics"); } } + + static class WrapperTradeStatistics2 { + private TradeStatistics2 tradeStatistics; + + public WrapperTradeStatistics2(TradeStatistics2 tradeStatistics) { + + this.tradeStatistics = tradeStatistics; + } + + public TradeStatistics2 unwrap() { + return this.tradeStatistics; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) return true; + if (obj == null || getClass() != obj.getClass()) return false; + var wrapper = (WrapperTradeStatistics2) obj; + return Objects.equals(tradeStatistics.getOfferId(), wrapper.tradeStatistics.getOfferId()); + } + + @Override + public int hashCode() { + return Objects.hash(tradeStatistics.getOfferId()); + } + } }