Esempio n. 1
0
        public VendorTestResult GetResultFromCache(string address, Vendor vendor)
        {
            VendorTestResult cachedResult = null;

            using (var dbContext = new ResultModelContainer())
            {
                cachedResult = dbContext.VendorTestResults.Include("TestItem").Include("Vendor")
                        .Where(e => e.Vendor.Id == vendor.Id && e.TestItem.Address.Equals(address))
                        .FirstOrDefault();
            }

            if (cachedResult != null)
            {
                log.InfoFormat("Found cached value for {0} from vendor {1} in recordId:{2}", address, vendor.Name, cachedResult.Id);
            }
            return cachedResult;
        }
Esempio n. 2
0
        static void Main(string[] args)
        {
            log4net.Config.XmlConfigurator.Configure();
            log.Info("Begin.");

            using (var dbTest = new ResultModelContainer())
            {
                IList<TestItem> testItemList = null;
                IList<VendorTestResult> vendorResultList = null;

                IList<vwMapTest> addressList;
                if (USE_SAMPLE_ADDRESSES)
                    addressList = sampleAddressList;
                else
                    addressList = AddressChecker.GetGenevaAddresses(RESULT_COUNT, RESELLER_ID_MIN, RESELLER_ID_MAX);

                // create testitems from raw addresses
                testItemList = TestItem.GetTestItems(addressList);
                dbTest.SaveTestItems(testItemList);
                log.Info(String.Format("Created {0} testItems from address list, saved to database.", testItemList.Count));

                // TODO: add an Active field in db to vendors table so it will know which to use?

                log.Info("Using vendors " + string.Join(",", vendorList.Select(e => e.Name).ToArray()));

                if (testItemList != null)
                {
                    vendorResultList = VendorTestResult.GetResultsForVendors(testItemList, vendorList);
                    log.Info(String.Format("Processed {0} vendor results.", vendorResultList.Count));
                }

                // IList<DistanceResult> distanceResultList = null;
                //if (vendorResultList != null)
                //{
                //    // get distance results from vendor test pairs.
                //    distanceResultList = DistanceResult.ProcessDistances(vendorResultList);
                //    dbTest.SaveDistanceResults(distanceResultList);
                //    log.Info(String.Format("Processed {0} distances, saved to database.", distanceResultList.Count));
                //}
            }

            log.Info("Done");
            //Console.WriteLine("\n\nDone. Press any key to close.");
            //Console.ReadKey();
        }
Esempio n. 3
0
        public static Vendor GetByName(string name)
        {
            using (ResultModelContainer dbTest = new ResultModelContainer())
            {
                Vendor v = null;

                try
                {
                    v = (dbTest.Vendors.Where(e => e.Name.Equals(name)).Single());
                }
                catch (Exception)
                {
                    log.ErrorFormat("Vendor not found for '{0}'", name);
                    throw;
                }
                return v;
            }
        }
Esempio n. 4
0
        public static IList<TestItem> GetTestItems(IList<Models.vwMapTest> rawAddresses)
        {
            IList<TestItem> testItems = new List<TestItem>();

            foreach (vwMapTest rawAddress in rawAddresses)
            {
                using (var dbTest = new ResultModelContainer())
                {
                    // create a test item from the raw address
                    var testItem = new TestItem
                    {
                        Address = GeoMapUtil.GetLocationString(rawAddress.City, rawAddress.Region, rawAddress.PostalCode),
                        ResellerId = rawAddress.ResellerID
                    };

                    testItems.Add(testItem);
                }
            }

            return testItems;
        }
Esempio n. 5
0
        public VendorTestResult Query(TestItem testItem)
        {
            //PlaceBase place = null;
            VendorTestResult vr = null;

            if (testItem == null || string.IsNullOrEmpty(testItem.Address))
            {
                throw new Exception("Address must not be a null or empty string.");
            }

            Vendor vendor = Vendor.GetByName(Provider.ToString());

            // Check cache
            VendorTestResult cachedRecord = GetResultFromCache(testItem.Address, vendor);
            if (cachedRecord != null)
            {
                log.InfoFormat("Using cached coords for address '{0}' from {1}", testItem.Address, vendor.Name);
                vr = cachedRecord;
            }
            else
            {
                log.InfoFormat("Querying address '{0}' from {1}", testItem.Address, vendor.Name);
                Uri queryUri = GetQueryUri(testItem.Address);

                string response = null;
                try
                {
                    response = new WebClient().DownloadString(queryUri);
                }
                catch (Exception)
                {
                    log.Error("Bad response from " + vendor.Name);
                    response = null;
                    throw;
                }

                PlaceBase place = null;
                if (response != null)
                {
                    place = ParseResponse(response, testItem.Address);
                }

                // CACHE IT
                if (place != null)
                {
                    try
                    {
                        using (var dbContext = new ResultModelContainer())
                        {
                            vr = new VendorTestResult(place, testItem, Vendor.GetByName(Provider.ToString()));
                            dbContext.VendorTestResults.Add(vr);
                            dbContext.SaveChanges();
                        }
                    }
                    catch (Exception e)
                    {
                        log.WarnFormat("Failed to cache address {0}\n{1}\n{2}", testItem.Address, e.ToString());
                    }
                }
            }

            return vr;
        }