Modified: 
incubator/stonehenge/trunk/stocktrader/metro/common/src/org/apache/stonehenge/stocktrader/mssql/MSSQLOrderDAO.java
URL: 
http://svn.apache.org/viewvc/incubator/stonehenge/trunk/stocktrader/metro/common/src/org/apache/stonehenge/stocktrader/mssql/MSSQLOrderDAO.java?rev=958838&r1=958837&r2=958838&view=diff
==============================================================================
--- 
incubator/stonehenge/trunk/stocktrader/metro/common/src/org/apache/stonehenge/stocktrader/mssql/MSSQLOrderDAO.java
 (original)
+++ 
incubator/stonehenge/trunk/stocktrader/metro/common/src/org/apache/stonehenge/stocktrader/mssql/MSSQLOrderDAO.java
 Tue Jun 29 06:33:54 2010
@@ -1,453 +1,453 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.stonehenge.stocktrader.mssql;
-
-import java.math.BigDecimal;
-import java.sql.Connection;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.sql.Types;
-import java.util.Calendar;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.stonehenge.stocktrader.CustomHoldingBean;
-import org.apache.stonehenge.stocktrader.CustomOrderBean;
-import org.apache.stonehenge.stocktrader.CustomQuoteBean;
-import org.apache.stonehenge.stocktrader.dal.CustomerDAO;
-import org.apache.stonehenge.stocktrader.dal.DAOException;
-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.util.StockTraderUtility;
-
-public class MSSQLOrderDAO extends AbstractMSSQLDAO implements OrderDAO {
-       private static Log logger = LogFactory.getLog(MSSQLOrderDAO.class);
-
-       private static final String SQL_GET_ACCOUNTID_ORDER = "Set NOCOUNT ON; 
SELECT ACCOUNT_ACCOUNTID FROM dbo.ORDERS  WITH (NOLOCK) WHERE ORDERID=?";
-       private static final String SQL_INSERT_HOLDING = "INSERT INTO 
dbo.HOLDING (PURCHASEPRICE, QUANTITY, PURCHASEDATE, ACCOUNT_ACCOUNTID, 
QUOTE_SYMBOL) VALUES (?, ?, ?, ?, ?); SELECT ID=@@IDENTITY";
-       private static final String SQL_UPDATE_HOLDING = "UPDATE dbo.HOLDING 
WITH (ROWLOCK) SET QUANTITY=QUANTITY-? WHERE HOLDINGID=?";
-       private static final String SQL_DELETE_HOLDING = "DELETE FROM 
dbo.HOLDING WITH (ROWLOCK) WHERE HOLDINGID=?";
-       private static final String SQL_SELECT_HOLDING = "SELECT 
HOLDING.HOLDINGID, HOLDING.QUANTITY, HOLDING.PURCHASEPRICE, 
HOLDING.PURCHASEDATE, HOLDING.QUOTE_SYMBOL,HOLDING.ACCOUNT_ACCOUNTID FROM 
dbo.HOLDING WITH (NOLOCK) WHERE HOLDINGID= ?";
-       private static final String SQL_UPDATE_ORDER = "UPDATE dbo.ORDERS WITH 
(ROWLOCK) SET QUANTITY=? WHERE ORDERID=?";
-       private static final String SQL_CLOSE_ORDER = "UPDATE dbo.ORDERS WITH 
(ROWLOCK) SET ORDERSTATUS = ?, COMPLETIONDATE=GetDate(), HOLDING_HOLDINGID=?, 
PRICE=? WHERE ORDERID = ?";
-       private static final String SQL_GET_ACCOUNTID = "Set NOCOUNT ON; SELECT 
ACCOUNTID FROM dbo.ACCOUNT  WITH (NOLOCK) WHERE PROFILE_USERID = ?";
-
-       // CHECKME
-       private static final String SQL_INSERT_ORDER = "INSERT INTO dbo.ORDERS 
(OPENDATE, ORDERFEE, PRICE, QUOTE_SYMBOL, QUANTITY, ORDERTYPE, ORDERSTATUS, 
ACCOUNT_ACCOUNTID, HOLDING_HOLDINGID) VALUES (GetDate(), ?, ?, ?, ?, ?, 'open', 
?, ?); SELECT ID=@@IDENTITY";
-
-       public MSSQLOrderDAO(Connection sqlConnection) throws DAOException {
-               super(sqlConnection);
-       }
-
-       public CustomQuoteBean getQuoteForUpdate(String symbol) throws 
DAOException {
-               if (logger.isDebugEnabled()) {
-                       logger.debug("OrderDAO.getQuoteForUpdate()\nSymbol :" + 
symbol);
-               }
-
-               DAOFactory fac = MSSQLDAOFactory.getInstance();
-               MarketSummaryDAO marketSummaryDAO = fac.getMarketSummaryDAO();
-               return marketSummaryDAO.getQuoteForUpdate(symbol);
-       }
-
-       public int createHolding(CustomOrderBean order) throws DAOException {
-               if (logger.isDebugEnabled()) {
-                       
logger.debug("OrderDAO.createHolding(OrderDataModel)\nOrderID :"
-                                       + order.getOrderID() + "\nOrderType :"
-                                       + order.getOrderType() + "\nSymbol :" + 
order.getSymbol()
-                                       + "\nQuantity :" + order.getQuantity() 
+ "\nOrder Status :"
-                                       + order.getOrderStatus() + "\nOrder 
Open Date :"
-                                       + order.getOpenDate() + 
"\nCompletionDate :"
-                                       + order.getCompletionDate());
-               }
-
-               PreparedStatement getAccountIdStat = null;
-               int accountId = -1;
-
-               try {
-                       getAccountIdStat = sqlConnection
-                                       
.prepareStatement(SQL_GET_ACCOUNTID_ORDER);
-                       getAccountIdStat.setInt(1, order.getOrderID());
-
-                       ResultSet rs = getAccountIdStat.executeQuery();
-                       if (rs.next()) {
-                               accountId = Integer.parseInt(rs.getString(1));
-                               order.setAccountId(accountId);
-                       }
-
-                       try {
-                               rs.close();
-                       } catch (Exception e) {
-                               logger.debug("", e);
-                       }
-               } catch (SQLException e) {
-                       throw new DAOException(
-                                       "Exception is thrown when selecting the 
accountID from order entries where order ID :"
-                                                       + order.getOrderID(), 
e);
-
-               } finally {
-                       if (getAccountIdStat != null) {
-                               try {
-                                       getAccountIdStat.close();
-                               } catch (Exception e) {
-                                       logger.debug("", e);
-                               }
-                       }
-               }
-
-               if (accountId != -1) {
-                       int holdingId = -1;
-                       PreparedStatement insertHoldingStat = null;
-
-                       try {
-                               insertHoldingStat = sqlConnection
-                                               
.prepareStatement(SQL_INSERT_HOLDING);
-                               insertHoldingStat.setBigDecimal(1, 
order.getPrice());
-                               // C# - insertHolding.setFloat(1, (float) 
order.getQuantity());
-                               insertHoldingStat.setDouble(2, 
order.getQuantity());
-                               Calendar openDate = (order.getOpenDate() != 
null) ? order
-                                               .getOpenDate() : 
Calendar.getInstance();
-                               insertHoldingStat.setDate(3, StockTraderUtility
-                                               .convertToSqlDate(openDate));
-                               insertHoldingStat.setInt(4, 
order.getAccountId());
-                               insertHoldingStat.setString(5, 
order.getSymbol());
-
-                               ResultSet rs = insertHoldingStat.executeQuery();
-                               if (rs.next()) {
-                                       holdingId = rs.getInt(1);
-                               }
-
-                               try {
-                                       rs.close();
-                               } catch (Exception e) {
-                                       logger.debug("", e);
-                               }
-                               return holdingId;
-
-                       } catch (SQLException e) {
-                               throw new DAOException(
-                                               "An exception is thrown during 
an insertion of a holding entry",
-                                               e);
-
-                       } finally {
-                               if (insertHoldingStat != null) {
-                                       try {
-                                               insertHoldingStat.close();
-                                       } catch (Exception e) {
-                                               logger.debug("", e);
-                                       }
-                               }
-                       }
-               }
-               return -1;
-       }
-
-       public void updateHolding(int holdingId, double quantity)
-                       throws DAOException {
-               if (logger.isDebugEnabled()) {
-                       logger.debug("OrderDAO.updateHolding()\nHolding ID :" + 
holdingId
-                                       + "\nQuantity :" + quantity);
-               }
-
-               PreparedStatement updateHoldingStat = null;
-               try {
-                       updateHoldingStat = sqlConnection
-                                       .prepareStatement(SQL_UPDATE_HOLDING);
-                       updateHoldingStat.setDouble(1, quantity);
-                       updateHoldingStat.setInt(2, holdingId);
-                       updateHoldingStat.executeUpdate();
-
-               } catch (SQLException e) {
-                       throw new DAOException(
-                                       "An exception is thrown during an 
updation of holding entry",
-                                       e);
-               } finally {
-                       if (updateHoldingStat != null) {
-                               try {
-                                       updateHoldingStat.close();
-                               } catch (Exception e) {
-                                       logger.debug("", e);
-                               }
-                       }
-               }
-       }
-
-       public void deleteHolding(int holdingId) throws DAOException {
-               if (logger.isDebugEnabled()) {
-                       logger.debug("OrderDAO.deleteHolding()\nHolding ID :" + 
holdingId);
-               }
-
-               PreparedStatement deleteHoldingStat = null;
-               try {
-                       deleteHoldingStat = sqlConnection
-                                       .prepareStatement(SQL_DELETE_HOLDING);
-                       deleteHoldingStat.setInt(1, holdingId);
-                       deleteHoldingStat.execute();
-
-               } catch (SQLException e) {
-                       throw new DAOException(
-                                       "An exception is thrown during deletion 
of a holding entry",
-                                       e);
-               } finally {
-                       if (deleteHoldingStat != null) {
-                               try {
-                                       deleteHoldingStat.close();
-                               } catch (SQLException e) {
-                                       logger.debug("", e);
-                               }
-                       }
-               }
-       }
-
-       public CustomHoldingBean getHoldingForUpdate(int orderId)
-                       throws DAOException {
-               if (logger.isDebugEnabled()) {
-                       
logger.debug("HoldingDataModel.getHoldingForUpdate()\nOrder ID :"
-                                       + orderId);
-               }
-               DAOFactory fac = MSSQLDAOFactory.getInstance();
-               CustomerDAO customerDAO = fac.getCustomerDAO();
-               return customerDAO.getHoldingForUpdate(orderId);
-       }
-
-       public CustomHoldingBean getHolding(int holdingId) throws DAOException {
-               CustomHoldingBean holding = null;
-               PreparedStatement selectHoldingStat = null;
-               try {
-                       selectHoldingStat = sqlConnection
-                                       .prepareStatement(SQL_SELECT_HOLDING);
-                       selectHoldingStat.setInt(1, holdingId);
-                       ResultSet rs = selectHoldingStat.executeQuery();
-                       if (rs.next()) {
-                               try {
-                                       holding = new CustomHoldingBean(
-                                                       rs.getInt(1),
-                                                       rs.getDouble(2),
-                                                       rs.getBigDecimal(3),
-                                                       
StockTraderUtility.convertToCalendar(rs.getDate(4)),
-                                                       rs.getString(5),
-                                                       rs.getInt(6));
-                                       return holding;
-
-                               } finally {
-                                       try {
-                                               rs.close();
-                                       } catch (Exception e) {
-                                               logger.debug("", e);
-                                       }
-                               }
-                       }
-               } catch (SQLException e) {
-                       throw new DAOException(
-                                       "An Exception is thrown during 
selecting a holding entry",
-                                       e);
-               } finally {
-                       if (selectHoldingStat != null) {
-                               try {
-                                       selectHoldingStat.close();
-                               } catch (SQLException e) {
-                                       logger.debug("", e);
-                               }
-                       }
-               }
-               return holding;
-       }
-
-       public void updateAccountBalance(int accountId, BigDecimal total)
-                       throws DAOException {
-               if (logger.isDebugEnabled()) {
-                       logger
-                                       
.debug("OrderDAO.updateAccountBalance(int,BigDecimal)\nAccount ID :"
-                                                       + accountId + "\nTotal 
:" + total);
-               }
-               DAOFactory fac = MSSQLDAOFactory.getInstance();
-               CustomerDAO customerDAO = fac.getCustomerDAO();
-               customerDAO.updateAccountBalance(accountId, total);
-       }
-
-       public void updateStockPriceVolume(double quantity, CustomQuoteBean 
quote)
-                       throws DAOException {
-               if (logger.isDebugEnabled()) {
-                       logger
-                                       
.debug("OrderDAO.updateStockPriceVolume(double,QuatedataModle)\nQuantity :"
-                                                       + quantity + 
"\nQuote\nSymbol" + quote.getSymbol());
-               }
-               DAOFactory fac = MSSQLDAOFactory.getInstance();
-               MarketSummaryDAO marketSummaryDAO = fac.getMarketSummaryDAO();
-               marketSummaryDAO.updateStockPriceVolume(quantity, quote);
-       }
-
-       public void updateOrder(CustomOrderBean order) throws DAOException {
-               PreparedStatement updateHoldingStat = null;
-               try {
-                       updateHoldingStat = sqlConnection
-                                       .prepareStatement(SQL_UPDATE_ORDER);
-                       updateHoldingStat.setDouble(1, order.getQuantity());
-                       updateHoldingStat.setInt(2, order.getOrderID());
-                       updateHoldingStat.executeUpdate();
-
-               } catch (SQLException e) {
-                       throw new DAOException(
-                                       "An Exception is thrown during updating 
a holding entry", e);
-               } finally {
-                       if (updateHoldingStat != null) {
-                               try {
-                                       updateHoldingStat.close();
-                               } catch (Exception e) {
-                                       logger.debug("", e);
-                               }
-                       }
-               }
-       }
-
-       public void closeOrder(CustomOrderBean order) throws DAOException {
-               if (logger.isDebugEnabled()) {
-                       
logger.debug("OrderDAO.closeOrder(OrderDataModel)\nOrderID :"
-                                       + order.getOrderID() + "\nOrderType :"
-                                       + order.getOrderType() + "\nSymbol :" + 
order.getSymbol()
-                                       + "\nQuantity :" + order.getQuantity() 
+ "\nOrder Status :"
-                                       + order.getOrderStatus() + "\nOrder 
Open Date :"
-                                       + order.getOpenDate() + 
"\nCompletionDate :"
-                                       + order.getCompletionDate());
-               }
-
-               PreparedStatement closeOrderStat = null;
-               try {
-                       closeOrderStat = 
sqlConnection.prepareStatement(SQL_CLOSE_ORDER);
-                       closeOrderStat.setString(1, 
StockTraderUtility.ORDER_STATUS_CLOSED);
-                       if 
(StockTraderUtility.ORDER_TYPE_SELL.equals(order.getOrderType())) {
-                               closeOrderStat.setNull(2, Types.INTEGER);
-                       } else {
-                               closeOrderStat.setInt(2, order.getHoldingId());
-                       }
-                       closeOrderStat.setBigDecimal(3, order.getPrice());
-                       closeOrderStat.setInt(4, order.getOrderID());
-                       closeOrderStat.executeUpdate();
-
-               } catch (SQLException e) {
-                       throw new DAOException("", e);
-
-               } finally {
-                       if (closeOrderStat != null) {
-                               try {
-                                       closeOrderStat.close();
-                               } catch (Exception e) {
-                                       logger.debug("", e);
-                               }
-                       }
-               }
-       }
-
-       public CustomOrderBean createOrder(String userID, String symbol,
-                       String orderType, double quantity, int holdingID)
-                       throws DAOException {
-               int orderID = 0;
-               Calendar minCalender = Calendar.getInstance();
-               minCalender.setTimeInMillis(0);
-               CustomOrderBean order = new CustomOrderBean(orderID, orderType,
-                               StockTraderUtility.ORDER_STATUS_OPEN, 
Calendar.getInstance(),
-                               minCalender, quantity, BigDecimal.valueOf(1),
-                               StockTraderUtility.getOrderFee(orderType), 
symbol);
-               order.setHoldingId(holdingID);
-
-               PreparedStatement getAccountId = null;
-               try {
-                       getAccountId = 
sqlConnection.prepareStatement(SQL_GET_ACCOUNTID);
-                       getAccountId.setString(1, userID);
-                       ResultSet rs = getAccountId.executeQuery();
-                       if (rs.next()) {
-                               order.setAccountId(rs.getInt(1));
-                       }
-               } catch (SQLException e) {
-
-               } finally {
-                       if (getAccountId != null) {
-                               try {
-                                       getAccountId.close();
-                               } catch (SQLException e) {
-                                       logger.debug("", e);
-                               }
-                       }
-               }
-
-               PreparedStatement insertOrder = null;
-//             PreparedStatement selectOrderID = null;
-               try {
-            // FIXED: prepare statement rather than call
-            insertOrder = sqlConnection.prepareStatement(SQL_INSERT_ORDER);
-//                     insertOrder = 
sqlConnection.prepareCall(SQL_INSERT_ORDER);
-
-                       insertOrder.setBigDecimal(1, order.getOrderFee());
-                       insertOrder.setBigDecimal(2, order.getPrice());
-                       insertOrder.setString(3, order.getSymbol());
-
-            // FIXED: metro used Double rather than double
-//                     insertOrder.setFloat(4, (float) order.getQuantity());
-                       insertOrder.setFloat(4, 
order.getQuantity().floatValue());
-                       insertOrder.setString(5, order.getOrderType());
-                       insertOrder.setInt(6, order.getAccountId());
-                       insertOrder.setInt(7, order.getHoldingId());
-                       ResultSet rs = insertOrder.executeQuery();
-                       
-
-//                     selectOrderID = 
sqlConnection.prepareStatement(SQL_SELECT_ORDER_ID);
-//                     // ORDERFEE = ? AND PRICE = ? AND QUOTE_SYMBOL = ? AND 
QUANTITY = ?
-//                     // ORDERTYPE = ? ORDERSTATUS = ? AND ACCOUNT_ACCOUNTID 
= ?
-//                     // HOLDING_HOLDINGID = ?"
-//                     selectOrderID.setBigDecimal(1, order.getOrderFee());
-//                     selectOrderID.setBigDecimal(2, order.getPrice());
-//                     selectOrderID.setString(3, order.getSymbol());
-//                     selectOrderID.setDouble(4, order.getQuantity());
-//                     selectOrderID.setString(5, order.getOrderType());
-//                     selectOrderID.setString(6, "open");
-//                     selectOrderID.setInt(7, order.getAccountId());
-//                     selectOrderID.setInt(8, order.getHoldingId());
-//                     ResultSet rs = selectOrderID.executeQuery();
-                       if (rs.next()) {
-                               try {
-                                       order.setOrderID(rs.getInt(1));
-                               } finally {
-                                       try {
-                                               rs.close();
-                                       } catch (SQLException e) {
-                                               logger.debug("", e);
-                                       }
-                               }
-                       }
-               } catch (SQLException e) {
-                       throw new DAOException("", e);
-               } finally {
-                       if (insertOrder != null) {
-                               try {
-                                       insertOrder.close();
-                               } catch (SQLException e) {
-                                       logger.debug("", e);
-                               }
-                       }
-//                     if (selectOrderID != null) {
-//                             try {
-//                                     selectOrderID.close();
-//                             } catch (SQLException e) {
-//                                     logger.debug("", e);
-//                             }
-//                     }
-               }
-               return order;
-       }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.stonehenge.stocktrader.mssql;
+
+import java.math.BigDecimal;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Types;
+import java.util.Calendar;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.stonehenge.stocktrader.CustomHoldingBean;
+import org.apache.stonehenge.stocktrader.CustomOrderBean;
+import org.apache.stonehenge.stocktrader.CustomQuoteBean;
+import org.apache.stonehenge.stocktrader.dal.CustomerDAO;
+import org.apache.stonehenge.stocktrader.dal.DAOException;
+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.util.StockTraderUtility;
+
+public class MSSQLOrderDAO extends AbstractMSSQLDAO implements OrderDAO {
+       private static Log logger = LogFactory.getLog(MSSQLOrderDAO.class);
+
+       private static final String SQL_GET_ACCOUNTID_ORDER = "Set NOCOUNT ON; 
SELECT ACCOUNT_ACCOUNTID FROM dbo.ORDERS  WITH (NOLOCK) WHERE ORDERID=?";
+       private static final String SQL_INSERT_HOLDING = "INSERT INTO 
dbo.HOLDING (PURCHASEPRICE, QUANTITY, PURCHASEDATE, ACCOUNT_ACCOUNTID, 
QUOTE_SYMBOL) VALUES (?, ?, ?, ?, ?); SELECT ID=@@IDENTITY";
+       private static final String SQL_UPDATE_HOLDING = "UPDATE dbo.HOLDING 
WITH (ROWLOCK) SET QUANTITY=QUANTITY-? WHERE HOLDINGID=?";
+       private static final String SQL_DELETE_HOLDING = "DELETE FROM 
dbo.HOLDING WITH (ROWLOCK) WHERE HOLDINGID=?";
+       private static final String SQL_SELECT_HOLDING = "SELECT 
HOLDING.HOLDINGID, HOLDING.QUANTITY, HOLDING.PURCHASEPRICE, 
HOLDING.PURCHASEDATE, HOLDING.QUOTE_SYMBOL,HOLDING.ACCOUNT_ACCOUNTID FROM 
dbo.HOLDING WITH (NOLOCK) WHERE HOLDINGID= ?";
+       private static final String SQL_UPDATE_ORDER = "UPDATE dbo.ORDERS WITH 
(ROWLOCK) SET QUANTITY=? WHERE ORDERID=?";
+       private static final String SQL_CLOSE_ORDER = "UPDATE dbo.ORDERS WITH 
(ROWLOCK) SET ORDERSTATUS = ?, COMPLETIONDATE=GetDate(), HOLDING_HOLDINGID=?, 
PRICE=? WHERE ORDERID = ?";
+       private static final String SQL_GET_ACCOUNTID = "Set NOCOUNT ON; SELECT 
ACCOUNTID FROM dbo.ACCOUNT  WITH (NOLOCK) WHERE PROFILE_USERID = ?";
+
+       // CHECKME
+       private static final String SQL_INSERT_ORDER = "INSERT INTO dbo.ORDERS 
(OPENDATE, ORDERFEE, PRICE, QUOTE_SYMBOL, QUANTITY, ORDERTYPE, ORDERSTATUS, 
ACCOUNT_ACCOUNTID, HOLDING_HOLDINGID) VALUES (GetDate(), ?, ?, ?, ?, ?, 'open', 
?, ?); SELECT ID=@@IDENTITY";
+
+       public MSSQLOrderDAO(Connection sqlConnection) throws DAOException {
+               super(sqlConnection);
+       }
+
+       public CustomQuoteBean getQuoteForUpdate(String symbol) throws 
DAOException {
+               if (logger.isDebugEnabled()) {
+                       logger.debug("OrderDAO.getQuoteForUpdate()\nSymbol :" + 
symbol);
+               }
+
+               DAOFactory fac = MSSQLDAOFactory.getInstance();
+               MarketSummaryDAO marketSummaryDAO = fac.getMarketSummaryDAO();
+               return marketSummaryDAO.getQuoteForUpdate(symbol);
+       }
+
+       public int createHolding(CustomOrderBean order) throws DAOException {
+               if (logger.isDebugEnabled()) {
+                       
logger.debug("OrderDAO.createHolding(OrderDataModel)\nOrderID :"
+                                       + order.getOrderID() + "\nOrderType :"
+                                       + order.getOrderType() + "\nSymbol :" + 
order.getSymbol()
+                                       + "\nQuantity :" + order.getQuantity() 
+ "\nOrder Status :"
+                                       + order.getOrderStatus() + "\nOrder 
Open Date :"
+                                       + order.getOpenDate() + 
"\nCompletionDate :"
+                                       + order.getCompletionDate());
+               }
+
+               PreparedStatement getAccountIdStat = null;
+               int accountId = -1;
+
+               try {
+                       getAccountIdStat = sqlConnection
+                                       
.prepareStatement(SQL_GET_ACCOUNTID_ORDER);
+                       getAccountIdStat.setInt(1, order.getOrderID());
+
+                       ResultSet rs = getAccountIdStat.executeQuery();
+                       if (rs.next()) {
+                               accountId = Integer.parseInt(rs.getString(1));
+                               order.setAccountId(accountId);
+                       }
+
+                       try {
+                               rs.close();
+                       } catch (Exception e) {
+                               logger.debug("", e);
+                       }
+               } catch (SQLException e) {
+                       throw new DAOException(
+                                       "Exception is thrown when selecting the 
accountID from order entries where order ID :"
+                                                       + order.getOrderID(), 
e);
+
+               } finally {
+                       if (getAccountIdStat != null) {
+                               try {
+                                       getAccountIdStat.close();
+                               } catch (Exception e) {
+                                       logger.debug("", e);
+                               }
+                       }
+               }
+
+               if (accountId != -1) {
+                       int holdingId = -1;
+                       PreparedStatement insertHoldingStat = null;
+
+                       try {
+                               insertHoldingStat = sqlConnection
+                                               
.prepareStatement(SQL_INSERT_HOLDING);
+                               insertHoldingStat.setBigDecimal(1, 
order.getPrice());
+                               // C# - insertHolding.setFloat(1, (float) 
order.getQuantity());
+                               insertHoldingStat.setDouble(2, 
order.getQuantity());
+                               Calendar openDate = (order.getOpenDate() != 
null) ? order
+                                               .getOpenDate() : 
Calendar.getInstance();
+                               insertHoldingStat.setDate(3, StockTraderUtility
+                                               .convertToSqlDate(openDate));
+                               insertHoldingStat.setInt(4, 
order.getAccountId());
+                               insertHoldingStat.setString(5, 
order.getSymbol());
+
+                               ResultSet rs = insertHoldingStat.executeQuery();
+                               if (rs.next()) {
+                                       holdingId = rs.getInt(1);
+                               }
+
+                               try {
+                                       rs.close();
+                               } catch (Exception e) {
+                                       logger.debug("", e);
+                               }
+                               return holdingId;
+
+                       } catch (SQLException e) {
+                               throw new DAOException(
+                                               "An exception is thrown during 
an insertion of a holding entry",
+                                               e);
+
+                       } finally {
+                               if (insertHoldingStat != null) {
+                                       try {
+                                               insertHoldingStat.close();
+                                       } catch (Exception e) {
+                                               logger.debug("", e);
+                                       }
+                               }
+                       }
+               }
+               return -1;
+       }
+
+       public void updateHolding(int holdingId, double quantity)
+                       throws DAOException {
+               if (logger.isDebugEnabled()) {
+                       logger.debug("OrderDAO.updateHolding()\nHolding ID :" + 
holdingId
+                                       + "\nQuantity :" + quantity);
+               }
+
+               PreparedStatement updateHoldingStat = null;
+               try {
+                       updateHoldingStat = sqlConnection
+                                       .prepareStatement(SQL_UPDATE_HOLDING);
+                       updateHoldingStat.setDouble(1, quantity);
+                       updateHoldingStat.setInt(2, holdingId);
+                       updateHoldingStat.executeUpdate();
+
+               } catch (SQLException e) {
+                       throw new DAOException(
+                                       "An exception is thrown during an 
updation of holding entry",
+                                       e);
+               } finally {
+                       if (updateHoldingStat != null) {
+                               try {
+                                       updateHoldingStat.close();
+                               } catch (Exception e) {
+                                       logger.debug("", e);
+                               }
+                       }
+               }
+       }
+
+       public void deleteHolding(int holdingId) throws DAOException {
+               if (logger.isDebugEnabled()) {
+                       logger.debug("OrderDAO.deleteHolding()\nHolding ID :" + 
holdingId);
+               }
+
+               PreparedStatement deleteHoldingStat = null;
+               try {
+                       deleteHoldingStat = sqlConnection
+                                       .prepareStatement(SQL_DELETE_HOLDING);
+                       deleteHoldingStat.setInt(1, holdingId);
+                       deleteHoldingStat.execute();
+
+               } catch (SQLException e) {
+                       throw new DAOException(
+                                       "An exception is thrown during deletion 
of a holding entry",
+                                       e);
+               } finally {
+                       if (deleteHoldingStat != null) {
+                               try {
+                                       deleteHoldingStat.close();
+                               } catch (SQLException e) {
+                                       logger.debug("", e);
+                               }
+                       }
+               }
+       }
+
+       public CustomHoldingBean getHoldingForUpdate(int orderId)
+                       throws DAOException {
+               if (logger.isDebugEnabled()) {
+                       
logger.debug("HoldingDataModel.getHoldingForUpdate()\nOrder ID :"
+                                       + orderId);
+               }
+               DAOFactory fac = MSSQLDAOFactory.getInstance();
+               CustomerDAO customerDAO = fac.getCustomerDAO();
+               return customerDAO.getHoldingForUpdate(orderId);
+       }
+
+       public CustomHoldingBean getHolding(int holdingId) throws DAOException {
+               CustomHoldingBean holding = null;
+               PreparedStatement selectHoldingStat = null;
+               try {
+                       selectHoldingStat = sqlConnection
+                                       .prepareStatement(SQL_SELECT_HOLDING);
+                       selectHoldingStat.setInt(1, holdingId);
+                       ResultSet rs = selectHoldingStat.executeQuery();
+                       if (rs.next()) {
+                               try {
+                                       holding = new CustomHoldingBean(
+                                                       rs.getInt(1),
+                                                       rs.getDouble(2),
+                                                       rs.getBigDecimal(3),
+                                                       
StockTraderUtility.convertToCalendar(rs.getDate(4)),
+                                                       rs.getString(5),
+                                                       rs.getInt(6));
+                                       return holding;
+
+                               } finally {
+                                       try {
+                                               rs.close();
+                                       } catch (Exception e) {
+                                               logger.debug("", e);
+                                       }
+                               }
+                       }
+               } catch (SQLException e) {
+                       throw new DAOException(
+                                       "An Exception is thrown during 
selecting a holding entry",
+                                       e);
+               } finally {
+                       if (selectHoldingStat != null) {
+                               try {
+                                       selectHoldingStat.close();
+                               } catch (SQLException e) {
+                                       logger.debug("", e);
+                               }
+                       }
+               }
+               return holding;
+       }
+
+       public void updateAccountBalance(int accountId, BigDecimal total)
+                       throws DAOException {
+               if (logger.isDebugEnabled()) {
+                       logger
+                                       
.debug("OrderDAO.updateAccountBalance(int,BigDecimal)\nAccount ID :"
+                                                       + accountId + "\nTotal 
:" + total);
+               }
+               DAOFactory fac = MSSQLDAOFactory.getInstance();
+               CustomerDAO customerDAO = fac.getCustomerDAO();
+               customerDAO.updateAccountBalance(accountId, total);
+       }
+
+       public void updateStockPriceVolume(double quantity, CustomQuoteBean 
quote)
+                       throws DAOException {
+               if (logger.isDebugEnabled()) {
+                       logger
+                                       
.debug("OrderDAO.updateStockPriceVolume(double,QuatedataModle)\nQuantity :"
+                                                       + quantity + 
"\nQuote\nSymbol" + quote.getSymbol());
+               }
+               DAOFactory fac = MSSQLDAOFactory.getInstance();
+               MarketSummaryDAO marketSummaryDAO = fac.getMarketSummaryDAO();
+               marketSummaryDAO.updateStockPriceVolume(quantity, quote);
+       }
+
+       public void updateOrder(CustomOrderBean order) throws DAOException {
+               PreparedStatement updateHoldingStat = null;
+               try {
+                       updateHoldingStat = sqlConnection
+                                       .prepareStatement(SQL_UPDATE_ORDER);
+                       updateHoldingStat.setDouble(1, order.getQuantity());
+                       updateHoldingStat.setInt(2, order.getOrderID());
+                       updateHoldingStat.executeUpdate();
+
+               } catch (SQLException e) {
+                       throw new DAOException(
+                                       "An Exception is thrown during updating 
a holding entry", e);
+               } finally {
+                       if (updateHoldingStat != null) {
+                               try {
+                                       updateHoldingStat.close();
+                               } catch (Exception e) {
+                                       logger.debug("", e);
+                               }
+                       }
+               }
+       }
+
+       public void closeOrder(CustomOrderBean order) throws DAOException {
+               if (logger.isDebugEnabled()) {
+                       
logger.debug("OrderDAO.closeOrder(OrderDataModel)\nOrderID :"
+                                       + order.getOrderID() + "\nOrderType :"
+                                       + order.getOrderType() + "\nSymbol :" + 
order.getSymbol()
+                                       + "\nQuantity :" + order.getQuantity() 
+ "\nOrder Status :"
+                                       + order.getOrderStatus() + "\nOrder 
Open Date :"
+                                       + order.getOpenDate() + 
"\nCompletionDate :"
+                                       + order.getCompletionDate());
+               }
+
+               PreparedStatement closeOrderStat = null;
+               try {
+                       closeOrderStat = 
sqlConnection.prepareStatement(SQL_CLOSE_ORDER);
+                       closeOrderStat.setString(1, 
StockTraderUtility.ORDER_STATUS_CLOSED);
+                       if 
(StockTraderUtility.ORDER_TYPE_SELL.equals(order.getOrderType())) {
+                               closeOrderStat.setNull(2, Types.INTEGER);
+                       } else {
+                               closeOrderStat.setInt(2, order.getHoldingId());
+                       }
+                       closeOrderStat.setBigDecimal(3, order.getPrice());
+                       closeOrderStat.setInt(4, order.getOrderID());
+                       closeOrderStat.executeUpdate();
+
+               } catch (SQLException e) {
+                       throw new DAOException("", e);
+
+               } finally {
+                       if (closeOrderStat != null) {
+                               try {
+                                       closeOrderStat.close();
+                               } catch (Exception e) {
+                                       logger.debug("", e);
+                               }
+                       }
+               }
+       }
+
+       public CustomOrderBean createOrder(String userID, String symbol,
+                       String orderType, double quantity, int holdingID)
+                       throws DAOException {
+               int orderID = 0;
+               Calendar minCalender = Calendar.getInstance();
+               minCalender.setTimeInMillis(0);
+               CustomOrderBean order = new CustomOrderBean(orderID, orderType,
+                               StockTraderUtility.ORDER_STATUS_OPEN, 
Calendar.getInstance(),
+                               minCalender, quantity, BigDecimal.valueOf(1),
+                               StockTraderUtility.getOrderFee(orderType), 
symbol);
+               order.setHoldingId(holdingID);
+
+               PreparedStatement getAccountId = null;
+               try {
+                       getAccountId = 
sqlConnection.prepareStatement(SQL_GET_ACCOUNTID);
+                       getAccountId.setString(1, userID);
+                       ResultSet rs = getAccountId.executeQuery();
+                       if (rs.next()) {
+                               order.setAccountId(rs.getInt(1));
+                       }
+               } catch (SQLException e) {
+
+               } finally {
+                       if (getAccountId != null) {
+                               try {
+                                       getAccountId.close();
+                               } catch (SQLException e) {
+                                       logger.debug("", e);
+                               }
+                       }
+               }
+
+               PreparedStatement insertOrder = null;
+//             PreparedStatement selectOrderID = null;
+               try {
+            // FIXED: prepare statement rather than call
+            insertOrder = sqlConnection.prepareStatement(SQL_INSERT_ORDER);
+//                     insertOrder = 
sqlConnection.prepareCall(SQL_INSERT_ORDER);
+
+                       insertOrder.setBigDecimal(1, order.getOrderFee());
+                       insertOrder.setBigDecimal(2, order.getPrice());
+                       insertOrder.setString(3, order.getSymbol());
+
+            // FIXED: metro used Double rather than double
+//                     insertOrder.setFloat(4, (float) order.getQuantity());
+                       insertOrder.setFloat(4, 
order.getQuantity().floatValue());
+                       insertOrder.setString(5, order.getOrderType());
+                       insertOrder.setInt(6, order.getAccountId());
+                       insertOrder.setInt(7, order.getHoldingId());
+                       ResultSet rs = insertOrder.executeQuery();
+                       
+
+//                     selectOrderID = 
sqlConnection.prepareStatement(SQL_SELECT_ORDER_ID);
+//                     // ORDERFEE = ? AND PRICE = ? AND QUOTE_SYMBOL = ? AND 
QUANTITY = ?
+//                     // ORDERTYPE = ? ORDERSTATUS = ? AND ACCOUNT_ACCOUNTID 
= ?
+//                     // HOLDING_HOLDINGID = ?"
+//                     selectOrderID.setBigDecimal(1, order.getOrderFee());
+//                     selectOrderID.setBigDecimal(2, order.getPrice());
+//                     selectOrderID.setString(3, order.getSymbol());
+//                     selectOrderID.setDouble(4, order.getQuantity());
+//                     selectOrderID.setString(5, order.getOrderType());
+//                     selectOrderID.setString(6, "open");
+//                     selectOrderID.setInt(7, order.getAccountId());
+//                     selectOrderID.setInt(8, order.getHoldingId());
+//                     ResultSet rs = selectOrderID.executeQuery();
+                       if (rs.next()) {
+                               try {
+                                       order.setOrderID(rs.getInt(1));
+                               } finally {
+                                       try {
+                                               rs.close();
+                                       } catch (SQLException e) {
+                                               logger.debug("", e);
+                                       }
+                               }
+                       }
+               } catch (SQLException e) {
+                       throw new DAOException("", e);
+               } finally {
+                       if (insertOrder != null) {
+                               try {
+                                       insertOrder.close();
+                               } catch (SQLException e) {
+                                       logger.debug("", e);
+                               }
+                       }
+//                     if (selectOrderID != null) {
+//                             try {
+//                                     selectOrderID.close();
+//                             } catch (SQLException e) {
+//                                     logger.debug("", e);
+//                             }
+//                     }
+               }
+               return order;
+       }
+}

Propchange: 
incubator/stonehenge/trunk/stocktrader/metro/common/src/org/apache/stonehenge/stocktrader/mssql/MSSQLOrderDAO.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: 
incubator/stonehenge/trunk/stocktrader/metro/common/src/org/apache/stonehenge/stocktrader/mysql/AbstractMySQLDAO.java
URL: 
http://svn.apache.org/viewvc/incubator/stonehenge/trunk/stocktrader/metro/common/src/org/apache/stonehenge/stocktrader/mysql/AbstractMySQLDAO.java?rev=958838&r1=958837&r2=958838&view=diff
==============================================================================
--- 
incubator/stonehenge/trunk/stocktrader/metro/common/src/org/apache/stonehenge/stocktrader/mysql/AbstractMySQLDAO.java
 (original)
+++ 
incubator/stonehenge/trunk/stocktrader/metro/common/src/org/apache/stonehenge/stocktrader/mysql/AbstractMySQLDAO.java
 Tue Jun 29 06:33:54 2010
@@ -1,81 +1,81 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.stonehenge.stocktrader.mysql;
-
-import org.apache.stonehenge.stocktrader.dal.DAOException;
-import java.sql.Connection;
-import java.sql.SQLException;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-public class AbstractMySQLDAO {
-
-       private static final Log logger = 
LogFactory.getLog(AbstractMySQLDAO.class);
-
-       protected Connection sqlConnection;
-
-       private int previousTransactionIsolation;
-
-       public AbstractMySQLDAO(Connection sqlConnection) throws DAOException {
-               this.sqlConnection = sqlConnection;
-       }
-
-       public void beginTransaction() throws DAOException {
-               logger.debug("AbstractMSSQLDAO.beginTransaction()");
-               try {
-                       sqlConnection.setAutoCommit(false);
-                       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);
-               }
-       }
-
-       public void commitTransaction() throws DAOException {
-               logger.debug("AbstractMSSQLDAO.commitTransaction()");
-               try {
-                       sqlConnection.commit();
-                       sqlConnection.setAutoCommit(true);
-                       
sqlConnection.setTransactionIsolation(previousTransactionIsolation);
-               } catch (SQLException e) {
-                       throw new DAOException("Exception is thrown during the 
commit of transaction", e);
-               }
-       }
-
-       public void rollbackTransaction() throws DAOException {
-               logger.debug("AbstractMySQLDAO.rollbackTransaction()");
-               try {
-                       sqlConnection.rollback();
-                       sqlConnection.setAutoCommit(true);
-                       
sqlConnection.setTransactionIsolation(previousTransactionIsolation);
-               } catch (SQLException e) {
-                       throw new DAOException("Exception is thrown during the 
rollback of transaction", e);
-
-               }
-       }
-
-       public void close() throws DAOException {
-               try {
-                       sqlConnection.close();
-               } catch (SQLException e) {
-                       throw new DAOException("", e);
-               }
-       }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.stonehenge.stocktrader.mysql;
+
+import org.apache.stonehenge.stocktrader.dal.DAOException;
+import java.sql.Connection;
+import java.sql.SQLException;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+public class AbstractMySQLDAO {
+
+       private static final Log logger = 
LogFactory.getLog(AbstractMySQLDAO.class);
+
+       protected Connection sqlConnection;
+
+       private int previousTransactionIsolation;
+
+       public AbstractMySQLDAO(Connection sqlConnection) throws DAOException {
+               this.sqlConnection = sqlConnection;
+       }
+
+       public void beginTransaction() throws DAOException {
+               logger.debug("AbstractMSSQLDAO.beginTransaction()");
+               try {
+                       sqlConnection.setAutoCommit(false);
+                       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);
+               }
+       }
+
+       public void commitTransaction() throws DAOException {
+               logger.debug("AbstractMSSQLDAO.commitTransaction()");
+               try {
+                       sqlConnection.commit();
+                       sqlConnection.setAutoCommit(true);
+                       
sqlConnection.setTransactionIsolation(previousTransactionIsolation);
+               } catch (SQLException e) {
+                       throw new DAOException("Exception is thrown during the 
commit of transaction", e);
+               }
+       }
+
+       public void rollbackTransaction() throws DAOException {
+               logger.debug("AbstractMySQLDAO.rollbackTransaction()");
+               try {
+                       sqlConnection.rollback();
+                       sqlConnection.setAutoCommit(true);
+                       
sqlConnection.setTransactionIsolation(previousTransactionIsolation);
+               } catch (SQLException e) {
+                       throw new DAOException("Exception is thrown during the 
rollback of transaction", e);
+
+               }
+       }
+
+       public void close() throws DAOException {
+               try {
+                       sqlConnection.close();
+               } catch (SQLException e) {
+                       throw new DAOException("", e);
+               }
+       }
+}

Propchange: 
incubator/stonehenge/trunk/stocktrader/metro/common/src/org/apache/stonehenge/stocktrader/mysql/AbstractMySQLDAO.java
------------------------------------------------------------------------------
    svn:eol-style = native


Reply via email to