--- /dev/null
+package com.liferay.portlet.documentlibrary.conversion.util;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Map;
+
+import com.liferay.portal.kernel.util.FileUtil;
+import com.liferay.portal.kernel.util.MimeTypesOverrideUtil;
+import com.liferay.portal.model.User;
+import com.liferay.portal.service.ServiceContext;
+import com.liferay.portlet.documentlibrary.DuplicateFileException;
+import com.liferay.portlet.documentlibrary.FileSizeException;
+import com.liferay.portlet.documentlibrary.folder.service.DLFolderLocalServiceUtil;
+import com.liferay.portlet.documentlibrary.service.DLAppLocalServiceUtil;
+
+
+public class ThreadConvertFile extends Thread{
+
+ private User user;
+ private String fileName;
+ private String fileTitle;
+ private String originalTitle;
+ private String description;
+ private long folderId;
+ private InputStream is;
+ private String sourceExtension;
+ private String targetExtension;
+ private Map<String, String> parameters;
+
+ public ThreadConvertFile(User user, String fileName, String fileTitle, String originalTitle, String description, long folderId, InputStream is, String sourceExtension, String targetExtension, Map<String, String> parameters) {
+ this.user = user;
+ this.fileName = fileName;
+ this.fileTitle = fileTitle;
+ this.originalTitle = originalTitle;
+ this.description = description;
+ this.folderId = folderId;
+ this.is = is;
+ this.sourceExtension = sourceExtension;
+ this.targetExtension = targetExtension;
+ this.parameters = parameters;
+ }
+
+ public void run() {
+ //Conversion du fichier
+ try {
+ try {
+ File file = ENTDocumentConversionServiceUtil.convert(fileName, is, sourceExtension, targetExtension, parameters);
+ if(file != null){
+ InputStream convertIS = new FileInputStream(file);
+
+ try {
+ is.close();
+ } catch (IOException e) {}
+
+ byte[] convertByteArray = FileUtil.getBytes(convertIS);
+
+ try {
+ convertIS.close();
+ } catch (IOException e) {}
+
+ long groupId = DLFolderLocalServiceUtil.getDLFolder(folderId).getGroupId();
+ String name ="";
+ boolean finished = false;
+ int count = 0;
+ String suffixe = "";
+
+ // Set des permissions par defaut pour le cartable
+ ServiceContext serviceContext = new ServiceContext();
+ serviceContext.setAddGroupPermissions(true);
+ serviceContext.setAddGuestPermissions(true);
+
+ String contentType = MimeTypesOverrideUtil.getContentType(fileName);
+
+ if (fileName.endsWith("mp4")) {
+ contentType="video/mp4";
+ } else if (fileName.endsWith("mp3")) {
+ contentType="audio/mp3";
+ }
+
+ while (!finished && count<50) {
+ try {
+ name = originalTitle+suffixe+ "." + targetExtension;
+ DLAppLocalServiceUtil.addFileEntry(
+ user.getUserId(),
+ groupId,
+ folderId,
+ name,
+ contentType,
+ //MimeTypesOverrideUtil.getContentType(is, fileName),
+ name,
+ description,
+ "",
+ convertByteArray,
+ serviceContext);
+ finished = true;
+ } catch (DuplicateFileException exception) {
+ count ++;
+ suffixe = " (" + count + ")";
+ } catch (FileSizeException e) {
+ e.printStackTrace();
+ finished = true;
+ } catch (Exception e1) {
+ finished = true;
+ e1.printStackTrace();
+ }
+ }
+ }
+ } catch (IOException e) {}
+ } catch (Exception e) {
+ System.out.println("ERREUR DE THREAD ThreadConvertFile");
+ e.printStackTrace();
+ }
+ }
+
+}