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

📄 tradehelper.java

📁 Oracle的J2EE Sample
💻 JAVA
字号:
/*
 * @author : Elangovan
 * @version 1.0
 *
 * Development Environment : Oracle9i JDeveloper
 * Name of the File        : TradeHelper.java
 * Creation / Modification History
 *    Elangovan          19-Aug-2003        Created
 *
 */
package oracle.otnsamples.ibfbs.trademanagement.ejb;

import oracle.toplink.threetier.ServerSession;
import oracle.toplink.threetier.ClientSession;
import oracle.toplink.expressions.ExpressionBuilder;
import oracle.toplink.queryframework.ReportQuery;
import oracle.toplink.queryframework.ReadObjectQuery;
import oracle.toplink.queryframework.ValueReadQuery;
import oracle.toplink.tools.sessionconfiguration.XMLLoader;
import oracle.toplink.tools.sessionmanagement.SessionManager;
import oracle.toplink.exceptions.DatabaseException;

import oracle.otnsamples.ibfbs.toplink.Stockrate;
import oracle.otnsamples.ibfbs.toplink.Symbol;

/**
 * This Singleton class wraps all database operations required by
 * TradeManagementSessionFacadeBean. 
 * 
 * @see TradeManagementSessionFacadeBean.java
 */
public class TradeHelper {

  // Toplink Server session
  private ServerSession server = null;
  
  // Static instance of TradeHelper
  private static TradeHelper helper = null;

  /**
   * Creates a new instance of TradeHelper.
   * 
   * @exception DatabaseException if creating Toplink server session fails
   */
  private TradeHelper() 
    throws DatabaseException {
      // Initialize ServerSession from session.xml 
      server = (ServerSession) SessionManager.getManager().getSession(new XMLLoader(),
                                "FBSServerSession",
                                Thread.currentThread().getContextClassLoader());    
  }
  
  /**
   * Returns a handle to a static instance of TradeHelper class.
   * 
   * @return  TradeHelper instance
   * @exception DatabaseException if creating new instance of TradeHelper fails
   */
  public static TradeHelper getInstance() 
    throws DatabaseException {
    if(helper == null) {
      helper = new TradeHelper();
    }  
    return helper;   
  }

  /**
   * Method to get the stock rate for the specified symbol.
   * 
   * @param symbol Stock Symbol of the Company in which user is interested.
   * @return Stockrate of the specified symbol
   * @exception DatabaseException if retrieving stock rate fails
   *
   */
  public Stockrate getLatestRate(String symbol)
      throws DatabaseException {
    
    // Initialize client session
    ClientSession client = server.acquireClientSession();
    
    // Initialize read query to read single Stockrate
    ReadObjectQuery readRate = new ReadObjectQuery(Stockrate.class);      
    ExpressionBuilder rateBuilder = new ExpressionBuilder();
    ExpressionBuilder symbolBuilder = new ExpressionBuilder();
    
    // Initialize read query to read max of stockdate
    ReportQuery subQuery = new ReportQuery(Stockrate.class, symbolBuilder);

    // SELECT MAX(StockDate) FROM StockRate WHERE Symbol = ?
    subQuery.addMaximum("stockdate");      
    subQuery.setSelectionCriteria(symbolBuilder.get("symbol").equalsIgnoreCase(symbol));      
    
    // SELECT * FROM StockRate WHERE StockDate = ? AND Symbol = ?
    readRate.setSelectionCriteria(rateBuilder.get("stockdate").equal(subQuery)
                            .and(rateBuilder.get("symbol").equalsIgnoreCase(symbol)));
    
    return (Stockrate) client.executeQuery(readRate);

  }

  /**
   * Method to get Symbol with the specified name.
   * 
   * @param s Symbol name
   * @return Symbol instance if matching symbol was found, else null
   * @exception DatabaseException if fetching symbol fails
   */
  public Symbol getSymbol(String s)
      throws DatabaseException {

    // Initialize client session
    ClientSession client = server.acquireClientSession();

    // Initialize read query to read Symbol ( to read a single Symbol )
    ReadObjectQuery readSymbol = new ReadObjectQuery(Symbol.class);
    
    // Construct the where condition
    // WHERE symbol = ?
    ExpressionBuilder whereClause = new ExpressionBuilder();
    readSymbol.setSelectionCriteria(whereClause.get("symbol").equalsIgnoreCase(s));
    
    return (Symbol)client.executeQuery(readSymbol);

  }
  
  /**
   * Retrieves the next value of the specified sequence.
   * 
   * @param seqName Name of sequence whose next value has to be fetched
   * @return next val of the specified sequence
   * @exception DatabaseException if fetching next value fails
   */
  public Integer getNextID(String seqName) 
      throws DatabaseException {
    
    // Initialiae client session  
    ClientSession client = server.acquireClientSession();
    
    Number seqVal = null;
    
    // Initialize read query to read a single value
    ValueReadQuery query = new ValueReadQuery();
    
    // Set the SQL call to be executed
    query.setSQLString(" SELECT "+seqName+".NEXTVAL FROM Dual");
    
    seqVal = (Number)client.executeQuery(query);
    
    return new Integer(seqVal.intValue());
  }
}

⌨️ 快捷键说明

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