r1923 - trunk/wao-services/src/main/java/fr/ifremer/wao/services/service
Author: bleny Date: 2014-05-12 14:57:51 +0200 (Mon, 12 May 2014) New Revision: 1923 Url: http://forge.codelutin.com/projects/wao/repository/revisions/1923 Log: refs #4493 optimize query for computing sampling plan actual days Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/ObsMerSamplingPlanService.java Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/ObsMerSamplingPlanService.java =================================================================== --- trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/ObsMerSamplingPlanService.java 2014-05-07 08:58:32 UTC (rev 1922) +++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/ObsMerSamplingPlanService.java 2014-05-12 12:57:51 UTC (rev 1923) @@ -427,14 +427,9 @@ periodTo, sampleRow); - // calcul effort réalisé et estimé - SampleRowsFilter sampleRowsFilter1 = new SampleRowsFilter(); - sampleRowsFilter1.setPeriodFrom(periodFrom); - sampleRowsFilter1.setPeriodTo(periodTo); - sampleRowsFilter1.setSampleRowIds(ImmutableSet.of(sampleRow.getTopiaId())); - Pair<Long, Long> realAndEstimated = - getSampleRowObservationTimesInDayRealAndEstimated(sampleRowsFilter1); + getSampleRowObservationTimesInDayRealAndEstimated( + sampleRow.getTopiaId(), periodFrom, periodTo); Long observationTimesInDaysReal = realAndEstimated.getLeft(); Long observationTimesInDaysEstimated = realAndEstimated.getRight(); @@ -638,22 +633,24 @@ * Récupérer l'effort d'observation en nombre de jours réalisé (partie gauche) et estimé (partie droite) * pour le filtre d'échantillonnage donné. * - * @param sampleRowsFilter la filtre du plan d'échantillonnage + * @param sampleRowId la sample row pour laquelle il faut calculer l'effor réalisé + * @param periodFrom la date à partir de laquelle on compte les contacts + * @param periodTo la date jusqu'à laquelle on compte les contacts * @return la paire (effort réalisé - effort estimé) calculée */ - public Pair<Long, Long> getSampleRowObservationTimesInDayRealAndEstimated(SampleRowsFilter sampleRowsFilter) { + public Pair<Long, Long> getSampleRowObservationTimesInDayRealAndEstimated(String sampleRowId, Date periodFrom, Date periodTo) { // D'abord, on a besoin de récupérer toutes les observations réalisées // pour cette ligne du plan ContactsFilter contactFilter = new ContactsFilter(); + contactFilter.getSampleRowFilter().setSampleRowIds(ImmutableSet.of(sampleRowId)); + contactFilter.setFilterOnObservationBeginDate(true); - contactFilter.setPeriodFrom(sampleRowsFilter.getPeriodFrom()); - contactFilter.setPeriodTo(sampleRowsFilter.getPeriodTo()); - contactFilter.setSampleRowFilter(sampleRowsFilter); + contactFilter.setPeriodFrom(periodFrom); + contactFilter.setPeriodTo(periodTo); - contactFilter.setContactStates(ImmutableSet.of(ContactState.OBSERVATION_DONE)); // on exclue les contacts qui sont invalidés par le programme contactFilter.setProgramAcceptations(Sets.newHashSet(true, null));
participants (1)
-
bleny@users.forge.codelutin.com