@Override public List<PaymentTransactionModelDao> getPaymentTransactionsByExternalKey( final String transactionExternalKey, final InternalTenantContext context) { final List<PaymentTransactionModelDao> result = new ArrayList<PaymentTransactionModelDao>(); synchronized (this) { for (PaymentTransactionModelDao cur : transactions.values()) { if (cur.getTransactionExternalKey().equals(transactionExternalKey)) { result.add(cur); } } } return result; }
@Override public int failOldPendingTransactions( final TransactionStatus newTransactionStatus, final DateTime createdBeforeDate, final InternalCallContext context) { int result = 0; synchronized (transactions) { for (PaymentTransactionModelDao cur : transactions.values()) { cur.setTransactionStatus(newTransactionStatus); result++; } } return result; }
@Override public PaymentTransactionModelDao updatePaymentWithNewTransaction( final UUID paymentId, final PaymentTransactionModelDao paymentTransaction, final InternalCallContext context) { synchronized (this) { transactions.put(paymentTransaction.getId(), paymentTransaction); } return paymentTransaction; }
@Override public PaymentModelDao insertPaymentWithFirstTransaction( final PaymentModelDao payment, final PaymentTransactionModelDao paymentTransaction, final InternalCallContext context) { synchronized (this) { payments.put(payment.getId(), payment); transactions.put(paymentTransaction.getId(), paymentTransaction); } return payment; }
@Override public void updatePaymentAndTransactionOnCompletion( final UUID accountId, final UUID paymentId, final TransactionType transactionType, final String currentPaymentStateName, final String lastSuccessPaymentStateName, final UUID transactionId, final TransactionStatus paymentStatus, final BigDecimal processedAmount, final Currency processedCurrency, final String gatewayErrorCode, final String gatewayErrorMsg, final InternalCallContext context) { synchronized (this) { final PaymentModelDao payment = payments.get(paymentId); if (payment != null) { payment.setStateName(currentPaymentStateName); } final PaymentTransactionModelDao transaction = transactions.get(transactionId); if (transaction != null) { transaction.setTransactionStatus(paymentStatus); transaction.setProcessedAmount(processedAmount); transaction.setProcessedCurrency(processedCurrency); transaction.setGatewayErrorCode(gatewayErrorCode); transaction.setGatewayErrorMsg(gatewayErrorMsg); } } }