⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 buyportfoliotreetablemodel.java

📁 JStock是一个免费股市软件
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
    }
    
    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 + -