private void BackupServerBasedTm(TranslationProviderServer translationProvider, List <AnonymizeTranslationMemory> tusToAnonymize) { _backupTms.Clear(); if (!Directory.Exists(Constants.ServerTmBackupPath)) { Directory.CreateDirectory(Constants.ServerTmBackupPath); } try { foreach (var tuToAonymize in tusToAnonymize) { var translationMemory = translationProvider.GetTranslationMemory(tuToAonymize.TmPath, TranslationMemoryProperties.All); var languageDirections = translationMemory.LanguageDirections; foreach (var languageDirection in languageDirections) { var folderPath = Path.Combine(Constants.ServerTmBackupPath, translationMemory.Name, languageDirection.TargetLanguageCode); if (!Directory.Exists(folderPath)) { Directory.CreateDirectory(folderPath); } var fileName = translationMemory.Name + languageDirection.TargetLanguageCode + ".tmx.gz"; _filePath = Path.Combine(folderPath, fileName); //if tm does not exist download it if (!File.Exists(_filePath)) { _tmExporter = new ScheduledServerTranslationMemoryExport(languageDirection) { ContinueOnError = true }; _tmExporter.Queue(); _tmExporter.Refresh(); var continueWaiting = true; while (continueWaiting) { switch (_tmExporter.Status) { case ScheduledOperationStatus.Abort: case ScheduledOperationStatus.Aborted: case ScheduledOperationStatus.Cancel: case ScheduledOperationStatus.Cancelled: case ScheduledOperationStatus.Completed: case ScheduledOperationStatus.Error: continueWaiting = false; break; case ScheduledOperationStatus.Aborting: case ScheduledOperationStatus.Allocated: case ScheduledOperationStatus.Cancelling: case ScheduledOperationStatus.NotSet: case ScheduledOperationStatus.Queued: case ScheduledOperationStatus.Recovered: case ScheduledOperationStatus.Recovering: case ScheduledOperationStatus.Recovery: _tmExporter.Refresh(); break; default: continueWaiting = false; break; } } if (_tmExporter.Status == ScheduledOperationStatus.Completed) { var backup = new ServerTmBackUp { ScheduledExport = _tmExporter, FilePath = _filePath }; _backupTms.Add(backup); } else if (_tmExporter.Status == ScheduledOperationStatus.Error) { MessageBox.Show(_tmExporter.ErrorMessage, "", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } if (!_backgroundWorker.IsBusy) { _backgroundWorker.RunWorkerAsync(); } } } catch (Exception exception) { if (exception.Message.Equals("One or more errors occurred.")) { if (exception.InnerException != null) { MessageBox.Show(exception.InnerException.Message, "", MessageBoxButtons.OK, MessageBoxIcon.Error); } } else { MessageBox.Show(exception.Message, "", MessageBoxButtons.OK, MessageBoxIcon.Error); } } }
public void ExportToTmx(TranslationProviderServer tmServer, string orgName, string tmName, string exportFilePath) { #region "OpenTm" if (!orgName.StartsWith("/")) { orgName = "/" + orgName; } if (!orgName.EndsWith("/")) { orgName += "/"; } ServerBasedTranslationMemory tm = tmServer.GetTranslationMemory( orgName + tmName, TranslationMemoryProperties.All); #endregion #region "exporter" ScheduledServerTranslationMemoryExport exporter = new ScheduledServerTranslationMemoryExport( this.GetLanguageDirection(tm, CultureInfo.GetCultureInfo("en-US"), CultureInfo.GetCultureInfo("de-DE"))); #endregion #region "settings" exporter.ChunkSize = 25; exporter.ContinueOnError = true; #endregion #region "wait" exporter.Queue(); exporter.Refresh(); bool continueWaiting = true; while (continueWaiting) { switch (exporter.Status) { case ScheduledOperationStatus.Abort: case ScheduledOperationStatus.Aborted: case ScheduledOperationStatus.Cancel: case ScheduledOperationStatus.Cancelled: case ScheduledOperationStatus.Completed: case ScheduledOperationStatus.Error: continueWaiting = false; break; case ScheduledOperationStatus.Aborting: case ScheduledOperationStatus.Allocated: case ScheduledOperationStatus.Cancelling: case ScheduledOperationStatus.NotSet: case ScheduledOperationStatus.Queued: case ScheduledOperationStatus.Recovered: case ScheduledOperationStatus.Recovering: case ScheduledOperationStatus.Recovery: continueWaiting = true; exporter.Refresh(); break; default: continueWaiting = false; break; } } #endregion #region "completed" if (exporter.Status == ScheduledOperationStatus.Completed) { using (Stream outputStream = new FileStream(exportFilePath, FileMode.Create)) { var result = exporter.DownloadExport(outputStream); if (result) { MessageBox.Show("Export successfuly finished."); } } } else if (exporter.Status == ScheduledOperationStatus.Error) { MessageBox.Show(exporter.ErrorMessage); } else { MessageBox.Show("Export did not finish."); } #endregion }