Add cylce index

This commit is contained in:
chimp1984 2020-09-20 21:25:12 -05:00
parent c6778d6b2d
commit 72dca0b55a
No known key found for this signature in database
GPG key ID: 9801B4EC591F90E3
7 changed files with 63 additions and 16 deletions

View file

@ -96,10 +96,14 @@ import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.Consumer;
import lombok.extern.slf4j.Slf4j;
@ -425,10 +429,18 @@ public class DaoFacade implements DaoSetupService {
case RESULT:
break;
}
return firstBlock;
}
public Map<Integer, Date> getBlockStartDateByCycleIndex() {
AtomicInteger index = new AtomicInteger();
Map<Integer, Date> map = new HashMap<>();
periodService.getCycles()
.forEach(cycle -> daoStateService.getBlockAtHeight(cycle.getHeightOfFirstBlock())
.ifPresent(block -> map.put(index.getAndIncrement(), new Date(block.getTime()))));
return map;
}
// Because last block in request and voting phases must not be used for making a tx as it will get confirmed in the
// next block which would be already the next phase we hide that last block to the user and add it to the break.
public int getLastBlockOfPhaseForDisplay(int height, DaoPhase.Phase phase) {

View file

@ -35,6 +35,7 @@ import bisq.desktop.util.GUIUtil;
import bisq.core.account.witness.AccountAgeWitnessService;
import bisq.core.alert.PrivateNotificationManager;
import bisq.core.dao.DaoFacade;
import bisq.core.locale.CurrencyUtil;
import bisq.core.locale.Res;
import bisq.core.support.SupportType;
@ -92,6 +93,8 @@ import javafx.collections.transformation.SortedList;
import javafx.util.Callback;
import javafx.util.Duration;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Date;
@ -147,6 +150,7 @@ public abstract class DisputeView extends ActivatableView<VBox, Void> {
private final AccountAgeWitnessService accountAgeWitnessService;
private final MediatorManager mediatorManager;
private final RefundAgentManager refundAgentManager;
protected final DaoFacade daoFacade;
private final boolean useDevPrivilegeKeys;
protected TableView<Dispute> tableView;
@ -185,6 +189,7 @@ public abstract class DisputeView extends ActivatableView<VBox, Void> {
AccountAgeWitnessService accountAgeWitnessService,
MediatorManager mediatorManager,
RefundAgentManager refundAgentManager,
DaoFacade daoFacade,
boolean useDevPrivilegeKeys) {
this.disputeManager = disputeManager;
this.keyRing = keyRing;
@ -197,6 +202,7 @@ public abstract class DisputeView extends ActivatableView<VBox, Void> {
this.accountAgeWitnessService = accountAgeWitnessService;
this.mediatorManager = mediatorManager;
this.refundAgentManager = refundAgentManager;
this.daoFacade = daoFacade;
this.useDevPrivilegeKeys = useDevPrivilegeKeys;
}
@ -612,6 +618,7 @@ public abstract class DisputeView extends ActivatableView<VBox, Void> {
StringBuilder stringBuilder = new StringBuilder();
StringBuilder csvStringBuilder = new StringBuilder();
csvStringBuilder.append("Dispute nr").append(";")
.append("Closed during cycle").append(";")
.append("Status").append(";")
.append("Trade date").append(";")
.append("Trade ID").append(";")
@ -636,6 +643,9 @@ public abstract class DisputeView extends ActivatableView<VBox, Void> {
.append("Summary notes").append(";")
.append("Summary notes (other trader)");
Map<Integer, Date> blockStartDateByCycleIndex = daoFacade.getBlockStartDateByCycleIndex();
SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyy MM dd HH:mm:ss");
AtomicInteger disputeIndex = new AtomicInteger();
allDisputes.forEach(disputesPerTrade -> {
if (disputesPerTrade.size() > 0) {
@ -652,18 +662,36 @@ public abstract class DisputeView extends ActivatableView<VBox, Void> {
String sellerPayoutAmount = disputeResult != null ? disputeResult.getSellerPayoutAmount().toFriendlyString() : "";
int index = disputeIndex.incrementAndGet();
String tradeDateString = DisplayUtils.formatDateTime(firstDispute.getTradeDate());
String openingDateString = DisplayUtils.formatDateTime(openingDate);
stringBuilder.append("\n")
.append("Dispute nr. ").append(index)
.append("\n")
.append("Trade date: ").append(tradeDateString)
String tradeDateString = dateFormatter.format(firstDispute.getTradeDate());
String openingDateString = dateFormatter.format(openingDate);
// Index we display starts with 1 not with 0
int cycleIndex = 0;
if (disputeResult != null) {
Date closeDate = disputeResult.getCloseDate();
cycleIndex = blockStartDateByCycleIndex.entrySet().stream()
.filter(e -> e.getValue().after(closeDate))
.findFirst()
.map(Map.Entry::getKey)
.orElse(0);
}
stringBuilder.append("\n").append("Dispute nr.: ").append(index).append("\n");
if (cycleIndex > 0) {
stringBuilder.append("Closed during cycle: ").append(cycleIndex).append("\n");
}
stringBuilder.append("Trade date: ").append(tradeDateString)
.append("\n")
.append("Opening date: ").append(openingDateString)
.append("\n");
String tradeId = firstDispute.getTradeId();
csvStringBuilder.append("\n").append(index).append(";")
.append(firstDispute.isClosed() ? "Closed" : "Open").append(";")
csvStringBuilder.append("\n").append(index).append(";");
if (cycleIndex > 0) {
csvStringBuilder.append(cycleIndex).append(";");
} else {
csvStringBuilder.append(";");
}
csvStringBuilder.append(firstDispute.isClosed() ? "Closed" : "Open").append(";")
.append(tradeDateString).append(";")
.append(firstDispute.getShortTradeId()).append(";")
.append(tradeId, tradeId.length() - 3, tradeId.length()).append(";")
@ -674,7 +702,7 @@ public abstract class DisputeView extends ActivatableView<VBox, Void> {
Date closeDate = disputeResult.getCloseDate();
long duration = closeDate.getTime() - openingDate.getTime();
String closeDateString = DisplayUtils.formatDateTime(closeDate);
String closeDateString = dateFormatter.format(closeDate);
String durationAsWords = FormattingUtils.formatDurationAsWords(duration);
stringBuilder.append("Close date: ").append(closeDateString).append("\n")
.append("Dispute duration: ").append(durationAsWords).append("\n");

View file

@ -68,7 +68,6 @@ import static bisq.desktop.util.FormBuilder.getIconForLabel;
public abstract class DisputeAgentView extends DisputeView implements MultipleHolderNameDetection.Listener {
private final MultipleHolderNameDetection multipleHolderNameDetection;
private final DaoFacade daoFacade;
private ListChangeListener<ValidationException> validationExceptionListener;
public DisputeAgentView(DisputeManager<? extends DisputeList<? extends DisputeList>> disputeManager,
@ -95,10 +94,10 @@ public abstract class DisputeAgentView extends DisputeView implements MultipleHo
accountAgeWitnessService,
mediatorManager,
refundAgentManager,
daoFacade,
useDevPrivilegeKeys);
multipleHolderNameDetection = new MultipleHolderNameDetection(disputeManager);
this.daoFacade = daoFacade;
}

View file

@ -24,6 +24,7 @@ import bisq.desktop.main.support.dispute.DisputeView;
import bisq.core.account.witness.AccountAgeWitnessService;
import bisq.core.alert.PrivateNotificationManager;
import bisq.core.dao.DaoFacade;
import bisq.core.support.dispute.Dispute;
import bisq.core.support.dispute.DisputeList;
import bisq.core.support.dispute.DisputeManager;
@ -47,10 +48,11 @@ public abstract class DisputeClientView extends DisputeView {
AccountAgeWitnessService accountAgeWitnessService,
MediatorManager mediatorManager,
RefundAgentManager refundAgentManager,
DaoFacade daoFacade,
boolean useDevPrivilegeKeys) {
super(DisputeManager, keyRing, tradeManager, formatter, disputeSummaryWindow, privateNotificationManager,
contractWindow, tradeDetailsWindow, accountAgeWitnessService,
mediatorManager, refundAgentManager, useDevPrivilegeKeys);
mediatorManager, refundAgentManager, daoFacade, useDevPrivilegeKeys);
}
@Override

View file

@ -25,6 +25,7 @@ import bisq.desktop.main.support.dispute.client.DisputeClientView;
import bisq.core.account.witness.AccountAgeWitnessService;
import bisq.core.alert.PrivateNotificationManager;
import bisq.core.dao.DaoFacade;
import bisq.core.support.SupportType;
import bisq.core.support.dispute.Dispute;
import bisq.core.support.dispute.DisputeSession;
@ -56,10 +57,11 @@ public class ArbitrationClientView extends DisputeClientView {
AccountAgeWitnessService accountAgeWitnessService,
MediatorManager mediatorManager,
RefundAgentManager refundAgentManager,
DaoFacade daoFacade,
@Named(Config.USE_DEV_PRIVILEGE_KEYS) boolean useDevPrivilegeKeys) {
super(arbitrationManager, keyRing, tradeManager, formatter, disputeSummaryWindow,
privateNotificationManager, contractWindow, tradeDetailsWindow, accountAgeWitnessService,
mediatorManager, refundAgentManager, useDevPrivilegeKeys);
mediatorManager, refundAgentManager, daoFacade, useDevPrivilegeKeys);
}
@Override

View file

@ -26,6 +26,7 @@ import bisq.desktop.main.support.dispute.client.DisputeClientView;
import bisq.core.account.witness.AccountAgeWitnessService;
import bisq.core.alert.PrivateNotificationManager;
import bisq.core.dao.DaoFacade;
import bisq.core.locale.Res;
import bisq.core.support.SupportType;
import bisq.core.support.dispute.Dispute;
@ -58,10 +59,11 @@ public class MediationClientView extends DisputeClientView {
AccountAgeWitnessService accountAgeWitnessService,
MediatorManager mediatorManager,
RefundAgentManager refundAgentManager,
DaoFacade daoFacade,
@Named(Config.USE_DEV_PRIVILEGE_KEYS) boolean useDevPrivilegeKeys) {
super(mediationManager, keyRing, tradeManager, formatter, disputeSummaryWindow,
privateNotificationManager, contractWindow, tradeDetailsWindow, accountAgeWitnessService,
mediatorManager, refundAgentManager, useDevPrivilegeKeys);
mediatorManager, refundAgentManager, daoFacade, useDevPrivilegeKeys);
}
@Override

View file

@ -25,6 +25,7 @@ import bisq.desktop.main.support.dispute.client.DisputeClientView;
import bisq.core.account.witness.AccountAgeWitnessService;
import bisq.core.alert.PrivateNotificationManager;
import bisq.core.dao.DaoFacade;
import bisq.core.support.SupportType;
import bisq.core.support.dispute.Dispute;
import bisq.core.support.dispute.DisputeSession;
@ -56,10 +57,11 @@ public class RefundClientView extends DisputeClientView {
AccountAgeWitnessService accountAgeWitnessService,
MediatorManager mediatorManager,
RefundAgentManager refundAgentManager,
DaoFacade daoFacade,
@Named(Config.USE_DEV_PRIVILEGE_KEYS) boolean useDevPrivilegeKeys) {
super(refundManager, keyRing, tradeManager, formatter, disputeSummaryWindow,
privateNotificationManager, contractWindow, tradeDetailsWindow, accountAgeWitnessService,
mediatorManager, refundAgentManager, useDevPrivilegeKeys);
mediatorManager, refundAgentManager, daoFacade, useDevPrivilegeKeys);
}
@Override