You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by ho...@apache.org on 2006/07/27 15:05:48 UTC
svn commit: r426057 - in
/geronimo/daytrader/trunk/modules/ejb/src/main/java/org/apache/geronimo/samples/daytrader:
direct/TradeDirect.java ejb/TradeBean.java
Author: hogstrom
Date: Thu Jul 27 06:05:47 2006
New Revision: 426057
URL: http://svn.apache.org/viewvc?rev=426057&view=rev
Log:
DAYTRADER-9 Correct NPE when DB cardinality is too low.
Modified:
geronimo/daytrader/trunk/modules/ejb/src/main/java/org/apache/geronimo/samples/daytrader/direct/TradeDirect.java
geronimo/daytrader/trunk/modules/ejb/src/main/java/org/apache/geronimo/samples/daytrader/ejb/TradeBean.java
Modified: geronimo/daytrader/trunk/modules/ejb/src/main/java/org/apache/geronimo/samples/daytrader/direct/TradeDirect.java
URL: http://svn.apache.org/viewvc/geronimo/daytrader/trunk/modules/ejb/src/main/java/org/apache/geronimo/samples/daytrader/direct/TradeDirect.java?rev=426057&r1=426056&r2=426057&view=diff
==============================================================================
--- geronimo/daytrader/trunk/modules/ejb/src/main/java/org/apache/geronimo/samples/daytrader/direct/TradeDirect.java (original)
+++ geronimo/daytrader/trunk/modules/ejb/src/main/java/org/apache/geronimo/samples/daytrader/direct/TradeDirect.java Thu Jul 27 06:05:47 2006
@@ -119,9 +119,15 @@
stmt.close();
+ BigDecimal TSIA = ZERO;
+ BigDecimal openTSIA = ZERO;
+ double volume=0.0;
+
+ if ( (topGainersData.size() > 0) || (topLosersData.size() > 0)){
+
stmt = getStatement(conn, getTSIASQL);
rs = stmt.executeQuery();
- BigDecimal TSIA=ZERO;
+
if (!rs.next() )
Log.error("TradeDirect:getMarketSummary -- error w/ getTSIASQL -- no results");
else
@@ -131,7 +137,7 @@
stmt = getStatement(conn, getOpenTSIASQL);
rs = stmt.executeQuery();
- BigDecimal openTSIA = ZERO;
+
if (!rs.next() )
Log.error("TradeDirect:getMarketSummary -- error w/ getOpenTSIASQL -- no results");
else
@@ -140,13 +146,13 @@
stmt = getStatement(conn, getTSIATotalVolumeSQL);
rs = stmt.executeQuery();
- double volume=0.0;
+
if (!rs.next() )
Log.error("TradeDirect:getMarketSummary -- error w/ getTSIATotalVolumeSQL -- no results");
else
volume = rs.getDouble("totalVolume");
stmt.close();
-
+ }
commit(conn);
marketSummaryData = new MarketSummaryDataBean(TSIA, openTSIA, volume, topGainersData, topLosersData);
Modified: geronimo/daytrader/trunk/modules/ejb/src/main/java/org/apache/geronimo/samples/daytrader/ejb/TradeBean.java
URL: http://svn.apache.org/viewvc/geronimo/daytrader/trunk/modules/ejb/src/main/java/org/apache/geronimo/samples/daytrader/ejb/TradeBean.java?rev=426057&r1=426056&r2=426057&view=diff
==============================================================================
--- geronimo/daytrader/trunk/modules/ejb/src/main/java/org/apache/geronimo/samples/daytrader/ejb/TradeBean.java (original)
+++ geronimo/daytrader/trunk/modules/ejb/src/main/java/org/apache/geronimo/samples/daytrader/ejb/TradeBean.java Thu Jul 27 06:05:47 2006
@@ -169,15 +169,18 @@
Object[] quoteArray = quotes.toArray();
ArrayList topGainers = new ArrayList(5);
ArrayList topLosers = new ArrayList(5);
- for (int i=0; i<5; i++) topGainers.add(quoteArray[i]);
- for (int i=quoteArray.length-1; i>=quoteArray.length-5; i--) topLosers.add(quoteArray[i]);
-
BigDecimal TSIA = FinancialUtils.ZERO;
BigDecimal openTSIA = FinancialUtils.ZERO;
double totalVolume = 0.0;
- for (int i=0; i<quoteArray.length; i++)
- {
- LocalQuote quote = (LocalQuote)quoteArray[i];
+
+ if (quoteArray.length > 5) {
+ for (int i = 0; i < 5; i++)
+ topGainers.add(quoteArray[i]);
+ for (int i = quoteArray.length - 1; i >= quoteArray.length - 5; i--)
+ topLosers.add(quoteArray[i]);
+
+ for (int i = 0; i < quoteArray.length; i++) {
+ LocalQuote quote = (LocalQuote) quoteArray[i];
BigDecimal price = quote.getPrice();
BigDecimal open = quote.getOpen();
double volume = quote.getVolume();
@@ -185,9 +188,11 @@
openTSIA = openTSIA.add(open);
totalVolume += volume;
}
- TSIA = TSIA.divide(new BigDecimal(quoteArray.length), FinancialUtils.ROUND);
- openTSIA = openTSIA.divide(new BigDecimal(quoteArray.length), FinancialUtils.ROUND);
-
+ TSIA = TSIA.divide(new BigDecimal(quoteArray.length),
+ FinancialUtils.ROUND);
+ openTSIA = openTSIA.divide(new BigDecimal(quoteArray.length),
+ FinancialUtils.ROUND);
+ }
/* This is an alternate approach using ejbSelect methods
* In this approach an ejbSelect is used to select only the
* current price and open price values for the TSIA