001
014
015 package com.liferay.portal.editor.fckeditor.receiver.impl;
016
017 import com.liferay.portal.editor.fckeditor.command.CommandArgument;
018 import com.liferay.portal.kernel.language.LanguageUtil;
019 import com.liferay.portal.kernel.repository.model.FileEntry;
020 import com.liferay.portal.kernel.repository.model.FileVersion;
021 import com.liferay.portal.kernel.repository.model.Folder;
022 import com.liferay.portal.kernel.xuggler.XugglerUtil;
023 import com.liferay.portlet.documentlibrary.service.DLAppServiceUtil;
024
025 import java.io.InputStream;
026
027 import java.util.ArrayList;
028 import java.util.List;
029
030 import org.w3c.dom.Document;
031 import org.w3c.dom.Element;
032
033
038 public abstract class BaseFileEntryCommandReceiver
039 extends DocumentCommandReceiver {
040
041 @Override
042 protected String fileUpload(
043 CommandArgument commandArgument, String fileName,
044 InputStream inputStream, String contentType, long size) {
045
046 if (!XugglerUtil.isEnabled()) {
047 return String.valueOf(getXugglerDisabledFileUploadReturnValue());
048 }
049
050 return super.fileUpload(
051 commandArgument, fileName, inputStream, contentType, size);
052 }
053
054 @Override
055 protected Element getFileElement(
056 CommandArgument commandArgument, Element fileElement,
057 FileEntry fileEntry)
058 throws Exception {
059
060 fileElement = super.getFileElement(
061 commandArgument, fileElement, fileEntry);
062
063 if (!hasFileEntryPreview(fileEntry.getFileVersion())) {
064 fileElement.setAttribute(
065 "errorMessage",
066 LanguageUtil.get(
067 commandArgument.getLocale(),
068 getUnavaiablePreviewErrorMessage()));
069 }
070
071 return fileElement;
072 }
073
074 @Override
075 protected List<Element> getFileElements(
076 CommandArgument commandArgument, Document document, Folder folder)
077 throws Exception {
078
079 List<Element> fileElements = new ArrayList<Element>();
080
081 List<FileEntry> fileEntries = null;
082
083 String[] fileEntryMimeTypes = getFileEntryMimeTypes();
084
085 if (fileEntryMimeTypes != null) {
086 fileEntries = DLAppServiceUtil.getFileEntries(
087 folder.getRepositoryId(), folder.getFolderId(),
088 fileEntryMimeTypes);
089 }
090 else {
091 fileEntries = DLAppServiceUtil.getFileEntries(
092 folder.getRepositoryId(), folder.getFolderId());
093 }
094
095 for (FileEntry fileEntry : fileEntries) {
096 Element fileElement = document.createElement("File");
097
098 fileElement = getFileElement(
099 commandArgument, fileElement, fileEntry);
100
101 fileElements.add(fileElement);
102 }
103
104 return fileElements;
105 }
106
107 protected abstract String[] getFileEntryMimeTypes();
108
109 protected abstract String getUnavaiablePreviewErrorMessage();
110
111 protected abstract int getXugglerDisabledFileUploadReturnValue();
112
113 protected abstract boolean hasFileEntryPreview(FileVersion fileVersion);
114
115 }