📄 buyportfoliotreetablemodel.java
字号:
}
private double getCurrentValue(Portfolio portfolio) {
final int count = portfolio.getChildCount();
double result = 0.0;
for(int i=0; i<count; i++) {
Object o = portfolio.getChildAt(i);
assert(o instanceof TransactionSummary);
final TransactionSummary transactionSummary = (TransactionSummary)o;
assert(transactionSummary.getChildCount() > 0);
final Code code = ((Transaction)transactionSummary.getChildAt(0)).getContract().getStock().getCode();
final Double lastPrice = this.stockLastPrice.get(code);
if(lastPrice == null) continue;
final int quantity = transactionSummary.getQuantity();
result += (lastPrice * quantity);
}
return result;
}
public double getPurchasePrice(TransactionSummary transactionSummary) {
if(transactionSummary.getQuantity() == 0.0) return 0.0;
return transactionSummary.getTotal() / transactionSummary.getQuantity();
}
public double getGainLossPrice(TransactionSummary transactionSummary) {
if(transactionSummary.getQuantity() == 0.0) return 0.0;
return this.getCurrentPrice(transactionSummary) - (transactionSummary.getTotal() / transactionSummary.getQuantity());
}
public double getGainLossValue(TransactionSummary transactionSummary) {
return this.getCurrentValue(transactionSummary) - transactionSummary.getTotal();
}
@Override
public int getColumnCount() {
assert(cNames.length == cTypes.length);
return cNames.length;
}
@Override
public Class getColumnClass(int column) {
return BuyPortfolioTreeTableModel.cTypes[column];
}
@Override
public String getColumnName(int column) {
return cNames[column];
}
@Override
public Object getValueAt(Object node, int column) {
if(node instanceof Portfolio) {
final Portfolio portfolio = (Portfolio)node;
switch(column) {
case 0:
return "Buy";
case 5:
return portfolio.getTotal();
case 6:
return getCurrentValue(portfolio);
case 8:
return this.getGainLossValue(portfolio);
case 9:
return this.getGainLossPercentage(portfolio);
case 10:
return portfolio.getCalculatedBroker();
case 11:
return portfolio.getCalculatedClearingFee();
case 12:
return portfolio.getCalculatedStampDuty();
case 13:
return portfolio.getNetTotal();
case 14:
return this.getNetGainLossValue(portfolio);
case 15:
return this.getNetGainLossPercentage(portfolio);
default:
return null;
}
}
if(node instanceof TransactionSummary) {
final TransactionSummary transactionSummary = (TransactionSummary)node;
if(transactionSummary.getChildCount() <= 0) return null;
switch(column) {
case 0:
return ((Transaction)transactionSummary.getChildAt(0)).getContract().getStock().getSymbol();
case 2:
return transactionSummary.getQuantity();
case 3:
return this.getPurchasePrice(transactionSummary);
case 4:
return this.getCurrentPrice(transactionSummary);
case 5:
return transactionSummary.getTotal();
case 6:
return this.getCurrentValue(transactionSummary);
case 7:
return this.getGainLossPrice(transactionSummary);
case 8:
return this.getGainLossValue(transactionSummary);
case 9:
return this.getGainLossPercentage(transactionSummary);
case 10:
return transactionSummary.getCalculatedBroker();
case 11:
return transactionSummary.getCalculatdClearingFee();
case 12:
return transactionSummary.getCalculatedStampDuty();
case 13:
return transactionSummary.getNetTotal();
case 14:
return this.getNetGainLossValue(transactionSummary);
case 15:
return this.getNetGainLossPercentage(transactionSummary);
}
}
if(node instanceof Transaction) {
final Transaction transaction = (Transaction)node;
switch(column) {
case 0:
return (transaction).getContract().getStock().getSymbol();
case 1:
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd/MM/yy");
return simpleDateFormat.format(transaction.getContract().getDate().getCalendar().getTime());
case 2:
return transaction.getQuantity();
case 3:
return transaction.getContract().getPrice();
case 4:
return this.getCurrentPrice(transaction);
case 5:
return transaction.getTotal();
case 6:
return this.getCurrentValue(transaction);
case 7:
return this.getCurrentPrice(transaction) - (transaction.getTotal() / transaction.getQuantity());
case 8:
return this.getCurrentValue(transaction) - transaction.getTotal();
case 9:
return this.getGainLossPercentage(transaction);
case 10:
return transaction.getCalculatedBroker();
case 11:
return transaction.getCalculatdClearingFee();
case 12:
return transaction.getCalculatedStampDuty();
case 13:
return transaction.getNetTotal();
case 14:
return this.getNetGainLossValue(transaction);
case 15:
return this.getNetGainLossPercentage(transaction);
}
}
return null;
}
@Override
public boolean isValidTransaction(Transaction transaction) {
return (transaction.getContract().getType() == Contract.Type.Buy);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -