Double priceSum = 0.0;
Double quantitySum = 0.0;
Double currentValueSum = 0.0;
SecuritiesInformation information = null;
SecuritiesCurrentMarketPrice currentMarketPrice = null;
for (SecuritiesTransaction transaction : subtransactions) {
String transAccount = transaction.getAccount();
if (account == null)
account = transAccount;
else if (!account.equals(transAccount)) {
account = "";
}
String transAsset = transaction.getAsset();
if (asset == null)
asset = transAsset;
else if (!asset.equals(transAsset)) {
asset = "";
}
String transCurrency = transaction.getCurrency();
if (currency == null)
currency = transCurrency;
else if (!currency.equals(transCurrency)) {
System.out.println("clear currency " + currency + ":"
+ transCurrency);
currency = "";
}
quantitySum = add(quantitySum, getSignedQuantity(transaction),
asset, false);
priceSum = add(priceSum, getSignedPrice(transaction, true), currency, true);
if (transaction instanceof SummarizedTransaction){
SummarizedTransaction summarized = (SummarizedTransaction) transaction;
currentValueSum = add(currentValueSum, getSignedPrice(summarized, summarized.getCurrentPrice(), false),currency, false);
} else {
currentValueSum = null;
}
if (transaction instanceof SummarizedTransaction){
SummarizedTransaction summarized = (SummarizedTransaction) transaction;
if ( "".equals(asset) ){
information = null;
currentMarketPrice = null;
} else {
if (information == null)
information = summarized.getInfo();
if (currentMarketPrice == null)
currentMarketPrice = summarized.getCurrentPriceInfo();
}
}
}
setAsset(asset);
setAccount(account);
setCurrency(currency);
setInfo(information);
currentPrice = toBigDecimal(currentValueSum);
setCurrentPriceInfo(currentMarketPrice);
if (currentMarketPrice != null)
setCurrentPricePerUnit(currentMarketPrice.getPrice());
//set the quantity sign and quantity, so that no negative quantity exists.
if (quantitySum == null ){
setQuantitySign((byte) 1);//
} else if (quantitySum >= 0){