/** * */ package org.inbio.m3s.dao.core.impl; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import org.apache.log4j.Logger; import org.hibernate.HibernateException; import org.hibernate.Query; import org.hibernate.Session; import org.inbio.m3s.dao.GenericBaseDAOImpl; import org.inbio.m3s.dao.core.MediaAttributeDAO; import org.inbio.m3s.dto.metadata.util.MediaAttributeEntity; import org.inbio.m3s.model.core.MediaAttribute; import org.springframework.orm.hibernate3.HibernateCallback; import org.springframework.orm.hibernate3.HibernateTemplate; /** * @author jgutierrez * */ public class MediaAttributeDAOImpl extends GenericBaseDAOImpl<MediaAttribute, Integer> implements MediaAttributeDAO { private static Logger logger = Logger.getLogger(MediaAttributeDAOImpl.class); @SuppressWarnings("unchecked") public List<MediaAttribute> findAllByMediaType(final String mediaTypeKey) throws IllegalArgumentException { logger.debug("findAllByMediaType, param mediaTypeId[" + mediaTypeKey); HibernateTemplate template = getHibernateTemplate(); List<Integer> mediaAttributesIdList = (List<Integer>) template.execute(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException, SQLException { Query query = session.createQuery( "select mat.id.mediaAttributeId" + " from MediaAttributeType as mat"+ " where mat.id.mediaTypeId = " + mediaTypeKey); query.setCacheable(true); return query.list(); } }); List<MediaAttribute> mediaAttributeList = new ArrayList<MediaAttribute>(); MediaAttribute ma; MediaAttributeEntity mae; for(Integer mediaAttributeId :mediaAttributesIdList){ mae = MediaAttributeEntity.getById(mediaAttributeId.intValue()); ma = new MediaAttribute(mediaAttributeId,mae.getNamekey(),mae.getDescriptionkey(),mae.getMediaAttributeValueType()); mediaAttributeList.add(ma); } return mediaAttributeList; } }