From da25f041ec93010606e9664ecf24615d478e7ace Mon Sep 17 00:00:00 2001 From: Manfred Karrer Date: Thu, 31 Mar 2016 14:09:17 +0200 Subject: [PATCH] Move code for collecting tradables to util class --- .../bitsquare/trade/TradableCollections.java | 36 +++++++++++++++++++ .../io/bitsquare/gui/main/MainViewModel.java | 25 +++++-------- .../gui/main/funds/reserved/ReservedView.java | 8 ++--- .../main/funds/withdrawal/WithdrawalView.java | 23 ++---------- 4 files changed, 51 insertions(+), 41 deletions(-) create mode 100644 core/src/main/java/io/bitsquare/trade/TradableCollections.java diff --git a/core/src/main/java/io/bitsquare/trade/TradableCollections.java b/core/src/main/java/io/bitsquare/trade/TradableCollections.java new file mode 100644 index 0000000000..fa4704993f --- /dev/null +++ b/core/src/main/java/io/bitsquare/trade/TradableCollections.java @@ -0,0 +1,36 @@ +package io.bitsquare.trade; + +import io.bitsquare.btc.AddressEntry; +import io.bitsquare.btc.WalletService; +import io.bitsquare.trade.offer.OpenOfferManager; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.ArrayList; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +public class TradableCollections { + private static final Logger log = LoggerFactory.getLogger(TradableCollections.class); + + public static List getAddressEntriesForAvailableBalance(OpenOfferManager openOfferManager, TradeManager tradeManager, WalletService walletService) { + Set reservedTrades = getNotCompletedTradableItems(openOfferManager, tradeManager).stream() + .map(tradable -> tradable.getOffer().getId()) + .collect(Collectors.toSet()); + + List list = new ArrayList<>(); + list.addAll(walletService.getAddressEntryList().stream() + .filter(e -> walletService.getBalanceForAddress(e.getAddress()).isPositive()) + .filter(e -> !reservedTrades.contains(e.getOfferId())) + .collect(Collectors.toList())); + return list; + } + + public static Set getNotCompletedTradableItems(OpenOfferManager openOfferManager, TradeManager tradeManager) { + return Stream.concat(openOfferManager.getOpenOffers().stream(), tradeManager.getTrades().stream()) + .filter(tradable -> !(tradable instanceof Trade) || ((Trade) tradable).getState().getPhase() != Trade.Phase.PAYOUT_PAID) + .collect(Collectors.toSet()); + } +} diff --git a/gui/src/main/java/io/bitsquare/gui/main/MainViewModel.java b/gui/src/main/java/io/bitsquare/gui/main/MainViewModel.java index 0b43672d85..b3f50b92c9 100644 --- a/gui/src/main/java/io/bitsquare/gui/main/MainViewModel.java +++ b/gui/src/main/java/io/bitsquare/gui/main/MainViewModel.java @@ -26,7 +26,6 @@ import io.bitsquare.app.Version; import io.bitsquare.arbitration.ArbitratorManager; import io.bitsquare.arbitration.Dispute; import io.bitsquare.arbitration.DisputeManager; -import io.bitsquare.btc.AddressEntry; import io.bitsquare.btc.FeePolicy; import io.bitsquare.btc.TradeWalletService; import io.bitsquare.btc.WalletService; @@ -56,6 +55,7 @@ import io.bitsquare.p2p.network.Connection; import io.bitsquare.p2p.network.ConnectionListener; import io.bitsquare.p2p.peers.keepalive.messages.Ping; import io.bitsquare.payment.OKPayAccount; +import io.bitsquare.trade.TradableCollections; import io.bitsquare.trade.Trade; import io.bitsquare.trade.TradeManager; import io.bitsquare.trade.offer.OpenOffer; @@ -73,11 +73,13 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.annotation.Nullable; -import java.util.*; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Optional; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; import java.util.stream.Collectors; -import java.util.stream.Stream; public class MainViewModel implements ViewModel { private static final Logger log = LoggerFactory.getLogger(MainViewModel.class); @@ -682,7 +684,7 @@ public class MainViewModel implements ViewModel { } private void updateReservedBalance() { - Coin sum = Coin.valueOf(Stream.concat(openOfferManager.getOpenOffers().stream(), tradeManager.getTrades().stream()) + Coin sum = Coin.valueOf(TradableCollections.getNotCompletedTradableItems(openOfferManager, tradeManager).stream() .map(tradable -> walletService.getTradeAddressEntry(tradable.getId())) .map(addressEntry -> walletService.getBalanceForAddress(addressEntry.getAddress())) .mapToLong(Coin::getValue) @@ -716,18 +718,9 @@ public class MainViewModel implements ViewModel { } private void updateAvailableBalance() { - List result = new ArrayList<>(); - - List reservedTrades = Stream.concat(openOfferManager.getOpenOffers().stream(), tradeManager.getTrades().stream()) - .map(tradable -> tradable.getOffer().getId()) - .collect(Collectors.toList()); - - result.addAll(walletService.getAddressEntryList().stream() - .filter(e -> walletService.getBalanceForAddress(e.getAddress()).isPositive()) - .filter(e -> !reservedTrades.contains(e.getOfferId())) - .collect(Collectors.toList())); - - Optional totalAvailableOptional = result.stream().map(e -> walletService.getBalanceForAddress(e.getAddress())).reduce(Coin::add); + Optional totalAvailableOptional = TradableCollections.getAddressEntriesForAvailableBalance(openOfferManager, tradeManager, walletService) + .stream() + .map(e -> walletService.getBalanceForAddress(e.getAddress())).reduce(Coin::add); if (totalAvailableOptional.isPresent()) availableBalance.set(formatter.formatCoinWithCode(totalAvailableOptional.get())); else diff --git a/gui/src/main/java/io/bitsquare/gui/main/funds/reserved/ReservedView.java b/gui/src/main/java/io/bitsquare/gui/main/funds/reserved/ReservedView.java index 7a7deefdf5..de596d6ab0 100644 --- a/gui/src/main/java/io/bitsquare/gui/main/funds/reserved/ReservedView.java +++ b/gui/src/main/java/io/bitsquare/gui/main/funds/reserved/ReservedView.java @@ -30,6 +30,7 @@ import io.bitsquare.gui.main.overlays.windows.OfferDetailsWindow; import io.bitsquare.gui.main.overlays.windows.TradeDetailsWindow; import io.bitsquare.gui.util.BSFormatter; import io.bitsquare.trade.Tradable; +import io.bitsquare.trade.TradableCollections; import io.bitsquare.trade.Trade; import io.bitsquare.trade.TradeManager; import io.bitsquare.trade.offer.OpenOffer; @@ -49,7 +50,6 @@ import org.bitcoinj.core.Transaction; import javax.inject.Inject; import java.util.Optional; import java.util.stream.Collectors; -import java.util.stream.Stream; @FxmlView public class ReservedView extends ActivatableView { @@ -135,9 +135,9 @@ public class ReservedView extends ActivatableView { private void updateList() { observableList.forEach(ReservedListItem::cleanup); - observableList.clear(); - observableList.setAll(Stream.concat(openOfferManager.getOpenOffers().stream(), tradeManager.getTrades().stream()) - .filter(tradable -> !(tradable instanceof Trade) || ((Trade) tradable).getState().getPhase() != Trade.Phase.PAYOUT_PAID) + + + observableList.setAll(TradableCollections.getNotCompletedTradableItems(openOfferManager, tradeManager).stream() .map(tradable -> new ReservedListItem(tradable, walletService.getTradeAddressEntry(tradable.getOffer().getId()), walletService, formatter)) .collect(Collectors.toList())); } diff --git a/gui/src/main/java/io/bitsquare/gui/main/funds/withdrawal/WithdrawalView.java b/gui/src/main/java/io/bitsquare/gui/main/funds/withdrawal/WithdrawalView.java index 224c6f88e6..157bd7741d 100644 --- a/gui/src/main/java/io/bitsquare/gui/main/funds/withdrawal/WithdrawalView.java +++ b/gui/src/main/java/io/bitsquare/gui/main/funds/withdrawal/WithdrawalView.java @@ -34,11 +34,11 @@ import io.bitsquare.gui.main.overlays.windows.WalletPasswordWindow; import io.bitsquare.gui.util.BSFormatter; import io.bitsquare.gui.util.validation.BtcAddressValidator; import io.bitsquare.trade.Tradable; +import io.bitsquare.trade.TradableCollections; import io.bitsquare.trade.Trade; import io.bitsquare.trade.TradeManager; import io.bitsquare.trade.closed.ClosedTradableManager; import io.bitsquare.trade.failed.FailedTradesManager; -import io.bitsquare.trade.offer.OpenOffer; import io.bitsquare.trade.offer.OpenOfferManager; import io.bitsquare.user.Preferences; import javafx.beans.binding.Bindings; @@ -61,7 +61,6 @@ import org.spongycastle.crypto.params.KeyParameter; import javax.inject.Inject; import java.util.*; import java.util.stream.Collectors; -import java.util.stream.Stream; @FxmlView public class WithdrawalView extends ActivatableView { @@ -277,32 +276,14 @@ public class WithdrawalView extends ActivatableView { } } - private void openDetailPopup(WithdrawalListItem item) { - Optional tradableOptional = getTradable(item); - if (tradableOptional.isPresent()) { - Tradable tradable = tradableOptional.get(); - if (tradable instanceof Trade) { - tradeDetailsWindow.show((Trade) tradable); - } else if (tradable instanceof OpenOffer) { - offerDetailsWindow.show(tradable.getOffer()); - } - } - } /////////////////////////////////////////////////////////////////////////////////////////// // Private /////////////////////////////////////////////////////////////////////////////////////////// private void updateList() { - Set reservedTrades = Stream.concat(openOfferManager.getOpenOffers().stream(), tradeManager.getTrades().stream()) - .filter(tradable -> !(tradable instanceof Trade) || ((Trade) tradable).getState().getPhase() != Trade.Phase.PAYOUT_PAID) - .map(tradable -> tradable.getOffer().getId()) - .collect(Collectors.toSet()); - observableList.forEach(WithdrawalListItem::cleanup); - observableList.setAll(walletService.getAddressEntryList().stream() - .filter(e -> walletService.getBalanceForAddress(e.getAddress()).isPositive()) - .filter(e -> !reservedTrades.contains(e.getOfferId())) + observableList.setAll(TradableCollections.getAddressEntriesForAvailableBalance(openOfferManager, tradeManager, walletService).stream() .map(addressEntry -> new WithdrawalListItem(addressEntry, walletService, formatter)) .collect(Collectors.toList())); }