/**
*
*/
package org.inbio.m3s.dao.core.impl;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.inbio.m3s.dao.GenericBaseDAOImpl;
import org.inbio.m3s.dao.core.TextTranslationDAO;
import org.inbio.m3s.model.core.TextTranslation;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.HibernateTemplate;
/**
* @author jgutierrez
*
*/
public class TextTranslationDAOImpl extends GenericBaseDAOImpl<TextTranslation, Integer> implements TextTranslationDAO {
public TextTranslation finByIdAndLanguage(final Integer id, final String locale) {
logger.debug("TextTranslation... start ");
HibernateTemplate template = getHibernateTemplate();
return (TextTranslation) template.execute(new HibernateCallback() {
public Object doInHibernate(Session session) {
Query query = session.createQuery(
"select tt"
+ " from TextTranslation as tt"
+ " where tt.textId = " + id
+ " and tt.locale = :locale");
query.setParameter("locale", locale);
query.setCacheable(true);
return query.uniqueResult();
}
});
}
@SuppressWarnings("unchecked")
public List<String> findTechnicalMetadataTexts(final Integer mediaTypeId, final String locale) {
logger.debug("findTechnicalMetadataTexts... start ");
HibernateTemplate template = getHibernateTemplate();
return (List<String>) template.execute(new HibernateCallback() {
public Object doInHibernate(Session session) {
Query query = session.createQuery(
"select tt.name" +
" from TextTranslation as tt, MediaAttributeType as mat" +
" where mat.mediaType.mediaTypeId = " + mediaTypeId +
" and tt.textId = mat.mediaAttribute.textByNameTextId.textId" +
" and tt.locale = :locale");
query.setParameter("locale", locale);
//query.setParameter(0, nomenclaturalGroupId);
query.setCacheable(true);
return query.list();
}
});
}
}