Ejemplo n.º 1
0
        private static int UpdateCustomFieldPickLists(ProgressDialogContext context, IEnumerable <CustomField> customFields, ITranslationMemory tm)
        {
            var updatedCount = 0;

            context?.Report(0, StringResources.Updating_Multiple_PickList_fields);

            foreach (var customField in customFields.Where(f => f.IsSelected && f.IsPickList))
            {
                foreach (var fieldValue in customField.FieldValues.Where(n => n.IsSelected && n.NewValue != null))
                {
                    foreach (var fieldDefinition in tm.FieldDefinitions.Where(n => n.Name.Equals(customField.Name)))
                    {
                        var pickListItem = fieldDefinition.PicklistItems.FirstOrDefault(a => a.Name.Equals(fieldValue.Value));
                        if (pickListItem != null)
                        {
                            pickListItem.Name = fieldValue.NewValue;
                            updatedCount++;
                        }
                    }
                }
            }

            tm.Save();

            return(updatedCount);
        }
Ejemplo n.º 2
0
        private static int UpdateCustomFieldsSqlite(ProgressDialogContext context, TmFile tmFile, List <TmTranslationUnit> units)
        {
            if (units.Count == 0)
            {
                return(0);
            }

            int updatedCount;
            var service = new SqliteTmService(tmFile.Path, null, new SerializerService(), new SegmentService());

            try
            {
                service.OpenConnection();

                updatedCount = service.UpdateCustomFields(context, units);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
                throw;
            }
            finally
            {
                service.CloseConnection();
            }

            return(updatedCount);
        }
Ejemplo n.º 3
0
        private static int UpdateSystemFieldsSqlite(ProgressDialogContext context, TmFile tmFile, IEnumerable <TmTranslationUnit> units, List <User> uniqueUsers)
        {
            var updatedCount = 0;

            var service = new SqliteTmService(tmFile.Path, null, new SerializerService(), new SegmentService());

            try
            {
                service.OpenConnection();

                var updateList = units.Where(unit => UpdateSystemFields(uniqueUsers, unit)).ToList();

                if (updateList.Count > 0)
                {
                    updatedCount = service.UpdateSystemFields(context, updateList);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
                throw;
            }
            finally
            {
                service.CloseConnection();
            }

            return(updatedCount);
        }
Ejemplo n.º 4
0
        public Report AnonymizeFileBasedCustomFields(ProgressDialogContext context, TmFile tmFile, List <CustomField> customFields)
        {
            _tmService.BackupFileBasedTms(context, new List <TmFile> {
                tmFile
            });

            var tm = new FileBasedTranslationMemory(tmFile.Path);

            var translationUnits = _tmService.LoadTranslationUnits(context, tmFile, null,
                                                                   new LanguageDirection
            {
                Source = tm.LanguageDirection.SourceLanguage,
                Target = tm.LanguageDirection.TargetLanguage
            });

            var units = GetUpdatableTranslationUnits(customFields, translationUnits);

            var report = new Report(tmFile)
            {
                ReportFullPath = _settingsService.GetLogReportFullPath(tmFile.Name, Report.ReportScope.CustomFields),
                UpdatedCount   = units.Count,
                Scope          = Report.ReportScope.CustomFields
            };

            var stopWatch = new Stopwatch();

            stopWatch.Start();

            var changesReport = GetCustomFieldChangesReport(units, customFields);

            foreach (var change in changesReport)
            {
                report.Actions.AddRange(change.Value);
            }

            UpdateCustomFieldPickLists(context, customFields, tm);

            var settings = _settingsService.GetSettings();

            if (settings.UseSqliteApiForFileBasedTm)
            {
                UpdateCustomFieldsSqlite(context, tmFile, units);
            }
            else
            {
                UpdateCustomFields(context, tm, units);
            }

            ClearPreviousCustomFieldValues(translationUnits);

            stopWatch.Stop();
            report.ElapsedSeconds = stopWatch.Elapsed.TotalSeconds;

            return(report);
        }
Ejemplo n.º 5
0
        public Report AnonymizeServerBasedCustomFields(ProgressDialogContext context, TmFile tmFile, List <CustomField> customFields, TranslationProviderServer translationProvideServer)
        {
            _tmService.BackupServerBasedTms(context, new List <TmFile> {
                tmFile
            });

            var serverBasedTm = translationProvideServer.GetTranslationMemory(tmFile.Path, TranslationMemoryProperties.All);

            var languageDirections = new List <LanguageDirection>();

            foreach (var languageDirection in serverBasedTm.LanguageDirections)
            {
                languageDirections.Add(new LanguageDirection
                {
                    Source = languageDirection.SourceLanguage,
                    Target = languageDirection.TargetLanguage
                });
            }

            var translationUnits = _tmService.LoadTranslationUnits(context, tmFile, translationProvideServer, languageDirections);

            var units = GetUpdatableTranslationUnits(customFields, translationUnits);

            var report = new Report(tmFile)
            {
                ReportFullPath = _settingsService.GetLogReportFullPath(tmFile.Name, Report.ReportScope.CustomFields),
                UpdatedCount   = units.Count,
                Scope          = Report.ReportScope.CustomFields,
            };

            var stopWatch = new Stopwatch();

            stopWatch.Start();

            var changesReport = GetCustomFieldChangesReport(units, customFields);

            foreach (var change in changesReport)
            {
                report.Actions.AddRange(change.Value);
            }

            UpdateCustomFieldPickLists(context, customFields, serverBasedTm);

            UpdateCustomFields(context, tmFile, translationUnits, units, serverBasedTm);

            ClearPreviousCustomFieldValues(translationUnits);

            stopWatch.Stop();
            report.ElapsedSeconds = stopWatch.Elapsed.TotalSeconds;

            return(report);
        }
Ejemplo n.º 6
0
        private int UpdateCustomFields(ProgressDialogContext context, ILocalTranslationMemory tm, List <TmTranslationUnit> units)
        {
            var updatedCount = 0;

            decimal iCurrent    = 0;
            decimal iTotalUnits = units.Count;
            var     groupsOf    = 200;

            var tusGroups = new List <List <TmTranslationUnit> > {
                new List <TmTranslationUnit>(units)
            };

            if (units.Count > groupsOf)
            {
                tusGroups = units.ChunkBy(groupsOf);
            }

            foreach (var tus in tusGroups)
            {
                iCurrent = iCurrent + tus.Count;
                if (context != null && context.CheckCancellationPending())
                {
                    break;
                }

                var progress = iCurrent / iTotalUnits * 100;
                context?.Report(Convert.ToInt32(progress), "Updating: " + iCurrent + " of " + iTotalUnits + " Translation Units");

                var tusToUpdate = new List <TranslationUnit>();
                foreach (var tu in tus)
                {
                    if (tm.LanguageDirection.SourceLanguage.Name.Equals(tu.SourceSegment.Language) &&
                        tm.LanguageDirection.TargetLanguage.Name.Equals(tu.TargetSegment.Language))
                    {
                        var unit = _tmService.CreateTranslationUnit(tu, tm.LanguageDirection);

                        tusToUpdate.Add(unit);
                    }
                }

                if (tusToUpdate.Count > 0)
                {
                    var results = tm.LanguageDirection.UpdateTranslationUnits(tusToUpdate.ToArray()).ToList();
                    updatedCount += results.Count(result => result.Action != LanguagePlatform.TranslationMemory.Action.Error);
                }
            }

            return(updatedCount);
        }
Ejemplo n.º 7
0
        public List <CustomField> GetFilebasedCustomField(ProgressDialogContext context, TmFile tm)
        {
            var translationMemory = new FileBasedTranslationMemory(tm.Path);

            var tus = _tmService.LoadTranslationUnits(context, tm, null, new LanguageDirection
            {
                Source = translationMemory.LanguageDirection.SourceLanguage,
                Target = translationMemory.LanguageDirection.TargetLanguage
            });

            if (tus != null)
            {
                var customFieldList = GetCustomFieldList(translationMemory.FieldDefinitions, tus, tm.Path);
                return(customFieldList);
            }

            return(null);
        }
Ejemplo n.º 8
0
        public List <User> GetUniqueFileBasedSystemFields(ProgressDialogContext context, TmFile tm)
        {
            var translationMemory = new FileBasedTranslationMemory(tm.Path);

            var tus = _tmService.LoadTranslationUnits(context, tm, null, new LanguageDirection
            {
                Source = translationMemory.LanguageDirection.SourceLanguage,
                Target = translationMemory.LanguageDirection.TargetLanguage
            });

            if (tus != null)
            {
                var uniqueUsersCollection = GetUniqueUserCollection(tm.Path, tus);

                return(uniqueUsersCollection);
            }

            return(null);
        }
Ejemplo n.º 9
0
        public Report AnonymizeServerBasedSystemFields(ProgressDialogContext context, TmFile tmFile, List <User> uniqueUsers, TranslationProviderServer translationProvideServer)
        {
            _tmService.BackupServerBasedTms(context, new List <TmFile> {
                tmFile
            });

            var serverBasedTm = translationProvideServer.GetTranslationMemory(tmFile.Path, TranslationMemoryProperties.All);

            var languageDirections = new List <LanguageDirection>();

            foreach (var languageDirection in serverBasedTm.LanguageDirections)
            {
                languageDirections.Add(new LanguageDirection
                {
                    Source = languageDirection.SourceLanguage,
                    Target = languageDirection.TargetLanguage
                });
            }

            var translationUnits = _tmService.LoadTranslationUnits(context, tmFile, translationProvideServer, languageDirections);

            var report = new Report(tmFile)
            {
                ReportFullPath = _settingsService.GetLogReportFullPath(tmFile.Name, Report.ReportScope.SystemFields),
                UpdatedCount   = translationUnits.Count,
                Scope          = Report.ReportScope.SystemFields,
            };


            report.Actions.AddRange(GetSystemFieldChangesReport(uniqueUsers));

            var stopWatch = new Stopwatch();

            stopWatch.Start();

            report.UpdatedCount = UpdateSystemFields(context, tmFile, uniqueUsers, translationUnits, serverBasedTm);

            stopWatch.Stop();
            report.ElapsedSeconds = stopWatch.Elapsed.TotalSeconds;

            return(report);
        }
Ejemplo n.º 10
0
        public Report AnonymizeFileBasedSystemFields(ProgressDialogContext context, TmFile tmFile, List <User> uniqueUsers)
        {
            _tmService.BackupFileBasedTms(context, new List <TmFile> {
                tmFile
            });

            var tm = new FileBasedTranslationMemory(tmFile.Path);

            var translationUnits = _tmService.LoadTranslationUnits(context, tmFile, null, new LanguageDirection
            {
                Source = tm.LanguageDirection.SourceLanguage,
                Target = tm.LanguageDirection.TargetLanguage
            });

            var report = new Report(tmFile)
            {
                ReportFullPath = _settingsService.GetLogReportFullPath(tmFile.Name, Report.ReportScope.SystemFields),
                UpdatedCount   = translationUnits.Count,
                Scope          = Report.ReportScope.SystemFields,
            };

            var stopWatch = new Stopwatch();

            stopWatch.Start();

            report.Actions.AddRange(GetSystemFieldChangesReport(uniqueUsers));

            var settings = _settingsService.GetSettings();

            report.UpdatedCount = settings.UseSqliteApiForFileBasedTm
                                ? UpdateSystemFieldsSqlite(context, tmFile, translationUnits, uniqueUsers)
                                : UpdateSystemFields(context, translationUnits, tm, uniqueUsers);

            stopWatch.Stop();
            report.ElapsedSeconds = stopWatch.Elapsed.TotalSeconds;

            return(report);
        }
Ejemplo n.º 11
0
        public List <CustomField> GetServerBasedCustomFields(ProgressDialogContext context, TmFile tm, TranslationProviderServer translationProvideServer)
        {
            var translationMemory = translationProvideServer.GetTranslationMemory(tm.Path, TranslationMemoryProperties.All);

            var translationUnits = new List <TmTranslationUnit>();

            foreach (var languageDirection in translationMemory.LanguageDirections)
            {
                var tus = _tmService.LoadTranslationUnits(context, tm, translationProvideServer, new LanguageDirection
                {
                    Source = languageDirection.SourceLanguage,
                    Target = languageDirection.TargetLanguage
                });

                if (tus != null)
                {
                    translationUnits.AddRange(tus);
                }
            }

            var customFieldList = GetCustomFieldList(translationMemory.FieldDefinitions, translationUnits, tm.Path);

            return(customFieldList);
        }
Ejemplo n.º 12
0
        public List <User> GetUniqueServerBasedSystemFields(ProgressDialogContext context, TmFile tm, TranslationProviderServer translationProvideServer)
        {
            var translationMemory = translationProvideServer.GetTranslationMemory(tm.Path, TranslationMemoryProperties.All);

            var translationUnits = new List <TmTranslationUnit>();

            foreach (var languageDirection in translationMemory.LanguageDirections)
            {
                var tus = _tmService.LoadTranslationUnits(context, tm, translationProvideServer, new LanguageDirection
                {
                    Source = languageDirection.SourceLanguage,
                    Target = languageDirection.TargetLanguage
                });

                if (tus != null)
                {
                    translationUnits.AddRange(tus);
                }
            }

            var uniqueUsersCollection = GetUniqueUserCollection(tm.Path, translationUnits.ToArray());

            return(uniqueUsersCollection);
        }
Ejemplo n.º 13
0
        private int UpdateCustomFields(ProgressDialogContext context, TmFile tmFile, List <TmTranslationUnit> translationUnits,
                                       IReadOnlyCollection <TmTranslationUnit> units, ServerBasedTranslationMemory serverBasedTm)
        {
            var updatedCount = 0;

            decimal iCurrent    = 0;
            decimal iTotalUnits = translationUnits.Count;
            var     groupsOf    = 100;

            var tusGroups = new List <List <TmTranslationUnit> > {
                new List <TmTranslationUnit>(units)
            };

            if (units.Count > groupsOf)
            {
                tusGroups = translationUnits.ChunkBy(groupsOf);
            }

            foreach (var tus in tusGroups)
            {
                iCurrent = iCurrent + tus.Count;
                if (context != null && context.CheckCancellationPending())
                {
                    break;
                }

                var progress = iCurrent / iTotalUnits * 100;
                context?.Report(Convert.ToInt32(progress), "Updating: " + iCurrent + " of " + iTotalUnits + " Translation Units");

                foreach (var languageDirection in serverBasedTm.LanguageDirections)
                {
                    var tusToUpdate = new List <TranslationUnit>();
                    foreach (var tu in tus)
                    {
                        if (languageDirection.SourceLanguage.Name.Equals(tu.SourceSegment.Language) &&
                            languageDirection.TargetLanguage.Name.Equals(tu.TargetSegment.Language))
                        {
                            var unit = _tmService.CreateTranslationUnit(tu, languageDirection);
                            tusToUpdate.Add(unit);
                        }
                    }

                    if (tusToUpdate.Count > 0)
                    {
                        var results = languageDirection.UpdateTranslationUnits(tusToUpdate.ToArray());
                        foreach (var result in results)
                        {
                            if (result.Action != LanguagePlatform.TranslationMemory.Action.Error)
                            {
                                updatedCount++;
                            }
                        }
                    }
                }
            }

            foreach (var languageDirection in tmFile.TmLanguageDirections)
            {
                _tmService.SaveTmCacheStorage(context, tmFile, languageDirection);
            }

            return(updatedCount);
        }
Ejemplo n.º 14
0
        private int UpdateSystemFields(ProgressDialogContext context, List <TmTranslationUnit> translationUnits, IFileBasedTranslationMemory tm, List <User> uniqueUsers)
        {
            var updatedCount = 0;

            decimal iCurrent    = 0;
            decimal iTotalUnits = translationUnits.Count;
            var     groupsOf    = 200;

            var tusGroups = new List <List <TmTranslationUnit> > {
                new List <TmTranslationUnit>(translationUnits)
            };

            if (translationUnits.Count > groupsOf)
            {
                tusGroups = translationUnits.ChunkBy(groupsOf);
            }

            foreach (var tus in tusGroups)
            {
                iCurrent = iCurrent + tus.Count;
                if (context != null && context.CheckCancellationPending())
                {
                    break;
                }

                var progress = iCurrent / iTotalUnits * 100;
                context?.Report(Convert.ToInt32(progress), string.Format(StringResources.Updating_0_of_1_Translation_Units, iCurrent, iTotalUnits));

                var filteredTusToUpdate = new List <TmTranslationUnit>();
                foreach (var tu in tus)
                {
                    if (UpdateSystemFields(uniqueUsers, tu))
                    {
                        filteredTusToUpdate.Add(tu);
                    }
                }

                if (filteredTusToUpdate.Count > 0)
                {
                    var tusToUpdate = new List <TranslationUnit>();
                    foreach (var tu in filteredTusToUpdate)
                    {
                        if (tm.LanguageDirection.SourceLanguage.Name.Equals(tu.SourceSegment.Language) &&
                            tm.LanguageDirection.TargetLanguage.Name.Equals(tu.TargetSegment.Language))
                        {
                            var unit = _tmService.CreateTranslationUnit(tu, tm.LanguageDirection);

                            tusToUpdate.Add(unit);
                        }
                    }

                    if (tusToUpdate.Count > 0)
                    {
                        var results = tm.LanguageDirection.UpdateTranslationUnits(tusToUpdate.ToArray());
                        updatedCount += results.Count(result => result.Action != Sdl.LanguagePlatform.TranslationMemory.Action.Error);
                    }
                }
            }

            tm.Save();

            return(updatedCount);
        }