001package org.nuxeo.template.rendition;
002
003import java.util.ArrayList;
004import java.util.List;
005
006import org.apache.commons.logging.Log;
007import org.apache.commons.logging.LogFactory;
008import org.nuxeo.ecm.core.api.Blob;
009import org.nuxeo.ecm.core.api.DocumentModel;
010import org.nuxeo.ecm.platform.rendition.extension.RenditionProvider;
011import org.nuxeo.ecm.platform.rendition.service.RenditionDefinition;
012import org.nuxeo.template.api.adapters.TemplateBasedDocument;
013
014public class TemplateBasedRenditionProvider implements RenditionProvider {
015
016    protected static Log log = LogFactory.getLog(TemplateBasedRenditionProvider.class);
017
018    @Override
019    public boolean isAvailable(DocumentModel doc, RenditionDefinition def) {
020        TemplateBasedDocument tbd = doc.getAdapter(TemplateBasedDocument.class);
021        if (tbd != null) {
022            // check if some template has been bound to a rendition
023            String template = tbd.getTemplateNameForRendition(def.getName());
024            return template == null ? false : true;
025        }
026        return false;
027    }
028
029    @Override
030    public List<Blob> render(DocumentModel doc, RenditionDefinition definition) {
031        TemplateBasedDocument tbd = doc.getAdapter(TemplateBasedDocument.class);
032        String template = tbd.getTemplateNameForRendition(definition.getName());
033        Blob rendered = tbd.renderWithTemplate(template);
034        List<Blob> blobs = new ArrayList<Blob>();
035        blobs.add(rendered);
036        return blobs;
037    }
038
039}