package eu.eudat.dao.entities; import java.util.List; import java.util.Set; import java.util.UUID; import java.util.stream.Collectors; import javax.persistence.Query; import javax.persistence.TypedQuery; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.Root; import eu.eudat.dao.JpaDao; import eu.eudat.entities.Dataset; import eu.eudat.entities.Project; import eu.eudat.entities.responses.IDLabelPair; import eu.eudat.models.dataset.DatasetTableRequest; import org.springframework.stereotype.Component; @Component("datasetDao") public class DatasetDaoImpl extends JpaDao implements DatasetDao { public Dataset loadDetails(Dataset t) { // TODO Auto-generated method stub return null; } @Override public List listAllIDs() { String queryString = "SELECT dataset.id FROM Dataset dataset where dataset.status>=0"; TypedQuery typedQuery = entityManager.createQuery(queryString, UUID.class); return typedQuery.getResultList(); } @Override public List listAllIDsLabels() { String queryString = "SELECT dataset.id, dataset.label FROM Dataset dataset where dataset.status>=0"; Query query = (Query) entityManager.createQuery(queryString); List rows = query.getResultList(); return rows.stream().map(row -> { return new IDLabelPair(row[0].toString(), row[1].toString()); }) .collect(Collectors.toList()); } @Override public List getDatasetsOfDmp(UUID dmpID) { String queryString = "FROM Dataset dataset where dataset.dmp.id=:dmpID and dataset.status>=0"; Query query = (Query) entityManager.createQuery(queryString); query.setParameter("dmpID", dmpID); List datasets = (List) query.getResultList(); return datasets; } @Override public List getWithCriteria(DatasetTableRequest datasetTableRequest) { CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder(); CriteriaQuery criteriaQuery = criteriaBuilder .createQuery(Dataset.class); Root root = criteriaQuery.from(Dataset.class); TypedQuery typedQuery = entityManager.createQuery(criteriaQuery); typedQuery.setFirstResult(datasetTableRequest.getOffset()); typedQuery.setMaxResults(datasetTableRequest.getLength()); return typedQuery.getResultList(); } }