From 0f687172a6fc68860ca4e19cbc69427f886df994 Mon Sep 17 00:00:00 2001 From: Sean Flanigan Date: Mon, 22 Oct 2012 18:06:15 +1000 Subject: [PATCH] Avoid warning when pushing HTextFlowTarget with state New; add TFT contents to warning messages --- .../zanata/service/impl/TranslationServiceImpl.java | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/zanata-war/src/main/java/org/zanata/service/impl/TranslationServiceImpl.java b/zanata-war/src/main/java/org/zanata/service/impl/TranslationServiceImpl.java index 15ba2b5727..c7a4766ecc 100644 --- a/zanata-war/src/main/java/org/zanata/service/impl/TranslationServiceImpl.java +++ b/zanata-war/src/main/java/org/zanata/service/impl/TranslationServiceImpl.java @@ -23,6 +23,7 @@ import java.text.MessageFormat; import java.util.ArrayList; import java.util.Collection; +import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Set; @@ -326,7 +327,8 @@ private static boolean ensureContentsSize(HTextFlowTarget target, int legalSize, int contentsSize = target.getContents().size(); if (contentsSize < legalSize) { - warnings.add("TextFlowTarget " + resId + " should have " + legalSize + " contents; filling with empty strings"); + String warning = "Should have " + legalSize + " contents; adding empty strings: TextFlowTarget "+resId+" with contents: " + target.getContents(); + warnings.add(warning); List newContents = new ArrayList(legalSize); newContents.addAll(target.getContents()); while (newContents.size() < legalSize) @@ -338,7 +340,8 @@ private static boolean ensureContentsSize(HTextFlowTarget target, int legalSize, } else if (contentsSize > legalSize) { - warnings.add("TextFlowTarget " + resId + " should have " + legalSize + " contents; discarding extra strings"); + String warning = "Should have " + legalSize + " contents; discarding extra strings: TextFlowTarget "+resId+" with contents: " + target.getContents(); + warnings.add(warning); List newContents = new ArrayList(legalSize); for (int i = 0; i < contentsSize; i++) { @@ -470,13 +473,14 @@ protected Boolean work() throws Exception if (textFlow == null) { // return warning for unknown resId to caller - String warning = "Could not find text flow for message: " + incomingTarget.getContents(); + String warning = "Could not find TextFlow for TextFlowTarget "+resId+" with contents: " + incomingTarget.getContents(); warnings.add(warning); handle.addMessages(warning); log.warn("skipping TextFlowTarget with unknown resId: {}", resId); } else { + int nPlurals = getNumPlurals(hLocale, textFlow); HTextFlowTarget hTarget = textFlowTargetDAO.getTextFlowTarget(textFlow, hLocale); boolean targetChanged = false; if (hTarget == null) @@ -484,6 +488,8 @@ protected Boolean work() throws Exception targetChanged = true; log.debug("locale: {}", locale); hTarget = new HTextFlowTarget(textFlow, hLocale); + List contents = Collections.nCopies(nPlurals, ""); + hTarget.setContents(contents); hTarget.setVersionNum(0); // incremented when content is set //textFlowTargetDAO.makePersistent(hTarget); textFlow.getTargets().put(hLocale.getId(), hTarget); @@ -533,7 +539,6 @@ else if (incomingTarget.getState() == ContentState.Approved) throw new ZanataServiceException("unhandled merge type " + mergeType); } } - int nPlurals = getNumPlurals(hLocale, textFlow); targetChanged |= adjustContentsAndState(hTarget, nPlurals, warnings); // update translation information if applicable