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.picture.thumbnail;
014
015import java.io.File;
016import java.io.IOException;
017
018import org.nuxeo.common.utils.FileUtils;
019import org.nuxeo.ecm.core.api.Blob;
020import org.nuxeo.ecm.core.api.Blobs;
021import org.nuxeo.ecm.core.api.CoreSession;
022import org.nuxeo.ecm.core.api.DocumentModel;
023import org.nuxeo.ecm.core.api.NuxeoException;
024import org.nuxeo.ecm.core.api.thumbnail.ThumbnailFactory;
025import org.nuxeo.ecm.platform.picture.api.PictureView;
026import org.nuxeo.ecm.platform.picture.api.adapters.MultiviewPicture;
027import org.nuxeo.ecm.platform.types.adapter.TypeInfo;
028
029/**
030 * Picture thumbnail factory
031 *
032 * @since 5.7
033 */
034public class ThumbnailPictureFactory implements ThumbnailFactory {
035
036    @Override
037    public Blob getThumbnail(DocumentModel doc, CoreSession session) {
038        if (!doc.hasFacet("Picture")) {
039            throw new NuxeoException("Document is not a picture");
040        }
041        // Choose the nuxeo default thumbnail of the picture views if exists
042        MultiviewPicture mViewPicture = doc.getAdapter(MultiviewPicture.class);
043        PictureView thumbnailView = mViewPicture.getView("Small");
044        if (thumbnailView == null || thumbnailView.getBlob() == null) {
045            // try thumbnail view
046            thumbnailView = mViewPicture.getView("Thumbnail");
047            if (thumbnailView == null || thumbnailView.getBlob() == null) {
048                TypeInfo docType = doc.getAdapter(TypeInfo.class);
049                try {
050                    return Blobs.createBlob(FileUtils.getResourceFileFromContext("nuxeo.war" + File.separator
051                            + docType.getBigIcon()));
052                } catch (IOException e) {
053                    throw new NuxeoException(e);
054                }
055            }
056        }
057        return thumbnailView.getBlob();
058    }
059
060    @Override
061    public Blob computeThumbnail(DocumentModel doc, CoreSession session) {
062        return null;
063    }
064}