package eu.eudat.dao.entities; import java.util.List; import java.util.Map; 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 org.hibernate.query.Query; import eu.eudat.dao.JpaDao; import eu.eudat.entities.DMP; import eu.eudat.entities.responses.IDLabelPair; import eu.eudat.models.dmp.DataManagementPlanTableRequest; import org.springframework.stereotype.Component; @Component("dMPDao") public class DMPDaoImpl extends JpaDao implements DMPDao { public DMP loadDetails(DMP t) { // TODO Auto-generated method stub return null; } @Override public List listAllIDs() { String queryString = "SELECT dmp.id FROM DMP dmp where dmp.status>=0"; TypedQuery typedQuery = entityManager.createQuery(queryString, UUID.class); return typedQuery.getResultList(); } @Override public List listAllIDsLabels() { String queryString = "SELECT dmp.id, dmp.label FROM DMP dmp where dmp.status>=0"; 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 List getDMPsOfUser(String userID) { String queryString = "select dmp from DMP dmp where dmp.creator.id=:userid and dmp.status >= 0"; TypedQuery typedQuery = entityManager.createQuery(queryString, DMP.class); typedQuery.setParameter("userid", UUID.fromString(userID)); try { return typedQuery.getResultList(); } catch(Exception ex) { //no need to distinguish between eu.eudat.exceptions for the moment ex.printStackTrace(); return null; } } @Override public List getWithCriteria(DataManagementPlanTableRequest dataManagementPlanTableRequest) { CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder(); CriteriaQuery criteriaQuery = criteriaBuilder .createQuery(DMP.class); Root root = criteriaQuery.from(DMP.class); TypedQuery typedQuery = entityManager.createQuery(criteriaQuery); typedQuery.setFirstResult(dataManagementPlanTableRequest.getOffset()); typedQuery.setMaxResults(dataManagementPlanTableRequest.getLength()); return typedQuery.getResultList(); } }