PageRenderTime 48ms CodeModel.GetById 24ms RepoModel.GetById 0ms app.codeStats 0ms

/feed.builder/src/feed/builder/builder/FeedBuilder.java

https://bitbucket.org/kemiri494/feedserverrepo
Java | 317 lines | 249 code | 38 blank | 30 comment | 18 complexity | 50e7c95ff5056fa14f102c0df186577a MD5 | raw file
  1. package feed.builder.builder;
  2. import java.rmi.registry.LocateRegistry;
  3. import java.rmi.registry.Registry;
  4. import java.sql.Connection;
  5. import java.sql.ResultSet;
  6. import java.sql.Statement;
  7. import java.text.SimpleDateFormat;
  8. import java.util.Calendar;
  9. import java.util.Date;
  10. import java.util.Hashtable;
  11. import javax.print.DocFlavor.STRING;
  12. import org.slf4j.Logger;
  13. import org.slf4j.LoggerFactory;
  14. import feed.builder.consumer.FeedConsumer;
  15. import feed.builder.core.Database;
  16. import feed.builder.msg.Stock;
  17. import feed.builder.msg.StockSummary;
  18. import feed.provider.core.FileConfig;
  19. public class FeedBuilder {
  20. protected TradeBuilder tradeBuilder;
  21. protected QuoteBuilder quoteBuilder;
  22. protected OtherBuilder otherBuilder;
  23. protected FileConfig config;
  24. protected Hashtable stockSummary;
  25. protected Database database;
  26. private Logger log = LoggerFactory.getLogger(getClass());
  27. protected QueueBuilder queueBuilder;
  28. protected boolean isUsingQueue = false;
  29. public FeedBuilder(FeedConsumer consumer) throws Exception {
  30. stockSummary = new Hashtable();
  31. config = new FileConfig("feed.builder.config");
  32. // database = new Database();
  33. log.info("database...");
  34. // database.start(config.getProperty("database"));
  35. // selectSS();
  36. selectSSYesterday();
  37. // selectStock();
  38. log.info("database started111");
  39. log.info("other builder started");
  40. otherBuilder = new OtherBuilder(consumer, this, Integer.parseInt(config.getProperty("builderport")));
  41. log.info("other builder started");
  42. tradeBuilder = new TradeBuilder(consumer, this, Integer.parseInt(config.getProperty("builderport")));
  43. log.info("trade builder started");
  44. quoteBuilder = new QuoteBuilder(consumer, this,Integer.parseInt(config.getProperty("builderport")));
  45. log.info("quote builder started "+quoteBuilder.getClass()+":");
  46. }
  47. public FeedBuilder(FeedConsumer consumer, boolean normi) throws Exception {
  48. stockSummary = new Hashtable();
  49. config = new FileConfig("feed.builder.config");
  50. log.info("other builder started");
  51. boolean isUsingQueue = Boolean.parseBoolean(config.getProperty("usingqueue"));
  52. log.info("using queue " + isUsingQueue);
  53. if (isUsingQueue) {
  54. queueBuilder = new QueueBuilder(consumer, this);
  55. this.isUsingQueue = isUsingQueue;
  56. } else {
  57. database = new Database();
  58. log.info("database...");
  59. database.start(config.getProperty("database"));
  60. // selectSS();
  61. log.info("database started");
  62. otherBuilder = new OtherBuilder(consumer, this);
  63. log.info("other builder started ");
  64. tradeBuilder = new TradeBuilder(consumer, this);
  65. log.info("trade builder started");
  66. /*quoteBuilder = new QuoteBuilder(consumer, this);
  67. log.info("quote builder started");*/
  68. // selectSSYesterday();
  69. // selectStock();
  70. quoteBuilder = new QuoteMultiThreadBuilder(consumer, this,Integer.parseInt(config.getProperty("builderport")), config);
  71. //quoteBuilder = new QuoteBuilder(consumer, this,Integer.parseInt(config.getProperty("builderport")));
  72. log.info("quote builder started "+quoteBuilder.getClass()+":");
  73. }
  74. /*--new multitrade
  75. * quoteBuilder = new QuoteMultiThreadBuilder(consumer, this,
  76. Integer.parseInt(config.getProperty("builderport")), config);
  77. log.info("quote builder started");*/
  78. // queueBuilder = new QueueBuilder(consumer, this,
  79. // Integer.parseInt(config.getProperty("builderport")));
  80. // log.info("queue builder started");
  81. }
  82. protected final static SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
  83. protected void selectSS() {
  84. String query = "select stock, open, prev, board from feed_stocksummary where transdate='%s' ";
  85. ResultSet rec = null;
  86. Connection conn = null;
  87. Statement st = null;
  88. try {
  89. conn = database.getConnection();
  90. st = conn.createStatement();
  91. String queryStr = String.format(query,new Object[] { format.format(new Date()) });
  92. rec = st.executeQuery(queryStr);
  93. StockSummary ss = null;
  94. while (rec.next()) {
  95. ss = new StockSummary();
  96. ss.setStock(rec.getString("stock"));
  97. ss.setBoard(rec.getString("board"));
  98. ss.setOpen(rec.getDouble("open"));
  99. ss.setPrev(rec.getDouble("prev"));
  100. updateOpen(ss);
  101. }
  102. } catch (Exception sqle) {
  103. sqle.printStackTrace();
  104. } finally {
  105. try {
  106. rec.close();
  107. } catch (Exception ex) {
  108. }
  109. try {
  110. st.close();
  111. } catch (Exception ex) {
  112. }
  113. try {
  114. conn.close();
  115. } catch (Exception ex) {
  116. }
  117. }
  118. }
  119. protected void selectSSYesterday() {
  120. //String query = "select stock, open, prev, board from feed_stocksummary where transdate='%s' ";
  121. // String query = "SELECT stock, open, last, board FROM FEED_STOCKSUMMARY WHERE TRANSDATE=TO_CHAR(GET_PREV_WORK_DATE(TRUNC(SYSDATE)),'yyyy-mm-dd')";
  122. // String query = "SELECT stock, open, last, board FROM FEED_STOCKSUMMARY WHERE TRANSDATE=GET_LASTDATE_SUMMARY()";
  123. String query = "SELECT stock, open, last, board FROM FEED_SSYESTERDAY";
  124. ResultSet rec = null;
  125. Connection conn = null;
  126. Statement st = null;
  127. try {
  128. //Calendar cal = Calendar.getInstance();
  129. //cal.add(Calendar.DATE, -1);
  130. conn = database.getConnection();
  131. st = conn.createStatement();
  132. //String queryStr = String.format(query,new Object[] { format.format(cal.getTime()) });
  133. //rec = st.executeQuery(queryStr);
  134. rec = st.executeQuery(query);
  135. StockSummary ss = null;double i = new Double(0);
  136. while (rec.next()) {
  137. ss = new StockSummary();
  138. ss.setHeader("IDX");
  139. ss.setType("5");
  140. ss.setSeqno(new Double(1));
  141. ss.setStock(rec.getString("stock"));
  142. ss.setBoard(rec.getString("board"));
  143. ss.setPrev(rec.getDouble("last"));
  144. updateOpen(ss);
  145. otherBuilder.setYesterday(ss);
  146. i++;
  147. }
  148. } catch (Exception sqle) {
  149. sqle.printStackTrace();
  150. } finally {
  151. try {
  152. rec.close();
  153. } catch (Exception ex) {
  154. }
  155. try {
  156. st.close();
  157. } catch (Exception ex) {
  158. }
  159. try {
  160. conn.close();
  161. } catch (Exception ex) {
  162. }
  163. }
  164. }
  165. public void selectStock(){
  166. // String query="SELECT secid, secname FROM TFO_SECURITIES@SIMASNET112";
  167. String query="SELECT secid, secname FROM TFO_SECURITIES@SIMASNET order by secid";
  168. ResultSet rec = null;
  169. Connection conn = null;
  170. Statement st = null;
  171. try {
  172. conn = database.getConnection();
  173. st = conn.createStatement();
  174. rec = st.executeQuery(query);
  175. double i = new Double(0);
  176. Stock stock = null;
  177. while (rec.next()) {
  178. stock = new Stock();
  179. stock.setHeader("IDX");
  180. stock.setType("3");
  181. stock.setSeqno(new Double(1));
  182. stock.setCode(rec.getString("secid"));
  183. stock.setName(rec.getString("secname"));
  184. otherBuilder.setYesterday(stock);
  185. i++;
  186. }
  187. } catch (Exception sqle) {
  188. sqle.printStackTrace();
  189. } finally {
  190. try {
  191. rec.close();
  192. } catch (Exception ex) {
  193. }
  194. try {
  195. st.close();
  196. } catch (Exception ex) {
  197. }
  198. try {
  199. conn.close();
  200. } catch (Exception ex) {
  201. }
  202. }
  203. }
  204. public void updateOpen(StockSummary ss) {
  205. String keys = ss.getStock() + "#" + ss.getBoard();
  206. StockSummary old = (StockSummary) stockSummary.get(keys);
  207. if (old != null) {
  208. if (old.getOpen() == 0 && ss.getOpen() != 0) {
  209. old.setOpen(ss.getOpen());
  210. }
  211. if (old.getPrev() == 0 && ss.getPrev() != 0) {
  212. old.setPrev(ss.getPrev());
  213. }
  214. if (ss.getPrev() != 0) {
  215. old.setPrev(ss.getPrev());
  216. }
  217. stockSummary.put(keys, old);
  218. // otherBuilder.setYesterday(old);
  219. } else {
  220. StockSummary t = new StockSummary();
  221. t.setStock(ss.getStock());
  222. t.setBoard(ss.getBoard());
  223. t.setOpen(ss.getOpen());
  224. t.setPrev(ss.getPrev());
  225. t.setHeader("IDX");
  226. t.setType("5");
  227. stockSummary.put(keys, t);
  228. // otherBuilder.setYesterday(t);
  229. }
  230. }
  231. public StockSummary getSS(String keys) {
  232. return (StockSummary) stockSummary.get(keys);
  233. }
  234. public String getQuote(String quote, String board) {
  235. return quoteBuilder.getSnapShot(quote, board);
  236. }
  237. public String getTrade(String stock) {
  238. return otherBuilder.getTHSnapShot(stock, 10000);
  239. }
  240. public void printClient() {
  241. quoteBuilder.printClient();
  242. tradeBuilder.printClient();
  243. otherBuilder.printClient();
  244. // queueBuilder.printClient();
  245. }
  246. public void start() throws Exception {
  247. log.info("start");
  248. tradeBuilder.connect();
  249. quoteBuilder.connect();
  250. otherBuilder.connect();
  251. Registry registry = LocateRegistry.createRegistry(Integer.parseInt(config.getProperty("builderport")));
  252. registry.rebind(config.getProperty("tradebuilder"),tradeBuilder.getService());
  253. registry.rebind(config.getProperty("quotebuilder"),quoteBuilder.getService());
  254. registry.rebind(config.getProperty("otherbuilder"),otherBuilder.getService());
  255. // System.out.println("tes");
  256. log.info("started");
  257. }
  258. public void stop() {
  259. try {
  260. tradeBuilder.exit();
  261. quoteBuilder.exit();
  262. otherBuilder.exit();
  263. // queueBuilder.exit();
  264. } catch (Exception ex) {
  265. }
  266. }
  267. public TradeBuilder getTradeBuilder() {
  268. return tradeBuilder;
  269. }
  270. public QuoteBuilder getQuoteBuilder() {
  271. return quoteBuilder;
  272. }
  273. public OtherBuilder getOtherBuilder() {
  274. return otherBuilder;
  275. }
  276. public QueueBuilder getQueueBuilder() {
  277. return queueBuilder;
  278. }
  279. }