package org.nextprot.api.etl.service.impl; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import org.nextprot.api.core.domain.CvTerm; import org.nextprot.api.core.domain.Publication; import org.nextprot.api.core.service.PublicationService; import org.nextprot.api.core.service.TerminologyService; import org.nextprot.api.etl.service.ConsistencyService; import org.nextprot.commons.statements.StatementField; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.nextprot.api.annotation.builder.statement.dao.SimpleWhereClauseQueryDSL; import com.nextprot.api.annotation.builder.statement.dao.StatementDao; @Service public class ConsistencyServiceImpl implements ConsistencyService{ @Autowired PublicationService publicationService; @Autowired TerminologyService terminologyService; @Autowired StatementDao statementDao; @Override public List<String> findMissingPublications() { List<String> missingPublications = new ArrayList<>(); Arrays.asList("PubMed", "DOI").stream().forEach(referenceDB -> { List<String> ids = statementDao.findAllDistinctValuesforFieldWhereFieldEqualsValues( StatementField.REFERENCE_ACCESSION, new SimpleWhereClauseQueryDSL(StatementField.REFERENCE_DATABASE, referenceDB)); for(String id : ids) { if(id != null){ Publication pub = publicationService.findPublicationByDatabaseAndAccession(referenceDB, id); if(pub == null){ missingPublications.add(referenceDB + id); } } }; }); return missingPublications; } @Override public List<String> findMissingCvTerms() { List<String> missingCvTerms = new ArrayList<>(); List<String> terms = statementDao.findAllDistinctValuesforField(StatementField.ANNOT_CV_TERM_ACCESSION); for(String t : terms) { if(t != null){ CvTerm term = terminologyService.findCvTermByAccession(t); if(term == null){ missingCvTerms.add(t); } } } return missingCvTerms; } }