Skip to content

Commit

Permalink
Use static methods for pure function style methods in ClosedTradeUtil
Browse files Browse the repository at this point in the history
  • Loading branch information
chimp1984 committed Nov 3, 2021
1 parent acf7c21 commit 345cefe
Show file tree
Hide file tree
Showing 4 changed files with 53 additions and 61 deletions.
88 changes: 41 additions & 47 deletions core/src/main/java/bisq/core/trade/ClosedTradeUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ public ClosedTradeUtil(ClosedTradableManager closedTradableManager,
this.tradeStatisticsManager = tradeStatisticsManager;
}

public Coin getTotalAmount(List<Tradable> tradableList) {
public static Coin getTotalAmount(List<Tradable> tradableList) {
return Coin.valueOf(tradableList.stream()
.flatMap(tradable -> tradable.getOptionalAmountAsLong().stream())
.mapToLong(value -> value)
Expand All @@ -124,27 +124,27 @@ public String getTotalAmountWithVolumeAsString(Coin totalTradeAmount, Volume vol
formatVolumeWithCode(volume));
}

public String getPriceAsString(Tradable tradable) {
public static String getPriceAsString(Tradable tradable) {
return tradable.getOptionalPrice().map(FormattingUtils::formatPrice).orElse("");
}

public String getPriceDeviationAsString(Tradable tradable) {
public static String getPriceDeviationAsString(Tradable tradable) {
if (tradable.getOffer().isUseMarketBasedPrice()) {
return formatPercentagePrice(tradable.getOffer().getMarketPriceMargin());
} else {
return Res.get("shared.na");
}
}

public String getVolumeAsString(Tradable tradable, boolean appendCode) {
public static String getVolumeAsString(Tradable tradable, boolean appendCode) {
return tradable.getOptionalVolume().map(volume -> formatVolume(volume, appendCode)).orElse("");
}

public String getVolumeCurrencyAsString(Tradable tradable) {
public static String getVolumeCurrencyAsString(Tradable tradable) {
return tradable.getOptionalVolume().map(Volume::getCurrencyCode).orElse("");
}

public Map<String, Long> getTotalVolumeByCurrency(List<Tradable> tradableList) {
public static Map<String, Long> getTotalVolumeByCurrency(List<Tradable> tradableList) {
Map<String, Long> map = new HashMap<>();
tradableList.stream()
.flatMap(tradable -> tradable.getOptionalVolume().stream())
Expand All @@ -156,7 +156,7 @@ public Map<String, Long> getTotalVolumeByCurrency(List<Tradable> tradableList) {
return map;
}

public Map<String, String> getTotalVolumeByCurrencyAsString(List<Tradable> tradableList) {
public static Map<String, String> getTotalVolumeByCurrencyAsString(List<Tradable> tradableList) {
return getTotalVolumeByCurrency(tradableList).entrySet().stream()
.collect(Collectors.toMap(Map.Entry::getKey,
entry -> {
Expand All @@ -179,9 +179,9 @@ public Volume getBsqVolumeInUsdWithAveragePrice(Coin amount) {
return new Volume(Fiat.valueOf("USD", value));
}

public Coin getTotalTxFee(List<Tradable> tradableList) {
public static Coin getTotalTxFee(ClosedTradeUtil closedTradeUtil, List<Tradable> tradableList) {
return Coin.valueOf(tradableList.stream()
.mapToLong(tradable -> getTxFee(tradable).getValue())
.mapToLong(tradable -> ClosedTradeUtil.getTxFee(tradable).getValue())
.sum());
}

Expand All @@ -196,26 +196,28 @@ public String getTotalTxFeeAsString(Coin totalTradeAmount, Coin totalTxFee) {
formatToPercentWithSymbol(percentage));
}

public boolean isCurrencyForTradeFeeBtc(Tradable tradable) {
return !isBsqTradeFee(tradable);
public static boolean isCurrencyForTradeFeeBtc(ClosedTradeUtil closedTradeUtil, Tradable tradable) {
return !closedTradeUtil.isBsqTradeFee(tradable);
}

public Coin getTotalTradeFee(List<Tradable> tradableList, boolean expectBtcFee) {
public static Coin getTotalTradeFee(ClosedTradeUtil closedTradeUtil,
List<Tradable> tradableList,
boolean expectBtcFee) {
return Coin.valueOf(tradableList.stream()
.mapToLong(tradable -> getTradeFee(tradable, expectBtcFee))
.mapToLong(tradable -> ClosedTradeUtil.getTradeFee(closedTradeUtil, tradable, expectBtcFee))
.sum());
}

public long getTradeFee(Tradable tradable, boolean expectBtcFee) {
return expectBtcFee ? getBtcTradeFee(tradable) : getBsqTradeFee(tradable);
public static long getTradeFee(ClosedTradeUtil closedTradeUtil, Tradable tradable, boolean expectBtcFee) {
return expectBtcFee ? ClosedTradeUtil.getBtcTradeFee(closedTradeUtil, tradable) : ClosedTradeUtil.getBsqTradeFee(closedTradeUtil, tradable);
}

public String getTradeFeeAsString(Tradable tradable, boolean appendCode) {
if (isBsqTradeFee(tradable)) {
return bsqFormatter.formatCoin(Coin.valueOf(getBsqTradeFee(tradable)), appendCode);
return bsqFormatter.formatCoin(Coin.valueOf(getBsqTradeFee(this, tradable)), appendCode);
} else {
getBtcTradeFee(tradable);
return btcFormatter.formatCoin(Coin.valueOf(getBtcTradeFee(tradable)), appendCode);
getBtcTradeFee(this, tradable);
return btcFormatter.formatCoin(Coin.valueOf(getBtcTradeFee(this, tradable)), appendCode);
}
}

Expand All @@ -236,16 +238,16 @@ public String getSellerSecurityDepositAsString(Tradable tradable) {
btcFormatter.formatCoin(tradable.getOffer().getSellerSecurityDeposit());
}

public String getMarketLabel(Tradable tradable) {
public static String getMarketLabel(Tradable tradable) {
return CurrencyUtil.getCurrencyPair(tradable.getOffer().getCurrencyCode());
}

public int getNumPastTrades(Tradable tradable) {
if (isOpenOffer(tradable)) {
public static int getNumPastTrades(ClosedTradeUtil closedTradeUtil, Tradable tradable) {
if (ClosedTradeUtil.isOpenOffer(tradable)) {
return 0;
}
NodeAddress addressInTrade = castToTradeModel(tradable).getTradingPeerNodeAddress();
return (int) getTradeModelStream()
NodeAddress addressInTrade = ClosedTradeUtil.castToTradeModel(tradable).getTradingPeerNodeAddress();
return (int) closedTradeUtil.getTradeModelStream()
.map(TradeModel::getTradingPeerNodeAddress)
.filter(Objects::nonNull)
.filter(address -> address.equals(addressInTrade))
Expand Down Expand Up @@ -326,18 +328,18 @@ private Stream<TradeModel> getTradeModelStream() {
// Fee utils
///////////////////////////////////////////////////////////////////////////////////////////

private long getBtcTradeFee(Tradable tradable) {
if (isBsqSwapTrade(tradable) || isBsqTradeFee(tradable)) {
private static long getBtcTradeFee(ClosedTradeUtil closedTradeUtil, Tradable tradable) {
if (ClosedTradeUtil.isBsqSwapTrade(tradable) || closedTradeUtil.isBsqTradeFee(tradable)) {
return 0L;
}
return isMaker(tradable) ?
return ClosedTradeUtil.isMaker(closedTradeUtil.keyRing, tradable) ?
tradable.getOptionalMakerFee().orElse(Coin.ZERO).value :
tradable.getOptionalTakerFee().orElse(Coin.ZERO).value;
}

private long getBsqTradeFee(Tradable tradable) {
if (isBsqSwapTrade(tradable) || isBsqTradeFee(tradable)) {
return isMaker(tradable) ?
private static long getBsqTradeFee(ClosedTradeUtil closedTradeUtil, Tradable tradable) {
if (ClosedTradeUtil.isBsqSwapTrade(tradable) || closedTradeUtil.isBsqTradeFee(tradable)) {
return ClosedTradeUtil.isMaker(closedTradeUtil.keyRing, tradable) ?
tradable.getOptionalMakerFee().orElse(Coin.ZERO).value :
tradable.getOptionalTakerFee().orElse(Coin.ZERO).value;
}
Expand All @@ -349,15 +351,15 @@ private boolean isBsqTradeFee(Tradable tradable) {
return true;
}

if (isMaker(tradable)) {
if (isMaker(keyRing, tradable)) {
return !tradable.getOffer().isCurrencyForMakerFeeBtc();
}

String feeTxId = castToTrade(tradable).getTakerFeeTxId();
return bsqWalletService.getTransaction(feeTxId) != null;
}

private Coin getTxFee(Tradable tradable) {
private static Coin getTxFee(Tradable tradable) {
return tradable.getOptionalTxFee().orElse(Coin.ZERO);
}

Expand All @@ -366,43 +368,35 @@ private Coin getTxFee(Tradable tradable) {
// Utils
///////////////////////////////////////////////////////////////////////////////////////////

private boolean isOpenOffer(Tradable tradable) {
private static boolean isOpenOffer(Tradable tradable) {
return tradable instanceof OpenOffer;
}

private boolean isTradeModel(Tradable tradable) {
return tradable instanceof TradeModel;
}

private boolean isMaker(Tradable tradable) {
private static boolean isMaker(KeyRing keyRing, Tradable tradable) {
return tradable instanceof MakerTrade || tradable.getOffer().isMyOffer(keyRing);
}

private boolean isTakerTrade(Tradable tradable) {
private static boolean isTakerTrade(Tradable tradable) {
return tradable instanceof TakerTrade;
}

private boolean isBsqSwapTrade(Tradable tradable) {
private static boolean isBsqSwapTrade(Tradable tradable) {
return tradable instanceof BsqSwapTrade;
}

private boolean isBisqV1Trade(Tradable tradable) {
private static boolean isBisqV1Trade(Tradable tradable) {
return tradable instanceof Trade;
}

private boolean isBisqV1TakerTrade(Tradable tradable) {
return isBisqV1Trade(tradable) && isTakerTrade(tradable);
}

private Trade castToTrade(Tradable tradable) {
private static Trade castToTrade(Tradable tradable) {
return (Trade) tradable;
}

private TradeModel castToTradeModel(Tradable tradable) {
private static TradeModel castToTradeModel(Tradable tradable) {
return (TradeModel) tradable;
}

private BsqSwapTrade castToBsqSwapTrade(Tradable tradable) {
private static BsqSwapTrade castToBsqSwapTrade(Tradable tradable) {
return (BsqSwapTrade) tradable;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ int getConfidence(UnconfirmedBsqSwapsListItem item) {
}

int getNumPastTrades(BsqSwapTrade bsqSwapTrade) {
return closedTradeUtil.getNumPastTrades(bsqSwapTrade);
return ClosedTradeUtil.getNumPastTrades(closedTradeUtil, bsqSwapTrade);
}

boolean wasMyOffer(BsqSwapTrade bsqSwapTrade) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ OfferDirection getDirection(Offer offer) {
}

Coin getTotalAmount() {
return closedTradeUtil.getTotalAmount(tradableList.get());
return ClosedTradeUtil.getTotalAmount(tradableList.get());
}

Optional<Volume> getVolumeInUserFiatCurrency(Coin amount) {
Expand All @@ -126,8 +126,6 @@ Optional<Volume> getVolume(Coin amount, String currencyCode) {
return Optional.empty();
}

// TODO Move PriceUtil & it's validators to core.util & core.util.validation
// before refactoring this.getVolume() to ClosedTradeUtil.
Price price = PriceUtil.marketPriceToPrice(marketPrice);
return Optional.of(VolumeUtil.getVolume(amount, price));
}
Expand All @@ -137,11 +135,11 @@ Volume getBsqVolumeInUsdWithAveragePrice(Coin amount) {
}

Coin getTotalTxFee() {
return closedTradeUtil.getTotalTxFee(tradableList.get());
return ClosedTradeUtil.getTotalTxFee(closedTradeUtil, tradableList.get());
}

Coin getTotalTradeFee(boolean expectBtcFee) {
return closedTradeUtil.getTotalTradeFee(tradableList.get(), expectBtcFee);
return ClosedTradeUtil.getTotalTradeFee(closedTradeUtil, tradableList.get(), expectBtcFee);
}

private void applyList() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,27 +60,27 @@ String getAmount(ClosedTradableListItem item) {
}

String getPrice(ClosedTradableListItem item) {
return item != null ? closedTradeUtil.getPriceAsString(item.getTradable()) : "";
return item != null ? ClosedTradeUtil.getPriceAsString(item.getTradable()) : "";
}

String getPriceDeviation(ClosedTradableListItem item) {
return item != null ? closedTradeUtil.getPriceDeviationAsString(item.getTradable()) : "";
return item != null ? ClosedTradeUtil.getPriceDeviationAsString(item.getTradable()) : "";
}

String getVolume(ClosedTradableListItem item, boolean appendCode) {
return item != null ? closedTradeUtil.getVolumeAsString(item.getTradable(), appendCode) : "";
return item != null ? ClosedTradeUtil.getVolumeAsString(item.getTradable(), appendCode) : "";
}

String getVolumeCurrency(ClosedTradableListItem item) {
return item != null ? closedTradeUtil.getVolumeCurrencyAsString(item.getTradable()) : "";
return item != null ? ClosedTradeUtil.getVolumeCurrencyAsString(item.getTradable()) : "";
}

String getTxFee(ClosedTradableListItem item) {
return item != null ? closedTradeUtil.getTxFeeAsString(item.getTradable()) : "";
}

boolean isCurrencyForTradeFeeBtc(ClosedTradableListItem item) {
return item != null ? closedTradeUtil.isCurrencyForTradeFeeBtc(item.getTradable()) : false;
return item != null ? ClosedTradeUtil.isCurrencyForTradeFeeBtc(closedTradeUtil, item.getTradable()) : false;
}

String getTradeFee(ClosedTradableListItem item, boolean appendCode) {
Expand All @@ -104,15 +104,15 @@ String getDate(ClosedTradableListItem item) {
}

String getMarketLabel(ClosedTradableListItem item) {
return item != null ? closedTradeUtil.getMarketLabel(item.getTradable()) : "";
return item != null ? ClosedTradeUtil.getMarketLabel(item.getTradable()) : "";
}

String getState(ClosedTradableListItem item) {
return item != null ? closedTradeUtil.getStateAsString(item.getTradable()) : "";
}

int getNumPastTrades(Tradable tradable) {
return closedTradeUtil.getNumPastTrades(tradable);
return ClosedTradeUtil.getNumPastTrades(closedTradeUtil, tradable);
}

public Coin getTotalTradeAmount() {
Expand All @@ -126,7 +126,7 @@ public String getTotalAmountWithVolume(Coin totalTradeAmount) {
}

public Map<String, String> getTotalVolumeByCurrency() {
return closedTradeUtil.getTotalVolumeByCurrencyAsString(dataModel.tradableList.get());
return ClosedTradeUtil.getTotalVolumeByCurrencyAsString(dataModel.tradableList.get());
}

public String getTotalTxFee(Coin totalTradeAmount) {
Expand Down

0 comments on commit 345cefe

Please sign in to comment.