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}