001package org.nuxeo.template.api.descriptor; 002 003import java.io.Serializable; 004import java.util.ArrayList; 005import java.util.List; 006 007import org.apache.commons.logging.Log; 008import org.apache.commons.logging.LogFactory; 009import org.nuxeo.common.xmap.annotation.XNode; 010import org.nuxeo.common.xmap.annotation.XNodeList; 011import org.nuxeo.common.xmap.annotation.XObject; 012import org.nuxeo.template.api.TemplateProcessor; 013 014@XObject("templateProcessor") 015public class TemplateProcessorDescriptor implements Serializable { 016 017 private static final long serialVersionUID = 1L; 018 019 protected static final Log log = LogFactory.getLog(TemplateProcessorDescriptor.class); 020 021 protected TemplateProcessor processor; 022 023 @XNode("@name") 024 protected String name; 025 026 @XNode("@label") 027 protected String label; 028 029 @SuppressWarnings("rawtypes") 030 @XNode("@class") 031 protected Class className; 032 033 @XNode("@default") 034 protected boolean defaultProcessor = true; 035 036 @XNode("@enabled") 037 protected boolean enabled = true; 038 039 @XNodeList(value = "supportedMimeType", type = ArrayList.class, componentType = String.class) 040 protected List<String> supportedMimeTypes = new ArrayList<String>(); 041 042 @XNodeList(value = "supportedExtension", type = ArrayList.class, componentType = String.class) 043 protected List<String> supportedExtensions = new ArrayList<String>(); 044 045 public boolean init() { 046 if (getProcessor() == null) { 047 return false; 048 } 049 return true; 050 } 051 052 public TemplateProcessor getProcessor() { 053 if (processor == null) { 054 try { 055 processor = (TemplateProcessor) className.newInstance(); 056 } catch (ReflectiveOperationException e) { 057 log.error("Unable to instanciate Processor", e); 058 } 059 } 060 return processor; 061 } 062 063 public String getName() { 064 return name; 065 } 066 067 public String getLabel() { 068 return label; 069 } 070 071 @SuppressWarnings("rawtypes") 072 public Class getClassName() { 073 return className; 074 } 075 076 public List<String> getSupportedMimeTypes() { 077 return supportedMimeTypes; 078 } 079 080 public List<String> getSupportedExtensions() { 081 return supportedExtensions; 082 } 083 084 public boolean isDefaultProcessor() { 085 return defaultProcessor; 086 } 087 088 public boolean isEnabled() { 089 return enabled; 090 } 091 092 public TemplateProcessorDescriptor clone() { 093 094 TemplateProcessorDescriptor clone = new TemplateProcessorDescriptor(); 095 clone.enabled = enabled; 096 clone.supportedExtensions = supportedExtensions; 097 clone.supportedMimeTypes = supportedMimeTypes; 098 clone.className = className; 099 clone.processor = processor; 100 clone.defaultProcessor = defaultProcessor; 101 clone.label = label; 102 clone.name = name; 103 104 return clone; 105 } 106 107 public void merge(TemplateProcessorDescriptor srcTpd) { 108 defaultProcessor = srcTpd.defaultProcessor; 109 if (srcTpd.className != null) { 110 className = srcTpd.className; 111 } 112 if (srcTpd.label != null) { 113 label = srcTpd.label; 114 } 115 if (srcTpd.supportedExtensions != null && srcTpd.supportedExtensions.size() > 0) { 116 supportedExtensions = srcTpd.supportedExtensions; 117 } 118 if (srcTpd.supportedMimeTypes != null && srcTpd.supportedMimeTypes.size() > 0) { 119 supportedMimeTypes = srcTpd.supportedMimeTypes; 120 } 121 } 122}