final File downloadFile =
fileSystemServiceImpl.createDownloadStagingFile("zip");
final FileOutputStream output = new FileOutputStream(downloadFile);
final ZipOutputStream zipOutput = new ZipOutputStream(output);
zipOutput.setMethod(ZipOutputStream.DEFLATED);
final PoWriter2 poWriter = new PoWriter2(false, !isPoProject);
final Set<String> extensions = new HashSet<String>();
extensions.add("gettext");
extensions.add("comment");
// Generate the download descriptor file
String downloadId =
fileSystemServiceImpl.createDownloadDescriptorFile(downloadFile,
projectSlug + "_" + iterationSlug + "_" + localeId
+ ".zip", userName);
// Add the config file at the root of the project directory
String configFilename =
projectDirectory
+ configurationServiceImpl.getConfigurationFileName();
zipOutput.putNextEntry(new ZipEntry(configFilename));
zipOutput.write(configurationServiceImpl.getConfigForOfflineTranslation(
projectSlug, iterationSlug, hLocale).getBytes());
zipOutput.closeEntry();
handle.increaseProgress(1);
final List<HDocument> allIterationDocs =
documentDAO
.getAllByProjectIteration(projectSlug, iterationSlug);
for (HDocument document : allIterationDocs) {
// Stop the process if signaled to do so
if (handleOpt.isPresent() && handleOpt.get().isCancelled()) {
zipOutput.close();
downloadFile.delete();
fileSystemServiceImpl.deleteDownloadDescriptorFile(downloadId);
return null;
}
TranslationsResource translationResource =
new TranslationsResource();
List<HTextFlowTarget> hTargets =
textFlowTargetDAO.findTranslations(document, hLocale);
resourceUtils.transferToTranslationsResource(translationResource,
document, hLocale, extensions, hTargets,
Optional.<String> absent());
Resource res = resourceUtils.buildResource(document);
String filename = localeDirectory + document.getDocId() + ".po";
zipOutput.putNextEntry(new ZipEntry(filename));
poWriter.writePo(zipOutput, "UTF-8", res, translationResource);
zipOutput.closeEntry();
if( handleOpt.isPresent() ) {
handleOpt.get().increaseProgress(1);
}