/// <summary> /// Creates the service based on the service type. /// </summary> /// <param name="serviceType">Service type.</param> /// <param name="settings">Configuration settings.</param> /// <returns>Returns the service based on the service type.</returns> public static BaseAddressService Create(ConverterServiceType serviceType, Settings settings) { BaseAddressService service; switch (serviceType) { case ConverterServiceType.Lot: service = new LotBasedAddressService(settings); break; case ConverterServiceType.Street: service = new StreetBasedAddressService(settings); break; default: throw new NotSupportedException("Service type is not defined"); } return(service); }
/// <summary> /// Processes the update service. /// </summary> /// <param name="serviceType">Converter service type.</param> public void ProcessRequests(ConverterServiceType serviceType) { var service = this.GetService(serviceType); service.StatusChanged += Status_Changed; service.ExceptionThrown += Exception_Thrown; service.ProcessRequests(service.SkipDownloadingFiles, service.SkipExtractingFiles, service.SkipConvertingFiles, service.SkipGeneratingXmlDocuments, service.SkipArchivingXmlDocuments, true); if (!service.SkipLoadingDatabase) { this.LoadDatabase(service.ExtractDirectory, serviceType); } service.EmptyDirectories(service.SkipEmptyingDirectories); }
/// <summary> /// Loads extracted XML files to database. /// </summary> /// <param name="sourceDirectory">Source directory where the XML files are located.</param> /// <param name="serviceType">Converter service type.</param> private void LoadDatabase(string sourceDirectory, ConverterServiceType serviceType) { using (var context = new KoreanPostcodeAddressDataContext()) { // Drops and recreates tables. context.DropCreateTables(Convert.ToString(serviceType)); } IList <string> filepaths; switch (serviceType) { case ConverterServiceType.Lot: filepaths = Directory.GetFiles(sourceDirectory).Where(p => p.EndsWith(".xml")).ToList(); this.LoadLotBasedAddresses(filepaths); break; case ConverterServiceType.Street: filepaths = Directory.GetFiles(sourceDirectory).Where(p => p.EndsWith(".txt")).ToList(); this.LoadStreetBasedAddresses(filepaths); break; } }
/// <summary> /// Gets the converter service instance based on the converter service type. /// </summary> /// <param name="serviceType">Converter service type.</param> /// <returns>Returns the converter service instance based on the converter service type.</returns> private IBaseAddressService GetService(ConverterServiceType serviceType) { return(BaseAddressService.Create(serviceType, this._settings)); }