/** * */ package net.conselldemallorca.helium.core.model.dao; import java.util.ArrayList; import java.util.List; import net.conselldemallorca.helium.core.model.hibernate.Persona; import org.hibernate.criterion.Criterion; import org.hibernate.criterion.Restrictions; import org.springframework.stereotype.Component; /** * Dao per al plugin de persones * * @author Limit Tecnologies <limit@limit.es> */ @Component public class PersonaDao extends HibernateGenericDao<Persona, Long> { public PersonaDao() { super(Persona.class); } public List<Persona> findLikeNomSencer(String text) { return findByCriteria( Restrictions.ilike("nomSencer", "%" + text + "%")); } public Persona findAmbCodi(String codi) { List<Persona> persones = findByCriteria( Restrictions.eq("codi", codi)); if (persones.size() > 0) return persones.get(0); return null; } public List<Persona> findPagedAndOrderedFiltre( String sort, boolean asc, int firstRow, int maxResults, String codi, String nomLike, String emailLike) { List<Criterion> crits = new ArrayList<Criterion>(); if (codi != null && codi.length() > 0) crits.add(Restrictions.eq("codi", codi)); if (nomLike != null && nomLike.length() > 0) crits.add(Restrictions.ilike("nomSencer", "%" + nomLike + "%")); if (emailLike != null && emailLike.length() > 0) crits.add(Restrictions.ilike("email", "%" + emailLike + "%")); return findPagedAndOrderedByCriteria( firstRow, maxResults, new String[] {sort}, asc, getCriterionPerFiltre(codi, nomLike, emailLike)); } public int getCountFiltre( String codi, String nomLike, String emailLike) { return getCountByCriteria(getCriterionPerFiltre(codi, nomLike, emailLike)); } private Criterion[] getCriterionPerFiltre( String codi, String nomLike, String emailLike) { List<Criterion> crits = new ArrayList<Criterion>(); if (codi != null && codi.length() > 0) crits.add(Restrictions.eq("codi", codi)); if (nomLike != null && nomLike.length() > 0) crits.add(Restrictions.ilike("nom", "%" + nomLike + "%")); if (emailLike != null && emailLike.length() > 0) crits.add(Restrictions.ilike("email", "%" + emailLike + "%")); return crits.toArray(new Criterion[crits.size()]); } }