/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.cms.store.dao; import java.util.Collection; import java.util.List; import org.hibernate.Query; import org.hibernate.Session; import com.enonic.cms.framework.hibernate.support.InClauseBuilder; import com.enonic.cms.framework.hibernate.support.SelectBuilder; import com.enonic.cms.core.content.category.CategoryEntity; import com.enonic.cms.core.content.category.CategoryKey; class FindCategoryByKeysQuerier { private Session hibernateSession; FindCategoryByKeysQuerier( Session hibernateSession ) { this.hibernateSession = hibernateSession; } List<CategoryEntity> queryCategories( final Collection<CategoryKey> categoryKeys ) { final SelectBuilder hqlQuery = new SelectBuilder( 0 ); hqlQuery.addSelect( "c" ); hqlQuery.addFromTable( CategoryEntity.class.getName(), "c", SelectBuilder.NO_JOIN, null ); hqlQuery.addFilter( "AND", new InClauseBuilder<CategoryKey>( "c.key", categoryKeys ) { public void appendValue( StringBuffer sql, CategoryKey value ) { sql.append( value.toString() ); } }.toString() ); Query compiled = hibernateSession.createQuery( hqlQuery.toString() ); compiled.setReadOnly( true ); compiled.setCacheable( false ); //noinspection unchecked return compiled.list(); } }