diff --git a/zanata-war/src/main/java/org/zanata/adapter/PropertiesAdapter.java b/zanata-war/src/main/java/org/zanata/adapter/PropertiesAdapter.java index 98cf928d05..5f1d575095 100644 --- a/zanata-war/src/main/java/org/zanata/adapter/PropertiesAdapter.java +++ b/zanata-war/src/main/java/org/zanata/adapter/PropertiesAdapter.java @@ -169,9 +169,12 @@ public void writeTranslatedFile(OutputStream output, Resource resource, try { tempFile = File.createTempFile("filename", "extension"); if(charset.equals(ISO_8859_1)) { - PropWriter.write(resource, translationsResource, tempFile, createSkeletons); + PropWriter.writeTranslationsLatinOne(resource, + translationsResource, tempFile, createSkeletons); } else if (charset.equals(UTF_8)) { - PropWriter.writeUTF8(resource, translationsResource, tempFile, createSkeletons); + PropWriter.writeTranslationsUTF8(resource, + translationsResource, + tempFile, createSkeletons); } byte[] buffer = new byte[4096]; // To hold file contents diff --git a/zanata-war/src/main/java/org/zanata/adapter/XliffAdapter.java b/zanata-war/src/main/java/org/zanata/adapter/XliffAdapter.java index fe34dea6d7..3774704aa1 100644 --- a/zanata-war/src/main/java/org/zanata/adapter/XliffAdapter.java +++ b/zanata-war/src/main/java/org/zanata/adapter/XliffAdapter.java @@ -121,8 +121,8 @@ public void writeTranslatedFile(OutputStream output, URI originalFile, File tempFile = null; try { tempFile = File.createTempFile("filename", "extension"); - XliffWriter.write(resource, translationsResource, tempFile, locale, - createSkeletons); + XliffWriter.writeFile(tempFile, resource, locale, + translationsResource, createSkeletons); byte[] buffer = new byte[4096]; // To hold file contents int bytesRead; diff --git a/zanata-war/src/main/java/org/zanata/file/SourceDocumentUpload.java b/zanata-war/src/main/java/org/zanata/file/SourceDocumentUpload.java index 80a0e9d912..39b9088185 100644 --- a/zanata-war/src/main/java/org/zanata/file/SourceDocumentUpload.java +++ b/zanata-war/src/main/java/org/zanata/file/SourceDocumentUpload.java @@ -157,7 +157,7 @@ public Response tryValidatedUploadSourceFile(GlobalDocumentId id, .persistTempFileFromUpload(uploadForm)); } processAdapterFile(tempFile.get(), id, uploadForm); - } else if (DocumentType.getByName(uploadForm.getFileType()) == DocumentType.GETTEXT_PORTABLE_OBJECT_TEMPLATE) { + } else if (DocumentType.getByName(uploadForm.getFileType()) == DocumentType.GETTEXT_PORTABLE_OBJECT) { InputStream potStream = getInputStream(tempFile, uploadForm); parsePotFile(potStream, id, uploadForm); } else { @@ -223,7 +223,7 @@ private boolean isSourceDocumentType(DocumentType type) { } private boolean isPotType(DocumentType type) { - return type == DocumentType.GETTEXT_PORTABLE_OBJECT_TEMPLATE; + return type == DocumentType.GETTEXT_PORTABLE_OBJECT; } private boolean isAdapterType(DocumentType type) { diff --git a/zanata-war/src/main/java/org/zanata/rest/service/FileService.java b/zanata-war/src/main/java/org/zanata/rest/service/FileService.java index f915ffb241..ec0c7fb549 100644 --- a/zanata-war/src/main/java/org/zanata/rest/service/FileService.java +++ b/zanata-war/src/main/java/org/zanata/rest/service/FileService.java @@ -42,6 +42,7 @@ import javax.ws.rs.core.Response.Status; import javax.ws.rs.core.StreamingOutput; +import org.apache.commons.io.FilenameUtils; import org.jboss.resteasy.util.GenericType; import org.jboss.seam.annotations.In; import org.jboss.seam.annotations.Name; @@ -57,6 +58,7 @@ import org.zanata.file.SourceDocumentUpload; import org.zanata.file.TranslationDocumentUpload; import org.zanata.model.HDocument; +import org.zanata.model.HRawDocument; import org.zanata.rest.DocumentFileUploadForm; import org.zanata.rest.StringSet; import org.zanata.rest.dto.resource.Resource; @@ -296,24 +298,28 @@ public Response downloadTranslationFile(String projectSlug, // the generated file should be scanned instead virusScanner.scan(tempFile, name); URI uri = tempFile.toURI(); + HRawDocument hRawDocument = hDocument.getRawDocument(); FileFormatAdapter adapter = - translationFileServiceImpl.getAdapterFor(hDocument - .getRawDocument().getType()); - String rawParamString = - hDocument.getRawDocument().getAdapterParameters(); + translationFileServiceImpl.getAdapterFor(hRawDocument.getType()); + String rawParamString = hRawDocument.getAdapterParameters(); Optional params = Optional. fromNullable(Strings .emptyToNull(rawParamString)); StreamingOutput output = new FormatAdapterStreamingOutput(uri, res, transRes, locale, adapter, params); + + String srcExt = FilenameUtils.getExtension(document.getName()); + String transExt = hRawDocument.getType().getExtensions().get(srcExt); + String transFileName = FilenameUtils.removeExtension(document + .getName()) + "." + transExt; response = Response.ok() .header("Content-Disposition", "attachment; filename=\"" - + document.getName() + "\"") + + transFileName + "\"") .entity(output).build(); - // TODO damason: remove more immediately, but make sure response has + // TODO damason: remove more immediately, but make sure response has // finished with the file // Note: may not be necessary when file storage is on disk. tempFile.deleteOnExit(); 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 6ee5d83e62..bd5adf68c0 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 @@ -67,7 +67,6 @@ import static org.jboss.seam.ScopeType.STATELESS; import static org.zanata.common.DocumentType.GETTEXT_PORTABLE_OBJECT; -import static org.zanata.common.DocumentType.GETTEXT_PORTABLE_OBJECT_TEMPLATE; import static org.zanata.common.DocumentType.HTML; import static org.zanata.common.DocumentType.IDML; import static org.zanata.common.DocumentType.OPEN_DOCUMENT_GRAPHICS; @@ -109,7 +108,7 @@ public class TranslationFileServiceImpl implements TranslationFileService { DOCTYPEMAP.put(PROPERTIES, PropertiesAdapter.class); DOCTYPEMAP.put(PROPERTIES_UTF8, PropertiesUTF8Adapter.class); DOCTYPEMAP.put(XLIFF, XliffAdapter.class); - DOCTYPEMAP.put(GETTEXT_PORTABLE_OBJECT_TEMPLATE, GettextAdapter.class); + DOCTYPEMAP.put(GETTEXT_PORTABLE_OBJECT, GettextAdapter.class); } private static Set SUPPORTED_EXTENSIONS = @@ -416,8 +415,7 @@ public boolean isPoDocument(String projectSlug, String iterationSlug, // additional check in case we do start storing raw documents for po DocumentType docType = doc.getRawDocument().getType(); - return docType == GETTEXT_PORTABLE_OBJECT - || docType == GETTEXT_PORTABLE_OBJECT_TEMPLATE; + return docType == GETTEXT_PORTABLE_OBJECT; } return false; }