SurrenderFEC.java
package com.tradecloud.domain.model.fec;
import com.tradecloud.domain.model.ForexGroup;
import com.tradecloud.domain.model.Money;
import com.tradecloud.domain.model.organisationalunit.OrganisationalUnit;
import org.hibernate.annotations.DiscriminatorOptions;
import org.joda.time.LocalDate;
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
@Entity
// @Table(name="FEC")
// Illegal use of @Table in a subclass of a SINGLE_TABLE hierarchy:
// com.tradecloud.domain.model.fec.SurrenderFEC
@DiscriminatorValue("SURRENDER")
@DiscriminatorOptions(force = true)
public class SurrenderFEC extends FEC {
private SurrenderFEC(LocalDate dealDate, BankReference bankReference, InternalReference internalReference, Money surrenderAmount,
LocalDate maturityDate, BankDetails bankDetails, Money spotRate, Money forwardRate, OrganisationalUnit organisationalUnit,
ForexGroup forexGroup, FECTransactionType fecTransactionType) {
super(dealDate, bankReference, internalReference, surrenderAmount, maturityDate, bankDetails, spotRate, forwardRate, organisationalUnit,
forexGroup, fecTransactionType);
amount = surrenderAmount.negate();
type = FECType.SURRENDER;
this.unlinkedAmount = new Money(amount.getValue(), amount.getCurrency());
}
public static IFEC createSurrenderFEC(LocalDate dealDate, BankReference bankReference, InternalReference internalReference,
Money surrenderAmount, LocalDate maturityDate, BankDetails bankDetails, Money spotRate, Money forwardRate,
OrganisationalUnit organisationalUnit, ForexGroup forexGroup, FECTransactionType fecTransactionType) {
final SurrenderFEC surrenderFEC = new SurrenderFEC(dealDate, bankReference, internalReference, surrenderAmount, maturityDate, bankDetails,
spotRate, forwardRate, organisationalUnit, forexGroup, fecTransactionType);
return surrenderFEC;
}
@Override
public boolean isSurrender() {
return true;
}
@Override
public void update(BankReference bankReference, InternalReference internalReference, Money amount, LocalDate dealDate, LocalDate maturityDate,
BankDetails bankDetails, Money spotRate, Money forwardRate, FECTransactionType fecTransactionType) {
this.bankReference = bankReference;
this.internalReference = internalReference;
this.unlinkedAmount = this.unlinkedAmount.add(amount.subtract(this.amount));
this.amount = amount;
this.maturityDate = maturityDate;
this.dealDate = dealDate;
this.bankDetails = bankDetails;
this.spotRate = spotRate;
this.forwardRate = forwardRate;
this.fecTransactionType = fecTransactionType;
}
/**
* for JPA only.
*/
public SurrenderFEC() {
}
}