public void updateArchiveEODForSymbol(final String scrip) throws Exception { final IScripSvc eodScripSvc = ServiceMgr.getScripSvc(); final List<ScripEOD> activeEOD = eodScripSvc.getArchivedEODData(scrip); double lastClosing = -1; for (final ScripEOD eod : activeEOD) { if (lastClosing != -1) { eod.setPrevClosePrice(lastClosing); } lastClosing = eod.getClosingPrice(); } final IEODIndexDAO dao = (IEODIndexDAO) OF.getBean("EODIndexDAO"); dao.updateArchive(activeEOD); }
/** Returns the value of the column at the specified row index. */ @Override public Object getValueAt(final int rowIndex, final int columnIndex) { final ScripEOD eod = getScripEODForRow(rowIndex); Object value = null; if (eod != null) { final String symbol = eod.getSymbolId(); final double close = eod.getClosingPrice(); final double open = eod.getOpeningPrice(); final double prevClose = eod.getPrevClosePrice(); switch (columnIndex) { case COL_INDEX_LINKED: final ScripITD itd = this.itdCache.getScripITDForSymbol(eod.getSymbolId()); value = (itd == null) ? Boolean.FALSE : Boolean.TRUE; break; case COL_PCT_CHG_HIST: List<SymbolPctChange> list = null; list = this.eodCache.getSymbolPctChangeList(symbol); if (list != null && !list.isEmpty()) { // Interesting - the cache holds the EOD pct changes // starting yesterday. Now since in the EOD summary // panel, we show the symbol name highlighted with // the latest %change, we remove the first element in // the list. final List<SymbolPctChange> modList = new ArrayList<SymbolPctChange>(); modList.addAll(list); modList.remove(0); final Double[] changes = new Double[modList.size()]; for (int i = 0; i < modList.size(); i++) { changes[i] = modList.get(i).getPctChange(); } value = changes; } break; case COL_SYMBOL: value = eod.getSymbolId(); break; case COL_ICICI: value = eod.getSymbol().getIciciCode(); break; case COL_PRICE: value = close; break; case COL_PCT_E: value = new Double(((close - prevClose) / prevClose) * 100); break; case COL_PCT_O: value = new Double(((close - open) / open) * 100); break; case COL_QTY: value = new Long(eod.getTotalTradeQty()); break; case COL_NAME: value = eod.getSymbol().getDescription(); break; } } return value; }