/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.cms.store.dao; import java.util.Collection; import java.util.HashSet; import java.util.List; import java.util.Set; import org.springframework.stereotype.Repository; import com.enonic.cms.core.resource.ResourceKey; import com.enonic.cms.core.structure.page.template.PageTemplateEntity; import com.enonic.cms.core.structure.page.template.PageTemplatePortletEntity; import com.enonic.cms.core.structure.page.template.PageTemplateType; import com.enonic.cms.store.support.EntityPageList; @Repository("pageTemplateDao") public final class PageTemplateEntityDao extends AbstractBaseEntityDao<PageTemplateEntity> implements PageTemplateDao { public PageTemplateEntity findByKey( int pageTemplateKey ) { return get( PageTemplateEntity.class, pageTemplateKey ); } @Override public List<PageTemplateEntity> findByName( final String name ) { return findByNamedQuery( PageTemplateEntity.class, "PageTemplateEntity.findByName", "name", name ); } /** * Find by content type. */ @SuppressWarnings("unchecked") private Collection<PageTemplateEntity> findByContentType( int siteKey, int contentType ) { return findByNamedQuery( PageTemplateEntity.class, "PageTemplateEntity.findByContentType", new String[]{"siteKey", "contentTypeKey"}, new Object[]{siteKey, contentType} ); } public PageTemplateEntity findFirstByContentType( int siteKey, int contentType, PageTemplateType pageTemplateType ) { return findFirstByContentType( siteKey, contentType, new PageTemplateType[]{pageTemplateType} ); } public PageTemplateEntity findFirstByContentType( int siteKey, int contentType, PageTemplateType[] legalPageTemplateTypes ) { final Collection<PageTemplateEntity> pageTemplates = findByContentType( siteKey, contentType ); for ( PageTemplateEntity pageTemplate : pageTemplates ) { for ( PageTemplateType legalType : legalPageTemplateTypes ) { if ( pageTemplate.getType().equals( legalType ) ) { return pageTemplate; } } } return null; } public List getResourceUsageCountStyle() { return getHibernateTemplate().findByNamedQuery( "PageTemplateEntity.getResourceUsageCountStyle" ); } public List getResourceUsageCountCSS() { return getHibernateTemplate().findByNamedQuery( "PageTemplateEntity.getResourceUsageCountCSS" ); } public List<PageTemplateEntity> findByStyle( ResourceKey resourceKey ) { return findByNamedQuery( PageTemplateEntity.class, "PageTemplateEntity.findByStyle", "styleKey", resourceKey ); } public List<PageTemplateEntity> findByCSS( ResourceKey resourceKey ) { return findByNamedQuery( PageTemplateEntity.class, "PageTemplateEntity.findByCSS", "cssKey", resourceKey ); } private List<PageTemplateEntity> findByStylePrefix( String prefix ) { return findByNamedQuery( PageTemplateEntity.class, "PageTemplateEntity.findByStylePrefix", "styleKeyPrefix", prefix ); } private List<PageTemplateEntity> findByCSSPrefix( String prefix ) { return findByNamedQuery( PageTemplateEntity.class, "PageTemplateEntity.findByCSSPrefix", "cssKeyPrefix", prefix ); } public Collection<PageTemplateEntity> findByContentObjectKeys( List<Integer> contentObjectKeys ) { Set<PageTemplateEntity> pageTemplates = new HashSet<PageTemplateEntity>(); List<PageTemplatePortletEntity> pageTemplateObjects = findByNamedQuery( PageTemplatePortletEntity.class, "PageTemplatePortletEntity.findByContentObjectKeys", "contentObjectKeys", contentObjectKeys ); for ( PageTemplatePortletEntity pageTemplateObject : pageTemplateObjects ) { pageTemplates.add( pageTemplateObject.getPageTemplate() ); } return pageTemplates; } public List<PageTemplateEntity> findByTypes( List<PageTemplateType> types ) { return findByNamedQuery( PageTemplateEntity.class, "PageTemplateEntity.findByTypes", "types", types ); } public List<PageTemplateEntity> findBySiteKey( int key ) { return findByNamedQuery( PageTemplateEntity.class, "PageTemplateEntity.findBySiteKey", "key", key ); } public void updateResourceStyleReference( ResourceKey oldResourceKey, ResourceKey newResourceKey ) { List<PageTemplateEntity> entityList = findByStyle( oldResourceKey ); for ( PageTemplateEntity entity : entityList ) { entity.setStyleKey( newResourceKey ); } } public void updateResourceCSSReference( ResourceKey oldResourceKey, ResourceKey newResourceKey ) { List<PageTemplateEntity> entityList = findByCSS( oldResourceKey ); for ( PageTemplateEntity entity : entityList ) { entity.setCssKey( newResourceKey ); } } public void updateResourceStyleReferencePrefix( String oldPrefix, String newPrefix ) { List<PageTemplateEntity> entityList = findByStylePrefix( oldPrefix + "%" ); for ( PageTemplateEntity entity : entityList ) { String key = entity.getStyleKey().toString(); key = key.replace( oldPrefix, newPrefix ); entity.setStyleKey( ResourceKey.from( key ) ); } } public void updateResourceCSSReferencePrefix( String oldPrefix, String newPrefix ) { List<PageTemplateEntity> entityList = findByCSSPrefix( oldPrefix + "%" ); for ( PageTemplateEntity entity : entityList ) { String key = entity.getCssKey().toString(); key = key.replace( oldPrefix, newPrefix ); entity.setCssKey( ResourceKey.from( key ) ); } } public List<PageTemplateEntity> findAll() { return findByNamedQuery( PageTemplateEntity.class, "PageTemplateEntity.findAll" ); } public EntityPageList<PageTemplateEntity> findAll( int index, int count ) { return findPageList( PageTemplateEntity.class, null, index, count ); } }