private void DoTransferStorage(ColumnMapper columnMapper) { Logger.Debug("begin transfer storage"); var fileGroups = GetFilesToProcess().GroupBy(file => file.Module).ToList(); int groupsProcessed = 0; foreach (var group in fileGroups) { ICrossModuleTransferUtility transferUtility = StorageFactory.GetCrossModuleTransferUtility( ConfigPath, TenantId, group.Key, ToConfigPath, columnMapper.GetTenantMapping(), group.Key); foreach (BackupFileInfo file in group) { string adjustedPath = file.Path; IModuleSpecifics module = ModuleProvider.GetByStorageModule(file.Module, file.Domain); if (module == null || module.TryAdjustFilePath(columnMapper, ref adjustedPath)) { try { transferUtility.CopyFile(file.Domain, file.Path, file.Domain, adjustedPath); } catch (Exception error) { Logger.Warn("Can't copy file ({0}:{1}): {2}", file.Module, file.Path, error); } } else { Logger.Warn("Can't adjust file path \"{0}\".", file.Path); } } SetCurrentStepProgress((int)(++groupsProcessed * 100 / (double)fileGroups.Count)); } if (fileGroups.Count == 0) { SetStepCompleted(); } Logger.Debug("end transfer storage"); }
private void DoRestoreStorage(IDataReadOperator dataReader) { InvokeInfo("begin restore storage"); var fileGroups = GetFilesToProcess(dataReader).GroupBy(file => file.Module).ToList(); int groupsProcessed = 0; foreach (var group in fileGroups) { IDataStore storage = StorageFactory.GetStorage(ConfigPath, _columnMapper.GetTenantMapping().ToString(), group.Key, null, null); foreach (BackupFileInfo file in group) { string adjustedPath = file.Path; IModuleSpecifics module = ModuleProvider.GetByStorageModule(file.Module); if (module == null || module.TryAdjustFilePath(_columnMapper, ref adjustedPath)) { Stream stream = dataReader.GetEntry(KeyHelper.GetFileZipKey(file)); try { storage.Save(file.Domain, adjustedPath, stream); } catch (Exception error) { InvokeWarning("can't restore file ({0}:{1}): {2}", file.Module, file.Path, error); } } } SetStepProgress((int)(++groupsProcessed * 100 / (double)fileGroups.Count)); } if (fileGroups.Count == 0) { SetStepCompleted(); } InvokeInfo("end restore storage"); }