diff --git a/zanata-war/src/main/java/org/zanata/adapter/GenericOkapiFilterAdapter.java b/zanata-war/src/main/java/org/zanata/adapter/GenericOkapiFilterAdapter.java index 26e4d05d3f..42f6282d59 100644 --- a/zanata-war/src/main/java/org/zanata/adapter/GenericOkapiFilterAdapter.java +++ b/zanata-war/src/main/java/org/zanata/adapter/GenericOkapiFilterAdapter.java @@ -50,6 +50,8 @@ import org.zanata.rest.dto.resource.TranslationsResource; import org.zanata.util.HashUtil; +import com.google.common.base.Optional; + /** * An adapter that uses a provided {@link IFilter} implementation to parse documents. * @@ -119,6 +121,12 @@ public GenericOkapiFilterAdapter(IFilter filter, IdSource idSource, boolean requ @Override public Resource parseDocumentFile(URI documentContent, LocaleId sourceLocale) throws FileFormatAdapterException, IllegalArgumentException + { + return parseDocumentFile(documentContent, sourceLocale, Optional.absent()); + } + + public Resource parseDocumentFile(URI documentContent, LocaleId sourceLocale, + Optional params) throws FileFormatAdapterException, IllegalArgumentException { // null documentContent is handled by RawDocument constructor if (sourceLocale == null) @@ -133,7 +141,7 @@ public Resource parseDocumentFile(URI documentContent, LocaleId sourceLocale) th List resources = document.getTextFlows(); RawDocument rawDoc = new RawDocument(documentContent, "UTF-8", net.sf.okapi.common.LocaleId.fromString("en")); - + updateParams(params); try { filter.open(rawDoc); @@ -183,6 +191,12 @@ private String stripPath(String name) @Override public TranslationsResource parseTranslationFile(URI fileUri, String localeId) throws FileFormatAdapterException, IllegalArgumentException + { + return parseTranslationFile(fileUri, localeId, Optional.absent()); + } + + public TranslationsResource parseTranslationFile(URI fileUri, String localeId, + Optional params) throws FileFormatAdapterException, IllegalArgumentException { if (localeId == null || localeId.isEmpty()) { @@ -190,14 +204,14 @@ public TranslationsResource parseTranslationFile(URI fileUri, String localeId) t } RawDocument rawDoc = new RawDocument(fileUri, "UTF-8", net.sf.okapi.common.LocaleId.fromString("en")); - return parseTranslationFile(rawDoc); + return parseTranslationFile(rawDoc, params); } - private TranslationsResource parseTranslationFile(RawDocument rawDoc) + private TranslationsResource parseTranslationFile(RawDocument rawDoc, Optional params) { TranslationsResource transRes = new TranslationsResource(); List translations = transRes.getTextFlowTargets(); - + updateParams(params); try { filter.open(rawDoc); @@ -235,6 +249,13 @@ else if (event.getEventType() == EventType.TEXT_UNIT) @Override public void writeTranslatedFile(OutputStream output, URI originalFile, Map translations, String locale) + { + writeTranslatedFile(output, originalFile, translations, locale, Optional.absent()); + } + + public void writeTranslatedFile(OutputStream output, URI originalFile, + Map translations, String locale, Optional params) + throws FileFormatAdapterException, IllegalArgumentException { net.sf.okapi.common.LocaleId localeId = net.sf.okapi.common.LocaleId.fromString(locale); IFilterWriter writer = filter.createFilterWriter(); @@ -242,16 +263,18 @@ public void writeTranslatedFile(OutputStream output, URI originalFile, Map translations, net.sf.okapi.common.LocaleId localeId, IFilterWriter writer) + private void writeTranslatedFileWithFileOutput(OutputStream output, URI originalFile, + Map translations, net.sf.okapi.common.LocaleId localeId, + IFilterWriter writer, Optional params) { File tempFile = null; @@ -259,7 +282,7 @@ private void writeTranslatedFileWithFileOutput(OutputStream output, URI original { tempFile = File.createTempFile("filename", "extension"); writer.setOutput(tempFile.getCanonicalPath()); - generateTranslatedFile(originalFile, translations, localeId, writer); + generateTranslatedFile(originalFile, translations, localeId, writer, params); byte[] buffer = new byte[4096]; // To hold file contents int bytesRead; @@ -293,10 +316,11 @@ private void writeTranslatedFileWithFileOutput(OutputStream output, URI original } - private void generateTranslatedFile(URI originalFile, Map translations, net.sf.okapi.common.LocaleId localeId, IFilterWriter writer) + private void generateTranslatedFile(URI originalFile, Map translations, + net.sf.okapi.common.LocaleId localeId, IFilterWriter writer, Optional params) { RawDocument rawDoc = new RawDocument(originalFile, "UTF-8", net.sf.okapi.common.LocaleId.fromString("en")); - + updateParams(params); try { filter.open(rawDoc); @@ -353,4 +377,15 @@ protected String getIdFor(TextUnit tu, String subDocName) return tu.getId(); } } + + private void updateParams(Optional params) + { + filter.getParameters().reset(); + if (params.isPresent()) + { + filter.getParameters().fromString(params.get()); + } + log.info("filter parameters: " + filter.getParameters()); + } + }