001package org.nuxeo.template.service; 002 003import java.util.ArrayList; 004import java.util.HashMap; 005import java.util.List; 006import java.util.Map; 007 008import org.apache.commons.logging.Log; 009import org.apache.commons.logging.LogFactory; 010import org.nuxeo.ecm.core.api.DocumentModel; 011import org.nuxeo.ecm.core.api.DocumentModelList; 012import org.nuxeo.ecm.core.api.UnrestrictedSessionRunner; 013import org.nuxeo.ecm.core.api.repository.RepositoryManager; 014import org.nuxeo.runtime.api.Framework; 015import org.nuxeo.template.adapters.source.TemplateSourceDocumentAdapterImpl; 016import org.nuxeo.template.api.adapters.TemplateSourceDocument; 017 018public class TemplateMappingFetcher extends UnrestrictedSessionRunner { 019 020 protected static String repoName; 021 022 protected static final Log log = LogFactory.getLog(TemplateMappingFetcher.class); 023 024 protected static String getRepoName() { 025 if (repoName == null) { 026 RepositoryManager rm = Framework.getLocalService(RepositoryManager.class); 027 repoName = rm.getDefaultRepositoryName(); 028 } 029 return repoName; 030 } 031 032 protected Map<String, List<String>> mapping = new HashMap<String, List<String>>(); 033 034 protected TemplateMappingFetcher() { 035 super(getRepoName()); 036 } 037 038 @Override 039 public void run() { 040 StringBuffer sb = new StringBuffer("select * from Document where "); 041 sb.append(TemplateSourceDocumentAdapterImpl.TEMPLATE_FORCED_TYPES_ITEM_PROP); 042 sb.append(" <> 'none'"); 043 044 DocumentModelList docs = session.query(sb.toString()); 045 046 for (DocumentModel doc : docs) { 047 TemplateSourceDocument tmpl = doc.getAdapter(TemplateSourceDocument.class); 048 if (tmpl != null) { 049 for (String type : tmpl.getForcedTypes()) { 050 if (mapping.containsKey(type)) { 051 mapping.get(type).add(doc.getId()); 052 } else { 053 List<String> templates = new ArrayList<String>(); 054 templates.add(doc.getId()); 055 mapping.put(type, templates); 056 } 057 } 058 } 059 } 060 } 061 062 public Map<String, List<String>> getMapping() { 063 return mapping; 064 } 065}