コード例 #1
0
        private void RetrieveAndPersistAllLanguagesForThisVin(string vin)
        {
            List <string> requiredNativeLangCodes = new List <string>();

            foreach (SupportedLanguage value in
                     Enum.GetValues(typeof(SupportedLanguage)))
            {
                CharacteristicsLanguageMapper mapper =
                    new CharacteristicsLanguageMapper(
                        VinChecker.GetManufacturer(vin));
                string nativeLangValue = mapper.GetSpecificCode(value);
                if (!requiredNativeLangCodes.Contains(nativeLangValue))
                {
                    requiredNativeLangCodes.Add(nativeLangValue);
                }
            }
            foreach (string code in requiredNativeLangCodes)
            {
                IVendorCharacteristicsProvider provider =
                    VendorCharacteristicsProviderFactory.Create(
                        VinChecker.GetManufacturer(vin));
                VehicleCharacteristics chars = provider.GetByVin(vin, code);
                PersistVehicleCharacteristics(chars);
            }
        }
コード例 #2
0
        private void PersistVehicleCharacteristics(VehicleCharacteristics chars)
        {
            VehicleCharacteristicsEntity entity =
                VehicleCharacteristicsAssembler.FromDomainObjectToEntity(chars);

            using (VTSDatabase database = new VTSDatabase())
            {
                database.VehicleCharacteristics.Add(entity);
                try
                {
                    database.SaveChanges();
                }
                catch (DbEntityValidationException e)
                {
                    string result = String.Empty;
                    foreach (DbEntityValidationResult eve in e.EntityValidationErrors)
                    {
                        string entityTypename = eve.Entry.Entity.GetType().Name;
                        string errorString    = String.Empty;
                        foreach (DbValidationError error in eve.ValidationErrors)
                        {
                            errorString = error.PropertyName + " : " + error.ErrorMessage;
                        }
                        result = String.Format("{0} | {1}", result, entityTypename + " -> " + errorString);
                    }
                    throw new Exception(result);
                }
            }
        }
コード例 #3
0
        public VehicleCharacteristics GetVehicleCharacteristicsForVin(
            string vin, SupportedLanguage preferredLanguage)
        {
            CharacteristicsLanguageMapper mapper =
                new CharacteristicsLanguageMapper(
                    VinChecker.GetManufacturer(vin));
            string langCode = mapper.GetSpecificCode(preferredLanguage);

            // 1. check our database
            VehicleCharacteristics charsFromDatabase =
                GetExactMatchFromDatabase(vin, langCode);

            if (charsFromDatabase != null)
            {
                return(charsFromDatabase);
            }

            // 2. Do we have anything at all for this vin?
            bool haveAnything = DoWeHaveAnythingForThisVin(vin);

            if (haveAnything)
            {
                RetrieveAndPersistAllLangsWeDoNotHaveYetForThisVin(vin);
            }
            else
            {
                RetrieveAndPersistAllLanguagesForThisVin(vin);
            }

            // 3. Get best match
            return(GetBestMatchFromOurDatabase(vin, langCode));
        }
コード例 #4
0
 public VehicleInfoRecognizer(
     string vin,
     VehicleCharacteristics characteristics)
 {
     if (characteristics == null)
     {
         throw new ArgumentNullException("characteristics");
     }
     this.characteristics = characteristics;
     this.vin             = vin;
 }
コード例 #5
0
        private void RetrieveAndPersistAllLangsWeDoNotHaveYetForThisVin(string vin)
        {
            IList <SupportedLanguage> langsWeLackForThisVin =
                GetLangsWeDoNotHaveForVin(vin);

            foreach (SupportedLanguage language in langsWeLackForThisVin)
            {
                IVendorCharacteristicsProvider provider =
                    VendorCharacteristicsProviderFactory.Create(
                        VinChecker.GetManufacturer(vin));
                CharacteristicsLanguageMapper mapper =
                    new CharacteristicsLanguageMapper(VinChecker.GetManufacturer(vin));
                VehicleCharacteristics chars = provider.GetByVin(vin,
                                                                 mapper.GetSpecificCode(language));
                PersistVehicleCharacteristics(chars);
            }
        }