package uk.ac.ebi.ep.data.repositories; import com.mysema.query.jpa.impl.JPAQuery; import com.mysema.query.types.Projections; import java.util.List; import java.util.stream.Collectors; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import org.springframework.transaction.annotation.Transactional; import uk.ac.ebi.ep.data.domain.QEnzymePortalPathways; import uk.ac.ebi.ep.data.enzyme.model.Pathway; /** * * @author joseph */ public class EnzymePortalPathwaysRepositoryImpl implements EnzymePortalPathwaysRepositoryCustom { @PersistenceContext private EntityManager entityManager; private static final QEnzymePortalPathways $ = QEnzymePortalPathways.enzymePortalPathways; @Transactional(readOnly = true) // @Override public List<Pathway> findPathwaysByAccession(String accession) { JPAQuery query = new JPAQuery(entityManager); List<Pathway> pathways = query.from($).where($.uniprotAccession.accession.equalsIgnoreCase(accession)) .list(Projections.constructor(Pathway.class, $.pathwayId, $.pathwayName)); return pathways; } // @Transactional(readOnly = true) // @Override // public List<String> findAccessionsByPathwayId(String pathwayId) { // // List<String> enzymes = new ArrayList<>(); // JPAQuery query = new JPAQuery(entityManager); // // List<EnzymePortalPathways> entries = query.from($).where($.pathwayId.equalsIgnoreCase(pathwayId)).distinct().list($) // .stream().distinct().collect(Collectors.toList()); // // entries.stream().forEach(e -> { // enzymes.add(e.getUniprotAccession().getAccession()); // }); // // return enzymes; // // } @Transactional(readOnly = true) @Override public List<Pathway> findPathwaysByName(String name) { JPAQuery query = new JPAQuery(entityManager); String pathwayName = String.format("%%%s%%", name).toLowerCase(); List<Pathway> entries = query.from($).where($.pathwayName.toLowerCase().like(pathwayName)) .list(Projections.constructor(Pathway.class,$.pathwayGroupId, $.pathwayId, $.pathwayName)); return entries.stream().distinct().collect(Collectors.toList()); } }