001    /**
002     * Copyright (c) 2000-2013 Liferay, Inc. All rights reserved.
003     *
004     * This library is free software; you can redistribute it and/or modify it under
005     * the terms of the GNU Lesser General Public License as published by the Free
006     * Software Foundation; either version 2.1 of the License, or (at your option)
007     * any later version.
008     *
009     * This library is distributed in the hope that it will be useful, but WITHOUT
010     * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
011     * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
012     * details.
013     */
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.Folder;
021    import com.liferay.portal.kernel.servlet.ServletResponseConstants;
022    import com.liferay.portal.kernel.util.ArrayUtil;
023    import com.liferay.portal.kernel.xuggler.XugglerUtil;
024    import com.liferay.portlet.documentlibrary.service.DLAppServiceUtil;
025    import com.liferay.portlet.documentlibrary.util.VideoProcessorUtil;
026    
027    import java.io.InputStream;
028    
029    import java.util.ArrayList;
030    import java.util.List;
031    import java.util.Set;
032    
033    import org.w3c.dom.Document;
034    import org.w3c.dom.Element;
035    
036    /**
037     * @author Juan Gonzalez
038     * @author Roberto D??az
039     */
040    public class VideoCommandReceiver extends DocumentCommandReceiver {
041    
042            @Override
043            protected String fileUpload(
044                    CommandArgument commandArgument, String fileName,
045                    InputStream inputStream, String contentType, long size) {
046    
047                    if (!XugglerUtil.isEnabled()) {
048                            return String.valueOf(
049                                    ServletResponseConstants.SC_VIDEO_PREVIEW_DISABLED_EXCEPTION);
050                    }
051    
052                    return super.fileUpload(
053                            commandArgument, fileName, inputStream, contentType, size);
054            }
055    
056            @Override
057            protected Element getFileElement(
058                            CommandArgument commandArgument, Element fileElement,
059                            FileEntry fileEntry)
060                    throws Exception {
061    
062                    fileElement = super.getFileElement(
063                            commandArgument, fileElement, fileEntry);
064    
065                    if (!VideoProcessorUtil.hasVideo(fileEntry.getFileVersion())) {
066                            fileElement.setAttribute(
067                                    "errorMessage",
068                                    LanguageUtil.get(
069                                            commandArgument.getLocale(),
070                                            "the-video-preview-is-not-yet-ready.-please-try-again-" +
071                                                    "later"));
072                    }
073    
074                    return fileElement;
075            }
076    
077            @Override
078            protected List<Element> getFileElements(
079                            CommandArgument commandArgument, Document document, Folder folder)
080                    throws Exception {
081    
082                    List<Element> fileElements = new ArrayList<Element>();
083    
084                    List<FileEntry> fileEntries = null;
085    
086                    String[] videoMimeTypes = getVideoMimeTypes();
087    
088                    if (videoMimeTypes != null) {
089                            fileEntries = DLAppServiceUtil.getFileEntries(
090                                    folder.getRepositoryId(), folder.getFolderId(), videoMimeTypes);
091                    }
092                    else {
093                            fileEntries = DLAppServiceUtil.getFileEntries(
094                                    folder.getRepositoryId(), folder.getFolderId());
095                    }
096    
097                    for (FileEntry fileEntry : fileEntries) {
098                            Element fileElement = document.createElement("File");
099    
100                            fileElement = getFileElement(
101                                    commandArgument, fileElement, fileEntry);
102    
103                            fileElements.add(fileElement);
104                    }
105    
106                    return fileElements;
107            }
108    
109            private String[] getVideoMimeTypes() {
110                    Set<String> videoMimeTypes = VideoProcessorUtil.getVideoMimeTypes();
111    
112                    if (videoMimeTypes == null) {
113                            return null;
114                    }
115    
116                    return ArrayUtil.toStringArray(videoMimeTypes.toArray());
117            }
118    
119    }