/** * */ package net.conselldemallorca.helium.core.model.dao; import java.util.ArrayList; import java.util.List; import net.conselldemallorca.helium.core.model.hibernate.CarrecJbpmId; import org.hibernate.Query; import org.hibernate.criterion.Restrictions; import org.springframework.stereotype.Component; /** * Dao pels objectes de tipus CarrecJbpmId * * @author Limit Tecnologies <limit@limit.es> */ @Component public class CarrecJbpmIdDao extends HibernateGenericDao<CarrecJbpmId, Long> { public CarrecJbpmIdDao() { super(CarrecJbpmId.class); } @SuppressWarnings("unchecked") public List<CarrecJbpmId> findSenseAssignar() { List<CarrecJbpmId> resposta = new ArrayList<CarrecJbpmId>(); Query query = getSession().createQuery( "select " + " distinct m.role," + " m.group.name " + "from " + " org.jbpm.identity.Membership m " + "where " + " (m.role, m.group.name) not in (" + " select " + " c.codi," + " c.grup " + " from " + " CarrecJbpmId c) "); List<Object[]> files = query.list(); for (Object[] fila: files) { CarrecJbpmId carrec = new CarrecJbpmId(); carrec.setCodi((String)fila[0]); carrec.setGrup((String)fila[1]); resposta.add(carrec); } return resposta; } public CarrecJbpmId findAmbCodiGrup(String codi, String grup) { List<CarrecJbpmId> carrecs = findByCriteria( Restrictions.eq("codi", codi), Restrictions.eq("grup", grup)); if (carrecs.size() > 0) { return carrecs.get(0); } else { for (CarrecJbpmId carrec: findSenseAssignar()) { if (carrec.getCodi().equals(codi) && carrec.getGrup().equals(grup)) return carrec; } } return null; } @SuppressWarnings("unchecked") public String findPersonaAmbGrupICarrec( final String grup, final String carrec) { Query query = getSession().createQuery( "select " + " m.user.name " + "from " + " org.jbpm.identity.Membership m " + "where " + " m.group.name = :codiGroup " + "and m.role = :codiCarrec"); query.setString("codiGroup", grup); query.setString("codiCarrec", carrec); List<String> files = query.list(); if (files.size() > 0) return files.get(0); return null; } @SuppressWarnings("unchecked") public List<String> findPersonesAmbGrupICarrec( final String grup, final String carrec) { Query query = getSession().createQuery( "select " + " m.user.name " + "from " + " org.jbpm.identity.Membership m " + "where " + " m.group.name = :codiGroup " + "and m.role = :codiCarrec"); query.setString("codiGroup", grup); query.setString("codiCarrec", carrec); return query.list(); } @SuppressWarnings("unchecked") public List<String> findCarrecsCodiAmbPersonaGrup(final String codiPersona, final String codiArea) { Query query = getSession().createQuery( "select " + " m.role " + "from " + " org.jbpm.identity.Membership m " + "where " + " m.user.name = :codiPersona " + "and m.group.name = :codiArea"); query.setString("codiPersona", codiPersona); query.setString("codiArea", codiArea); return query.list(); } @SuppressWarnings("unchecked") public List<String> findPersonesAmbGrup(final String group) { Query query = getSession().createQuery( "select distinct " + " m.user.name " + "from " + " org.jbpm.identity.Membership m " + "where " + " m.group.name = :group"); query.setString("group", group); return query.list(); } /* Per suprimir */ @SuppressWarnings("unchecked") public List<String> findPersonesAmbCarrecCodi(final String codi) { Query query = getSession().createQuery( "select " + " m.user.name " + "from " + " org.jbpm.identity.Membership m " + "where " + " m.role = :role"); query.setString("role", codi); return query.list(); } public CarrecJbpmId findAmbCodi(String codi) { List<CarrecJbpmId> carrecs = findByCriteria( Restrictions.eq("codi", codi)); if (carrecs.size() > 0) return carrecs.get(0); return null; } }