📄 tradehelper.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 + -