From a51e14af010091a0b6a996b8e09db8df232830d5 Mon Sep 17 00:00:00 2001 From: Jean Aurambault Date: Wed, 12 Jul 2023 15:37:30 -0700 Subject: [PATCH] Save integrity checker errors during TextUnitBatchImporterService's batch import we're currently not saving the error for that import implementation while we do it in other imports, see AbstractImportTranslationsStep/ImportExportedXliffStep --- .../TextUnitBatchImporterService.java | 55 ++++++++++++++----- .../TextUnitForBatchMatcherImport.java | 15 +++++ 2 files changed, 57 insertions(+), 13 deletions(-) diff --git a/webapp/src/main/java/com/box/l10n/mojito/service/tm/importer/TextUnitBatchImporterService.java b/webapp/src/main/java/com/box/l10n/mojito/service/tm/importer/TextUnitBatchImporterService.java index 035fa8b64d..badfcf7a4f 100644 --- a/webapp/src/main/java/com/box/l10n/mojito/service/tm/importer/TextUnitBatchImporterService.java +++ b/webapp/src/main/java/com/box/l10n/mojito/service/tm/importer/TextUnitBatchImporterService.java @@ -8,6 +8,8 @@ import com.box.l10n.mojito.entity.Repository; import com.box.l10n.mojito.entity.TMTextUnitCurrentVariant; import com.box.l10n.mojito.entity.TMTextUnitVariant.Status; +import com.box.l10n.mojito.entity.TMTextUnitVariantComment; +import com.box.l10n.mojito.entity.TMTextUnitVariantComment.Severity; import com.box.l10n.mojito.entity.security.user.User; import com.box.l10n.mojito.quartz.QuartzPollableTaskScheduler; import com.box.l10n.mojito.security.AuditorAwareImpl; @@ -22,8 +24,10 @@ import com.box.l10n.mojito.service.pollableTask.PollableFuture; import com.box.l10n.mojito.service.pollableTask.PollableFutureTaskResult; import com.box.l10n.mojito.service.repository.RepositoryRepository; +import com.box.l10n.mojito.service.tm.AddTMTextUnitCurrentVariantResult; import com.box.l10n.mojito.service.tm.TMService; import com.box.l10n.mojito.service.tm.TMTextUnitCurrentVariantRepository; +import com.box.l10n.mojito.service.tm.TMTextUnitVariantCommentService; import com.box.l10n.mojito.service.tm.TextUnitBatchMatcher; import com.box.l10n.mojito.service.tm.TextUnitForBatchMatcher; import com.box.l10n.mojito.service.tm.search.TextUnitDTO; @@ -77,6 +81,8 @@ public class TextUnitBatchImporterService { @Autowired TextUnitDTOsCacheService textUnitDTOsCacheService; + @Autowired TMTextUnitVariantCommentService tmMTextUnitVariantCommentService; + /** * Imports a batch of text units. * @@ -210,18 +216,37 @@ void importTextUnitsOfLocaleAndAsset( } User importedBy = auditorAwareImpl.getCurrentAuditor().orElse(null); - tmService.addTMTextUnitCurrentVariantWithResult( - tmTextUnitCurrentVariant, - asset.getRepository().getTm().getId(), - asset.getId(), - currentTextUnit.getTmTextUnitId(), - locale.getId(), - textUnitForBatchImport.getContent(), - textUnitForBatchImport.getComment(), - textUnitForBatchImport.getStatus(), - textUnitForBatchImport.isIncludedInLocalizedFile(), - importTime, - importedBy); + AddTMTextUnitCurrentVariantResult addTMTextUnitCurrentVariantResult = + tmService.addTMTextUnitCurrentVariantWithResult( + tmTextUnitCurrentVariant, + asset.getRepository().getTm().getId(), + asset.getId(), + currentTextUnit.getTmTextUnitId(), + locale.getId(), + textUnitForBatchImport.getContent(), + textUnitForBatchImport.getComment(), + textUnitForBatchImport.getStatus(), + textUnitForBatchImport.isIncludedInLocalizedFile(), + importTime, + importedBy); + + if (addTMTextUnitCurrentVariantResult.isTmTextUnitCurrentVariantUpdated()) { + + Long tmTextUnitVariantId = + addTMTextUnitCurrentVariantResult + .getTmTextUnitCurrentVariant() + .getTmTextUnitVariant() + .getId(); + + for (TMTextUnitVariantComment tmTextUnitVariantComment : + textUnitForBatchImport.getTmTextUnitVariantComments()) { + tmMTextUnitVariantCommentService.addComment( + tmTextUnitVariantId, + tmTextUnitVariantComment.getType(), + tmTextUnitVariantComment.getSeverity(), + tmTextUnitVariantComment.getContent()); + } + } }); } @@ -285,6 +310,11 @@ void applyIntegrityChecks( ice); textUnitForBatchImport.setIncludedInLocalizedFile(false); textUnitForBatchImport.setStatus(Status.TRANSLATION_NEEDED); + + TMTextUnitVariantComment tmTextUnitVariantComment = new TMTextUnitVariantComment(); + tmTextUnitVariantComment.setSeverity(Severity.ERROR); + tmTextUnitVariantComment.setContent(ice.getMessage()); + textUnitForBatchImport.getTmTextUnitVariantComments().add(tmTextUnitVariantComment); } break; @@ -362,7 +392,6 @@ List skipInvalidAndConvertToTextUnitForBatchImpor textUnitForBatchImport.setComment(t.getTargetComment()); textUnitForBatchImport.setIncludedInLocalizedFile(t.isIncludedInLocalizedFile()); textUnitForBatchImport.setStatus(t.getStatus() == null ? APPROVED : t.getStatus()); - return textUnitForBatchImport; }) .filter( diff --git a/webapp/src/main/java/com/box/l10n/mojito/service/tm/importer/TextUnitForBatchMatcherImport.java b/webapp/src/main/java/com/box/l10n/mojito/service/tm/importer/TextUnitForBatchMatcherImport.java index f6f286ba18..c4a8b7ae3d 100644 --- a/webapp/src/main/java/com/box/l10n/mojito/service/tm/importer/TextUnitForBatchMatcherImport.java +++ b/webapp/src/main/java/com/box/l10n/mojito/service/tm/importer/TextUnitForBatchMatcherImport.java @@ -4,8 +4,11 @@ import com.box.l10n.mojito.entity.Locale; import com.box.l10n.mojito.entity.Repository; import com.box.l10n.mojito.entity.TMTextUnitVariant; +import com.box.l10n.mojito.entity.TMTextUnitVariantComment; import com.box.l10n.mojito.service.tm.TextUnitForBatchMatcher; import com.box.l10n.mojito.service.tm.search.TextUnitDTO; +import java.util.ArrayList; +import java.util.List; /** @author jeanaurambault */ public class TextUnitForBatchMatcherImport implements TextUnitForBatchMatcher { @@ -20,6 +23,9 @@ public class TextUnitForBatchMatcherImport implements TextUnitForBatchMatcher { TextUnitDTO currentTextUnit; boolean includedInLocalizedFile; TMTextUnitVariant.Status status; + + List tmTextUnitVariantComments = new ArrayList<>(); + boolean namePluralPrefix; public Repository getRepository() { @@ -103,6 +109,15 @@ public void setStatus(TMTextUnitVariant.Status status) { this.status = status; } + public List getTmTextUnitVariantComments() { + return tmTextUnitVariantComments; + } + + public void setTmTextUnitVariantComments( + List tmTextUnitVariantComments) { + this.tmTextUnitVariantComments = tmTextUnitVariantComments; + } + @Override public boolean isNamePluralPrefix() { return false;