com.truelayer.java.mandates.entities.mandatedetail.MandateDetail Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of truelayer-java Show documentation
Show all versions of truelayer-java Show documentation
TrueLayer Java SDK for https://truelayer.com
The newest version!
package com.truelayer.java.mandates.entities.mandatedetail;
import com.fasterxml.jackson.annotation.JsonSubTypes;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.truelayer.java.TrueLayerException;
import com.truelayer.java.commonapi.entities.UserDetail;
import com.truelayer.java.entities.CurrencyCode;
import com.truelayer.java.mandates.entities.Constraints;
import com.truelayer.java.mandates.entities.beneficiary.Beneficiary;
import com.truelayer.java.payments.entities.providerselection.ProviderSelection;
import java.time.ZonedDateTime;
import java.util.Map;
import lombok.*;
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "status", defaultImpl = AuthorizationRequiredMandateDetail.class)
@JsonSubTypes({
@JsonSubTypes.Type(value = AuthorizationRequiredMandateDetail.class, name = "authorization_required"),
@JsonSubTypes.Type(value = AuthorizingMandateDetail.class, name = "authorizing"),
@JsonSubTypes.Type(value = AuthorizedMandateDetail.class, name = "authorized"),
@JsonSubTypes.Type(value = FailedMandateDetail.class, name = "failed"),
@JsonSubTypes.Type(value = RevokedMandateDetail.class, name = "revoked")
})
@Getter
public abstract class MandateDetail {
private String id;
private CurrencyCode currency;
private Beneficiary beneficiary;
private String reference;
private UserDetail user;
private ZonedDateTime createdAt;
private Constraints constraints;
private Map metadata;
private ProviderSelection providerSelection;
public abstract Status getStatus();
public AuthorizationRequiredMandateDetail asAuthorizationRequiredMandateDetail() {
if (!(this instanceof AuthorizationRequiredMandateDetail)) {
throw new TrueLayerException(buildErrorMessage());
}
return (AuthorizationRequiredMandateDetail) this;
}
public AuthorizedMandateDetail asAuthorizedMandateDetail() {
if (!(this instanceof AuthorizedMandateDetail)) {
throw new TrueLayerException(buildErrorMessage());
}
return (AuthorizedMandateDetail) this;
}
public AuthorizingMandateDetail asAuthorizingMandateDetail() {
if (!(this instanceof AuthorizingMandateDetail)) {
throw new TrueLayerException(buildErrorMessage());
}
return (AuthorizingMandateDetail) this;
}
public FailedMandateDetail asFailedMandateDetail() {
if (!(this instanceof FailedMandateDetail)) {
throw new TrueLayerException(buildErrorMessage());
}
return (FailedMandateDetail) this;
}
public RevokedMandateDetail asRevokedMandateDetail() {
if (!(this instanceof RevokedMandateDetail)) {
throw new TrueLayerException(buildErrorMessage());
}
return (RevokedMandateDetail) this;
}
private String buildErrorMessage() {
return String.format(
"payment is of type %1$s. Consider using as%1$s() instead.",
this.getClass().getSimpleName());
}
}