public void setEntityManager(EntityManager em) {
this.em = em;
}
public MarketSummary findMarketSummary() {
MarketSummary marketSummary = new MarketSummary();
Query query = em
.createQuery("SELECT SUM(q.price)/count(q) as tradeStockIndexAverage, "
+ "SUM(q.open1)/count(q) as tradeStockIndexOpenAverage, "
+ "SUM(q.volume) as tradeStockIndexVolume, "
+ "SUM(q) as cnt , "
+ "SUM(q.change1)"
+ "FROM Quote q");
marketSummary.setTradeStockIndexAverage(BigDecimal.ZERO.setScale(FinancialUtils.SCALE, FinancialUtils.ROUND));
marketSummary.setTradeStockIndexOpenAverage(BigDecimal.ZERO.setScale(FinancialUtils.SCALE, FinancialUtils.ROUND));
marketSummary.setTradeStockIndexVolume(BigDecimal.ZERO.setScale(FinancialUtils.SCALE, FinancialUtils.ROUND));
marketSummary.setChange(BigDecimal.ZERO.setScale(FinancialUtils.SCALE, FinancialUtils.ROUND));
@SuppressWarnings("unchecked")
List<Object[]> result = query.getResultList();
for (Object[] o : result) {
if (o[0] != null && o[1] != null && o[2] != null && o[3] != null && o[4] != null) {
marketSummary.setTradeStockIndexAverage(((BigDecimal) o[0])
.setScale(FinancialUtils.SCALE, FinancialUtils.ROUND));
marketSummary.setTradeStockIndexOpenAverage(((BigDecimal) o[1])
.setScale(FinancialUtils.SCALE, FinancialUtils.ROUND));
marketSummary.setTradeStockIndexVolume(((BigDecimal) o[2])
.setScale(FinancialUtils.SCALE, FinancialUtils.ROUND));
marketSummary.setChange(((BigDecimal) o[4]));
}
}
return marketSummary;
}