/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.cms.core.portal.rendering; import com.enonic.cms.core.content.ContentEntity; import com.enonic.cms.core.content.contenttype.ContentTypeEntity; import com.enonic.cms.core.structure.SiteEntity; import com.enonic.cms.core.structure.menuitem.ContentHomeEntity; import com.enonic.cms.core.structure.page.template.PageTemplateEntity; import com.enonic.cms.core.structure.page.template.PageTemplateType; import com.enonic.cms.store.dao.PageTemplateDao; /** * May 3, 2009 */ public class PageTemplateResolver { private PageTemplateDao pageTemplateDao; public PageTemplateResolver( PageTemplateDao pageTemplateDao ) { this.pageTemplateDao = pageTemplateDao; } public PageTemplateEntity resolvePageTemplate( SiteEntity site, ContentEntity content ) { // check if content has page template set PageTemplateEntity pageTemplate = getForcedPageTemplate( site, content ); if ( pageTemplate != null ) { return pageTemplate; } // check whether the site has a framework that supports this content type ContentTypeEntity contentType = content.getContentType(); return pageTemplateDao.findFirstByContentType( site.getKey().toInt(), contentType.getKey(), PageTemplateType.CONTENT ); } private PageTemplateEntity getForcedPageTemplate( SiteEntity site, ContentEntity content ) { ContentHomeEntity contentHome = content.getContentHome( site.getKey() ); if ( contentHome == null ) { return null; } return contentHome.getPageTemplate(); } }