ActualExposurePositionSearchResult.java
package com.tradecloud.dto.treasury;
import com.tradecloud.domain.model.ForexGroup;
import com.tradecloud.domain.model.organisationalunit.OrganisationalUnit;
import com.tradecloud.domain.treasury.TreasuryBank;
import com.tradecloud.domain.wrapper.CurrencyXmlAdapter;
import com.tradecloud.domain.wrapper.TreasuryBankXmlAdapter;
import org.apache.commons.lang3.builder.CompareToBuilder;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import java.math.BigDecimal;
import java.util.Currency;
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "ActualExposurePositionSearchResult")
public class ActualExposurePositionSearchResult implements Comparable<ActualExposurePositionSearchResult> {
@XmlJavaTypeAdapter(CurrencyXmlAdapter.class)
private Currency currency;
private OrganisationalUnit orgUnit;
private ForexGroup forexGroup;
private String formattedPeriodStart;
private String formattedPeriodEnd;
private String periodDescription;
private BigDecimal dealImports = BigDecimal.ZERO;
private BigDecimal dealExports = BigDecimal.ZERO;
private BigDecimal forecast = BigDecimal.ZERO;
private BigDecimal dealImportsSettled = BigDecimal.ZERO;
private BigDecimal dealImportsNotSettled = BigDecimal.ZERO;
private BigDecimal fec = BigDecimal.ZERO;
private BigDecimal fecEstablished = BigDecimal.ZERO;
private BigDecimal fecConfirmed = BigDecimal.ZERO;
private BigDecimal fecMatured = BigDecimal.ZERO;
private BigDecimal nettPosition = BigDecimal.ZERO;
private BigDecimal cumulativePosition = BigDecimal.ZERO;
private BigDecimal quotedImportDealAmount = BigDecimal.ZERO;
private BigDecimal acceptedImportDealAmount = BigDecimal.ZERO;
private BigDecimal invoicedImportDealAmount = BigDecimal.ZERO;
private BigDecimal settledImportDealAmount = BigDecimal.ZERO;
//the spot and forward Rand value is used to calculate the average spot and forward rate
private BigDecimal fecSpotRandValue = BigDecimal.ZERO;
private BigDecimal fecForwardRandValue = BigDecimal.ZERO;
private BigDecimal fecCostingRateRandValue = BigDecimal.ZERO;
private BigDecimal fecAverageSpotRoe = BigDecimal.ZERO;
private BigDecimal fecAverageForwardRoe = BigDecimal.ZERO;
private BigDecimal fecAverageCostingRate = BigDecimal.ZERO;
private BigDecimal fecCostingForeignAmount = BigDecimal.ZERO;
private BigDecimal priorYearImport = BigDecimal.ZERO;
private BigDecimal earlyOrder = BigDecimal.ZERO;
private BigDecimal linkOrderToFecInPeriod = BigDecimal.ZERO;
private BigDecimal linkOrderToFecOutPeriod = BigDecimal.ZERO;
private BigDecimal netUnlinkedPosition = BigDecimal.ZERO;
private boolean selected = false;
private String key;
@XmlJavaTypeAdapter(TreasuryBankXmlAdapter.class)
private TreasuryBank bank;
public ActualExposurePositionSearchResult() {
}
public ActualExposurePositionSearchResult(Currency currency, OrganisationalUnit orgUnit, ForexGroup forexGroup, String period,
TreasuryBank bank) {
this.currency = currency;
this.orgUnit = orgUnit;
this.forexGroup = forexGroup;
this.periodDescription = period;
this.bank = bank;
}
public Currency getCurrency() {
return currency;
}
public void setCurrency(Currency currency) {
this.currency = currency;
}
public String getPeriodDescription() {
return periodDescription;
}
public void setPeriodDescription(String periodDescription) {
this.periodDescription = periodDescription;
}
public BigDecimal getDealImports() {
return dealImports;
}
public void setDealImports(BigDecimal dealImports) {
this.dealImports = dealImports;
}
public BigDecimal getDealExports() {
return dealExports;
}
public void setDealExports(BigDecimal dealExports) {
this.dealExports = dealExports;
}
public BigDecimal getFec() {
return fec;
}
public void setFec(BigDecimal fec) {
this.fec = fec;
}
public BigDecimal getNettPosition() {
return nettPosition;
}
public void setNettPosition(BigDecimal nettPosition) {
this.nettPosition = nettPosition;
}
public BigDecimal getCumulativePosition() {
return cumulativePosition;
}
public void setCumulativePosition(BigDecimal cumulativePosition) {
this.cumulativePosition = cumulativePosition;
}
public BigDecimal getAcceptedImportDealAmount() {
return acceptedImportDealAmount;
}
public BigDecimal getInvoicedImportDealAmount() {
return invoicedImportDealAmount;
}
public BigDecimal getQuotedImportDealAmount() {
return quotedImportDealAmount;
}
public BigDecimal getSettledImportDealAmount() {
return settledImportDealAmount;
}
public void setAcceptedImportDealAmount(BigDecimal acceptedImportDealAmount) {
this.acceptedImportDealAmount = acceptedImportDealAmount;
}
public void setInvoicedImportDealAmount(BigDecimal invoicedImportDealAmount) {
this.invoicedImportDealAmount = invoicedImportDealAmount;
}
public void setQuotedImportDealAmount(BigDecimal quotedImportDealAmount) {
this.quotedImportDealAmount = quotedImportDealAmount;
}
public void setSettledImportDealAmount(BigDecimal settledImportDealAmount) {
this.settledImportDealAmount = settledImportDealAmount;
}
public BigDecimal getFecForwardRandValue() {
return fecForwardRandValue;
}
public void setFecForwardRandValue(BigDecimal fecForwardRandValue) {
this.fecForwardRandValue = fecForwardRandValue;
}
public BigDecimal getFecSpotRandValue() {
return fecSpotRandValue;
}
public void updateAverageFecSpotForwardCostingRoe() {
BigDecimal fecValuesTotal = getFecForeignValuesTotal();
if (fecValuesTotal.compareTo(BigDecimal.ZERO) == 0) {
return;
}
fecAverageSpotRoe = fecSpotRandValue.divide(fecValuesTotal, 4);
fecAverageForwardRoe = fecForwardRandValue.divide(fecValuesTotal, 4);
fecAverageCostingRate = fecCostingRateRandValue.divide(getFecCostingForeignAmount(), 4);
}
public BigDecimal getFecForeignValuesTotal() {
return fecMatured.add(fecConfirmed.add(fecEstablished));
}
public void setFecSpotRandValue(BigDecimal fecSpotRandValue) {
this.fecSpotRandValue = fecSpotRandValue;
}
public BigDecimal getFecAverageForwardRoe() {
return fecAverageForwardRoe;
}
public BigDecimal getFecAverageSpotRoe() {
return fecAverageSpotRoe;
}
public ForexGroup getForexGroup() {
return forexGroup;
}
public void setForexGroup(ForexGroup forexGroup) {
this.forexGroup = forexGroup;
}
@Override
public String toString() {
return "Currency '" + currency + "'. Forex Group '" + forexGroup + "'. Period '" + getPeriodDescription() + "'. Imports " + dealImports
+ "'. Exports '" + dealExports + "'. FECs '" + fec + "'. Established FECs '" + fecEstablished + "'. Confirmed FECs '" + fecConfirmed
+ "'. Matured FECs '" + fecMatured + "'. Nett Position '" + nettPosition + "'. Cumulative Position '" + cumulativePosition
+ "'. Org Unit: '" + orgUnit + "' .bank: '" + bank + " .fecForwardRandValue: " + fecForwardRandValue;
}
public OrganisationalUnit getOrgUnit() {
return orgUnit;
}
public void setOrgUnit(OrganisationalUnit orgUnit) {
this.orgUnit = orgUnit;
}
public BigDecimal getForecast() {
return forecast;
}
public void setForecast(BigDecimal forecast) {
this.forecast = forecast;
}
public BigDecimal getFecEstablished() {
return fecEstablished;
}
public void setFecEstablished(BigDecimal fecEstablished) {
this.fecEstablished = fecEstablished;
}
public BigDecimal getFecConfirmed() {
return fecConfirmed;
}
public void setFecConfirmed(BigDecimal fecConfirmed) {
this.fecConfirmed = fecConfirmed;
}
public BigDecimal getFecMatured() {
return fecMatured;
}
public void setFecMatured(BigDecimal fecMatured) {
this.fecMatured = fecMatured;
}
public BigDecimal getDealImportsSettled() {
return dealImportsSettled;
}
public void setDealImportsSettled(BigDecimal dealImportsSettled) {
this.dealImportsSettled = dealImportsSettled;
}
public BigDecimal getDealImportsNotSettled() {
return dealImportsNotSettled;
}
public void setDealImportsNotSettled(BigDecimal dealImportsNotSettled) {
this.dealImportsNotSettled = dealImportsNotSettled;
}
public String getFormattedPeriodStart() {
return formattedPeriodStart;
}
public void setFormattedPeriodStart(String formattedPeriodStart) {
this.formattedPeriodStart = formattedPeriodStart;
}
public String getFormattedPeriodEnd() {
return formattedPeriodEnd;
}
public void setFormattedPeriodEnd(String formattedPeriodEnd) {
this.formattedPeriodEnd = formattedPeriodEnd;
}
public boolean isSelected() {
return selected;
}
public void setSelected(boolean selected) {
this.selected = selected;
}
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public BigDecimal getFecAverageCostingRate() {
return fecAverageCostingRate;
}
public void setFecAverageCostingRate(BigDecimal fecAverageCostingRate) {
this.fecAverageCostingRate = fecAverageCostingRate;
}
public BigDecimal getFecCostingRateRandValue() {
return fecCostingRateRandValue;
}
public void setFecCostingRateRandValue(BigDecimal fecCostingRateRandValue) {
this.fecCostingRateRandValue = fecCostingRateRandValue;
}
public BigDecimal getFecCostingForeignAmount() {
return fecCostingForeignAmount;
}
public void setFecCostingForeignAmount(BigDecimal fecCostingForeignAmount) {
this.fecCostingForeignAmount = fecCostingForeignAmount;
}
public TreasuryBank getBank() {
return bank;
}
public void setBank(TreasuryBank bank) {
this.bank = bank;
}
public BigDecimal getPriorYearImport() {
return priorYearImport;
}
public void setPriorYearImport(BigDecimal priorYearImport) {
this.priorYearImport = priorYearImport;
}
@Override
public int compareTo(ActualExposurePositionSearchResult o) {
int currency = this.getCurrency().getCurrencyCode().compareTo(o.getCurrency().getCurrencyCode());
if (currency == 0) {
return new CompareToBuilder().append(this.getBank(), o.getBank()).toComparison();
}
return currency;
}
public BigDecimal getEarlyOrder() {
return earlyOrder;
}
public void setEarlyOrder(BigDecimal earlyOrder) {
this.earlyOrder = earlyOrder;
}
public BigDecimal getNetUnlinkedPosition() {
return netUnlinkedPosition;
}
public void setNetUnlinkedPosition(BigDecimal netUnlinkedPosition) {
this.netUnlinkedPosition = netUnlinkedPosition;
}
public BigDecimal getLinkOrderToFecOutPeriod() {
return linkOrderToFecOutPeriod;
}
public void setLinkOrderToFecOutPeriod(BigDecimal linkOrderToFecOutPeriod) {
this.linkOrderToFecOutPeriod = linkOrderToFecOutPeriod;
}
public BigDecimal getLinkOrderToFecInPeriod() {
return linkOrderToFecInPeriod;
}
public void setLinkOrderToFecInPeriod(BigDecimal linkOrderToFecInPeriod) {
this.linkOrderToFecInPeriod = linkOrderToFecInPeriod;
}
}