001/*
002 * Copyright (c) 2006-2013 Nuxeo SA (http://nuxeo.com/) and others.
003 *
004 * All rights reserved. This program and the accompanying materials
005 * are made available under the terms of the Eclipse Public License v1.0
006 * which accompanies this distribution, and is available at
007 * http://www.eclipse.org/legal/epl-v10.html
008 *
009 * Contributors:
010 *     Vladimir Pasquier <vpasquier@nuxeo.com>
011 *
012 */
013package org.nuxeo.ecm.platform.video.adapter;
014
015import static org.nuxeo.ecm.platform.video.VideoConstants.VIDEO_FACET;
016
017import java.io.File;
018import java.io.IOException;
019
020import org.nuxeo.common.utils.FileUtils;
021import org.nuxeo.ecm.core.api.Blob;
022import org.nuxeo.ecm.core.api.Blobs;
023import org.nuxeo.ecm.core.api.CoreSession;
024import org.nuxeo.ecm.core.api.DocumentModel;
025import org.nuxeo.ecm.core.api.NuxeoException;
026import org.nuxeo.ecm.core.api.thumbnail.ThumbnailFactory;
027import org.nuxeo.ecm.platform.picture.api.adapters.PictureResourceAdapter;
028import org.nuxeo.ecm.platform.types.adapter.TypeInfo;
029
030/**
031 * Movie thumbnail factory
032 *
033 * @since 5.7
034 */
035public class ThumbnailVideoFactory implements ThumbnailFactory {
036
037    @Override
038    public Blob getThumbnail(DocumentModel doc, CoreSession session) {
039        if (!doc.hasFacet(VIDEO_FACET)) {
040            throw new NuxeoException("Document is not a video");
041        }
042        // Choose the nuxeo default thumbnail of the picture views (screenshots
043        // of the video taken during creation)
044        PictureResourceAdapter picResAdapter = doc.getAdapter(PictureResourceAdapter.class);
045        Blob thumbnailView = picResAdapter.getPictureFromTitle("Small");
046        if (thumbnailView == null) {
047            // try Thumbnail view
048            thumbnailView = picResAdapter.getPictureFromTitle("Thumbnail");
049            if (thumbnailView == null) {
050                TypeInfo docType = doc.getAdapter(TypeInfo.class);
051                try {
052                    return Blobs.createBlob(FileUtils.getResourceFileFromContext("nuxeo.war" + File.separator
053                            + docType.getBigIcon()));
054                } catch (IOException e) {
055                    throw new NuxeoException(e);
056                }
057            }
058        }
059        return thumbnailView;
060    }
061
062    @Override
063    public Blob computeThumbnail(DocumentModel doc, CoreSession session) {
064        return null;
065    }
066}