Remove duplicates when delivered from storage

This commit is contained in:
Christoph Atteneder 2020-02-10 13:15:56 +01:00
parent 2e5184f50d
commit 4f9d0fa36c
No known key found for this signature in database
GPG key ID: CD5DC1C529CDFD3B

View file

@ -40,6 +40,7 @@ import java.io.File;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Objects;
import java.util.Optional; import java.util.Optional;
import java.util.Set; import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -81,6 +82,9 @@ public class TradeStatisticsManager {
Set<TradeStatistics2> collect = tradeStatistics2StorageService.getMap().values().stream() Set<TradeStatistics2> collect = tradeStatistics2StorageService.getMap().values().stream()
.filter(e -> e instanceof TradeStatistics2) .filter(e -> e instanceof TradeStatistics2)
.map(e -> (TradeStatistics2) e) .map(e -> (TradeStatistics2) e)
.map(WrapperTradeStatistics2::new)
.distinct()
.map(WrapperTradeStatistics2::unwrap)
.filter(TradeStatistics2::isValid) .filter(TradeStatistics2::isValid)
.collect(Collectors.toSet()); .collect(Collectors.toSet());
observableTradeStatisticsSet.addAll(collect); observableTradeStatisticsSet.addAll(collect);
@ -150,4 +154,30 @@ public class TradeStatisticsManager {
jsonFileManager.writeToDisc(Utilities.objectToJson(array), "trade_statistics"); 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());
}
}
} }