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 ch...@apache.org on 2010/06/29 06:33:57 UTC
svn commit: r958838 [5/42] - in /incubator/stonehenge/trunk/stocktrader:
dotnet/ dotnet/setup_utilities/Util/ metro/ metro/active_sts/
metro/active_sts/etc/
metro/active_sts/src/org/apache/stonehenge/stocktrader/sts/
metro/business_service/ metro/busin...
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