예제 #1
0
        static void Process()
        {
            int    pageSize   = Convert.ToInt32(ConfigurationManager.AppSettings.Get("CMEAPI_PageSize"));
            string cmeLink    = cmeAPI.CreateLink(1);           // Get Products link
            int    totalPages = 0;

            Console.WriteLine("Preparing connection....");
            var jsonProd = new WebClient().DownloadString(cmeLink + "?page=0&size=" + pageSize.ToString());

            CMEProduct.ProductsMain prodobj = JsonConvert.DeserializeObject <CMEProduct.ProductsMain>(jsonProd);
            //CMEInstrument.InstrumentMain instobj = JsonConvert.DeserializeObject<CMEInstrument.InstrumentMain>(jsonInst);
            totalPages = prodobj._metadata.totalPages;

            ProcessProduct(cmeLink, totalPages, pageSize);
        }
예제 #2
0
        static void ProcessProduct(string cmeLink, int totalPages, int pageSize)
        {
            AppDAL appDal = new AppDAL();

            Console.WriteLine("Processing Data...");
            for (int i = 0; i < totalPages; i++)
            {
                string linkParam = "?page=" + i.ToString() + "&size=" + pageSize.ToString();
                Console.WriteLine("Collecting Product information from source." + i.ToString() + " of " + totalPages.ToString());
                var jsonProdTmp = new WebClient().DownloadString(cmeLink + linkParam);

                Console.WriteLine("Processing collected data to temp table...");
                CMEProduct.ProductsMain prodobjTmp = JsonConvert.DeserializeObject <CMEProduct.ProductsMain>(jsonProdTmp);

                appDal.SetProductDataToSave(prodobjTmp);
            }
        }
예제 #3
0
파일: AppDAL.cs 프로젝트: rommelcs/CQBO-App
        public void SetProductDataToSave(CMEProduct.ProductsMain prodobjTmp)
        {
            DataTable dt = typeProductTable();

            foreach (var item in prodobjTmp._embedded.products)
            {
                string prodGuid = item.productGuid.ToString();

                dt.Rows.Add(
                    item.productGuid,
                    item.productGuidInt,
                    item.productName,
                    item.securityType,
                    item.clearingSymbol,
                    item.masterSymbol,
                    item.exchangeClearing,
                    item.exchangeGlobex,
                    item.assetClass,
                    item.assetSubClass,
                    item.sector,
                    item.subSector,
                    item.dailyFlag,
                    item.settlePxCcy,
                    item.minGlobexOrdQty,
                    item.maxGlobexOrdQty,
                    item.tradePxCcy,
                    item.globexGroupCode,
                    item.itcCode,
                    item.pxQuoteMethod,                     //codeMethod in Table
                    item.lastUpdated
                    );

                CME_API cmeAPI        = new CME_API();
                string  cmeLink       = cmeAPI.CreateLink(1);           // Get instrument link
                string  prodInstrLnk  = cmeLink + prodGuid + "/instruments";
                int     pageSizeInstr = Convert.ToInt32(ConfigurationManager.AppSettings.Get("CMEAPI_PageSize"));
                string  paramInstrLnk = "?page=0&size=" + pageSizeInstr.ToString();
                var     jsonProdInst  = new WebClient().DownloadString(prodInstrLnk + paramInstrLnk);

                CMEInstrument.InstrumentMain instrobjTmp = JsonConvert.DeserializeObject <CMEInstrument.InstrumentMain>(jsonProdInst);

                DataTable dtInst = typeInstrumentTable();

                Console.Write("Collecting product instrument for " + prodGuid);
                for (int iCnt = 0; iCnt < instrobjTmp._metadata.totalPages; iCnt++)
                {
                    Console.WriteLine("Collecting Instrument information from source." + instrobjTmp._metadata.totalElements.ToString() + " - " + iCnt.ToString() + " of " + instrobjTmp._metadata.totalPages.ToString());
                    if (iCnt > 0)
                    {
                        paramInstrLnk = "?page=" + iCnt.ToString() + "&size=" + pageSizeInstr.ToString();
                        jsonProdInst  = new WebClient().DownloadString(prodInstrLnk + paramInstrLnk);

                        instrobjTmp = JsonConvert.DeserializeObject <CMEInstrument.InstrumentMain>(jsonProdInst);
                    }
                    if (instrobjTmp._embedded != null)
                    {
                        foreach (var inst in instrobjTmp._embedded.instruments)
                        {
                            dtInst.Rows.Add(
                                inst.guid,
                                inst.guidInt,
                                inst.productGuidInt,
                                inst.instrumentName,
                                inst.globexSecurityId,
                                inst.globexSymbol,
                                inst.positionRemovalDate,
                                inst.lastUpdated,
                                inst.lastTradeDate,
                                inst.lastNoticeDate,
                                inst.lastDeliveryDate,
                                inst.globexLastTradeDate,
                                inst.globexFirstTradeDate,
                                inst.firstTradeDate,
                                inst.firstNoticeDate,
                                inst.firstDeliveryDate,
                                inst.finalSettlementDate,
                                inst.initialInventoryDueDate,
                                inst.lastInventoryDueDate,
                                inst.contractMonth,
                                inst.valuationMethod,
                                inst.strikePx,
                                inst.couponRate,
                                inst.tccAlias,
                                inst.itcAlias,                                 // iccalias in DataTable name
                                inst.gbxAlias,
                                inst.clrAlias,
                                inst.firstPositionDate,
                                inst.exchangeClearing
                                );
                        }
                        DtExecNonQuerySP(dtInst, "USP_CME_InstrumentInsert", "@tblInstrument");
                        Console.WriteLine("Instrument " + prodGuid + " saved....");
                    }
                }

                Console.WriteLine("Product " + prodGuid);
            }

            DtExecNonQuerySP(dt, "USP_CME_ProductInsert", "@tblProducts");
        }