package net.sourceforge.seqware.common.dao.hibernate; import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; import java.util.List; import net.sourceforge.seqware.common.dao.ProcessingRelationshipDAO; import net.sourceforge.seqware.common.model.Processing; import net.sourceforge.seqware.common.model.ProcessingRelationship; import net.sourceforge.seqware.common.util.NullBeanUtils; import org.apache.commons.beanutils.BeanUtilsBean; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; /** * <p> * ProcessingRelationshipDAOHibernate class. * </p> * * @author boconnor * @version $Id: $Id */ public class ProcessingRelationshipDAOHibernate extends HibernateDaoSupport implements ProcessingRelationshipDAO { /** {@inheritDoc} */ @Override public void insert(ProcessingRelationship processingRelationship) { this.getHibernateTemplate().save(processingRelationship); } /** {@inheritDoc} */ @Override public void update(ProcessingRelationship processingRelationship) { this.getHibernateTemplate().update(processingRelationship); } /** {@inheritDoc} */ @Override public void delete(ProcessingRelationship processingRelationship) { this.getHibernateTemplate().delete(processingRelationship); } /** {@inheritDoc} */ @Override @SuppressWarnings("rawtypes") public ProcessingRelationship findByProcessings(Processing processingParent, Processing processingChild) { String query = "from ProcessingRelationship as pl where pl.processingByParentId.processingId = ? and pl.processingByChildId.processingId = ?"; ProcessingRelationship obj = null; Object[] parameters = { processingParent.getProcessingId(), processingChild.getProcessingId() }; List list = this.getHibernateTemplate().find(query, parameters); if (list.size() > 0) { obj = (ProcessingRelationship) list.get(0); } return obj; } /** {@inheritDoc} */ @Override public ProcessingRelationship updateDetached(ProcessingRelationship processingRelationship) { ProcessingRelationship dbObject = findByProcessings(processingRelationship.getProcessingByParentId(), processingRelationship.getProcessingByChildId()); try { BeanUtilsBean beanUtils = new NullBeanUtils(); beanUtils.copyProperties(dbObject, processingRelationship); return (ProcessingRelationship) this.getHibernateTemplate().merge(dbObject); } catch (IllegalAccessException | InvocationTargetException e) { e.printStackTrace(); } return null; } /** {@inheritDoc} */ @Override public List<ProcessingRelationship> list() { throw new UnsupportedOperationException("Not supported yet."); } @Override public List<ProcessingRelationship> listByParentProcessingId(int processingId) { List<ProcessingRelationship> ret = new ArrayList<>(); String query = "from ProcessingRelationship as pl where pl.processingByParentId.processingId = ?"; Object[] parameters = { processingId }; List list = this.getHibernateTemplate().find(query, parameters); for (Object obj : list) { ret.add((ProcessingRelationship) obj); } return ret; } }