/// <summary> /// Логика загрузки слепка данных /// </summary> /// <param name="archiver"></param> /// <param name="filePath"></param> /// <returns></returns> public virtual DataSet LoadDumpFile(IArchiver archiver, string filePath = null) { var serializer = SyncSettings.DataSerializer as IDataSerializer <DataSet>; //кастую сериалайзер, к сериалайзеру работающему с dataset DataSet result; try { if (serializer == null) { throw new InvalidCastException("Настройки сериалайзера не позволяют привести объект к DataSet"); } string directory = AppDomain.CurrentDomain.BaseDirectory; //по умолчанию директория запуска if (filePath == null) { filePath = Path.Combine(directory, SyncSettings.ExportFileName); //если не указан произвольный путь, вычисляю путь к файлу синхронизации } else { directory = Path.GetDirectoryName(filePath); //если указан произвольный путь к файлу, получаю путь к директории } if (directory == null) { throw new Exception("Не удалось получить путь к директории загрузки"); } //временная директория var dir = new DirectoryInfo(Path.Combine(directory, SyncSettings.TempFolderName)); if (dir.Exists) { dir.Delete(true); } archiver.Decompress(new FileInfo(filePath), new DirectoryInfo(directory)); //распаковываю слепок данных var jsonPath = Path.Combine(dir.FullName, string.Concat(Path.GetFileNameWithoutExtension(filePath), SyncSettings.DataSerializer.FileExtenssion)); //путь к файлу с сериализованными данными БД if (!File.Exists(jsonPath)) { jsonPath = Path.Combine(dir.FullName, string.Concat(Resources.cDefaultDataFilenamePrefix, SyncSettings.DataSerializer.FileExtenssion)); } if (!File.Exists(jsonPath)) { throw new FileNotFoundException("Не удалось обнаружить данные сериализации"); } SyncSettings.Logger.Info("Чтение данных..."); result = serializer.DeserializeData(jsonPath); //дессериализация RowsToUpdateCount = 0; foreach (DataTable item in result.Tables) { RowsToUpdateCount += item.Rows.Count; } SyncSettings.Logger.Info("Загрузка слепка данных прошла успешно..."); } catch (Exception ex) { SyncSettings.Logger.Error(ex); Out(ex.ToString()); throw; } return(result); //возвращаю дессериализованный набор данных }
public void DecompressWhenTheParameterIsNullThrowsArgumentNullException() { _archiver.Decompress(null); }