From ef0be4c6d8bcba90da7d41580b1dbfbf857112cc Mon Sep 17 00:00:00 2001 From: Manfred Karrer Date: Sat, 21 May 2016 21:38:14 +0200 Subject: [PATCH] Show stats per day --- .../funds/transactions/TransactionsView.java | 41 ++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/gui/src/main/java/io/bitsquare/gui/main/funds/transactions/TransactionsView.java b/gui/src/main/java/io/bitsquare/gui/main/funds/transactions/TransactionsView.java index a0238acfe7..2f5f69b5c2 100644 --- a/gui/src/main/java/io/bitsquare/gui/main/funds/transactions/TransactionsView.java +++ b/gui/src/main/java/io/bitsquare/gui/main/funds/transactions/TransactionsView.java @@ -20,6 +20,8 @@ package io.bitsquare.gui.main.funds.transactions; import de.jensd.fx.fontawesome.AwesomeIcon; import io.bitsquare.arbitration.DisputeManager; import io.bitsquare.btc.WalletService; +import io.bitsquare.common.util.Tuple2; +import io.bitsquare.common.util.Tuple3; import io.bitsquare.common.util.Utilities; import io.bitsquare.gui.common.view.ActivatableView; import io.bitsquare.gui.common.view.FxmlView; @@ -55,6 +57,7 @@ import org.bitcoinj.core.*; import org.bitcoinj.script.Script; import javax.inject.Inject; +import java.text.DateFormat; import java.util.*; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -173,6 +176,7 @@ public class TransactionsView extends ActivatableView { keyEventEventHandler = event -> { if (new KeyCodeCombination(KeyCode.A, KeyCombination.SHORTCUT_DOWN).match(event)) { Map> map = new HashMap<>(); + Map> dateMap = new HashMap<>(); observableList.stream().forEach(item -> { Coin amountAsCoin = item.getAmountAsCoin(); List list; @@ -184,7 +188,18 @@ public class TransactionsView extends ActivatableView { list = map.get(key); } list.add(amountAsCoin); + + DateFormat dateFormatter = DateFormat.getDateInstance(DateFormat.DEFAULT, Locale.US); + String day = dateFormatter.format(item.getDate()); + if (!dateMap.containsKey(day)) { + dateMap.put(day, new Tuple2<>(item.getDate(), 1)); + } else { + Tuple2 tuple2 = dateMap.get(day); + int prev = tuple2.second; + dateMap.put(day, new Tuple2<>(tuple2.first, ++prev)); + } }); + StringBuilder stringBuilder = new StringBuilder(); map.entrySet().stream().forEach(e -> { stringBuilder.append("Nr. of transactions for amount "). @@ -193,7 +208,31 @@ public class TransactionsView extends ActivatableView { append(e.getValue().size()). append("\n"); }); - new Popup().headLine("Statistical info").information(stringBuilder.toString()).show(); + + List> dateList = dateMap.entrySet().stream(). + map(e -> { + Tuple2 value = e.getValue(); + return new Tuple3<>(e.getKey(), value.first, value.second); + }). + collect(Collectors.toList()); + dateList.sort((o1, o2) -> o2.second.compareTo(o1.second)); + StringBuilder stringBuilder2 = new StringBuilder(); + dateList.stream().forEach(e2 -> { + stringBuilder2.append("\n"). + append(e2.first). + append(": "). + append(e2.third); + }); + StringBuilder stringBuilder3 = new StringBuilder(); + dateList.stream().forEach(e3 -> { + stringBuilder3.append(e3.third).append(","); + }); + String message = stringBuilder.toString() + "\nNr. of transactions by day:" + stringBuilder2.toString(); + new Popup().headLine("Statistical info") + .information(message) + .actionButtonText("Copy") + .onAction(() -> Utilities.copyToClipboard(message + "\n\nCSV:\n" + stringBuilder3.toString())) + .show(); } }; }