diff --git a/src/main/java/org/genesys2/server/persistence/domain/PDCIRepository.java b/src/main/java/org/genesys2/server/persistence/domain/PDCIRepository.java index a91a7fea2ab5f18f72743c66ece465bd6da253e8..d022e07a06e095ec156f3bdd61af4bccdfdfb40a 100644 --- a/src/main/java/org/genesys2/server/persistence/domain/PDCIRepository.java +++ b/src/main/java/org/genesys2/server/persistence/domain/PDCIRepository.java @@ -17,6 +17,7 @@ package org.genesys2.server.persistence.domain; import java.util.List; +import java.util.Set; import org.genesys2.server.model.genesys.PDCI; import org.genesys2.server.model.impl.FaoInstitute; @@ -28,6 +29,9 @@ public interface PDCIRepository extends JpaRepository { @Query("select pdci from PDCI pdci where pdci.accession.id=?1") PDCI findByAccessionId(Long accessionId); + @Query("select pdci from PDCI pdci where pdci.accession.id in (?1)") + List findByAccessionId(Set accessionIds); + /** * Gets [ min(pdci.score), max(pdci.score), avg(pdci.score), count(pdci) ] * for PDCI of {@link FaoInstitute} diff --git a/src/main/java/org/genesys2/server/service/GenesysService.java b/src/main/java/org/genesys2/server/service/GenesysService.java index f4b1678d5afeb3099ff9686a825c606d764e6d10..d66d98e0cc6496a4cce24a61a786e22120fda324 100644 --- a/src/main/java/org/genesys2/server/service/GenesysService.java +++ b/src/main/java/org/genesys2/server/service/GenesysService.java @@ -235,6 +235,6 @@ public interface GenesysService { PDCIStatistics statisticsPDCI(FaoInstitute faoInstitute); - void updatePDCI(Set accessionIds); + void updatePDCI(Set ads); } diff --git a/src/main/java/org/genesys2/server/service/impl/ElasticsearchSearchServiceImpl.java b/src/main/java/org/genesys2/server/service/impl/ElasticsearchSearchServiceImpl.java index 93034a8cd6b5f6f3edc492582e634e70e69aff65..d59330595822629fadc30ddef56919b441cb7960 100644 --- a/src/main/java/org/genesys2/server/service/impl/ElasticsearchSearchServiceImpl.java +++ b/src/main/java/org/genesys2/server/service/impl/ElasticsearchSearchServiceImpl.java @@ -303,6 +303,8 @@ public class ElasticsearchSearchServiceImpl implements ElasticService, Initializ } Set ads = genesysService.getAccessionDetails(ids); + // If Accession, update PDCI + genesysService.updatePDCI(ads); for (AccessionDetails ad : ads) { if (ad == null) diff --git a/src/main/java/org/genesys2/server/service/impl/GenesysServiceImpl.java b/src/main/java/org/genesys2/server/service/impl/GenesysServiceImpl.java index 86e541769973898f99b435d39ec6f0b4fd0f441e..06c41f57c66a71d2e602765e9e0e67d868477a07 100644 --- a/src/main/java/org/genesys2/server/service/impl/GenesysServiceImpl.java +++ b/src/main/java/org/genesys2/server/service/impl/GenesysServiceImpl.java @@ -1574,19 +1574,35 @@ public class GenesysServiceImpl implements GenesysService, DatasetService { @Override @Transactional - public void updatePDCI(Set accessionIds) { + public void updatePDCI(Set ads) { if (pdciCalculator == null) { return; } + Set accessionIds=new HashSet(); + for (AccessionDetails accessionDetails : ads) { + if (accessionDetails!=null) { + accessionIds.add(accessionDetails.getId()); + } + } + List pdcis = repoPdci.findByAccessionId(accessionIds); - List pdcis = new ArrayList(); - for (Long accessionId : accessionIds) { - PDCI pdci = repoPdci.findByAccessionId(accessionId); + for (AccessionDetails accessionDetails : ads) { + if (accessionDetails==null) { + continue; + } + + PDCI pdci = null; + for (PDCI existing : pdcis) { + if (existing.getAccession().getId().equals(accessionDetails.getId())) { + pdci = existing; + break; + } + } if (pdci == null) { pdci = new PDCI(); - pdci.setAccession(accessionIdRepository.findOne(accessionId)); + pdci.setAccession(accessionIdRepository.findOne(accessionDetails.getId())); } - pdcis.add(pdciCalculator.updatePdci(pdci, accessionId)); + pdciCalculator.updatePdci(pdci, accessionDetails); } repoPdci.save(pdcis); } diff --git a/src/main/java/org/genesys2/server/service/impl/PDCICalculator.java b/src/main/java/org/genesys2/server/service/impl/PDCICalculator.java index 898f95f9a2c24db0716a65a5319af669a13bd627..fbe2883e231b6e64aa7fd88e0925e18b1f8bccdc 100644 --- a/src/main/java/org/genesys2/server/service/impl/PDCICalculator.java +++ b/src/main/java/org/genesys2/server/service/impl/PDCICalculator.java @@ -58,20 +58,24 @@ public class PDCICalculator implements InitializingBean { public PDCI makePDCI(long accessionId) { return calculatePDCI(new PDCI(), accessionId); } - + public PDCI updatePdci(PDCI pdci, long accessionId) { return calculatePDCI(pdci, accessionId); } private PDCI calculatePDCI(PDCI pdci, long accessionId) { - pdci.reset(); - AccessionDetails accessionDetails = genesysService.getAccessionDetails(accessionId); if (accessionDetails == null) { LOG.warn("No such accession " + accessionId); return null; } - + + return updatePdci(pdci, accessionDetails); + } + + public PDCI updatePdci(PDCI pdci, AccessionDetails accessionDetails) { + pdci.reset(); + independentDescriptors(pdci, accessionDetails); switch (accessionDetails.getSampStat() == null ? -1 : accessionDetails.getSampStat() / 100) { @@ -437,4 +441,5 @@ public class PDCICalculator implements InitializingBean { } return false; } + } diff --git a/src/main/java/org/genesys2/server/service/impl/StatisticsServiceImpl.java b/src/main/java/org/genesys2/server/service/impl/StatisticsServiceImpl.java index 91349b016e043230527d20496659686552848309..6662bbbf56713aa3e9a72bc5fc91a5b4f13e388d 100644 --- a/src/main/java/org/genesys2/server/service/impl/StatisticsServiceImpl.java +++ b/src/main/java/org/genesys2/server/service/impl/StatisticsServiceImpl.java @@ -64,8 +64,8 @@ public class StatisticsServiceImpl implements StatisticsService { @Override @Cacheable(unless = "#result == null", value = "statistics", key = "'stats.' + #root.methodName + '-' + #faoInstitute.id") public PDCIStatistics statisticsPDCI(FaoInstitute faoInstitute) { - if (LOG.isInfoEnabled()) { - LOG.info("Regenerating PDCI statistics for " + faoInstitute); + if (LOG.isDebugEnabled()) { + LOG.debug("Regenerating PDCI statistics for " + faoInstitute); } return genesysService.statisticsPDCI(faoInstitute); } diff --git a/src/main/java/org/genesys2/server/service/worker/ElasticUpdaterProcessor.java b/src/main/java/org/genesys2/server/service/worker/ElasticUpdaterProcessor.java index 191a4742ae8669f653cf23c11985a984d64ae0b7..27a236dfea8c2af044f0f8305bd40869f0accd56 100644 --- a/src/main/java/org/genesys2/server/service/worker/ElasticUpdaterProcessor.java +++ b/src/main/java/org/genesys2/server/service/worker/ElasticUpdaterProcessor.java @@ -8,7 +8,6 @@ import javax.annotation.Resource; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.genesys2.server.model.genesys.Accession; import org.genesys2.server.service.ElasticService; import org.genesys2.server.service.GenesysService; import org.genesys2.server.service.worker.ElasticUpdater.ElasticNode; @@ -111,11 +110,6 @@ class ElasticUpdaterProcessor implements Runnable, InitializingBean, DisposableB for (String className : buckets.keySet()) { Set bucket = buckets.get(className); - // If Accession, update PDCI - if (Accession.class.getName().equals(className)) { - genesysService.updatePDCI(bucket); - } - elasticService.updateAll(className, bucket); bucket.clear(); } @@ -147,11 +141,6 @@ class ElasticUpdaterProcessor implements Runnable, InitializingBean, DisposableB } bucket.add(toUpdate.getId()); if (bucket.size() >= BATCH_SIZE) { - // If Accession, update PDCI - if (Accession.class.getName().equals(className)) { - genesysService.updatePDCI(bucket); - } - elasticService.updateAll(className, bucket); bucket.clear(); } diff --git a/src/main/webapp/WEB-INF/jsp/accession/details.jsp b/src/main/webapp/WEB-INF/jsp/accession/details.jsp index eb2e1042b1510cba1c8f15317d78cd6131e16cc1..69a6b8d005d2a4f4ec8b8bb64c91535aea376b02 100644 --- a/src/main/webapp/WEB-INF/jsp/accession/details.jsp +++ b/src/main/webapp/WEB-INF/jsp/accession/details.jsp @@ -655,7 +655,7 @@

- + ">