public VehicleCharacteristics Get() { Manufacturer?manufacturer = VinChecker.GetManufacturer(vin); if (manufacturer == null) { return(null); } ManufacturerWebConnectorFactory factory = new ManufacturerWebConnectorFactory(DefaultLang); IManufacturerWebConnector connector = factory.GetConnector(manufacturer.Value); VehicleCharacteristics result; try { connector.Connect(); result = connector.Retrieve(vin); connector.Disconnect(); } catch (Exception) { // TODO : Message about xception return(null); } return(result); }
private int RecognizeProductionYear() { IVehicleProductionYearRecognizer rec = VehicleProductionYearRecognizerFactory.Create(VinChecker.GetManufacturer(vin)); return(rec.Recognize(characteristics)); }
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); } }
private string RecognizeVehicleModel() { IVehicleModelRecognizer recognizer = VehicleModelRecognizerFactory. Create(VinChecker.GetManufacturer(vin)); return(recognizer.Recognize(characteristics)); }
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)); }
public EngineRecognizerFactory( string vin, VehicleCharacteristics characteristics) { Manufacturer?man1 = VinChecker.GetManufacturer(vin); if (man1 == null) { throw new Exception("Manufacturer not recognized"); } man = man1.Value; this.characteristics = characteristics; }
private bool IsVinKnownAndValid(string vinToCheck) { if (String.IsNullOrWhiteSpace(vinToCheck) || vinToCheck.Length != 17) { return(false); } try { VinChecker.GetManufacturer(vinToCheck); } catch (NotSupportedException) { return(false); } return(true); }
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); } }
private List <SupportedLanguage> GetLangsWeDoNotHaveForVin(string vin) { using (VTSDatabase database = new VTSDatabase()) { List <SupportedLanguage> result = new List <SupportedLanguage>(); foreach (SupportedLanguage value in Enum.GetValues(typeof(SupportedLanguage))) { CharacteristicsLanguageMapper mapper = new CharacteristicsLanguageMapper(VinChecker.GetManufacturer(vin)); string langValue = mapper.GetSpecificCode(value); if (!database.VehicleCharacteristics.Any(vc => vc.Vin == vin && vc.Language == langValue)) { if (!result.Contains(value)) { result.Add(value); } } } return(result); } }
/// <summary> /// Persists dataset with all duplicate protections. /// </summary> /// <returns>Persisted dataset guid.</returns> public Guid Persist(PsaDatasetDto dataset) { Guid updatedDatasetGuid = Guid.Empty; if (IsKnownDataset(dataset)) { foreach (PsaTraceDto traceDto in dataset.Traces) { // skip known traces, skip empty traces if (!IsKnownTrace(traceDto) && traceDto.ParametersSets.Count > 0) { // persist trace for existing dataset using (VTSDatabase database = new VTSDatabase()) { Guid guid = dataset.Guid; PsaDatasetEntity entity = database.PsaDataset.FirstOrDefault(d => d.Guid == guid); if (entity != null) { traceDto.PsaDatasetId = entity.Id; } PsaTrace traceEntity = PsaTraceAssembler.FromDtoToEntity(traceDto); database.PsaTrace.Add(traceEntity); database.SaveChanges(); updatedDatasetGuid = dataset.Guid; // to update analytic data based on updated dataset } } } } else { List <PsaTraceDto> bufferList = new List <PsaTraceDto>(dataset.Traces); foreach (PsaTraceDto traceDto in bufferList) // to remove known traces { if (IsKnownTrace(traceDto) && traceDto.ParametersSets.Count > 0) { DateTime date = traceDto.Date; string vin = traceDto.Vin; PsaTraceDto dtoToRemove = dataset.Traces.FirstOrDefault(t => t.Date == date && t.Vin == vin); if (dtoToRemove == null) { throw new Exception("Trace not found here!"); } dataset.Traces.Remove(dtoToRemove); } } if (dataset.Traces.Count > 0) // if there are still some new { string vin = dataset.Traces.First().Vin; if (!VinChecker.IsValid(vin)) { throw new FaultException <VtsWebServiceException>( new VtsWebServiceException(String.Format("Cannot save data for invalid vin {0}", vin))); } PsaDatasetEntity datasetEntity = PsaDatasetAssembler.FromDtoToEntity(dataset); using (VTSDatabase database = new VTSDatabase()) { datasetEntity.VehicleEntityId = database.Vehicle.First(v => v.Vin == vin).Id; database.PsaDataset.Add(datasetEntity); database.SaveChanges(); updatedDatasetGuid = dataset.Guid; // to update analytic data based on updated dataset } } } return(updatedDatasetGuid); }