stockbean.java

来自「基于netbeans的java桌面应用程序合集」· Java 代码 · 共 64 行

JAVA
64
字号
package sessions;

import entities.Holding;
import entities.Trade;
import entities.TradeType;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

@Stateless
public class StockBean implements StockLocal {
    
    @PersistenceContext
    private EntityManager em;
    
    public StockBean() {
    }
    
    public void persist(Object object) {
        em.persist(object);
    }
    
    public void addTrade(Trade trade) {        
        Trade tradeMg = em.merge(trade);
        if(tradeMg != null) 
            trade = tradeMg;
        persist(trade);        
        
        Query query = em.createQuery("select h from Holding h where h.stock = :stock");
        query.setParameter("stock", trade.getStock());
        Holding holding = null;
        try{
            holding = (Holding) query.getSingleResult();
        } catch(NoResultException e){
            holding = new Holding();
            holding.setStock(trade.getStock());
        }
        handleTrade(holding, trade);
        persist(holding);
    }
    
    private void handleTrade(Holding holding, Trade trade) {
        if(trade.getType().equals(TradeType.BUY)){
            long newShareNum = holding.getShareNum() + trade.getShareNum();
            double total = holding.getAverageCost()*holding.getShareNum() + trade.getShareNum()*trade.getPrice();
            double newCost = total / newShareNum;
            holding.setAverageCost(newCost);
            holding.setShareNum(newShareNum);
        } else if (trade.getType().equals(TradeType.SELL)) {
            long newShareNum = holding.getShareNum() - trade.getShareNum();
            double total = holding.getAverageCost()*holding.getShareNum() - trade.getShareNum()*trade.getPrice();
            double newCost = total / newShareNum;
            holding.setAverageCost(newCost);
            holding.setShareNum(newShareNum);            
        } else {
            throw new UnsupportedOperationException("Not yet implemented");
        }
    }
    
    
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?