You are viewing a plain text version of this content. The canonical link for it is here.
Posted to stonehenge-commits@incubator.apache.org by sh...@apache.org on 2009/04/28 05:15:25 UTC

svn commit: r769245 [1/2] - in /incubator/stonehenge/trunk/stocktrader/wsas: business_service/src/org/apache/stonehenge/stocktrader/services/ common/src/org/apache/stonehenge/stocktrader/dal/ common/src/org/apache/stonehenge/stocktrader/mssql/ common/s...

Author: shankar
Date: Tue Apr 28 05:15:22 2009
New Revision: 769245

URL: http://svn.apache.org/viewvc?rev=769245&view=rev
Log:
MySQL support for WSAS Stocktrader (Applying patch from STONEHENGE-40)

Added:
    incubator/stonehenge/trunk/stocktrader/wsas/common/src/org/apache/stonehenge/stocktrader/mysql/
    incubator/stonehenge/trunk/stocktrader/wsas/common/src/org/apache/stonehenge/stocktrader/mysql/AbstractMySQLDAO.java
    incubator/stonehenge/trunk/stocktrader/wsas/common/src/org/apache/stonehenge/stocktrader/mysql/MySQLCustomerDAO.java
    incubator/stonehenge/trunk/stocktrader/wsas/common/src/org/apache/stonehenge/stocktrader/mysql/MySQLDAOFactory.java
    incubator/stonehenge/trunk/stocktrader/wsas/common/src/org/apache/stonehenge/stocktrader/mysql/MySQLMarketSummaryDAO.java
    incubator/stonehenge/trunk/stocktrader/wsas/common/src/org/apache/stonehenge/stocktrader/mysql/MySQLOrderDAO.java
    incubator/stonehenge/trunk/stocktrader/wsas/resources/conf/db.properties
Removed:
    incubator/stonehenge/trunk/stocktrader/wsas/resources/conf/mssql-db.properties
Modified:
    incubator/stonehenge/trunk/stocktrader/wsas/business_service/src/org/apache/stonehenge/stocktrader/services/TradeConfigServiceClient.java
    incubator/stonehenge/trunk/stocktrader/wsas/business_service/src/org/apache/stonehenge/stocktrader/services/TradeOrderServiceClient.java
    incubator/stonehenge/trunk/stocktrader/wsas/business_service/src/org/apache/stonehenge/stocktrader/services/TradeOrderServiceClientPasswordCB.java
    incubator/stonehenge/trunk/stocktrader/wsas/business_service/src/org/apache/stonehenge/stocktrader/services/TradeServiceImpl.java
    incubator/stonehenge/trunk/stocktrader/wsas/business_service/src/org/apache/stonehenge/stocktrader/services/TraderServiceManager.java
    incubator/stonehenge/trunk/stocktrader/wsas/common/src/org/apache/stonehenge/stocktrader/dal/DAOFactory.java
    incubator/stonehenge/trunk/stocktrader/wsas/common/src/org/apache/stonehenge/stocktrader/dal/MarketSummaryDAO.java
    incubator/stonehenge/trunk/stocktrader/wsas/common/src/org/apache/stonehenge/stocktrader/dal/OrderDAO.java
    incubator/stonehenge/trunk/stocktrader/wsas/common/src/org/apache/stonehenge/stocktrader/mssql/AbstractMSSQLDAO.java
    incubator/stonehenge/trunk/stocktrader/wsas/common/src/org/apache/stonehenge/stocktrader/mssql/MSSQLCustomerDAO.java
    incubator/stonehenge/trunk/stocktrader/wsas/common/src/org/apache/stonehenge/stocktrader/mssql/MSSQLDAOFactory.java
    incubator/stonehenge/trunk/stocktrader/wsas/common/src/org/apache/stonehenge/stocktrader/mssql/MSSQLMarketSummaryDAO.java
    incubator/stonehenge/trunk/stocktrader/wsas/common/src/org/apache/stonehenge/stocktrader/mssql/MSSQLOrderDAO.java
    incubator/stonehenge/trunk/stocktrader/wsas/common/src/org/apache/stonehenge/stocktrader/util/StockTraderUtility.java
    incubator/stonehenge/trunk/stocktrader/wsas/order_processor/src/org/apache/stonehenge/stocktrader/service/OrderProcessManager.java
    incubator/stonehenge/trunk/stocktrader/wsas/order_processor/src/org/apache/stonehenge/stocktrader/service/OrderProcessorImpl.java
    incubator/stonehenge/trunk/stocktrader/wsas/order_processor/src/org/apache/stonehenge/stocktrader/service/OrderProcessorServicePasswordCB.java

Modified: incubator/stonehenge/trunk/stocktrader/wsas/business_service/src/org/apache/stonehenge/stocktrader/services/TradeConfigServiceClient.java
URL: http://svn.apache.org/viewvc/incubator/stonehenge/trunk/stocktrader/wsas/business_service/src/org/apache/stonehenge/stocktrader/services/TradeConfigServiceClient.java?rev=769245&r1=769244&r2=769245&view=diff
==============================================================================
--- incubator/stonehenge/trunk/stocktrader/wsas/business_service/src/org/apache/stonehenge/stocktrader/services/TradeConfigServiceClient.java (original)
+++ incubator/stonehenge/trunk/stocktrader/wsas/business_service/src/org/apache/stonehenge/stocktrader/services/TradeConfigServiceClient.java Tue Apr 28 05:15:22 2009
@@ -46,10 +46,8 @@
 	private TradeConfigServiceClient() throws IOException {
 		super();
 		// CHECKME .. there might be a better of doing this
-		ClassLoader cl = MessageContext.getCurrentMessageContext()
-				.getAxisService().getClassLoader();
-		InputStream is = cl
-				.getResourceAsStream(StockTraderUtility.TRADE_ORDER_SERVICE_PROPERTY_FILE);
+		ClassLoader cl = MessageContext.getCurrentMessageContext().getAxisService().getClassLoader();
+		InputStream is = cl.getResourceAsStream(StockTraderUtility.TRADE_ORDER_SERVICE_PROPERTY_FILE);
 		prop.load(is);
 	}
 

Modified: incubator/stonehenge/trunk/stocktrader/wsas/business_service/src/org/apache/stonehenge/stocktrader/services/TradeOrderServiceClient.java
URL: http://svn.apache.org/viewvc/incubator/stonehenge/trunk/stocktrader/wsas/business_service/src/org/apache/stonehenge/stocktrader/services/TradeOrderServiceClient.java?rev=769245&r1=769244&r2=769245&view=diff
==============================================================================
--- incubator/stonehenge/trunk/stocktrader/wsas/business_service/src/org/apache/stonehenge/stocktrader/services/TradeOrderServiceClient.java (original)
+++ incubator/stonehenge/trunk/stocktrader/wsas/business_service/src/org/apache/stonehenge/stocktrader/services/TradeOrderServiceClient.java Tue Apr 28 05:15:22 2009
@@ -44,10 +44,8 @@
 	private TradeOrderServiceClient() throws IOException {
 		super();
 		// CHECKME .. there might be a better of doing this
-		ClassLoader cl = MessageContext.getCurrentMessageContext()
-				.getAxisService().getClassLoader();
-		InputStream is = cl
-				.getResourceAsStream(StockTraderUtility.TRADE_ORDER_SERVICE_SECURITY_FILE);
+		ClassLoader cl = MessageContext.getCurrentMessageContext().getAxisService().getClassLoader();
+		InputStream is = cl.getResourceAsStream(StockTraderUtility.TRADE_ORDER_SERVICE_SECURITY_FILE);
 		securityPolicy = PolicyEngine.getPolicy(is);
 	}
 
@@ -59,11 +57,9 @@
 		return self;
 	}
 
-	public void SubmitOrderTrasactedQueue(CustomOrderBean order)
-			throws IOException {
+	public void SubmitOrderTrasactedQueue(CustomOrderBean order) throws IOException {
 		TradeOrderConfig config = geTradeOrderConfig();
-		OrderProcessorStub stub = new OrderProcessorStub(config
-				.getEndpointURL());
+		OrderProcessorStub stub = new OrderProcessorStub(config.getEndpointURL());
 		ServiceClient serviceClient = stub._getServiceClient();
 		serviceClient.getOptions().setProperty(HTTPConstants.CHUNKED,  Boolean.FALSE);
 		if (config.isSecure()) {
@@ -77,8 +73,7 @@
 	}
 
 	private TradeOrderConfig geTradeOrderConfig() throws IOException {
-		TradeConfigServiceClient client = TradeConfigServiceClient
-				.getInstance();
+		TradeConfigServiceClient client = TradeConfigServiceClient.getInstance();
 		return client.getTradeOrderConfig();
 	}
 

Modified: incubator/stonehenge/trunk/stocktrader/wsas/business_service/src/org/apache/stonehenge/stocktrader/services/TradeOrderServiceClientPasswordCB.java
URL: http://svn.apache.org/viewvc/incubator/stonehenge/trunk/stocktrader/wsas/business_service/src/org/apache/stonehenge/stocktrader/services/TradeOrderServiceClientPasswordCB.java?rev=769245&r1=769244&r2=769245&view=diff
==============================================================================
--- incubator/stonehenge/trunk/stocktrader/wsas/business_service/src/org/apache/stonehenge/stocktrader/services/TradeOrderServiceClientPasswordCB.java (original)
+++ incubator/stonehenge/trunk/stocktrader/wsas/business_service/src/org/apache/stonehenge/stocktrader/services/TradeOrderServiceClientPasswordCB.java Tue Apr 28 05:15:22 2009
@@ -26,8 +26,7 @@
 import org.apache.ws.security.WSPasswordCallback;
 
 public class TradeOrderServiceClientPasswordCB implements CallbackHandler {
-	public void handle(Callback[] callbacks) throws IOException,
-			UnsupportedCallbackException {
+	public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {
 		for (int i = 0; i < callbacks.length; i++) {
 			WSPasswordCallback pwcb = (WSPasswordCallback) callbacks[i];
 			String id = pwcb.getIdentifer();

Modified: incubator/stonehenge/trunk/stocktrader/wsas/business_service/src/org/apache/stonehenge/stocktrader/services/TradeServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/stonehenge/trunk/stocktrader/wsas/business_service/src/org/apache/stonehenge/stocktrader/services/TradeServiceImpl.java?rev=769245&r1=769244&r2=769245&view=diff
==============================================================================
--- incubator/stonehenge/trunk/stocktrader/wsas/business_service/src/org/apache/stonehenge/stocktrader/services/TradeServiceImpl.java (original)
+++ incubator/stonehenge/trunk/stocktrader/wsas/business_service/src/org/apache/stonehenge/stocktrader/services/TradeServiceImpl.java Tue Apr 28 05:15:22 2009
@@ -77,8 +77,7 @@
 	public BuyResponse buy(Buy buy) {
 		CustomOrderBean order;
 		try {
-			order = mgr
-					.buy(buy.getUserID(), buy.getSymbol(), buy.getQuantity());
+			order = mgr.buy(buy.getUserID(), buy.getSymbol(), buy.getQuantity());
 		} catch (DAOException e) {
 			logger.debug("", e);
 			throw new RuntimeException(e);
@@ -101,12 +100,10 @@
 		return getAccountDataResponse;
 	}
 
-	public GetAccountProfileDataResponse getAccountProfileData(
-			GetAccountProfileData getAccountProfileData) {
+	public GetAccountProfileDataResponse getAccountProfileData(GetAccountProfileData getAccountProfileData) {
 		CustomAccountProfileBean accountProfileData;
 		try {
-			accountProfileData = mgr
-					.getAccountProfileData(getAccountProfileData.getUserID());
+			accountProfileData = mgr.getAccountProfileData(getAccountProfileData.getUserID());
 		} catch (DAOException e) {
 			logger.debug("", e);
 			throw new RuntimeException(e);
@@ -116,8 +113,7 @@
 		return response;
 	}
 
-	public GetClosedOrdersResponse getClosedOrders(
-			GetClosedOrders getClosedOrders) {
+	public GetClosedOrdersResponse getClosedOrders(GetClosedOrders getClosedOrders) {
 		List<CustomOrderBean> closedOrders;
 		try {
 			closedOrders = mgr.getClosedOrders(getClosedOrders.getUserID());
@@ -135,8 +131,7 @@
 	public GetHoldingResponse getHolding(GetHolding getHolding) {
 		CustomHoldingBean holding;
 		try {
-			holding = mgr.getHolding(getHolding.getUserID(), getHolding
-					.getHoldingID());
+			holding = mgr.getHolding(getHolding.getUserID(), getHolding.getHoldingID());
 		} catch (DAOException e) {
 			logger.debug("", e);
 			throw new RuntimeException(e);
@@ -161,8 +156,7 @@
 		return response;
 	}
 
-	public GetMarketSummaryResponse getMarketSummary(
-			GetMarketSummary getMarketSummary) {
+	public GetMarketSummaryResponse getMarketSummary(GetMarketSummary getMarketSummary) {
 		CustomMarketSummaryBean param;
 		try {
 			param = mgr.getMarketSummary();
@@ -251,10 +245,14 @@
 	public RegisterResponse register(Register register) {
 		CustomAccountBean param;
 		try {
-			param = mgr.register(register.getUserID(), register.getPassword(),
-					register.getFullname(), register.getAddress(), register
-							.getEmail(), register.getCreditcard(), register
-							.getOpenBalance());
+			param = mgr.register(
+                    register.getUserID(),
+                    register.getPassword(),
+					register.getFullname(),
+                    register.getAddress(),
+                    register.getEmail(),
+                    register.getCreditcard(),
+                    register.getOpenBalance());
 		} catch (DAOException e) {
 			logger.debug("", e);
 			throw new RuntimeException(e);
@@ -267,8 +265,7 @@
 	public SellResponse sell(Sell sell) {
 		CustomOrderBean param;
 		try {
-			param = mgr.sell(sell.getUserID(), sell.getHoldingID(), sell
-					.getOrderProcessingMode());
+			param = mgr.sell(sell.getUserID(), sell.getHoldingID(), sell.getOrderProcessingMode());
 		} catch (DAOException e) {
 			logger.debug("", e);
 			throw new RuntimeException(e);
@@ -281,8 +278,7 @@
 	public SellEnhancedResponse sellEnhanced(SellEnhanced sellEnhanced) {
 		CustomOrderBean param;
 		try {
-			param = mgr.sellEnhanced(sellEnhanced.getUserID(), sellEnhanced
-					.getHoldingID(), sellEnhanced.getQuantity());
+			param = mgr.sellEnhanced(sellEnhanced.getUserID(), sellEnhanced.getHoldingID(), sellEnhanced.getQuantity());
 		} catch (DAOException e) {
 			logger.debug("", e);
 			throw new RuntimeException(e);
@@ -292,10 +288,8 @@
 		return response;
 	}
 
-	public UpdateAccountProfileResponse updateAccountProfile(
-			UpdateAccountProfile updateAccountProfile) {
-		CustomAccountProfileBean accountProfile = new CustomAccountProfileBean(
-				updateAccountProfile.getProfileData());
+	public UpdateAccountProfileResponse updateAccountProfile(UpdateAccountProfile updateAccountProfile) {
+		CustomAccountProfileBean accountProfile = new CustomAccountProfileBean(updateAccountProfile.getProfileData());
 		CustomAccountProfileBean param;
 		try {
 			param = mgr.updateAccountProfile(accountProfile);

Modified: incubator/stonehenge/trunk/stocktrader/wsas/business_service/src/org/apache/stonehenge/stocktrader/services/TraderServiceManager.java
URL: http://svn.apache.org/viewvc/incubator/stonehenge/trunk/stocktrader/wsas/business_service/src/org/apache/stonehenge/stocktrader/services/TraderServiceManager.java?rev=769245&r1=769244&r2=769245&view=diff
==============================================================================
--- incubator/stonehenge/trunk/stocktrader/wsas/business_service/src/org/apache/stonehenge/stocktrader/services/TraderServiceManager.java (original)
+++ incubator/stonehenge/trunk/stocktrader/wsas/business_service/src/org/apache/stonehenge/stocktrader/services/TraderServiceManager.java Tue Apr 28 05:15:22 2009
@@ -20,8 +20,7 @@
 import java.math.BigDecimal;
 import java.util.Calendar;
 
-import java.util.List;
-
+import java.util.List;                
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.stonehenge.stocktrader.CustomAccountBean;
@@ -35,22 +34,19 @@
 import org.apache.stonehenge.stocktrader.dal.DAOFactory;
 import org.apache.stonehenge.stocktrader.dal.MarketSummaryDAO;
 import org.apache.stonehenge.stocktrader.dal.OrderDAO;
-import org.apache.stonehenge.stocktrader.mssql.MSSQLOrderDAO;
 import org.apache.stonehenge.stocktrader.util.StockTraderUtility;
 
 public class TraderServiceManager {
 
-	private static final Log logger = LogFactory
-			.getLog(TraderServiceManager.class);
+	private static final Log logger = LogFactory.getLog(TraderServiceManager.class);
 
 	private DAOFactory factory = null;
 
 	public TraderServiceManager() {
-		factory = DAOFactory.getFacotry(DAOFactory.MS_SQL_FACTORY);
+		factory = DAOFactory.getFacotry();
 	}
 
-	public CustomAccountBean login(String userId, String password)
-			throws DAOException {
+	public CustomAccountBean login(String userId, String password) throws DAOException {
 		CustomerDAO customerDAO = factory.getCustomerDAO();
 		return customerDAO.login(userId, password);
 	}
@@ -65,29 +61,22 @@
 		return customerDAO.getCustomerByUserId(userId);
 	}
 
-	public CustomAccountProfileBean getAccountProfileData(String userId)
-			throws DAOException {
+	public CustomAccountProfileBean getAccountProfileData(String userId) throws DAOException {
 		CustomerDAO customerDAO = factory.getCustomerDAO();
 		return customerDAO.getAccountProfileData(userId);
 	}
 
 	public List<CustomOrderBean> getOrders(String userId) throws DAOException {
 		CustomerDAO customerDAO = factory.getCustomerDAO();
-		return customerDAO.getOrders(userId, false,
-				StockTraderUtility.MAX_QUERY_TOP_ORDERS,
-				StockTraderUtility.MAX_QUERY_ORDERS);
+		return customerDAO.getOrders(userId, false, StockTraderUtility.MAX_QUERY_TOP_ORDERS, StockTraderUtility.MAX_QUERY_ORDERS);
 	}
 
-	public List<CustomOrderBean> getTopOrders(String userId)
-			throws DAOException {
+	public List<CustomOrderBean> getTopOrders(String userId) throws DAOException {
 		CustomerDAO customerDAO = factory.getCustomerDAO();
-		return customerDAO.getOrders(userId, true,
-				StockTraderUtility.MAX_QUERY_TOP_ORDERS,
-				StockTraderUtility.MAX_QUERY_ORDERS);
+		return customerDAO.getOrders(userId, true, StockTraderUtility.MAX_QUERY_TOP_ORDERS, StockTraderUtility.MAX_QUERY_ORDERS);
 	}
 
-	public List<CustomOrderBean> getClosedOrders(String userId)
-			throws DAOException {
+	public List<CustomOrderBean> getClosedOrders(String userId) throws DAOException {
 		CustomerDAO customerDAO = factory.getCustomerDAO();
 		return customerDAO.getClosedOrders(userId);
 	}
@@ -147,7 +136,7 @@
 
 	public CustomOrderBean placeOrder(String orderType, String userID,
 			int holdingID, String symbol, double quantity) throws DAOException {
-		MSSQLOrderDAO orderDAO = (MSSQLOrderDAO) factory.getOrderDAO();
+		OrderDAO orderDAO = factory.getOrderDAO();
 		CustomOrderBean order = null;
 		CustomHoldingBean holding = new CustomHoldingBean();
 		try {

Modified: incubator/stonehenge/trunk/stocktrader/wsas/common/src/org/apache/stonehenge/stocktrader/dal/DAOFactory.java
URL: http://svn.apache.org/viewvc/incubator/stonehenge/trunk/stocktrader/wsas/common/src/org/apache/stonehenge/stocktrader/dal/DAOFactory.java?rev=769245&r1=769244&r2=769245&view=diff
==============================================================================
--- incubator/stonehenge/trunk/stocktrader/wsas/common/src/org/apache/stonehenge/stocktrader/dal/DAOFactory.java (original)
+++ incubator/stonehenge/trunk/stocktrader/wsas/common/src/org/apache/stonehenge/stocktrader/dal/DAOFactory.java Tue Apr 28 05:15:22 2009
@@ -18,22 +18,66 @@
 package org.apache.stonehenge.stocktrader.dal;
 
 import org.apache.stonehenge.stocktrader.mssql.MSSQLDAOFactory;
+import org.apache.stonehenge.stocktrader.mysql.MySQLDAOFactory;
+import org.apache.stonehenge.stocktrader.util.StockTraderUtility;
+
+import java.util.Properties;
+import java.io.InputStream;
+import java.io.IOException;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.description.AxisService;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 
 public abstract class DAOFactory {
-	public static final int MS_SQL_FACTORY = 1;
+    public static final String PROP_DB_HOST = "org.apache.stonehenge.stocktrader.database.host";
+	public static final String PROP_DB_PORT = "org.apache.stonehenge.stocktrader.database.port";
+	public static final String PROP_DB_NAME = "org.apache.stonehenge.stocktrader.database.db";
+	public static final String PROP_DB_USER = "org.apache.stonehenge.stocktrader.database.user";
+	public static final String PROP_DB_PASSWORD = "org.apache.stonehenge.stocktrader.database.password";
+    public static final String PROP_DB_TYPE = "org.apache.stonehenge.stocktrader.database.type";
+
+    public static Properties prop = null;
 
 	public abstract CustomerDAO getCustomerDAO() throws DAOException;
 	public abstract MarketSummaryDAO getMarketSummaryDAO() throws DAOException;
 	public abstract OrderDAO getOrderDAO() throws DAOException;
 
-	public static DAOFactory getFacotry(int type) {
-		switch (type) {
-		case MS_SQL_FACTORY:
-			DAOFactory factory = MSSQLDAOFactory.getInstance();
-			return factory;
-		default:
-			throw new IllegalArgumentException("Unknown Database type " + type);
-		}
+	public static DAOFactory getFacotry() {
+        DAOFactory factory;
+        loadProperties();
+        if ("mysql".equals(prop.getProperty(PROP_DB_TYPE))) {
+            factory = MySQLDAOFactory.getInstance();
+            return factory;
+        } else if ("mssql".equals(prop.getProperty(PROP_DB_TYPE))) {
+			factory = MSSQLDAOFactory.getInstance();
+            return factory;
+        } else {
+			throw new IllegalArgumentException("Unknown Database type " + prop.getProperty(PROP_DB_TYPE));
+        }
 	}
 
+    public static void loadProperties() {
+        Log logger = LogFactory.getLog(DAOFactory.class);
+        if (prop == null) {
+            prop = new Properties();
+			MessageContext messageContext = MessageContext.getCurrentMessageContext();
+			if (messageContext != null) {
+				AxisService service = messageContext.getAxisService();
+				ClassLoader serviceClassLoader = service.getClassLoader();
+				InputStream is = serviceClassLoader.getResourceAsStream(StockTraderUtility.DB_PROPERRTIES_FILE);
+				if (is != null) {
+					try {
+						prop.load(is);
+					} catch (IOException e) {
+						logger.debug("Unable to load mysql-db properties file and using [jdbc:mysql://localhost/stocktraderdb?user=trade&password=trade] as the default connection",e);
+					}
+				} else {
+					logger.debug("Unable to load mysql-db properties file and using [jdbc:mysql://localhost/stocktraderdb?user=trade&password=trade] as the default connection");
+
+				}
+			}
+        }
+    }
+
 }

Modified: incubator/stonehenge/trunk/stocktrader/wsas/common/src/org/apache/stonehenge/stocktrader/dal/MarketSummaryDAO.java
URL: http://svn.apache.org/viewvc/incubator/stonehenge/trunk/stocktrader/wsas/common/src/org/apache/stonehenge/stocktrader/dal/MarketSummaryDAO.java?rev=769245&r1=769244&r2=769245&view=diff
==============================================================================
--- incubator/stonehenge/trunk/stocktrader/wsas/common/src/org/apache/stonehenge/stocktrader/dal/MarketSummaryDAO.java (original)
+++ incubator/stonehenge/trunk/stocktrader/wsas/common/src/org/apache/stonehenge/stocktrader/dal/MarketSummaryDAO.java Tue Apr 28 05:15:22 2009
@@ -31,6 +31,4 @@
 
 	public CustomMarketSummaryBean getCustomMarketSummary() throws DAOException;
 	
-	 
-
 }

Modified: incubator/stonehenge/trunk/stocktrader/wsas/common/src/org/apache/stonehenge/stocktrader/dal/OrderDAO.java
URL: http://svn.apache.org/viewvc/incubator/stonehenge/trunk/stocktrader/wsas/common/src/org/apache/stonehenge/stocktrader/dal/OrderDAO.java?rev=769245&r1=769244&r2=769245&view=diff
==============================================================================
--- incubator/stonehenge/trunk/stocktrader/wsas/common/src/org/apache/stonehenge/stocktrader/dal/OrderDAO.java (original)
+++ incubator/stonehenge/trunk/stocktrader/wsas/common/src/org/apache/stonehenge/stocktrader/dal/OrderDAO.java Tue Apr 28 05:15:22 2009
@@ -52,4 +52,12 @@
 			throws DAOException;
 
 	public void closeOrder(CustomOrderBean order) throws DAOException;
+
+    public void beginTransaction() throws DAOException;
+
+    public void commitTransaction() throws DAOException;
+
+    public void rollbackTransaction() throws DAOException;
+
+    public void close() throws DAOException;
 }

Modified: incubator/stonehenge/trunk/stocktrader/wsas/common/src/org/apache/stonehenge/stocktrader/mssql/AbstractMSSQLDAO.java
URL: http://svn.apache.org/viewvc/incubator/stonehenge/trunk/stocktrader/wsas/common/src/org/apache/stonehenge/stocktrader/mssql/AbstractMSSQLDAO.java?rev=769245&r1=769244&r2=769245&view=diff
==============================================================================
--- incubator/stonehenge/trunk/stocktrader/wsas/common/src/org/apache/stonehenge/stocktrader/mssql/AbstractMSSQLDAO.java (original)
+++ incubator/stonehenge/trunk/stocktrader/wsas/common/src/org/apache/stonehenge/stocktrader/mssql/AbstractMSSQLDAO.java Tue Apr 28 05:15:22 2009
@@ -40,15 +40,12 @@
 		logger.debug("AbstractMSSQLDAO.beginTransaction()");
 		try {
 			sqlConnection.setAutoCommit(false);
-			previousTransactionIsolation = sqlConnection
-					.getTransactionIsolation();
-			sqlConnection
-					.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);
+			previousTransactionIsolation = sqlConnection.getTransactionIsolation();
+			sqlConnection.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);
 		} catch (SQLException e) {
 			e.printStackTrace();
 			logger.debug("", e);
-			throw new DAOException(
-					"Exception was thrown during the start of transaction", e);
+			throw new DAOException("Exception was thrown during the start of transaction", e);
 		}
 	}
 
@@ -59,8 +56,7 @@
 			sqlConnection.setAutoCommit(true);
 			sqlConnection.setTransactionIsolation(previousTransactionIsolation);
 		} catch (SQLException e) {
-			throw new DAOException(
-					"Exception is thrown during the commit of transaction", e);
+			throw new DAOException("Exception is thrown during the commit of transaction", e);
 		}
 	}
 
@@ -71,9 +67,7 @@
 			sqlConnection.setAutoCommit(true);
 			sqlConnection.setTransactionIsolation(previousTransactionIsolation);
 		} catch (SQLException e) {
-			throw new DAOException(
-					"Exception is thrown during the rollback of transaction", e);
-
+			throw new DAOException("Exception is thrown during the rollback of transaction", e);
 		}
 	}
 

Modified: incubator/stonehenge/trunk/stocktrader/wsas/common/src/org/apache/stonehenge/stocktrader/mssql/MSSQLCustomerDAO.java
URL: http://svn.apache.org/viewvc/incubator/stonehenge/trunk/stocktrader/wsas/common/src/org/apache/stonehenge/stocktrader/mssql/MSSQLCustomerDAO.java?rev=769245&r1=769244&r2=769245&view=diff
==============================================================================
--- incubator/stonehenge/trunk/stocktrader/wsas/common/src/org/apache/stonehenge/stocktrader/mssql/MSSQLCustomerDAO.java (original)
+++ incubator/stonehenge/trunk/stocktrader/wsas/common/src/org/apache/stonehenge/stocktrader/mssql/MSSQLCustomerDAO.java Tue Apr 28 05:15:22 2009
@@ -38,606 +38,564 @@
 import org.apache.stonehenge.stocktrader.util.StockTraderUtility;
 
 public class MSSQLCustomerDAO extends AbstractMSSQLDAO implements CustomerDAO {
-	private static final Log logger = LogFactory.getLog(MSSQLCustomerDAO.class);
+    private static final Log logger = LogFactory.getLog(MSSQLCustomerDAO.class);
 
-	private static final String SQL_DEBIT_ACCOUNT = "UPDATE dbo.ACCOUNT WITH (ROWLOCK) SET BALANCE=(BALANCE-?) WHERE ACCOUNTID=?";
-	private static final String SQL_SELECT_HOLDING_LOCK = "Set NOCOUNT ON; SELECT dbo.HOLDING.ACCOUNT_ACCOUNTID, HOLDING.HOLDINGID, HOLDING.QUANTITY, HOLDING.PURCHASEPRICE, HOLDING.PURCHASEDATE, HOLDING.QUOTE_SYMBOL FROM dbo.HOLDING WITH (ROWLOCK) INNER JOIN ORDERS ON HOLDING.HOLDINGID = ORDERS.HOLDING_HOLDINGID WHERE (ORDERS.ORDERID = ?)";
-	private static final String SQL_SELECT_HOLDING_NOLOCK = "Set NOCOUNT ON; SELECT HOLDING.ACCOUNT_ACCOUNTID, HOLDING.QUANTITY, HOLDING.PURCHASEPRICE, HOLDING.PURCHASEDATE, HOLDING.QUOTE_SYMBOL FROM HOLDING WITH(NOLOCK) WHERE HOLDING.HOLDINGID=? AND HOLDING.ACCOUNT_ACCOUNTID = (SELECT ACCOUNTID FROM dbo.ACCOUNT WHERE PROFILE_USERID = ?)";
-	private static final String SQL_SELECT_CUSTOMER_PROFILE_BY_USERID = "Set NOCOUNT ON; SELECT accountprofile.USERID, accountprofile.PASSWORD, accountprofile.FULLNAME, accountprofile.ADDRESS, accountprofile.EMAIL, accountprofile.CREDITCARD FROM dbo.accountprofile WITH (NOLOCK) WHERE accountprofile.USERID = ?";
-	private static final String SQL_UPDATE_CUSTOMER_LOGIN = "UPDATE dbo.account WITH (ROWLOCK) SET LOGINCOUNT = (LOGINCOUNT + 1), LASTLOGIN = CURRENT_TIMESTAMP where PROFILE_USERID = ?";
-	private static final String SQL_SELECT_CUSTOMER_LOGIN = "SELECT account.ACCOUNTID, account.CREATIONDATE, account.OPENBALANCE, account.LOGOUTCOUNT, account.BALANCE, account.LASTLOGIN, account.LOGINCOUNT FROM dbo.account WITH (ROWLOCK) WHERE account.PROFILE_USERID = ?";
-	private static final String SQL_UPDATE_LOGOUT = "UPDATE dbo.account WITH (ROWLOCK) SET LOGOUTCOUNT = (LOGOUTCOUNT + 1) where PROFILE_USERID= ?";
-	private static final String SQL_SELECT_GET_CUSTOMER_BY_USERID = "Set NOCOUNT ON; SELECT account.ACCOUNTID, account.PROFILE_USERID, account.CREATIONDATE, account.OPENBALANCE, account.LOGOUTCOUNT, account.BALANCE, account.LASTLOGIN, account.LOGINCOUNT FROM account WHERE account.PROFILE_USERID = ?";
-	private static final String SQL_SELECT_ORDERS_BY_ID = " o.ORDERID, o.ORDERTYPE, o.ORDERSTATUS, o.OPENDATE, o.COMPLETIONDATE, o.QUANTITY, o.PRICE, o.ORDERFEE, o.QUOTE_SYMBOL from dbo.orders o where o.account_accountid = (select a.accountid from dbo.account a WITH (NOLOCK)  where a.profile_userid = ?) ORDER BY o.ORDERID DESC";
-	private static final String SQL_SELECT_CLOSED_ORDERS = "Set NOCOUNT ON; SELECT ORDERID, ORDERTYPE, ORDERSTATUS, COMPLETIONDATE, OPENDATE, QUANTITY, PRICE, ORDERFEE, QUOTE_SYMBOL FROM dbo.orders WHERE ACCOUNT_ACCOUNTID = (select accountid from dbo.account WITH(NOLOCK) where profile_userid = ?) AND ORDERSTATUS = 'closed'";
-	private static final String SQL_UPDATE_CLOSED_ORDERS = "UPDATE dbo.orders SET ORDERSTATUS = 'completed' where ORDERSTATUS = 'closed' AND ACCOUNT_ACCOUNTID = (select accountid from dbo.account WITH (NOLOCK) where profile_userid = ?)";
-	private static final String SQL_INSERT_ACCOUNT_PROFILE = "INSERT INTO dbo.accountprofile VALUES (?, ?, ?, ?, ?, ?)";
-	private static final String SQL_INSERT_ACCOUNT = "INSERT INTO dbo.account (CREATIONDATE, OPENBALANCE, LOGOUTCOUNT, BALANCE, LASTLOGIN, LOGINCOUNT, PROFILE_USERID) VALUES (GetDate(), ?, ?, ?, ?, ?, ?); SELECT ID=@@IDENTITY";
-	private static final String SQL_UPDATE_ACCOUNT_PROFILE = "UPDATE dbo.accountprofile WITH (ROWLOCK) SET ADDRESS=?, PASSWORD=?, EMAIL=?, CREDITCARD=?, FULLNAME=? WHERE USERID=?";
-	private static final String SQL_SELECT_HOLDINGS = "SELECT HOLDING.HOLDINGID, HOLDING.QUANTITY, HOLDING.PURCHASEPRICE, HOLDING.PURCHASEDATE, HOLDING.QUOTE_SYMBOL,HOLDING.ACCOUNT_ACCOUNTID  from dbo.holding WHERE HOLDING.ACCOUNT_ACCOUNTID = (SELECT ACCOUNTID FROM ACCOUNT WHERE PROFILE_USERID = ?) ORDER BY HOLDING.HOLDINGID DESC";
-
-	public MSSQLCustomerDAO(Connection sqlConnection) throws DAOException {
-		super(sqlConnection);
-	}
-
-	public CustomHoldingBean getHoldingForUpdate(int orderId)
-			throws DAOException {
-		if (logger.isDebugEnabled()) {
-			logger
-					.debug("MSSQLCustomerDAO.getHoldingForUpdate(int)\nOrder ID :"
-							+ orderId);
-		}
-
-		CustomHoldingBean holding = null;
-		PreparedStatement selectHoldingLockStat = null;
-		try {
-			selectHoldingLockStat = sqlConnection
-					.prepareStatement(SQL_SELECT_HOLDING_LOCK);
-			selectHoldingLockStat.setInt(1, orderId);
-			ResultSet rs = selectHoldingLockStat.executeQuery();
-			if (rs.next()) {
-				try {
-					holding = new CustomHoldingBean(
-							rs.getInt(1),
-							rs.getInt(2),
-							rs.getDouble(3),
-							rs.getBigDecimal(4),
-							StockTraderUtility.convertToCalendar(rs.getDate(5)),
-							rs.getString(6));
-					return holding;
-				} finally {
-					try {
-						rs.close();
-					} catch (SQLException e) {
-						logger.debug("", e);
-					}
-				}
-			}
-		} catch (SQLException e) {
-			throw new DAOException(
-					"Exception is thrown when selecting the holding entry for order ID :"
-							+ orderId, e);
-		} finally {
-			if (selectHoldingLockStat != null) {
-				try {
-					selectHoldingLockStat.close();
-				} catch (SQLException e) {
-					logger.debug("", e);
-				}
-			}
-		}
-		return holding;
-	}
-
-	public CustomHoldingBean getHolding(String userId, int holdingID)
-			throws DAOException {
-		if (logger.isDebugEnabled()) {
-			logger.debug("MSSQLCustomerDAO.getHolding(String,int)\nUserID :"
-					+ userId + "\nOrder ID :" + holdingID);
-		}
-		CustomHoldingBean holding = null;
-		PreparedStatement selectHoldingNoLockStat = null;
-		try {
-			selectHoldingNoLockStat = sqlConnection
-					.prepareStatement(SQL_SELECT_HOLDING_NOLOCK);
-			selectHoldingNoLockStat.setInt(0, holdingID);
-			selectHoldingNoLockStat.setString(1, userId);
-
-			ResultSet rs = selectHoldingNoLockStat.executeQuery();
-			if (rs.next()) {
-				try {
-					holding = new CustomHoldingBean(
-							rs.getInt(1),
-							rs.getInt(2),
-							rs.getDouble(3),
-							rs.getBigDecimal(4),
-							StockTraderUtility.convertToCalendar(rs.getDate(5)),
-							rs.getString(6));
-					return holding;
-				} finally {
-					try {
-						rs.close();
-					} catch (SQLException e) {
-						logger.debug("", e);
-					}
-				}
-			}
-		} catch (SQLException e) {
-			logger.debug("", e);
-			throw new DAOException(
-					"Exception is thrown when selecting the holding entry for userID :"
-							+ userId + " and orderID :" + holdingID, e);
-
-		} finally {
-			if (selectHoldingNoLockStat != null) {
-				try {
-					selectHoldingNoLockStat.close();
-				} catch (SQLException e) {
-					logger.debug("", e);
-				}
-			}
-		}
-		return holding;
-	}
-
-	public void updateAccountBalance(int accountId, BigDecimal total)
-			throws DAOException {
-		if (logger.isDebugEnabled()) {
-			logger
-					.debug("MSSQLCustomerDAO.updateAccoutBalance(int,BigDecimal)\n Account ID :"
-							+ accountId + "\nTotal :" + total);
-		}
-		PreparedStatement debitAccountStat = null;
-		try {
-			debitAccountStat = sqlConnection
-					.prepareStatement(SQL_DEBIT_ACCOUNT);
-			debitAccountStat.setBigDecimal(1, total);
-			debitAccountStat.setInt(2, accountId);
-			debitAccountStat.executeUpdate();
-
-		} catch (SQLException e) {
-			throw new DAOException(
-					"Excpetion is thrown when updating the account balance for accountID :"
-							+ accountId + " total :" + total, e);
-		} finally {
-			if (debitAccountStat != null) {
-				try {
-					debitAccountStat.close();
-				} catch (SQLException e) {
-					logger.debug("", e);
-				}
-			}
-		}
-	}
-
-	public CustomAccountBean login(String userId, String password)
-			throws DAOException {
-		PreparedStatement selectCustomerProfileByUserId = null;
-		PreparedStatement updateCustomerLogin = null;
-		PreparedStatement selectCustomerLogin = null;
-		try {
-			selectCustomerProfileByUserId = sqlConnection
-					.prepareStatement(SQL_SELECT_CUSTOMER_PROFILE_BY_USERID);
-			selectCustomerProfileByUserId.setString(1, userId);
-			ResultSet customerProfileRS = selectCustomerProfileByUserId
-					.executeQuery();
-			if (customerProfileRS.next()) {
-				try {
-					String userPassword = customerProfileRS.getString(2);
-					if (userPassword.equals(password)) {
-						try {
-							updateCustomerLogin = sqlConnection
-									.prepareStatement(SQL_UPDATE_CUSTOMER_LOGIN);
-							updateCustomerLogin.setString(1, userId);
-							updateCustomerLogin.executeUpdate();
-							selectCustomerLogin = sqlConnection
-									.prepareStatement(SQL_SELECT_CUSTOMER_LOGIN);
-							selectCustomerLogin.setString(1, userId);
-							ResultSet rs = selectCustomerLogin.executeQuery();
-							if (rs.next()) {
-								try {
-									CustomAccountBean accountData = new CustomAccountBean(
-											rs.getInt(1), userId,
-											StockTraderUtility
-													.convertToCalendar(rs
-															.getDate(2)), rs
-													.getBigDecimal(3), rs
-													.getInt(4), rs
-													.getBigDecimal(5),
-											StockTraderUtility
-													.convertToCalendar(rs
-															.getDate(6)), rs
-													.getInt(7) + 1);
-									return accountData;
-								} finally {
-									try {
-										rs.close();
-									} catch (SQLException e) {
-										logger.debug("", e);
-									}
-								}
-							}
-						} catch (SQLException e) {
-							throw new DAOException("", e);
-						} finally {
-							if (updateCustomerLogin != null) {
-								try {
-									updateCustomerLogin.close();
-								} catch (SQLException e) {
-									logger.debug("", e);
-								}
-							}
-							if (selectCustomerLogin != null) {
-								try {
-									selectCustomerLogin.close();
-								} catch (SQLException e) {
-									logger.debug("", e);
-								}
-							}
-						}
-					}
-				} finally {
-					try {
-						customerProfileRS.close();
-					} catch (SQLException e) {
-						logger.debug("", e);
-					}
-				}
-			}
-
-		} catch (SQLException e) {
-			throw new DAOException("", e);
-		} finally {
-			if (selectCustomerProfileByUserId != null) {
-				try {
-					selectCustomerProfileByUserId.close();
-				} catch (SQLException e) {
-					logger.debug("", e);
-				}
-			}
-		}
-		return null;
-	}
-
-	public void logoutUser(String userId) throws DAOException {
-		PreparedStatement updateLogout = null;
-		try {
-			updateLogout = sqlConnection.prepareStatement(SQL_UPDATE_LOGOUT);
-			updateLogout.setString(1, userId);
-			updateLogout.executeUpdate();
-		} catch (SQLException e) {
-			throw new DAOException("", e);
-		} finally {
-			if (updateLogout != null) {
-				try {
-					updateLogout.close();
-				} catch (SQLException e) {
-					logger.debug("", e);
-				}
-			}
-		}
-	}
-
-	public CustomAccountBean getCustomerByUserId(String userId)
-			throws DAOException {
-		PreparedStatement getCustomerByUserId = null;
-
-		try {
-			getCustomerByUserId = sqlConnection
-					.prepareStatement(SQL_SELECT_GET_CUSTOMER_BY_USERID);
-			getCustomerByUserId.setString(1, userId);
-			ResultSet rs = getCustomerByUserId.executeQuery();
-			if (rs.next()) {
-				try {
-					CustomAccountBean bean = new CustomAccountBean(
-							rs.getInt(1), rs.getString(2), StockTraderUtility
-									.convertToCalendar(rs.getDate(3)), rs
-									.getBigDecimal(4), rs.getInt(5), rs
-									.getBigDecimal(6), StockTraderUtility
-									.convertToCalendar(rs.getDate(7)), rs
-									.getInt(8));
-					return bean;
-				} finally {
-					try {
-						rs.close();
-					} catch (SQLException e) {
-						logger.debug("", e);
-					}
-				}
-			}
-		} catch (SQLException e) {
-			throw new DAOException("", e);
-		} finally {
-			if (getCustomerByUserId != null) {
-				try {
-					getCustomerByUserId.close();
-				} catch (SQLException e) {
-					logger.debug("", e);
-				}
-			}
-		}
-		return null;
-	}
-
-	public CustomAccountProfileBean getAccountProfileData(String userId)
-			throws DAOException {
-
-		PreparedStatement customerProfileByUserId = null;
-		try {
-			customerProfileByUserId = sqlConnection
-					.prepareStatement(SQL_SELECT_CUSTOMER_PROFILE_BY_USERID);
-			customerProfileByUserId.setString(1, userId);
-			ResultSet rs = customerProfileByUserId.executeQuery();
-			if (rs.next()) {
-				try {
-					CustomAccountProfileBean accountProfileDataBean = new CustomAccountProfileBean(
-							rs.getString(1), rs.getString(2), rs.getString(3),
-							rs.getString(4), rs.getString(5), rs.getString(6));
-					return accountProfileDataBean;
-				} finally {
-					try {
-						rs.close();
-					} catch (SQLException e) {
-						logger.debug("", e);
-					}
-				}
-			}
-		} catch (SQLException e) {
-			throw new DAOException("", e);
-		} finally {
-			if (customerProfileByUserId != null) {
-				try {
-					customerProfileByUserId.close();
-				} catch (SQLException e) {
-					logger.debug("", e);
-				}
-			}
-		}
-		return null;
-	}
-
-	public List<CustomOrderBean> getOrders(String userId, boolean top,
-			int maxTop, int maxDefault) throws DAOException {
-		PreparedStatement selectOrdersById = null;
-		try {
-			String sqlQuery;
-			if (top) {
-				sqlQuery = "Select Top " + maxTop + SQL_SELECT_ORDERS_BY_ID;
-			} else {
-				sqlQuery = "Select Top " + maxDefault + SQL_SELECT_ORDERS_BY_ID;
-			}
-			selectOrdersById = sqlConnection.prepareStatement(sqlQuery);
-			selectOrdersById.setString(1, userId);
-			ResultSet rs = selectOrdersById.executeQuery();
-			List<CustomOrderBean> orders = new ArrayList<CustomOrderBean>();
-
-			try {
-				while (rs.next()) {
-					int orderId = rs.getInt(1);
-					Calendar openDate = StockTraderUtility.convertToCalendar(rs
-							.getDate(4));
-					Calendar completionDate = null;
-					try {
-						if (rs.getDate(5) != null) {
-							completionDate = StockTraderUtility
-									.convertToCalendar(rs.getDate(5));
-						} else {
-							completionDate = Calendar.getInstance();
-							completionDate.setTimeInMillis(0);
-						}
-					} catch (SQLException e) {
-						logger.debug("", e);
-						completionDate = Calendar.getInstance();
-						completionDate.setTimeInMillis(0);
-					}
-
-					CustomOrderBean orderBean = new CustomOrderBean(orderId, rs
-							.getString(2), rs.getString(3), openDate,
-							completionDate, rs.getDouble(6), rs
-									.getBigDecimal(7), rs.getBigDecimal(8), rs
-									.getString(9));
-					orders.add(orderBean);
-				}
-
-			} finally {
-				try {
-					rs.close();
-				} catch (SQLException e) {
-					logger.debug("", e);
-				}
-			}
-			return orders;
-
-		} catch (SQLException e) {
-			throw new DAOException("", e);
-		} finally {
-			if (selectOrdersById != null) {
-				try {
-					selectOrdersById.close();
-				} catch (SQLException e) {
-					logger.debug("", e);
-				}
-			}
-		}
-	}
-
-	public List<CustomOrderBean> getClosedOrders(String userId)
-			throws DAOException {
-		PreparedStatement selectClosedOrders = null;
-		PreparedStatement updateClosedOrders = null;
-		try {
-			selectClosedOrders = sqlConnection
-					.prepareStatement(SQL_SELECT_CLOSED_ORDERS);
-			selectClosedOrders.setString(1, userId);
-			ResultSet rs = selectClosedOrders.executeQuery();
-			List<CustomOrderBean> closedOrders = new ArrayList<CustomOrderBean>();
-
-			try {
-				while (rs.next()) {
-					int orderId = rs.getInt(1);
-					Calendar openDate = StockTraderUtility.convertToCalendar(rs
-							.getDate(4));
-					Calendar completionDate = null;
-					try {
-						completionDate = StockTraderUtility
-								.convertToCalendar(rs.getDate(5));
-					} catch (SQLException e) {
-						logger.debug("", e);
-						completionDate = Calendar.getInstance();
-						completionDate.setTimeInMillis(0);
-					}
-					CustomOrderBean closedOrderBean = new CustomOrderBean(
-							orderId, rs.getString(2), rs.getString(3),
-							openDate, completionDate, rs.getDouble(6), rs
-									.getBigDecimal(7), rs.getBigDecimal(8), rs
-									.getString(9));
-					closedOrderBean
-							.setOrderStatus(StockTraderUtility.ORDER_STATUS_CLOSED);
-					closedOrders.add(closedOrderBean);
-				}
-			} finally {
-				try {
-					rs.close();
-				} catch (SQLException e) {
-					logger.debug("", e);
-				}
-			}
-
-			if (!closedOrders.isEmpty()) {
-				updateClosedOrders = sqlConnection
-						.prepareStatement(SQL_UPDATE_CLOSED_ORDERS);
-				updateClosedOrders.setString(1, userId);
-				updateClosedOrders.executeUpdate();
-			}
-
-			return closedOrders;
-		} catch (SQLException e) {
-			throw new DAOException("", e);
-		} finally {
-			if (selectClosedOrders != null) {
-				try {
-					selectClosedOrders.close();
-				} catch (SQLException e) {
-					logger.debug("", e);
-				}
-			}
-			if (updateClosedOrders != null) {
-				try {
-					selectClosedOrders.close();
-				} catch (SQLException e) {
-					logger.debug("", e);
-				}
-			}
-
-		}
-	}
-
-	public void insertAccountProfile(CustomAccountProfileBean accountProfileBean)
-			throws DAOException {
-		PreparedStatement insertAccountProfile = null;
-		try {
-			insertAccountProfile = sqlConnection
-					.prepareStatement(SQL_INSERT_ACCOUNT_PROFILE);
-			insertAccountProfile.setString(1, accountProfileBean.getAddress());
-			insertAccountProfile.setString(2, accountProfileBean.getPassword());
-			insertAccountProfile.setString(3, accountProfileBean.getUserID());
-			insertAccountProfile.setString(4, accountProfileBean.getEmail());
-			insertAccountProfile.setString(5, accountProfileBean
-					.getCreditCard());
-			insertAccountProfile.setString(6, accountProfileBean.getFullName());
-			insertAccountProfile.executeUpdate();
-		} catch (SQLException e) {
-			throw new DAOException("", e);
-		} finally {
-			if (insertAccountProfile != null) {
-				try {
-					insertAccountProfile.close();
-				} catch (SQLException e) {
-					logger.debug("", e);
-				}
-			}
-		}
-	}
-
-	public void insertAccount(CustomAccountBean accountBean)
-			throws DAOException {
-		PreparedStatement insertAccount = null;
-		try {
-			insertAccount = sqlConnection.prepareStatement(SQL_INSERT_ACCOUNT);
-			insertAccount.setBigDecimal(1, accountBean.getOpenBalance());
-			insertAccount.setInt(2, accountBean.getLogoutCount());
-			insertAccount.setBigDecimal(3, accountBean.getBalance());
-			insertAccount.setDate(4, StockTraderUtility
-					.convertToSqlDate(accountBean.getLastLogin()));
-			insertAccount.setInt(5, accountBean.getLoginCount());
-			insertAccount.setString(6, accountBean.getUserID());
-			insertAccount.executeUpdate();
-
-		} catch (SQLException e) {
-			throw new DAOException("", e);
-
-		} finally {
-			if (insertAccount != null) {
-				try {
-					insertAccount.close();
-				} catch (SQLException e) {
-					logger.debug("", e);
-				}
-			}
-		}
-	}
-
-	public CustomAccountProfileBean update(
-			CustomAccountProfileBean customerAccountProfile)
-			throws DAOException {
-		PreparedStatement updateAccountProfile = null;
-		try {
-			updateAccountProfile = sqlConnection
-					.prepareStatement(SQL_UPDATE_ACCOUNT_PROFILE);
-			updateAccountProfile.setString(1, customerAccountProfile
-					.getAddress());
-			updateAccountProfile.setString(2, customerAccountProfile
-					.getPassword());
-			updateAccountProfile
-					.setString(3, customerAccountProfile.getEmail());
-			updateAccountProfile.setString(4, customerAccountProfile
-					.getCreditCard());
-			updateAccountProfile.setString(5, customerAccountProfile
-					.getFullName());
-			updateAccountProfile.setString(6, customerAccountProfile
-					.getUserID());
-			updateAccountProfile.executeUpdate();
-			return customerAccountProfile;
-		} catch (SQLException e) {
-			throw new DAOException("", e);
-		} finally {
-			if (updateAccountProfile != null) {
-				try {
-					updateAccountProfile.close();
-				} catch (SQLException e) {
-					logger.debug("", e);
-				}
-			}
-		}
-	}
-
-	public List<CustomHoldingBean> getHoldings(String userID)
-			throws DAOException {
-		PreparedStatement selectHoldings = null;
-		try {
-			selectHoldings = sqlConnection
-					.prepareStatement(SQL_SELECT_HOLDINGS);
-			selectHoldings.setString(1, userID);
-			ResultSet rs = selectHoldings.executeQuery();
-			List<CustomHoldingBean> holdings = new ArrayList<CustomHoldingBean>();
-			try {
-				while (rs.next()) {
-					CustomHoldingBean holding = new CustomHoldingBean(
-							rs.getInt(1),
-							rs.getDouble(2),
-							rs.getBigDecimal(3),
-							StockTraderUtility.convertToCalendar(rs.getDate(4)),
-							rs.getString(5), rs.getInt(6));
-					holdings.add(holding);
-				}
-			} finally {
-				try {
-					rs.close();
-				} catch (SQLException e) {
-					logger.debug("", e);
-				}
-			}
-			return holdings;
-		} catch (SQLException e) {
-			throw new DAOException("", e);
-		} finally {
-			if (selectHoldings != null) {
-				try {
-					selectHoldings.close();
-				} catch (SQLException e) {
-					logger.debug("", e);
-				}
-			}
-		}
-	}
+    private static final String SQL_DEBIT_ACCOUNT = "UPDATE dbo.ACCOUNT WITH (ROWLOCK) SET BALANCE=(BALANCE-?) WHERE ACCOUNTID=?";
+    private static final String SQL_SELECT_HOLDING_LOCK = "Set NOCOUNT ON; SELECT dbo.HOLDING.ACCOUNT_ACCOUNTID, HOLDING.HOLDINGID, HOLDING.QUANTITY, HOLDING.PURCHASEPRICE, HOLDING.PURCHASEDATE, HOLDING.QUOTE_SYMBOL FROM dbo.HOLDING WITH (ROWLOCK) INNER JOIN ORDERS ON HOLDING.HOLDINGID = ORDERS.HOLDING_HOLDINGID WHERE (ORDERS.ORDERID = ?)";
+    private static final String SQL_SELECT_HOLDING_NOLOCK = "Set NOCOUNT ON; SELECT HOLDING.ACCOUNT_ACCOUNTID, HOLDING.QUANTITY, HOLDING.PURCHASEPRICE, HOLDING.PURCHASEDATE, HOLDING.QUOTE_SYMBOL FROM HOLDING WITH(NOLOCK) WHERE HOLDING.HOLDINGID=? AND HOLDING.ACCOUNT_ACCOUNTID = (SELECT ACCOUNTID FROM dbo.ACCOUNT WHERE PROFILE_USERID = ?)";
+    private static final String SQL_SELECT_CUSTOMER_PROFILE_BY_USERID = "Set NOCOUNT ON; SELECT accountprofile.USERID, accountprofile.PASSWORD, accountprofile.FULLNAME, accountprofile.ADDRESS, accountprofile.EMAIL, accountprofile.CREDITCARD FROM dbo.accountprofile WITH (NOLOCK) WHERE accountprofile.USERID = ?";
+    private static final String SQL_UPDATE_CUSTOMER_LOGIN = "UPDATE dbo.account WITH (ROWLOCK) SET LOGINCOUNT = (LOGINCOUNT + 1), LASTLOGIN = CURRENT_TIMESTAMP where PROFILE_USERID = ?";
+    private static final String SQL_SELECT_CUSTOMER_LOGIN = "SELECT account.ACCOUNTID, account.CREATIONDATE, account.OPENBALANCE, account.LOGOUTCOUNT, account.BALANCE, account.LASTLOGIN, account.LOGINCOUNT FROM dbo.account WITH (ROWLOCK) WHERE account.PROFILE_USERID = ?";
+    private static final String SQL_UPDATE_LOGOUT = "UPDATE dbo.account WITH (ROWLOCK) SET LOGOUTCOUNT = (LOGOUTCOUNT + 1) where PROFILE_USERID= ?";
+    private static final String SQL_SELECT_GET_CUSTOMER_BY_USERID = "Set NOCOUNT ON; SELECT account.ACCOUNTID, account.PROFILE_USERID, account.CREATIONDATE, account.OPENBALANCE, account.LOGOUTCOUNT, account.BALANCE, account.LASTLOGIN, account.LOGINCOUNT FROM account WHERE account.PROFILE_USERID = ?";
+    private static final String SQL_SELECT_ORDERS_BY_ID = " o.ORDERID, o.ORDERTYPE, o.ORDERSTATUS, o.OPENDATE, o.COMPLETIONDATE, o.QUANTITY, o.PRICE, o.ORDERFEE, o.QUOTE_SYMBOL from dbo.orders o where o.account_accountid = (select a.accountid from dbo.account a WITH (NOLOCK)  where a.profile_userid = ?) ORDER BY o.ORDERID DESC";
+    private static final String SQL_SELECT_CLOSED_ORDERS = "Set NOCOUNT ON; SELECT ORDERID, ORDERTYPE, ORDERSTATUS, COMPLETIONDATE, OPENDATE, QUANTITY, PRICE, ORDERFEE, QUOTE_SYMBOL FROM dbo.orders WHERE ACCOUNT_ACCOUNTID = (select accountid from dbo.account WITH(NOLOCK) where profile_userid = ?) AND ORDERSTATUS = 'closed'";
+    private static final String SQL_UPDATE_CLOSED_ORDERS = "UPDATE dbo.orders SET ORDERSTATUS = 'completed' where ORDERSTATUS = 'closed' AND ACCOUNT_ACCOUNTID = (select accountid from dbo.account WITH (NOLOCK) where profile_userid = ?)";
+    private static final String SQL_INSERT_ACCOUNT_PROFILE = "INSERT INTO dbo.accountprofile VALUES (?, ?, ?, ?, ?, ?)";
+    private static final String SQL_INSERT_ACCOUNT = "INSERT INTO dbo.account (CREATIONDATE, OPENBALANCE, LOGOUTCOUNT, BALANCE, LASTLOGIN, LOGINCOUNT, PROFILE_USERID) VALUES (GetDate(), ?, ?, ?, ?, ?, ?); SELECT ID=@@IDENTITY";
+    private static final String SQL_UPDATE_ACCOUNT_PROFILE = "UPDATE dbo.accountprofile WITH (ROWLOCK) SET ADDRESS=?, PASSWORD=?, EMAIL=?, CREDITCARD=?, FULLNAME=? WHERE USERID=?";
+    private static final String SQL_SELECT_HOLDINGS = "SELECT HOLDING.HOLDINGID, HOLDING.QUANTITY, HOLDING.PURCHASEPRICE, HOLDING.PURCHASEDATE, HOLDING.QUOTE_SYMBOL,HOLDING.ACCOUNT_ACCOUNTID  from dbo.holding WHERE HOLDING.ACCOUNT_ACCOUNTID = (SELECT ACCOUNTID FROM ACCOUNT WHERE PROFILE_USERID = ?) ORDER BY HOLDING.HOLDINGID DESC";
+
+    public MSSQLCustomerDAO(Connection sqlConnection) throws DAOException {
+        super(sqlConnection);
+    }
+
+    public CustomHoldingBean getHoldingForUpdate(int orderId) throws DAOException {
+        if (logger.isDebugEnabled()) {
+            logger.debug("MSSQLCustomerDAO.getHoldingForUpdate(int)\nOrder ID :" + orderId);
+        }
+
+        CustomHoldingBean holding = null;
+        PreparedStatement selectHoldingLockStat = null;
+        try {
+            selectHoldingLockStat = sqlConnection.prepareStatement(SQL_SELECT_HOLDING_LOCK);
+            selectHoldingLockStat.setInt(1, orderId);
+            ResultSet rs = selectHoldingLockStat.executeQuery();
+            if (rs.next()) {
+                try {
+                    holding = new CustomHoldingBean(
+                            rs.getInt(1),
+                            rs.getInt(2),
+                            rs.getDouble(3),
+                            rs.getBigDecimal(4),
+                            StockTraderUtility.convertToCalendar(rs.getDate(5)),
+                            rs.getString(6));
+                    return holding;
+                } finally {
+                    try {
+                        rs.close();
+                    } catch (SQLException e) {
+                        logger.debug("", e);
+                    }
+                }
+            }
+        } catch (SQLException e) {
+            throw new DAOException("Exception is thrown when selecting the holding entry for order ID :" + orderId, e);
+        } finally {
+            if (selectHoldingLockStat != null) {
+                try {
+                    selectHoldingLockStat.close();
+                } catch (SQLException e) {
+                    logger.debug("", e);
+                }
+            }
+        }
+        return holding;
+    }
+
+    public CustomHoldingBean getHolding(String userId, int holdingID)
+            throws DAOException {
+        if (logger.isDebugEnabled()) {
+            logger.debug("MSSQLCustomerDAO.getHolding(String,int)\nUserID :" + userId + "\nOrder ID :" + holdingID);
+        }
+        CustomHoldingBean holding = null;
+        PreparedStatement selectHoldingNoLockStat = null;
+        try {
+            selectHoldingNoLockStat = sqlConnection.prepareStatement(SQL_SELECT_HOLDING_NOLOCK);
+            selectHoldingNoLockStat.setInt(0, holdingID);
+            selectHoldingNoLockStat.setString(1, userId);
+
+            ResultSet rs = selectHoldingNoLockStat.executeQuery();
+            if (rs.next()) {
+                try {
+                    holding = new CustomHoldingBean(
+                            rs.getInt(1),
+                            rs.getInt(2),
+                            rs.getDouble(3),
+                            rs.getBigDecimal(4),
+                            StockTraderUtility.convertToCalendar(rs.getDate(5)),
+                            rs.getString(6));
+                    return holding;
+                } finally {
+                    try {
+                        rs.close();
+                    } catch (SQLException e) {
+                        logger.debug("", e);
+                    }
+                }
+            }
+        } catch (SQLException e) {
+            logger.debug("", e);
+            throw new DAOException("Exception is thrown when selecting the holding entry for userID :" + userId + " and orderID :" + holdingID, e);
+
+        } finally {
+            if (selectHoldingNoLockStat != null) {
+                try {
+                    selectHoldingNoLockStat.close();
+                } catch (SQLException e) {
+                    logger.debug("", e);
+                }
+            }
+        }
+        return holding;
+    }
+
+    public void updateAccountBalance(int accountId, BigDecimal total) throws DAOException {
+        if (logger.isDebugEnabled()) {
+            logger.debug("MSSQLCustomerDAO.updateAccoutBalance(int,BigDecimal)\n Account ID :" + accountId + "\nTotal :" + total);
+        }
+        PreparedStatement debitAccountStat = null;
+        try {
+            debitAccountStat = sqlConnection.prepareStatement(SQL_DEBIT_ACCOUNT);
+            debitAccountStat.setBigDecimal(1, total);
+            debitAccountStat.setInt(2, accountId);
+            debitAccountStat.executeUpdate();
+
+        } catch (SQLException e) {
+            throw new DAOException("Excpetion is thrown when updating the account balance for accountID :" + accountId + " total :" + total, e);
+        } finally {
+            if (debitAccountStat != null) {
+                try {
+                    debitAccountStat.close();
+                } catch (SQLException e) {
+                    logger.debug("", e);
+                }
+            }
+        }
+    }
+
+    public CustomAccountBean login(String userId, String password) throws DAOException {
+        PreparedStatement selectCustomerProfileByUserId = null;
+        PreparedStatement updateCustomerLogin = null;
+        PreparedStatement selectCustomerLogin = null;
+        try {
+            selectCustomerProfileByUserId = sqlConnection.prepareStatement(SQL_SELECT_CUSTOMER_PROFILE_BY_USERID);
+            selectCustomerProfileByUserId.setString(1, userId);
+            ResultSet customerProfileRS = selectCustomerProfileByUserId.executeQuery();
+            if (customerProfileRS.next()) {
+                try {
+                    String userPassword = customerProfileRS.getString(2);
+                    if (userPassword.equals(password)) {
+                        try {
+                            updateCustomerLogin = sqlConnection.prepareStatement(SQL_UPDATE_CUSTOMER_LOGIN);
+                            updateCustomerLogin.setString(1, userId);
+                            updateCustomerLogin.executeUpdate();
+                            selectCustomerLogin = sqlConnection.prepareStatement(SQL_SELECT_CUSTOMER_LOGIN);
+                            selectCustomerLogin.setString(1, userId);
+                            ResultSet rs = selectCustomerLogin.executeQuery();
+                            if (rs.next()) {
+                                try {
+                                    CustomAccountBean accountData = new CustomAccountBean(
+                                            rs.getInt(1), userId,
+                                            StockTraderUtility
+                                                    .convertToCalendar(rs
+                                                    .getDate(2)), rs
+                                                    .getBigDecimal(3), rs
+                                                    .getInt(4), rs
+                                                    .getBigDecimal(5),
+                                            StockTraderUtility
+                                                    .convertToCalendar(rs
+                                                    .getDate(6)), rs
+                                                    .getInt(7) + 1);
+                                    return accountData;
+                                } finally {
+                                    try {
+                                        rs.close();
+                                    } catch (SQLException e) {
+                                        logger.debug("", e);
+                                    }
+                                }
+                            }
+                        } catch (SQLException e) {
+                            throw new DAOException("", e);
+                        } finally {
+                            if (updateCustomerLogin != null) {
+                                try {
+                                    updateCustomerLogin.close();
+                                } catch (SQLException e) {
+                                    logger.debug("", e);
+                                }
+                            }
+                            if (selectCustomerLogin != null) {
+                                try {
+                                    selectCustomerLogin.close();
+                                } catch (SQLException e) {
+                                    logger.debug("", e);
+                                }
+                            }
+                        }
+                    }
+                } finally {
+                    try {
+                        customerProfileRS.close();
+                    } catch (SQLException e) {
+                        logger.debug("", e);
+                    }
+                }
+            }
+
+        } catch (SQLException e) {
+            throw new DAOException("", e);
+        } finally {
+            if (selectCustomerProfileByUserId != null) {
+                try {
+                    selectCustomerProfileByUserId.close();
+                } catch (SQLException e) {
+                    logger.debug("", e);
+                }
+            }
+        }
+        return null;
+    }
+
+    public void logoutUser(String userId) throws DAOException {
+        PreparedStatement updateLogout = null;
+        try {
+            updateLogout = sqlConnection.prepareStatement(SQL_UPDATE_LOGOUT);
+            updateLogout.setString(1, userId);
+            updateLogout.executeUpdate();
+        } catch (SQLException e) {
+            throw new DAOException("", e);
+        } finally {
+            if (updateLogout != null) {
+                try {
+                    updateLogout.close();
+                } catch (SQLException e) {
+                    logger.debug("", e);
+                }
+            }
+        }
+    }
+
+    public CustomAccountBean getCustomerByUserId(String userId)
+            throws DAOException {
+        PreparedStatement getCustomerByUserId = null;
+
+        try {
+            getCustomerByUserId = sqlConnection.prepareStatement(SQL_SELECT_GET_CUSTOMER_BY_USERID);
+            getCustomerByUserId.setString(1, userId);
+            ResultSet rs = getCustomerByUserId.executeQuery();
+            if (rs.next()) {
+                try {
+                    CustomAccountBean bean = new CustomAccountBean(
+                            rs.getInt(1), rs.getString(2), StockTraderUtility
+                                    .convertToCalendar(rs.getDate(3)), rs
+                                    .getBigDecimal(4), rs.getInt(5), rs
+                                    .getBigDecimal(6), StockTraderUtility
+                                    .convertToCalendar(rs.getDate(7)), rs
+                                    .getInt(8));
+                    return bean;
+                } finally {
+                    try {
+                        rs.close();
+                    } catch (SQLException e) {
+                        logger.debug("", e);
+                    }
+                }
+            }
+        } catch (SQLException e) {
+            throw new DAOException("", e);
+        } finally {
+            if (getCustomerByUserId != null) {
+                try {
+                    getCustomerByUserId.close();
+                } catch (SQLException e) {
+                    logger.debug("", e);
+                }
+            }
+        }
+        return null;
+    }
+
+    public CustomAccountProfileBean getAccountProfileData(String userId)
+            throws DAOException {
+
+        PreparedStatement customerProfileByUserId = null;
+        try {
+            customerProfileByUserId = sqlConnection.prepareStatement(SQL_SELECT_CUSTOMER_PROFILE_BY_USERID);
+            customerProfileByUserId.setString(1, userId);
+            ResultSet rs = customerProfileByUserId.executeQuery();
+            if (rs.next()) {
+                try {
+                    CustomAccountProfileBean accountProfileDataBean = new CustomAccountProfileBean(
+                            rs.getString(1), rs.getString(2), rs.getString(3),
+                            rs.getString(4), rs.getString(5), rs.getString(6));
+                    return accountProfileDataBean;
+                } finally {
+                    try {
+                        rs.close();
+                    } catch (SQLException e) {
+                        logger.debug("", e);
+                    }
+                }
+            }
+        } catch (SQLException e) {
+            throw new DAOException("", e);
+        } finally {
+            if (customerProfileByUserId != null) {
+                try {
+                    customerProfileByUserId.close();
+                } catch (SQLException e) {
+                    logger.debug("", e);
+                }
+            }
+        }
+        return null;
+    }
+
+    public List<CustomOrderBean> getOrders(String userId, boolean top, int maxTop, int maxDefault) throws DAOException {
+        PreparedStatement selectOrdersById = null;
+        try {
+            String sqlQuery;
+            if (top) {
+                sqlQuery = "Select Top " + maxTop + SQL_SELECT_ORDERS_BY_ID;
+            } else {
+                sqlQuery = "Select Top " + maxDefault + SQL_SELECT_ORDERS_BY_ID;
+            }
+            selectOrdersById = sqlConnection.prepareStatement(sqlQuery);
+            selectOrdersById.setString(1, userId);
+            ResultSet rs = selectOrdersById.executeQuery();
+            List<CustomOrderBean> orders = new ArrayList<CustomOrderBean>();
+
+            try {
+                while (rs.next()) {
+                    int orderId = rs.getInt(1);
+                    Calendar openDate = StockTraderUtility.convertToCalendar(rs.getDate(4));
+                    Calendar completionDate = null;
+                    try {
+                        if (rs.getDate(5) != null) {
+                            completionDate = StockTraderUtility.convertToCalendar(rs.getDate(5));
+                        } else {
+                            completionDate = Calendar.getInstance();
+                            completionDate.setTimeInMillis(0);
+                        }
+                    } catch (SQLException e) {
+                        logger.debug("", e);
+                        completionDate = Calendar.getInstance();
+                        completionDate.setTimeInMillis(0);
+                    }
+
+                    CustomOrderBean orderBean = new CustomOrderBean(
+                            orderId,
+                            rs.getString(2),
+                            rs.getString(3),
+                            openDate,
+                            completionDate,
+                            rs.getDouble(6),
+                            rs.getBigDecimal(7),
+                            rs.getBigDecimal(8),
+                            rs.getString(9));
+                    orders.add(orderBean);
+                }
+
+            } finally {
+                try {
+                    rs.close();
+                } catch (SQLException e) {
+                    logger.debug("", e);
+                }
+            }
+            return orders;
+
+        } catch (SQLException e) {
+            throw new DAOException("", e);
+        } finally {
+            if (selectOrdersById != null) {
+                try {
+                    selectOrdersById.close();
+                } catch (SQLException e) {
+                    logger.debug("", e);
+                }
+            }
+        }
+    }
+
+    public List<CustomOrderBean> getClosedOrders(String userId)
+            throws DAOException {
+        PreparedStatement selectClosedOrders = null;
+        PreparedStatement updateClosedOrders = null;
+        try {
+            selectClosedOrders = sqlConnection.prepareStatement(SQL_SELECT_CLOSED_ORDERS);
+            selectClosedOrders.setString(1, userId);
+            ResultSet rs = selectClosedOrders.executeQuery();
+            List<CustomOrderBean> closedOrders = new ArrayList<CustomOrderBean>();
+
+            try {
+                while (rs.next()) {
+                    int orderId = rs.getInt(1);
+                    Calendar openDate = StockTraderUtility.convertToCalendar(rs.getDate(4));
+                    Calendar completionDate = null;
+                    try {
+                        completionDate = StockTraderUtility.convertToCalendar(rs.getDate(5));
+                    } catch (SQLException e) {
+                        logger.debug("", e);
+                        completionDate = Calendar.getInstance();
+                        completionDate.setTimeInMillis(0);
+                    }
+                    CustomOrderBean closedOrderBean = new CustomOrderBean(
+                            orderId, rs.getString(2), rs.getString(3),
+                            openDate, completionDate, rs.getDouble(6), rs
+                                    .getBigDecimal(7), rs.getBigDecimal(8), rs
+                                    .getString(9));
+                    closedOrderBean.setOrderStatus(StockTraderUtility.ORDER_STATUS_CLOSED);
+                    closedOrders.add(closedOrderBean);
+                }
+            } finally {
+                try {
+                    rs.close();
+                } catch (SQLException e) {
+                    logger.debug("", e);
+                }
+            }
+
+            if (!closedOrders.isEmpty()) {
+                updateClosedOrders = sqlConnection.prepareStatement(SQL_UPDATE_CLOSED_ORDERS);
+                updateClosedOrders.setString(1, userId);
+                updateClosedOrders.executeUpdate();
+            }
+
+            return closedOrders;
+        } catch (SQLException e) {
+            throw new DAOException("", e);
+        } finally {
+            if (selectClosedOrders != null) {
+                try {
+                    selectClosedOrders.close();
+                } catch (SQLException e) {
+                    logger.debug("", e);
+                }
+            }
+            if (updateClosedOrders != null) {
+                try {
+                    selectClosedOrders.close();
+                } catch (SQLException e) {
+                    logger.debug("", e);
+                }
+            }
+
+        }
+    }
+
+    public void insertAccountProfile(CustomAccountProfileBean accountProfileBean) throws DAOException {
+        PreparedStatement insertAccountProfile = null;
+        try {
+            insertAccountProfile = sqlConnection.prepareStatement(SQL_INSERT_ACCOUNT_PROFILE);
+            insertAccountProfile.setString(1, accountProfileBean.getAddress());
+            insertAccountProfile.setString(2, accountProfileBean.getPassword());
+            insertAccountProfile.setString(3, accountProfileBean.getUserID());
+            insertAccountProfile.setString(4, accountProfileBean.getEmail());
+            insertAccountProfile.setString(5, accountProfileBean.getCreditCard());
+            insertAccountProfile.setString(6, accountProfileBean.getFullName());
+            insertAccountProfile.executeUpdate();
+        } catch (SQLException e) {
+            throw new DAOException("", e);
+        } finally {
+            if (insertAccountProfile != null) {
+                try {
+                    insertAccountProfile.close();
+                } catch (SQLException e) {
+                    logger.debug("", e);
+                }
+            }
+        }
+    }
+
+    public void insertAccount(CustomAccountBean accountBean) throws DAOException {
+        PreparedStatement insertAccount = null;
+        try {
+            insertAccount = sqlConnection.prepareStatement(SQL_INSERT_ACCOUNT);
+            insertAccount.setBigDecimal(1, accountBean.getOpenBalance());
+            insertAccount.setInt(2, accountBean.getLogoutCount());
+            insertAccount.setBigDecimal(3, accountBean.getBalance());
+            insertAccount.setDate(4, StockTraderUtility.convertToSqlDate(accountBean.getLastLogin()));
+            insertAccount.setInt(5, accountBean.getLoginCount());
+            insertAccount.setString(6, accountBean.getUserID());
+            insertAccount.executeUpdate();
+
+        } catch (SQLException e) {
+            throw new DAOException("", e);
+
+        } finally {
+            if (insertAccount != null) {
+                try {
+                    insertAccount.close();
+                } catch (SQLException e) {
+                    logger.debug("", e);
+                }
+            }
+        }
+    }
+
+    public CustomAccountProfileBean update(CustomAccountProfileBean customerAccountProfile) throws DAOException {
+        PreparedStatement updateAccountProfile = null;
+        try {
+            updateAccountProfile = sqlConnection.prepareStatement(SQL_UPDATE_ACCOUNT_PROFILE);
+            updateAccountProfile.setString(1, customerAccountProfile.getAddress());
+            updateAccountProfile.setString(2, customerAccountProfile.getPassword());
+            updateAccountProfile.setString(3, customerAccountProfile.getEmail());
+            updateAccountProfile.setString(4, customerAccountProfile.getCreditCard());
+            updateAccountProfile.setString(5, customerAccountProfile.getFullName());
+            updateAccountProfile.setString(6, customerAccountProfile.getUserID());
+            updateAccountProfile.executeUpdate();
+            return customerAccountProfile;
+        } catch (SQLException e) {
+            throw new DAOException("", e);
+        } finally {
+            if (updateAccountProfile != null) {
+                try {
+                    updateAccountProfile.close();
+                } catch (SQLException e) {
+                    logger.debug("", e);
+                }
+            }
+        }
+    }
+
+    public List<CustomHoldingBean> getHoldings(String userID) throws DAOException {
+        PreparedStatement selectHoldings = null;
+        try {
+            selectHoldings = sqlConnection.prepareStatement(SQL_SELECT_HOLDINGS);
+            selectHoldings.setString(1, userID);
+            ResultSet rs = selectHoldings.executeQuery();
+            List<CustomHoldingBean> holdings = new ArrayList<CustomHoldingBean>();
+            try {
+                while (rs.next()) {
+                    CustomHoldingBean holding = new CustomHoldingBean(
+                            rs.getInt(1),
+                            rs.getDouble(2),
+                            rs.getBigDecimal(3),
+                            StockTraderUtility.convertToCalendar(rs.getDate(4)),
+                            rs.getString(5), rs.getInt(6));
+                    holdings.add(holding);
+                }
+            } finally {
+                try {
+                    rs.close();
+                } catch (SQLException e) {
+                    logger.debug("", e);
+                }
+            }
+            return holdings;
+        } catch (SQLException e) {
+            throw new DAOException("", e);
+        } finally {
+            if (selectHoldings != null) {
+                try {
+                    selectHoldings.close();
+                } catch (SQLException e) {
+                    logger.debug("", e);
+                }
+            }
+        }
+    }
 }

Modified: incubator/stonehenge/trunk/stocktrader/wsas/common/src/org/apache/stonehenge/stocktrader/mssql/MSSQLDAOFactory.java
URL: http://svn.apache.org/viewvc/incubator/stonehenge/trunk/stocktrader/wsas/common/src/org/apache/stonehenge/stocktrader/mssql/MSSQLDAOFactory.java?rev=769245&r1=769244&r2=769245&view=diff
==============================================================================
--- incubator/stonehenge/trunk/stocktrader/wsas/common/src/org/apache/stonehenge/stocktrader/mssql/MSSQLDAOFactory.java (original)
+++ incubator/stonehenge/trunk/stocktrader/wsas/common/src/org/apache/stonehenge/stocktrader/mssql/MSSQLDAOFactory.java Tue Apr 28 05:15:22 2009
@@ -36,21 +36,15 @@
 import org.apache.stonehenge.stocktrader.util.StockTraderUtility;
 
 public class MSSQLDAOFactory extends DAOFactory {
-	public static final String PROP_MSSQL_DB_HOST = "org.apache.stonehenge.stocktrader.mssql.MSSQLDAOFactory.host";
-	public static final String PROP_MSSQL_DB_PORT = "org.apache.stonehenge.stocktrader.mssql.MSSQLDAOFactory.port";
-	public static final String PROP_MSSQL_DB_NAME = "org.apache.stonehenge.stocktrader.mssql.MSSQLDAOFactory.db";
-	public static final String PROP_MSSQL_DB_USER = "org.apache.stonehenge.stocktrader.mssql.MSSQLDAOFactory.user";
-	public static final String PROP_MSSQL_PASSWORD = "org.apache.stonehenge.stocktrader.mssql.MSSQLDAOFactory.password";
 
 	private static Log logger = LogFactory.getLog(MSSQLDAOFactory.class);
 	private static MSSQLDAOFactory self = null;
 
-	private Properties prop = null;
 	private Connection sqlConnection = null;
 
 	private String connection = null;
 
-	static {
+    static {
 		try {
 			Class.forName("net.sourceforge.jtds.jdbc.Driver");
 		} catch (ClassNotFoundException e) {
@@ -75,9 +69,7 @@
 			return orderDAO;
 		} catch (SQLException e) {
 			logger.debug("", e);
-			throw new DAOException(
-					"Exception was thrown when instantiating MSSQLOrderDAO object",
-					e);
+			throw new DAOException("Exception was thrown when instantiating MSSQLOrderDAO object", e);
 		}
 	}
 
@@ -88,70 +80,41 @@
 			return customerDAO;
 		} catch (SQLException e) {
 			logger.debug("", e);
-			throw new DAOException(
-					"Exception was thrown when instantiating a MSSQLCustomerDAO",
-					e);
+			throw new DAOException("Exception was thrown when instantiating a MSSQLCustomerDAO", e);
 		}
 	}
 
 	public MarketSummaryDAO getMarketSummaryDAO() throws DAOException {
 		logger.debug("MSSQLDAOFactory.getOrderDAO");
 		try {
-			MarketSummaryDAO marketSummaryDAO = new MSSQLMarketSummaryDAO(
-					getConnection());
+			MarketSummaryDAO marketSummaryDAO = new MSSQLMarketSummaryDAO(getConnection());
 			return marketSummaryDAO;
 		} catch (SQLException e) {
 			logger.debug("", e);
-			throw new DAOException(
-					"Exception was thrown when instantiating a MarketSummaryDAO",
-					e);
+			throw new DAOException("Exception was thrown when instantiating a MarketSummaryDAO", e);
 		}
 	}
 
 	private String getConnectionString() {
 		if (connection == null) {
-			prop = new Properties();
-			MessageContext messageContext = MessageContext
-					.getCurrentMessageContext();
-			if (messageContext != null) {
-				AxisService service = messageContext.getAxisService();
-				ClassLoader serviceClassLoader = service.getClassLoader();
-				InputStream is = serviceClassLoader
-						.getResourceAsStream(StockTraderUtility.MSSQL_DB_PROPERRTIES_FILE);
-				if (is != null) {
-					try {
-						prop.load(is);
-					} catch (IOException e) {
-						logger
-								.debug(
-										"Unable to load mssql-db properties file and using [jdbc:jtds:sqlserver://highlander:1433/StockTraderDB;user=trade;password=trade;] as the default connection",
-										e);
-					}
-				} else {
-					logger
-							.debug("Unable to load mssql-db properties file and using [jdbc:jtds:sqlserver://highlander:1433/StockTraderDB;user=trade;password=trade;] as the default connection");
-
-				}
-			}
-			
+            loadProperties();
 			if (prop == null) {
 				connection = "jdbc:jtds:sqlserver://highlander:1433/StockTraderDB;user=trade;password=trade";
 			} else {
 				StringBuffer buf = new StringBuffer();
 				buf.append("jdbc:jtds:sqlserver://");
-				buf.append(prop.getProperty(PROP_MSSQL_DB_HOST));
-				buf.append(":" + prop.getProperty(PROP_MSSQL_DB_PORT));
-				buf.append("/" + prop.getProperty(PROP_MSSQL_DB_NAME));
-				buf.append(";user=" + prop.getProperty(PROP_MSSQL_DB_USER));
-				buf.append(";password=" + prop.getProperty(PROP_MSSQL_PASSWORD));
+				buf.append(prop.getProperty(PROP_DB_HOST));
+				buf.append(":" + prop.getProperty(PROP_DB_PORT));
+				buf.append("/" + prop.getProperty(PROP_DB_NAME));
+				buf.append(";user=" + prop.getProperty(PROP_DB_USER));
+				buf.append(";password=" + prop.getProperty(PROP_DB_PASSWORD));
 				buf.append(";");
 				connection = buf.toString();
 			}
 		}
 		
 		if (logger.isDebugEnabled()) {
-			logger.debug("MSSQLDAOFactory.getConnectionString()\nConnection :"
-					+ connection);
+			logger.debug("MSSQLDAOFactory.getConnectionString()\nConnection :" + connection);
 		}
 		return connection;
 	}

Modified: incubator/stonehenge/trunk/stocktrader/wsas/common/src/org/apache/stonehenge/stocktrader/mssql/MSSQLMarketSummaryDAO.java
URL: http://svn.apache.org/viewvc/incubator/stonehenge/trunk/stocktrader/wsas/common/src/org/apache/stonehenge/stocktrader/mssql/MSSQLMarketSummaryDAO.java?rev=769245&r1=769244&r2=769245&view=diff
==============================================================================
--- incubator/stonehenge/trunk/stocktrader/wsas/common/src/org/apache/stonehenge/stocktrader/mssql/MSSQLMarketSummaryDAO.java (original)
+++ incubator/stonehenge/trunk/stocktrader/wsas/common/src/org/apache/stonehenge/stocktrader/mssql/MSSQLMarketSummaryDAO.java Tue Apr 28 05:15:22 2009
@@ -37,8 +37,7 @@
 
 public class MSSQLMarketSummaryDAO extends AbstractMSSQLDAO implements
 		MarketSummaryDAO {
-	private static final Log logger = LogFactory
-			.getLog(MSSQLMarketSummaryDAO.class);
+	private static final Log logger = LogFactory.getLog(MSSQLMarketSummaryDAO.class);
 
 	private static final String SQL_SELECT_QUOTE = "Set NOCOUNT ON; SELECT symbol, companyname, volume, price, open1, low, high, change1 from dbo.quote with (ROWLOCK) where symbol = ?";
 	private static final String SQL_SELECT_QUOTE_NOLOCK = "Set NOCOUNT ON; SELECT symbol, companyname, volume, price, open1, low, high, change1 from dbo.quote with (NOLOCK) where symbol = ?";
@@ -56,24 +55,26 @@
 
 	public CustomQuoteBean getQuote(String symbol) throws DAOException {
 		if (logger.isDebugEnabled()) {
-			logger.debug("MarketSummaryDAO.getQouteForUpdate(String)\nSymbol :"
-					+ symbol);
+			logger.debug("MarketSummaryDAO.getQouteForUpdate(String)\nSymbol :" + symbol);
 		}
 		PreparedStatement selectQuote = null;
 		try {
-			selectQuote = sqlConnection
-					.prepareStatement(SQL_SELECT_QUOTE_NOLOCK);
+			selectQuote = sqlConnection.prepareStatement(SQL_SELECT_QUOTE_NOLOCK);
 			selectQuote.setString(1, symbol);
 			ResultSet rs = selectQuote.executeQuery();
 
 			try {
 				CustomQuoteBean quote = null;
 				if (rs.next()) {
-					quote = new CustomQuoteBean(rs.getString(1), rs
-							.getString(2), rs.getDouble(3),
-							rs.getBigDecimal(4), rs.getBigDecimal(5), rs
-									.getBigDecimal(6), rs.getBigDecimal(7), rs
-									.getDouble(8));
+					quote = new CustomQuoteBean(
+                            rs.getString(1),
+                            rs.getString(2),
+                            rs.getDouble(3),
+							rs.getBigDecimal(4),
+                            rs.getBigDecimal(5),
+                            rs.getBigDecimal(6),
+                            rs.getBigDecimal(7),
+                            rs.getDouble(8));
 				}
 				return quote;
 			} finally {
@@ -98,23 +99,26 @@
 
 	public CustomQuoteBean getQuoteForUpdate(String symbol) throws DAOException {
 		if (logger.isDebugEnabled()) {
-			logger.debug("MarketSummaryDAO.getQouteForUpdate(String)\nSymbol :"
-					+ symbol);
+			logger.debug("MarketSummaryDAO.getQouteForUpdate(String)\nSymbol :" + symbol);
 		}
 		PreparedStatement qouteForUpdateStat = null;
 		try {
-			qouteForUpdateStat = sqlConnection
-					.prepareStatement(SQL_SELECT_QUOTE);
+			qouteForUpdateStat = sqlConnection.prepareStatement(SQL_SELECT_QUOTE);
 			CustomQuoteBean quote = null;
 
 			qouteForUpdateStat.setString(1, symbol);
 			ResultSet rs = qouteForUpdateStat.executeQuery();
 
 			if (rs.next()) {
-				quote = new CustomQuoteBean(rs.getString(1), rs.getString(2),
-						rs.getDouble(3), rs.getBigDecimal(4), rs
-								.getBigDecimal(5), rs.getBigDecimal(6), rs
-								.getBigDecimal(7), rs.getDouble(8));
+				quote = new CustomQuoteBean(
+                        rs.getString(1),
+                        rs.getString(2),
+						rs.getDouble(3),
+                        rs.getBigDecimal(4),
+                        rs.getBigDecimal(5),
+                        rs.getBigDecimal(6),
+                        rs.getBigDecimal(7),
+                        rs.getDouble(8));
 
 				try {
 					rs.close();
@@ -138,10 +142,8 @@
 		}
 	}
 
-	public void updateStockPriceVolume(double quantity, CustomQuoteBean quote)
-			throws DAOException {
-		BigDecimal priceChangeFactor = StockTraderUtility
-				.getRandomPriceChangeFactor(quote.getPrice());
+	public void updateStockPriceVolume(double quantity, CustomQuoteBean quote) throws DAOException {
+		BigDecimal priceChangeFactor = StockTraderUtility.getRandomPriceChangeFactor(quote.getPrice());
 		BigDecimal newPrice = quote.getPrice().multiply(priceChangeFactor);
 
 		if (newPrice.compareTo(quote.getLow()) == -1) {
@@ -153,8 +155,7 @@
 
 		PreparedStatement updateStockPriceVolumeStat = null;
 		try {
-			updateStockPriceVolumeStat = sqlConnection
-					.prepareStatement(SQL_UPDATE_STOCKPRICEVOLUME);
+			updateStockPriceVolumeStat = sqlConnection.prepareStatement(SQL_UPDATE_STOCKPRICEVOLUME);
 			updateStockPriceVolumeStat.setBigDecimal(1, newPrice);
 			updateStockPriceVolumeStat.setBigDecimal(2, quote.getLow());
 			updateStockPriceVolumeStat.setBigDecimal(3, quote.getHigh());
@@ -177,28 +178,27 @@
 	}
 
 	public CustomMarketSummaryBean getCustomMarketSummary() throws DAOException {
-		BigDecimal tSIA = (BigDecimal) StockTraderSQLUtil.executeScalarNoParm(
-				SQL_SELECT_MARKETSUMMARY_TSIA, sqlConnection);
-		BigDecimal openTSIA = (BigDecimal) StockTraderSQLUtil
-				.executeScalarNoParm(SQL_SELECT_MARKETSUMMARY_OPENTSIA,
-						sqlConnection);
-		double totalVolume = ((Double) StockTraderSQLUtil.executeScalarNoParm(
-				SQL_SELECT_MARKETSUMMARY_VOLUME, sqlConnection)).doubleValue();
+		BigDecimal tSIA = (BigDecimal) StockTraderSQLUtil.executeScalarNoParm(SQL_SELECT_MARKETSUMMARY_TSIA, sqlConnection);
+		BigDecimal openTSIA = (BigDecimal) StockTraderSQLUtil.executeScalarNoParm(SQL_SELECT_MARKETSUMMARY_OPENTSIA, sqlConnection);
+		double totalVolume = ((Double) StockTraderSQLUtil.executeScalarNoParm(SQL_SELECT_MARKETSUMMARY_VOLUME, sqlConnection)).doubleValue();
 
 		List<CustomQuoteBean> topGainers = new ArrayList<CustomQuoteBean>();
 		PreparedStatement gainers = null;
 		try {
-			gainers = sqlConnection
-					.prepareStatement(SQL_SELECT_MARKETSUMMARY_GAINERS);
+			gainers = sqlConnection.prepareStatement(SQL_SELECT_MARKETSUMMARY_GAINERS);
 			ResultSet rs = gainers.executeQuery();
 
 			try {
 				for (int i = 0; rs.next() && i < 5; i++) {
 					CustomQuoteBean quote = new CustomQuoteBean(
-							rs.getString(1), rs.getString(2), rs.getDouble(3),
-							rs.getBigDecimal(4), rs.getBigDecimal(5), rs
-									.getBigDecimal(6), rs.getBigDecimal(7), rs
-									.getDouble(8));
+							rs.getString(1),
+                            rs.getString(2),
+                            rs.getDouble(3),
+							rs.getBigDecimal(4),
+                            rs.getBigDecimal(5),
+                            rs.getBigDecimal(6),
+                            rs.getBigDecimal(7),
+                            rs.getDouble(8));
 					topGainers.add(quote);
 				}
 			} finally {
@@ -222,17 +222,20 @@
 		List<CustomQuoteBean> topLosers = new ArrayList<CustomQuoteBean>();
 		PreparedStatement losers = null;
 		try {
-			losers = sqlConnection
-					.prepareStatement(SQL_SELECT_MARKETSUMMARY_LOSERS);
+			losers = sqlConnection.prepareStatement(SQL_SELECT_MARKETSUMMARY_LOSERS);
 			ResultSet rs = losers.executeQuery();
 
 			try {
 				for (int i = 0; rs.next() && i < 5; i++) {
 					CustomQuoteBean quote = new CustomQuoteBean(
-							rs.getString(1), rs.getString(2), rs.getDouble(3),
-							rs.getBigDecimal(4), rs.getBigDecimal(5), rs
-									.getBigDecimal(6), rs.getBigDecimal(7), rs
-									.getDouble(8));
+							rs.getString(1),
+                            rs.getString(2),
+                            rs.getDouble(3),
+							rs.getBigDecimal(4),
+                            rs.getBigDecimal(5),
+                            rs.getBigDecimal(6),
+                            rs.getBigDecimal(7),
+                            rs.getDouble(8));
 					topLosers.add(quote);
 				}
 			} finally {
@@ -253,8 +256,6 @@
 				}
 			}
 		}
-		CustomMarketSummaryBean marketSummary = new CustomMarketSummaryBean(
-				tSIA, openTSIA, totalVolume, topGainers, topLosers);
-		return marketSummary;
+		return new CustomMarketSummaryBean(tSIA, openTSIA, totalVolume, topGainers, topLosers);
 	}
 }