diff --git a/zanata-war/src/main/java/org/zanata/adapter/FileFormatAdapter.java b/zanata-war/src/main/java/org/zanata/adapter/FileFormatAdapter.java index faad90b169..69bf67256a 100644 --- a/zanata-war/src/main/java/org/zanata/adapter/FileFormatAdapter.java +++ b/zanata-war/src/main/java/org/zanata/adapter/FileFormatAdapter.java @@ -20,7 +20,6 @@ */ package org.zanata.adapter; -import java.io.InputStream; import java.io.OutputStream; import java.net.URI; import java.util.Map; @@ -39,8 +38,6 @@ */ public interface FileFormatAdapter { - - /** * Extract source strings from the given document content. * @@ -61,7 +58,7 @@ public interface FileFormatAdapter * @throws FileFormatAdapterException if the document cannot be parsed * @throws IllegalArgumentException if translatedDocumentContent or localeId is null */ - TranslationsResource parseTranslationFile(InputStream translatedDocumentContent, String localeId) throws FileFormatAdapterException, IllegalArgumentException; + TranslationsResource parseTranslationFile(URI fileUri, String localeId) throws FileFormatAdapterException, IllegalArgumentException; /** * Write translated file to the given output, using the given list of translations. 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 bc687709d6..611a56481b 100644 --- a/zanata-war/src/main/java/org/zanata/adapter/GenericOkapiFilterAdapter.java +++ b/zanata-war/src/main/java/org/zanata/adapter/GenericOkapiFilterAdapter.java @@ -22,9 +22,7 @@ import java.io.File; import java.io.FileInputStream; -import java.io.FileOutputStream; import java.io.IOException; -import java.io.InputStream; import java.io.OutputStream; import java.net.URI; import java.util.List; @@ -60,7 +58,6 @@ */ public class GenericOkapiFilterAdapter implements FileFormatAdapter { - private Logger log; /** @@ -75,7 +72,6 @@ public enum IdSource { private final IFilter filter; private final IdSource idSource; - private boolean requireUriRawDoc; private boolean requireFileOutput; /** @@ -96,7 +92,7 @@ public GenericOkapiFilterAdapter(IFilter filter) */ public GenericOkapiFilterAdapter(IFilter filter, IdSource idSource) { - this(filter, idSource, false, false); + this(filter, idSource, false); } /** @@ -105,11 +101,10 @@ public GenericOkapiFilterAdapter(IFilter filter, IdSource idSource) * @param filter {@link IFilter} used to parse the document * @param idSource determines how ids are assigned to TextFlows */ - public GenericOkapiFilterAdapter(IFilter filter, IdSource idSource, boolean requireUriRawDoc, boolean requireFileOutput) + public GenericOkapiFilterAdapter(IFilter filter, IdSource idSource, boolean requireFileOutput) { this.filter = filter; this.idSource = idSource; - this.requireUriRawDoc = requireUriRawDoc; this.requireFileOutput = requireFileOutput; log = LoggerFactory.getLogger(GenericOkapiFilterAdapter.class); @@ -180,26 +175,15 @@ private String stripPath(String name) } @Override - public TranslationsResource parseTranslationFile(InputStream fileContents, String localeId) throws FileFormatAdapterException, IllegalArgumentException + public TranslationsResource parseTranslationFile(URI fileUri, String localeId) throws FileFormatAdapterException, IllegalArgumentException { - if (fileContents == null) - { - throw new IllegalArgumentException("File contents cannot be null"); - } if (localeId == null || localeId.isEmpty()) { throw new IllegalArgumentException("locale id string cannot be null or empty"); } - if (requireUriRawDoc) - { - return parseTranslationFileWithUrlRawDoc(fileContents); - } - else - { - RawDocument rawDoc = new RawDocument(fileContents, "UTF-8", net.sf.okapi.common.LocaleId.fromString(localeId)); - return parseTranslationFile(rawDoc); - } + RawDocument rawDoc = new RawDocument(fileUri, "UTF-8", net.sf.okapi.common.LocaleId.fromString("en")); + return parseTranslationFile(rawDoc); } private TranslationsResource parseTranslationFile(RawDocument rawDoc) @@ -242,44 +226,6 @@ else if (event.getEventType() == EventType.TEXT_UNIT) return transRes; } - private TranslationsResource parseTranslationFileWithUrlRawDoc(InputStream fileContents) - { - File tempFile = null; - try - { - tempFile = File.createTempFile("filename", "extension"); - - byte[] buffer = new byte[4096]; // To hold file contents - int bytesRead; - FileOutputStream output; - - output = new FileOutputStream(tempFile); - while ((bytesRead = fileContents.read(buffer)) != -1) - { - output.write(buffer, 0, bytesRead); - } - output.close(); - } - catch (IOException e) - { - throw new FileFormatAdapterException("Error while writing translation file to temporary location", e); - } - - RawDocument rawDoc = new RawDocument(tempFile.toURI(), "UTF-8", net.sf.okapi.common.LocaleId.fromString("en")); - TranslationsResource transRes = parseTranslationFile(rawDoc); - - if (tempFile != null) - { - if (!tempFile.delete()) - { - log.warn("unable to remove temporary file {}, marked for delete on exit", tempFile.getAbsolutePath()); - tempFile.deleteOnExit(); - } - } - return transRes; - } - - @Override public void writeTranslatedFile(OutputStream output, URI originalFile, Map translations, String locale) { diff --git a/zanata-war/src/main/java/org/zanata/adapter/OpenOfficeAdapter.java b/zanata-war/src/main/java/org/zanata/adapter/OpenOfficeAdapter.java index a9624759de..319df94165 100644 --- a/zanata-war/src/main/java/org/zanata/adapter/OpenOfficeAdapter.java +++ b/zanata-war/src/main/java/org/zanata/adapter/OpenOfficeAdapter.java @@ -32,7 +32,7 @@ public class OpenOfficeAdapter extends GenericOkapiFilterAdapter { public OpenOfficeAdapter() { - super(prepareFilter(), IdSource.subDocNameAndTextUnitId, true, true); + super(prepareFilter(), IdSource.subDocNameAndTextUnitId, true); } private static OpenOfficeFilter prepareFilter() diff --git a/zanata-war/src/main/java/org/zanata/service/impl/TranslationFileServiceImpl.java b/zanata-war/src/main/java/org/zanata/service/impl/TranslationFileServiceImpl.java index dc2a4dcafa..6bd6a61b32 100644 --- a/zanata-war/src/main/java/org/zanata/service/impl/TranslationFileServiceImpl.java +++ b/zanata-war/src/main/java/org/zanata/service/impl/TranslationFileServiceImpl.java @@ -94,14 +94,18 @@ public TranslationsResource parseTranslationFile(InputStream fileContents, Strin } else if (hasAdapterFor(fileName)) { + File tempFile = persistToTempFile(fileContents); + TranslationsResource transRes; try { - return getAdapterFor(fileName).parseTranslationFile(fileContents, localeId); + transRes = getAdapterFor(fileName).parseTranslationFile(tempFile.toURI(), localeId); } catch (FileFormatAdapterException e) { throw new ZanataServiceException("Error parsing translation file: " + fileName, e); } + removeTempFile(tempFile); + return transRes; } else {