package eu.eudat.dao.entities; import java.util.List; import java.util.UUID; import java.util.stream.Collectors; import javax.persistence.TypedQuery; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.Root; import eu.eudat.models.criteria.Criteria; import org.hibernate.query.Query; import eu.eudat.dao.JpaDao; import eu.eudat.entities.Researcher; import eu.eudat.entities.responses.IDLabelPair; import org.springframework.stereotype.Component; @Component("researcherDao") public class ResearcherDaoImpl extends JpaDao implements ResearcherDao { public Researcher loadDetails(Researcher t) { // TODO Auto-generated method stub return null; } @Override public List listAllIDs() { String queryString = "SELECT researcher.id FROM Researcher researcher"; TypedQuery typedQuery = entityManager.createQuery(queryString, UUID.class); return typedQuery.getResultList(); } @Override public List listAllIDsLabels() { String queryString = "SELECT researcher.id, researcher.label FROM Researcher researcher"; Query query = (Query) entityManager.createQuery(queryString); List rows = query.list(); return rows.stream().map(row -> { return new IDLabelPair(row[0].toString(), row[1].toString()); }) .collect(Collectors.toList()); } @Override public Researcher getResearcherByEmail(String email) { String queryString = "FROM Researcher researcher where researcher.primaryEmail=:email"; TypedQuery typedQuery = entityManager.createQuery(queryString, Researcher.class); return null; } @Override public List listBy(Criteria criteria) { CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder(); CriteriaQuery criteriaQuery = criteriaBuilder .createQuery(Researcher.class); Root root = criteriaQuery.from(Researcher.class); criteriaQuery.where(criteriaBuilder.equal(root.get("reference"), criteria.getLike())); TypedQuery typedQuery = entityManager.createQuery(criteriaQuery); return typedQuery.getResultList(); } }