package com.idega.slide.business; import java.io.InputStream; import java.util.logging.Level; import com.idega.core.file.util.MimeTypeUtil; import com.idega.util.StringUtil; public class UploadWorker extends RepositoryWorker { private String fileName; private String contentType; private InputStream stream; private boolean closeStream; public UploadWorker(IWSlideServiceBean slideService, String uploadPath, String fileName, String contentType, InputStream stream, boolean closeStream) { super(slideService, uploadPath); this.fileName = fileName; this.contentType = contentType; this.stream = stream; this.closeStream = closeStream; } @Override protected void doWork() { IWSlideServiceBean repositoryService = getRepositoryService(); String uploadPath = getRepositoryPath(); try { String fixedUploadPath = repositoryService.createFoldersAndPreparedUploadPath(uploadPath, true); if (uploadPath == null) { getLogger().warning("Can not upload: " + uploadPath + fileName); return; } if (StringUtil.isEmpty(contentType)) { contentType = MimeTypeUtil.resolveMimeTypeFromFileName(fileName); } result = repositoryService.getSimpleSlideService().upload(stream, fixedUploadPath, fileName, contentType, null, closeStream); } catch (Throwable t) { getLogger().log(Level.WARNING, "Error uploading '" + uploadPath + fileName + "' using Slide API. Will try to upload using common API", t); } finally { repositoryService.removeFromQueue(getRepositoryPath(), getWorkId()); } } @Override public String toString() { return "Upload worker: id: ".concat(getWorkId()).concat(", upload path: ").concat(getRepositoryPath()).concat(", file name: ").concat(fileName); } }