/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package uk.ac.ebi.ep.data.service; import com.mysema.query.types.Predicate; import java.util.List; import java.util.stream.Stream; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import uk.ac.ebi.ep.data.domain.IntenzEnzymes; import uk.ac.ebi.ep.data.domain.QUniprotEntry; import uk.ac.ebi.ep.data.domain.UniprotEntry; import uk.ac.ebi.ep.data.repositories.IntenzEnzymesRepository; import uk.ac.ebi.ep.data.repositories.UniprotEntryRepository; /** * * @author joseph */ @Service public class EnzymePortalXmlService { @Autowired private IntenzEnzymesRepository intenzEnzymesRepository; @Autowired private UniprotEntryRepository uniprotEntryRepository; private static Predicate swissprotEnzymesByEcNumber(String ecNumber) { QUniprotEntry enzyme = QUniprotEntry.uniprotEntry; return enzyme.entryType.eq(Integer.valueOf(0).shortValue()).and(enzyme.enzymePortalEcNumbersSet.any().ecNumber.equalsIgnoreCase(ecNumber)); } private static Predicate enzymesByEcNumber(String ecNumber) { QUniprotEntry enzyme = QUniprotEntry.uniprotEntry; return enzyme.enzymePortalEcNumbersSet.any().ecNumber.equalsIgnoreCase(ecNumber); } /** * Note : This method should only used for Unit Test. * * @param enzyme the Intenz enzyme */ public void addIntenzEnzyme(IntenzEnzymes enzyme) { intenzEnzymesRepository.save(enzyme); } /** * Note : This method should only used for Unit Test. * * @param enzymes the Intenz enzymes */ public void addIntenzEnzymes(List<IntenzEnzymes> enzymes) { intenzEnzymesRepository.save(enzymes); } @Transactional(readOnly = true) public List<IntenzEnzymes> findAllIntenzEnzymes() { return intenzEnzymesRepository.findIntenzEnzymes(); } @Transactional(readOnly = true) public Iterable<UniprotEntry> findSwissprotEnzymesByEcNumber(String ec) { return uniprotEntryRepository.findAll(swissprotEnzymesByEcNumber(ec)); } @Transactional(readOnly = true) public Iterable<UniprotEntry> findEnzymesByEcNumber(String ec) { return uniprotEntryRepository.findAll(enzymesByEcNumber(ec)); } @Transactional(readOnly = true) public List<UniprotEntry> findEnzymesByEcNumberNativeQuery(String ec) { return uniprotEntryRepository.findEnzymesByEc(ec); } public Page<UniprotEntry> findPageableEnzymesByEcNumber(Pageable pageable, String ec) { return uniprotEntryRepository.findAll(enzymesByEcNumber(ec), pageable); } @Transactional(readOnly = true) public List<UniprotEntry> findUniprotEntries() { return uniprotEntryRepository.findUniprotEntries(); } @Transactional(readOnly = true) public Long countUniprotEntries() { return uniprotEntryRepository.countUniprotEntries(); } //****** TODO ****** @Transactional(readOnly = true) public Page<UniprotEntry> findPageableUniprotEntries(Pageable pageable) { return uniprotEntryRepository.findAll(pageable); } @Transactional(readOnly = true) public List<UniprotEntry> findUniprotEntriesOrderedByEntryType() { return uniprotEntryRepository.findUniprotEntriesOrderedByEntryType(); } @Transactional(readOnly = true) public List<UniprotEntry> findSwissprotEnzymesByEc(String ec) { return uniprotEntryRepository.findSwissprotEnzymesByEc(ec); } @Transactional(readOnly = true) public Stream<List<UniprotEntry>> findStreamedSwissprotEnzymesByEc(String ec) { return uniprotEntryRepository.findStreamedSwissprotEnzymesByEc(ec); } @Deprecated @Transactional(readOnly = true) public Stream<UniprotEntry> streamEnzymes() { return uniprotEntryRepository.streamEnzymes(); } public Stream<IntenzEnzymes> streamIntenzEnzymes() { return intenzEnzymesRepository.streamAllIntenzEnzymes(); } @Transactional(readOnly = true) public List<IntenzEnzymes> findNonTransferredEnzymes() { return intenzEnzymesRepository.findNonTransferredEnzymes(); } }