package com.braintreegateway; import com.braintreegateway.util.EnumUtils; import com.braintreegateway.util.NodeWrapper; import java.math.BigDecimal; import java.util.Calendar; public final class Dispute { public enum Status { OPEN, LOST, WON, UNRECOGNIZED; } public enum Reason { CANCELLED_RECURRING_TRANSACTION, CREDIT_NOT_PROCESSED, DUPLICATE, FRAUD, GENERAL, INVALID_ACCOUNT, NOT_RECOGNIZED, PRODUCT_NOT_RECEIVED, PRODUCT_UNSATISFACTORY, TRANSACTION_AMOUNT_DIFFERS, RETRIEVAL; } public enum Kind { CHARGEBACK, PRE_ARBITRATION, RETRIEVAL, UNRECOGNIZED; } private final Calendar receivedDate; private final Calendar replyByDate; private final Calendar openedDate; private final Calendar wonDate; private final String currencyIsoCode; private final String id; private final Reason reason; private final Status status; private final Kind kind; private final BigDecimal amount; private final TransactionDetails transactionDetails; public Dispute(NodeWrapper node) { receivedDate = node.findDate("received-date"); replyByDate = node.findDate("reply-by-date"); openedDate = node.findDate("date-opened"); wonDate = node.findDate("date-won"); currencyIsoCode = node.findString("currency-iso-code"); reason = EnumUtils.findByName(Reason.class, node.findString("reason"), Reason.GENERAL); status = EnumUtils.findByName(Status.class, node.findString("status"), Status.UNRECOGNIZED); kind = EnumUtils.findByName(Kind.class, node.findString("kind"), Kind.UNRECOGNIZED); amount = node.findBigDecimal("amount"); id = node.findString("id"); transactionDetails = new TransactionDetails(node.findFirst("transaction")); } public Calendar getReceivedDate() { return receivedDate; } public Calendar getReplyByDate() { return replyByDate; } public Calendar getOpenedDate() { return openedDate; } public Calendar getWonDate() { return wonDate; } public String getCurrencyIsoCode() { return currencyIsoCode; } public String getId() { return id; } public Reason getReason() { return reason; } public Status getStatus() { return status; } public Kind getKind() { return kind; } public BigDecimal getAmount() { return amount; } public TransactionDetails getTransactionDetails() { return transactionDetails; } }