branch develop updated (dfaa79d -> 9480d83)
This is an automated email from the git hooks/post-receive script. New change to branch develop in repository wao. See http://git.codelutin.com/wao.git from dfaa79d Correction d'une NPE potentielle new 109f65b Correction clé bundle new 0a84939 Synthèses pour la scléro OK mais on est toujours en mois en non en trimestres new 38ed029 Nom de variable new 1342d6f Passage de la synthèse scléro en trimestres new 16a9054 Filtres pour la synthèse scléro new 9480d83 Synthèses pour la sclérochronologie (fixes #2265) The 6 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit 9480d830a28b872a361fed3d118e4e7a15405232 Merge: dfaa79d 16a9054 Author: Brendan Le Ny <bleny@codelutin.com> Date: Wed Jan 14 18:13:06 2015 +0100 Synthèses pour la sclérochronologie (fixes #2265) commit 16a9054c7c8c8a5cfa76c7c13fa9fe8494e4e8a3 Author: Brendan Le Ny <bleny@codelutin.com> Date: Wed Jan 14 18:12:33 2015 +0100 Filtres pour la synthèse scléro commit 1342d6fa60c2fcfa621d1d3d4aeb401494b70129 Author: Brendan Le Ny <bleny@codelutin.com> Date: Wed Jan 14 18:08:26 2015 +0100 Passage de la synthèse scléro en trimestres commit 38ed0298eb7ca6f2d5c46f0b3e6973fe7172c29a Author: Brendan Le Ny <bleny@codelutin.com> Date: Wed Jan 14 15:51:17 2015 +0100 Nom de variable commit 0a84939e86d17c8c65019f1f7c5948f12efd203c Author: Brendan Le Ny <bleny@codelutin.com> Date: Wed Jan 14 15:23:56 2015 +0100 Synthèses pour la scléro OK mais on est toujours en mois en non en trimestres commit 109f65b549b48497fd8ce2cfce599c840f898e54 Author: Brendan Le Ny <bleny@codelutin.com> Date: Wed Jan 14 12:05:30 2015 +0100 Correction clé bundle Summary of changes: .../src/main/java/fr/ifremer/wao/WaoUtils.java | 62 ++++- .../fr/ifremer/wao/entity/ContactTopiaDao.java | 26 +- .../fr/ifremer/wao/entity/SampleRowTopiaDao.java | 19 +- .../wao/services/service/ContactsService.java | 3 +- .../fr/ifremer/wao/services/service/Synthesis.java | 5 +- .../wao/services/service/SynthesisService.java | 66 +++-- .../resources/i18n/wao-services_en_GB.properties | 2 +- .../main/resources/i18n/wao-web_fr_FR.properties | 4 +- .../src/main/webapp/WEB-INF/content/synthesis.jsp | 296 ++++++++++++--------- .../src/main/webapp/WEB-INF/decorators/layout.jsp | 16 +- 10 files changed, 307 insertions(+), 192 deletions(-) -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository wao. See http://git.codelutin.com/wao.git commit 109f65b549b48497fd8ce2cfce599c840f898e54 Author: Brendan Le Ny <bleny@codelutin.com> Date: Wed Jan 14 12:05:30 2015 +0100 Correction clé bundle --- wao-web/src/main/resources/i18n/wao-web_fr_FR.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wao-web/src/main/resources/i18n/wao-web_fr_FR.properties b/wao-web/src/main/resources/i18n/wao-web_fr_FR.properties index 50112ae..3163b2a 100644 --- a/wao-web/src/main/resources/i18n/wao-web_fr_FR.properties +++ b/wao-web/src/main/resources/i18n/wao-web_fr_FR.properties @@ -15,7 +15,7 @@ wao.import.fishingZones.prompt=Import des zones de pêches wao.import.fishingZones.success=Import des zones de pêches réalisé avec succès wao.import.sampleRow.failure.wrongSampleRowCodeFormat=Le code de la ligne doit être de la forme AAAA_P1234 (AAAA représentant l'année sur quatre chiffres, P le code du programme (M, V, ou D) et 1234 le numéro de la ligne sur quatre chiffres) wao.import.species.prompt=Import des espèces -wao.import.species.succes=Import des espèces réalisé avec succès +wao.import.species.success=Import des espèces réalisé avec succès wao.import.terrestrialDivisions.prompt=Import des unités d'observation wao.import.terrestrialDivisions.success=Import des unités d'observation réalisé avec succès wao.import.terrestrialLocations.prompt=Import des lieux terrestres -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository wao. See http://git.codelutin.com/wao.git commit 0a84939e86d17c8c65019f1f7c5948f12efd203c Author: Brendan Le Ny <bleny@codelutin.com> Date: Wed Jan 14 15:23:56 2015 +0100 Synthèses pour la scléro OK mais on est toujours en mois en non en trimestres --- .../fr/ifremer/wao/entity/ContactTopiaDao.java | 8 +- .../fr/ifremer/wao/entity/SampleRowTopiaDao.java | 5 +- .../wao/services/service/ContactsService.java | 3 +- .../fr/ifremer/wao/services/service/Synthesis.java | 5 +- .../wao/services/service/SynthesisService.java | 33 ++-- .../resources/i18n/wao-services_en_GB.properties | 2 +- .../main/resources/i18n/wao-web_fr_FR.properties | 2 +- .../src/main/webapp/WEB-INF/content/synthesis.jsp | 200 +++++++++++---------- .../src/main/webapp/WEB-INF/decorators/layout.jsp | 16 +- 9 files changed, 144 insertions(+), 130 deletions(-) diff --git a/wao-persistence/src/main/java/fr/ifremer/wao/entity/ContactTopiaDao.java b/wao-persistence/src/main/java/fr/ifremer/wao/entity/ContactTopiaDao.java index fa642d2..a562789 100644 --- a/wao-persistence/src/main/java/fr/ifremer/wao/entity/ContactTopiaDao.java +++ b/wao-persistence/src/main/java/fr/ifremer/wao/entity/ContactTopiaDao.java @@ -224,7 +224,13 @@ public class ContactTopiaDao extends AbstractContactTopiaDao<Contact> { if (count == null) { count = 0; } - count += 1; + if (filter.getSampleRowFilter().getObsProgram().isSclerochronology()) { + // le réalisé est le nombre d'individus échantilonnés + count += contact.getSampleSize(); + } else { + // le réalisé est le nombre d'observation, on compte 1 observation pour 1 navire donc 1 pour chaque contact + count += 1; + } actualObservationsMyMonths.put(contactMonth, count); } diff --git a/wao-persistence/src/main/java/fr/ifremer/wao/entity/SampleRowTopiaDao.java b/wao-persistence/src/main/java/fr/ifremer/wao/entity/SampleRowTopiaDao.java index 1fedec7..948d2b2 100644 --- a/wao-persistence/src/main/java/fr/ifremer/wao/entity/SampleRowTopiaDao.java +++ b/wao-persistence/src/main/java/fr/ifremer/wao/entity/SampleRowTopiaDao.java @@ -171,10 +171,11 @@ public class SampleRowTopiaDao extends AbstractSampleRowTopiaDao<SampleRow> { HqlAndParametersBuilder<SampleRow> sampleRowsQuery = toSampleRowHqlAndParametersBuilder(sampleRowFilter); + ObsProgram obsProgram = sampleRowFilter.getObsProgram(); String selectSumClause; - if (sampleRowFilter.getObsProgram().isObsMer()) { + if (obsProgram.isObsMer() || obsProgram.isSclerochronology()) { selectSumClause = "sum(sm.expectedTidesValue)"; - } else if (sampleRowFilter.getObsProgram().isObsVente()) { + } else if (obsProgram.isObsVente()) { selectSumClause = "sum(sm.expectedTidesValue * sr2.averageObservationsCount)"; } else { throw new UnsupportedOperationException(); diff --git a/wao-services/src/main/java/fr/ifremer/wao/services/service/ContactsService.java b/wao-services/src/main/java/fr/ifremer/wao/services/service/ContactsService.java index 77e5e2d..17ebe9b 100644 --- a/wao-services/src/main/java/fr/ifremer/wao/services/service/ContactsService.java +++ b/wao-services/src/main/java/fr/ifremer/wao/services/service/ContactsService.java @@ -780,7 +780,6 @@ public class ContactsService extends WaoServiceSupport { ContactObservationEndDateAfterTodayException, ContactDataInputDateBeforeObservationEndDateException, ContactDataInputDateAfterTodayException, - MissingContactObservationEndDateException, MissingSampleSubmissionException, IllegalSampleSubmissionException, @@ -831,7 +830,7 @@ public class ContactsService extends WaoServiceSupport { if (contact.getObservationEndDate() == null) { throw new MissingContactObservationEndDateException(contact); } - if (contact.getSampleSubmission().before(contact.getObservationEndDate())) { + if (DateUtil.setMaxTimeOfDay(contact.getSampleSubmission()).before(contact.getObservationEndDate())) { throw new IllegalSampleSubmissionException(contact); } } diff --git a/wao-services/src/main/java/fr/ifremer/wao/services/service/Synthesis.java b/wao-services/src/main/java/fr/ifremer/wao/services/service/Synthesis.java index 1f5c02f..f6d774d 100644 --- a/wao-services/src/main/java/fr/ifremer/wao/services/service/Synthesis.java +++ b/wao-services/src/main/java/fr/ifremer/wao/services/service/Synthesis.java @@ -25,6 +25,7 @@ import fr.ifremer.wao.entity.Boat; import org.jfree.chart.JFreeChart; import java.util.HashMap; +import java.util.HashSet; import java.util.LinkedHashSet; import java.util.Map; import java.util.Set; @@ -48,7 +49,7 @@ public class Synthesis { protected Map<String, CompanySynthesis> companySyntheses = new HashMap<>(); - protected Set<String> sampleRowIds; + protected Set<String> sampleRowIds = new HashSet<>(); public Map<String, CompanySynthesis> getCompanySyntheses() { return companySyntheses; @@ -149,6 +150,6 @@ public class Synthesis { } public boolean isEmpty() { - return companySyntheses.isEmpty(); + return sampleRowIds.isEmpty(); } } diff --git a/wao-services/src/main/java/fr/ifremer/wao/services/service/SynthesisService.java b/wao-services/src/main/java/fr/ifremer/wao/services/service/SynthesisService.java index c84c6d0..3256c1a 100644 --- a/wao-services/src/main/java/fr/ifremer/wao/services/service/SynthesisService.java +++ b/wao-services/src/main/java/fr/ifremer/wao/services/service/SynthesisService.java @@ -30,6 +30,7 @@ import fr.ifremer.wao.entity.Boat; import fr.ifremer.wao.entity.Company; import fr.ifremer.wao.entity.ContactState; import fr.ifremer.wao.entity.ContactTopiaDao; +import fr.ifremer.wao.entity.ObsProgram; import fr.ifremer.wao.entity.SampleRowTopiaDao; import fr.ifremer.wao.entity.SynthesisId; import fr.ifremer.wao.services.AuthenticatedWaoUser; @@ -54,12 +55,10 @@ import org.nuiton.util.DateUtil; import java.util.Calendar; import java.util.Collection; import java.util.Date; -import java.util.HashSet; import java.util.LinkedHashMap; import java.util.List; import java.util.Locale; import java.util.Map; -import java.util.Set; import java.util.SortedMap; import java.util.TreeMap; @@ -81,6 +80,8 @@ public class SynthesisService extends WaoServiceSupport { public Synthesis getSynthesis(ContactsFilter filter) { + ObsProgram obsProgram = filter.getSampleRowFilter().getObsProgram(); + Cache<SynthesisCacheKey, Synthesis> cache = serviceContext.getSynthesesCache(); SynthesisCacheKey synthesisCacheKey = new SynthesisCacheKey(filter); @@ -93,25 +94,25 @@ public class SynthesisService extends WaoServiceSupport { synthesis = new Synthesis(); - Set<String> sampleRowIds = new HashSet<>(); - filter.setFilterOnObservationBeginDate(true); - setExpectedVsActualObservationsByMonthsBarChartData(synthesis, filter); - setBoardingBoatsData(synthesis, filter); - setComplianceBoardingIndicator(synthesis, filter); - setDataInputDateReactivity(synthesis, filter); - setDataReliability(synthesis, filter); - sampleRowIds.addAll(dao.getSampleRowsIds(filter)); - - filter.setFilterOnObservationBeginDate(false); - setContactStatesStatistics(synthesis, filter); - sampleRowIds.addAll(dao.getSampleRowsIds(filter)); + synthesis.getSampleRowIds().addAll(dao.getSampleRowsIds(filter)); - synthesis.setSampleRowIds(sampleRowIds); + setExpectedVsActualObservationsByMonthsBarChartData(synthesis, filter); + if (obsProgram.isObsMer()) { + setComplianceBoardingIndicator(synthesis, filter); + setDataReliability(synthesis, filter); + } + if (obsProgram.isObsMer() || obsProgram.isObsVente()) { + setBoardingBoatsData(synthesis, filter); + setDataInputDateReactivity(synthesis, filter); + filter.setFilterOnObservationBeginDate(false); + synthesis.getSampleRowIds().addAll(dao.getSampleRowsIds(filter)); + setContactStatesStatistics(synthesis, filter); + } for (CompanySynthesis companySynthesis : synthesis.getCompanySyntheses().values()) { String companyId = companySynthesis.getCompanyId(); - Company company = getCompanyDao().findByTopiaId(companyId); + Company company = getCompanyDao().forTopiaIdEquals(companyId).findUnique(); companySynthesis.setCompanyName(company.getName()); } diff --git a/wao-services/src/main/resources/i18n/wao-services_en_GB.properties b/wao-services/src/main/resources/i18n/wao-services_en_GB.properties index b451f33..ba0265b 100644 --- a/wao-services/src/main/resources/i18n/wao-services_en_GB.properties +++ b/wao-services/src/main/resources/i18n/wao-services_en_GB.properties @@ -66,7 +66,7 @@ wao.import.contact.failure.missingSampleSize=You must provide de number of indiv wao.import.contact.failure.missingSampleSubmission=You must provide the sample submission date wao.import.contact.failure.missingTerrestrialLocation=You must provide the terrestrial location wao.import.contact.failure.not.updatable=Insufficient credentials to update contact -wao.import.contact.failure.observationEndDateAfterToday=La date de fin de la marée ne peut pas être postérieure à la date du jour +wao.import.contact.failure.observationEndDateAfterToday=La date de fin d'observation ne peut pas être postérieure à la date du jour wao.import.contact.failure.observationEndDateBeforeBeginDate=La date de fin d'observation ne peut pas être antérieure à celle du début wao.import.contact.failure.observedDataControlToCorrectionAsked=A contact cannot be accepted if observed data control shows that a correction is asked wao.import.contact.failure.sampleRowCodeMissing=The code of the sample row line is missing diff --git a/wao-web/src/main/resources/i18n/wao-web_fr_FR.properties b/wao-web/src/main/resources/i18n/wao-web_fr_FR.properties index 3163b2a..f374c64 100644 --- a/wao-web/src/main/resources/i18n/wao-web_fr_FR.properties +++ b/wao-web/src/main/resources/i18n/wao-web_fr_FR.properties @@ -338,7 +338,7 @@ wao.ui.form.Contact.error.missingSampleReception=Il faut préciser la date de r wao.ui.form.Contact.error.missingSampleSize=Il faut préciser la taille de l'échantillon wao.ui.form.Contact.error.missingSampleSubmission=Il faut préciser la date d'envoi wao.ui.form.Contact.error.missingTerrestrialLocation=Il faut préciser le lieu d'observation -wao.ui.form.Contact.error.observationEndDateAfterToday=La date de fin de la marée ne peut pas être postérieure à la date du jour +wao.ui.form.Contact.error.observationEndDateAfterToday=La date de fin d'observation ne peut pas être postérieure à la date du jour wao.ui.form.Contact.error.observationEndDateBeforeBeginDate=La date de fin d'observation ne peut pas être antérieure à celle du début wao.ui.form.Contact.error.observedDataControlToCorrectionAsked=Un contact ne peut être accepté si le contrôle des données observées indique qu'une correction est demandée wao.ui.form.Contact.error.transmissionDateBeforeDataInputDate=Il faut que la date de transmission de la restitution soit après la date de saisie des données diff --git a/wao-web/src/main/webapp/WEB-INF/content/synthesis.jsp b/wao-web/src/main/webapp/WEB-INF/content/synthesis.jsp index c7a8be8..c2d98d0 100644 --- a/wao-web/src/main/webapp/WEB-INF/content/synthesis.jsp +++ b/wao-web/src/main/webapp/WEB-INF/content/synthesis.jsp @@ -201,36 +201,40 @@ <s:property value="synthesis.expectedVsActualObservationsByMonthsChart" escapeHtml="false"/> </article> - <article> - <h2> - <s:text name="SynthesisId.GRAPH_BOARDING"/> - </h2> + <s:if test="obsMer || obsVente"> - <s:property value="synthesis.boardingBoatsChart" escapeHtml="false"/> - - <p> - <s:text name="wao.ui.synthesis.boarding.description"/> - </p> - - <p> - <s:text name="wao.ui.synthesis.boarding.mostUsedBoat"> - <s:param value="%{synthesis.maxBoardingValue}"/> - <s:param value="%{synthesis.maxBoardingBoat.name}"/> - <s:param value="%{synthesis.maxBoardingBoat.registrationCode}"/> - </s:text> - </p> - - <p> - <s:text name="wao.ui.synthesis.boarding.boardingCount"> - <s:param value="%{synthesis.invalidBoardingsCount}"/> - <s:param value="%{synthesis.boardingsCount}"/> - <%-- - <s:param value="%{synthesis.validBoardingsCount}"/> - --%> - </s:text> - </p> + <article> + <h2> + <s:text name="SynthesisId.GRAPH_BOARDING"/> + </h2> - </article> + <s:property value="synthesis.boardingBoatsChart" escapeHtml="false"/> + + <p> + <s:text name="wao.ui.synthesis.boarding.description"/> + </p> + + <p> + <s:text name="wao.ui.synthesis.boarding.mostUsedBoat"> + <s:param value="%{synthesis.maxBoardingValue}"/> + <s:param value="%{synthesis.maxBoardingBoat.name}"/> + <s:param value="%{synthesis.maxBoardingBoat.registrationCode}"/> + </s:text> + </p> + + <p> + <s:text name="wao.ui.synthesis.boarding.boardingCount"> + <s:param value="%{synthesis.invalidBoardingsCount}"/> + <s:param value="%{synthesis.boardingsCount}"/> + <%-- + <s:param value="%{synthesis.validBoardingsCount}"/> + --%> + </s:text> + </p> + + </article> + + </s:if> <s:if test="obsMer"> @@ -268,86 +272,90 @@ </s:if> - <article> - <h2> - <s:text name="SynthesisId.IND_CONTACT_STATE"/> - </h2> + <s:if test="obsMer || obsVente"> + + <article> + <h2> + <s:text name="SynthesisId.IND_CONTACT_STATE"/> + </h2> - <table class="table"> - <thead> - <tr> - <th> - <s:text name="wao.ui.entity.Company"/> - </th> - <s:iterator value="synthesis.companySynthesesOrderedByName.iterator.next().contactsStatesStatistics.keySet()" var="contactState"> + <table class="table"> + <thead> + <tr> <th> - <s:text name="%{#contactState.getI18nKey(obsProgram)}"/> + <s:text name="wao.ui.entity.Company"/> </th> - </s:iterator> - <th> - <s:text name="wao.ui.misc.total"/> - </th> - </tr> - </thead> - <tbody> - <s:iterator value="synthesis.companySynthesesOrderedByName"> - <tr> - <td> - <s:property value="companyName"/> - </td> - <s:iterator value="contactsStatesStatistics"> - <td> - <s:property value="value"/> - <s:set name="percentage" value="%{value.doubleValue() / contactsCount * 100}" /> - (<s:property value="#percentage"/> %) - </td> + <s:iterator value="synthesis.companySynthesesOrderedByName.iterator.next().contactsStatesStatistics.keySet()" var="contactState"> + <th> + <s:text name="%{#contactState.getI18nKey(obsProgram)}"/> + </th> </s:iterator> - <td> - <s:property value="contactsCount"/> - </td> + <th> + <s:text name="wao.ui.misc.total"/> + </th> </tr> - </s:iterator> - </tbody> - </table> + </thead> + <tbody> + <s:iterator value="synthesis.companySynthesesOrderedByName"> + <tr> + <td> + <s:property value="companyName"/> + </td> + <s:iterator value="contactsStatesStatistics"> + <td> + <s:property value="value"/> + <s:set name="percentage" value="%{value.doubleValue() / contactsCount * 100}" /> + (<s:property value="#percentage"/> %) + </td> + </s:iterator> + <td> + <s:property value="contactsCount"/> + </td> + </tr> + </s:iterator> + </tbody> + </table> - </article> + </article> - <article> - <h2> - <s:text name="SynthesisId.IND_ALLEGRO_REACTIVITY"/> - </h2> + <article> + <h2> + <s:text name="SynthesisId.IND_ALLEGRO_REACTIVITY"/> + </h2> - <table class="table"> - <thead> - <tr> - <th> - <s:text name="wao.ui.entity.Company"/> - </th> - <th> - <s:text name="wao.ui.synthesis.allegroReactivity.title"/> - </th> - </tr> - </thead> - <tbody> - <s:iterator value="synthesis.companySynthesesOrderedByName"> + <table class="table"> + <thead> <tr> - <td> - <s:property value="companyName"/> - </td> - <td<s:if test="dataInputDateReactivityHigh"> class="lower-than-expected"</s:if>> - <s:property value="dataInputDateReactivity"/> - <s:text name="wao.ui.unit.days"/> - </td> + <th> + <s:text name="wao.ui.entity.Company"/> + </th> + <th> + <s:text name="wao.ui.synthesis.allegroReactivity.title"/> + </th> </tr> - </s:iterator> - </tbody> - </table> + </thead> + <tbody> + <s:iterator value="synthesis.companySynthesesOrderedByName"> + <tr> + <td> + <s:property value="companyName"/> + </td> + <td<s:if test="dataInputDateReactivityHigh"> class="lower-than-expected"</s:if>> + <s:property value="dataInputDateReactivity"/> + <s:text name="wao.ui.unit.days"/> + </td> + </tr> + </s:iterator> + </tbody> + </table> - <p> - <s:text name="wao.ui.synthesis.allegroReactivity.description"/> - </p> + <p> + <s:text name="wao.ui.synthesis.allegroReactivity.description"/> + </p> - </article> + </article> + + </s:if> <s:if test="obsMer"> diff --git a/wao-web/src/main/webapp/WEB-INF/decorators/layout.jsp b/wao-web/src/main/webapp/WEB-INF/decorators/layout.jsp index 3a308f1..812822a 100644 --- a/wao-web/src/main/webapp/WEB-INF/decorators/layout.jsp +++ b/wao-web/src/main/webapp/WEB-INF/decorators/layout.jsp @@ -146,15 +146,13 @@ </s:a> </li> </s:if> - <s:if test=" ! sclerochronology"> - <s:if test="authenticatedWaoUser.authorizedToViewSynthesis"> - <li class="<decorator:getProperty property="page.synthesisMenuItemClass"/>"> - <s:url namespace="/%{obsProgram.name().toLowerCase()}" action="synthesis" id="synthesisUrl" /> - <s:a href="%{synthesisUrl}"> - <i class="fa fa-bar-chart-o"></i> <s:text name="wao.ui.page.Synthesis.title" /> - </s:a> - </li> - </s:if> + <s:if test="authenticatedWaoUser.authorizedToViewSynthesis"> + <li class="<decorator:getProperty property="page.synthesisMenuItemClass"/>"> + <s:url namespace="/%{obsProgram.name().toLowerCase()}" action="synthesis" id="synthesisUrl" /> + <s:a href="%{synthesisUrl}"> + <i class="fa fa-bar-chart-o"></i> <s:text name="wao.ui.page.Synthesis.title" /> + </s:a> + </li> </s:if> </ul> <ul class="nav pull-right"> -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository wao. See http://git.codelutin.com/wao.git commit 38ed0298eb7ca6f2d5c46f0b3e6973fe7172c29a Author: Brendan Le Ny <bleny@codelutin.com> Date: Wed Jan 14 15:51:17 2015 +0100 Nom de variable --- .../src/main/java/fr/ifremer/wao/entity/ContactTopiaDao.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/wao-persistence/src/main/java/fr/ifremer/wao/entity/ContactTopiaDao.java b/wao-persistence/src/main/java/fr/ifremer/wao/entity/ContactTopiaDao.java index a562789..75b6e22 100644 --- a/wao-persistence/src/main/java/fr/ifremer/wao/entity/ContactTopiaDao.java +++ b/wao-persistence/src/main/java/fr/ifremer/wao/entity/ContactTopiaDao.java @@ -214,13 +214,13 @@ public class ContactTopiaDao extends AbstractContactTopiaDao<Contact> { query.addEquals(Contact.PROPERTY_CONTACT_STATE, ContactState.OBSERVATION_DONE); List<Contact> contacts = findAll(query.getHql(), query.getHqlParameters()); - SortedMap<Date, Integer> actualObservationsMyMonths = new TreeMap<>(); + SortedMap<Date, Integer> actualObservationsByMonths = new TreeMap<>(); Range<Date> range = Range.between(periodFromMonth, periodToMonth); for (Contact contact : contacts) { Date contactMonth = DateUtils.truncate(contact.getObservationBeginDate(), Calendar.MONTH); if (range.contains(contactMonth)) { - Integer count = actualObservationsMyMonths.get(contactMonth); + Integer count = actualObservationsByMonths.get(contactMonth); if (count == null) { count = 0; } @@ -231,12 +231,12 @@ public class ContactTopiaDao extends AbstractContactTopiaDao<Contact> { // le réalisé est le nombre d'observation, on compte 1 observation pour 1 navire donc 1 pour chaque contact count += 1; } - actualObservationsMyMonths.put(contactMonth, count); + actualObservationsByMonths.put(contactMonth, count); } } - return actualObservationsMyMonths; + return actualObservationsByMonths; } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository wao. See http://git.codelutin.com/wao.git commit 1342d6fa60c2fcfa621d1d3d4aeb401494b70129 Author: Brendan Le Ny <bleny@codelutin.com> Date: Wed Jan 14 18:08:26 2015 +0100 Passage de la synthèse scléro en trimestres --- .../src/main/java/fr/ifremer/wao/WaoUtils.java | 62 +++++++++++++++++++++- .../fr/ifremer/wao/entity/ContactTopiaDao.java | 18 +++---- .../fr/ifremer/wao/entity/SampleRowTopiaDao.java | 14 +++-- .../wao/services/service/SynthesisService.java | 33 ++++++++---- 4 files changed, 102 insertions(+), 25 deletions(-) diff --git a/wao-persistence/src/main/java/fr/ifremer/wao/WaoUtils.java b/wao-persistence/src/main/java/fr/ifremer/wao/WaoUtils.java index 79211c0..0f6a1ce 100644 --- a/wao-persistence/src/main/java/fr/ifremer/wao/WaoUtils.java +++ b/wao-persistence/src/main/java/fr/ifremer/wao/WaoUtils.java @@ -21,6 +21,7 @@ package fr.ifremer.wao; * #L% */ +import com.google.common.base.Function; import com.google.common.base.Verify; import fr.ifremer.wao.entity.I18nAble; import org.apache.commons.collections4.CollectionUtils; @@ -70,6 +71,10 @@ public class WaoUtils { public static String formatMonth(Locale locale, Date date) { return I18n.l(locale, "wao.month.formatter", date); } + + public static String formatTrimester(Locale locale, Date date) { + return String.format("%s - %s", formatMonth(locale, date), formatMonth(locale, DateUtils.addMonths(date, 2))); + } public static String formatDateMonth(Locale locale, Date date) { return I18n.l(locale, "wao.datemonth.formatter", date); @@ -176,7 +181,7 @@ public class WaoUtils { Map<Date, MutableInt> tempResult = new HashMap<>(); Date aDay = DateUtils.truncate(observationBeginDate, Calendar.DAY_OF_MONTH); do { - Date month = DateUtils.truncate(aDay, Calendar.MONTH); + Date month = truncateToMonth(aDay); MutableInt count = tempResult.get(month); if (count == null) { count = new MutableInt(); @@ -214,4 +219,59 @@ public class WaoUtils { } return sum; } + + public static Date truncateToTrimester(Date date) { + Date month = truncateToMonth(date); + Calendar calendar = Calendar.getInstance(); + calendar.setTime(month); + int m = calendar.get(Calendar.MONTH); + int trimester = m / 3; + m = trimester * 3; + calendar.set(Calendar.MONTH, m); + return calendar.getTime(); + } + + public static Date truncateToMonth(Date date) { + return DateUtils.truncate(date, Calendar.MONTH); + } + + public static Function<Date, Date> truncateToTrimesterFunction() { + return new Function<Date, Date>() { + + @Override + public Date apply(Date date) { + return truncateToTrimester(date); + } + }; + } + + public static Function<Date, Date> truncateToMonthFunction() { + return new Function<Date, Date>() { + + @Override + public Date apply(Date date) { + return truncateToMonth(date); + } + }; + } + + public static Function<Date, String> formatTrimesterFunction(final Locale locale) { + return new Function<Date, String>() { + + @Override + public String apply(Date date) { + return formatTrimester(locale, date); + } + }; + } + + public static Function<Date, String> formatMonthFunction(final Locale locale) { + return new Function<Date, String>() { + + @Override + public String apply(Date date) { + return formatMonth(locale, date); + } + }; + } } diff --git a/wao-persistence/src/main/java/fr/ifremer/wao/entity/ContactTopiaDao.java b/wao-persistence/src/main/java/fr/ifremer/wao/entity/ContactTopiaDao.java index 75b6e22..efc04b7 100644 --- a/wao-persistence/src/main/java/fr/ifremer/wao/entity/ContactTopiaDao.java +++ b/wao-persistence/src/main/java/fr/ifremer/wao/entity/ContactTopiaDao.java @@ -21,6 +21,7 @@ package fr.ifremer.wao.entity; * #L% */ +import com.google.common.base.Function; import com.google.common.base.Supplier; import com.google.common.collect.ImmutableMap; import com.google.common.collect.Multimap; @@ -29,7 +30,6 @@ import com.google.common.collect.Sets; import fr.ifremer.wao.ContactsFilter; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.Range; -import org.apache.commons.lang3.time.DateUtils; import org.apache.commons.lang3.tuple.Pair; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -39,7 +39,6 @@ import org.nuiton.topia.persistence.TopiaQueryBuilderAddCriteriaOrRunQueryStep; import org.nuiton.topia.persistence.TopiaQueryBuilderRunQueryStep; import java.util.Arrays; -import java.util.Calendar; import java.util.Collection; import java.util.Date; import java.util.HashMap; @@ -208,19 +207,19 @@ public class ContactTopiaDao extends AbstractContactTopiaDao<Contact> { return query.findFirstOrNull(); } - public SortedMap<Date, Integer> getActualObservationsByMonths(Date periodFromMonth, Date periodToMonth, ContactsFilter filter) { + public SortedMap<Date, Integer> getActualObservationsByMonths(Date periodFromMonth, Date periodToMonth, ContactsFilter filter, Function<Date, Date> truncateToTimePeriodFunction) { HqlAndParametersBuilder<Contact> query = toContactHqlAndParametersBuilder(filter); query.addEquals(Contact.PROPERTY_CONTACT_STATE, ContactState.OBSERVATION_DONE); List<Contact> contacts = findAll(query.getHql(), query.getHqlParameters()); - SortedMap<Date, Integer> actualObservationsByMonths = new TreeMap<>(); + SortedMap<Date, Integer> actualObservationsByPeriods = new TreeMap<>(); Range<Date> range = Range.between(periodFromMonth, periodToMonth); for (Contact contact : contacts) { - Date contactMonth = DateUtils.truncate(contact.getObservationBeginDate(), Calendar.MONTH); - if (range.contains(contactMonth)) { - Integer count = actualObservationsByMonths.get(contactMonth); + Date period = truncateToTimePeriodFunction.apply(contact.getObservationBeginDate()); + if (range.contains(period)) { + Integer count = actualObservationsByPeriods.get(period); if (count == null) { count = 0; } @@ -231,12 +230,11 @@ public class ContactTopiaDao extends AbstractContactTopiaDao<Contact> { // le réalisé est le nombre d'observation, on compte 1 observation pour 1 navire donc 1 pour chaque contact count += 1; } - actualObservationsByMonths.put(contactMonth, count); - + actualObservationsByPeriods.put(period, count); } } - return actualObservationsByMonths; + return actualObservationsByPeriods; } diff --git a/wao-persistence/src/main/java/fr/ifremer/wao/entity/SampleRowTopiaDao.java b/wao-persistence/src/main/java/fr/ifremer/wao/entity/SampleRowTopiaDao.java index 948d2b2..94889f8 100644 --- a/wao-persistence/src/main/java/fr/ifremer/wao/entity/SampleRowTopiaDao.java +++ b/wao-persistence/src/main/java/fr/ifremer/wao/entity/SampleRowTopiaDao.java @@ -21,6 +21,7 @@ package fr.ifremer.wao.entity; * #L% */ +import com.google.common.base.Function; import com.google.common.base.Optional; import com.google.common.collect.ImmutableMap; import fr.ifremer.wao.SampleRowsFilter; @@ -166,7 +167,7 @@ public class SampleRowTopiaDao extends AbstractSampleRowTopiaDao<SampleRow> { topiaHibernateSupport.getHibernateSession().evict(sampleRow); } - public SortedMap<Date, Integer> getExpectedObservationsByMonths(Date periodFromMonth, Date periodToMonth, SampleRowsFilter sampleRowFilter) { + public SortedMap<Date, Integer> getExpectedObservationsByMonths(Date periodFromMonth, Date periodToMonth, SampleRowsFilter sampleRowFilter, Function<Date, Date> truncateToTimePeriodFunction) { HqlAndParametersBuilder<SampleRow> sampleRowsQuery = toSampleRowHqlAndParametersBuilder(sampleRowFilter); @@ -200,9 +201,14 @@ public class SampleRowTopiaDao extends AbstractSampleRowTopiaDao<SampleRow> { SortedMap<Date, Integer> expectedObservationsByMonths = new TreeMap<>(); for (Object[] line : result) { - Date month = (Date)line[0]; - int expectedValue = ((Long) line[1]).intValue(); - expectedObservationsByMonths.put(month, expectedValue); + Date month = (Date) line[0]; + Date period = truncateToTimePeriodFunction.apply(month); + Integer expectedValue = expectedObservationsByMonths.get(period); + if (expectedValue == null) { + expectedValue = 0; + } + expectedValue += ((Long) line[1]).intValue(); + expectedObservationsByMonths.put(period, expectedValue); } return expectedObservationsByMonths; diff --git a/wao-services/src/main/java/fr/ifremer/wao/services/service/SynthesisService.java b/wao-services/src/main/java/fr/ifremer/wao/services/service/SynthesisService.java index 3256c1a..e22b9f5 100644 --- a/wao-services/src/main/java/fr/ifremer/wao/services/service/SynthesisService.java +++ b/wao-services/src/main/java/fr/ifremer/wao/services/service/SynthesisService.java @@ -21,6 +21,7 @@ package fr.ifremer.wao.services.service; * #L% */ +import com.google.common.base.Function; import com.google.common.base.Preconditions; import com.google.common.cache.Cache; import com.google.common.collect.Multimap; @@ -34,7 +35,6 @@ import fr.ifremer.wao.entity.ObsProgram; import fr.ifremer.wao.entity.SampleRowTopiaDao; import fr.ifremer.wao.entity.SynthesisId; import fr.ifremer.wao.services.AuthenticatedWaoUser; -import org.apache.commons.lang3.time.DateUtils; import org.apache.commons.lang3.tuple.Pair; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -52,7 +52,6 @@ import org.jfree.ui.RectangleInsets; import org.nuiton.i18n.I18n; import org.nuiton.util.DateUtil; -import java.util.Calendar; import java.util.Collection; import java.util.Date; import java.util.LinkedHashMap; @@ -216,26 +215,40 @@ public class SynthesisService extends WaoServiceSupport { Locale locale = serviceContext.getLocale(); + ObsProgram obsProgram = filter.getSampleRowFilter().getObsProgram(); + + Function<Date, Date> truncateToTimePeriodFunction; + Function<Date, String> formatPeriodFunction; + if (obsProgram.isObsMer() || obsProgram.isObsVente()) { + truncateToTimePeriodFunction = WaoUtils.truncateToMonthFunction(); + formatPeriodFunction = WaoUtils.formatMonthFunction(locale); + } else if (obsProgram.isSclerochronology()) { + truncateToTimePeriodFunction = WaoUtils.truncateToTrimesterFunction(); + formatPeriodFunction = WaoUtils.formatTrimesterFunction(locale); + } else { + throw new UnsupportedOperationException("unsupported " + obsProgram); + } + // définition de la fenêtre - Date periodFromMonth = DateUtils.truncate(filter.getPeriodFrom(), Calendar.MONTH); - Date periodToMonth = DateUtils.truncate(filter.getPeriodTo(), Calendar.MONTH); + Date periodFromMonth = truncateToTimePeriodFunction.apply(filter.getPeriodFrom()); + Date periodToMonth = truncateToTimePeriodFunction.apply(filter.getPeriodTo()); // Calcul du programmé SampleRowTopiaDao dao = getSampleRowDao(); SortedMap<Date, Integer> expectedObservationsByMonths = - dao.getExpectedObservationsByMonths(periodFromMonth, periodToMonth, filter.getSampleRowFilter()); + dao.getExpectedObservationsByMonths(periodFromMonth, periodToMonth, filter.getSampleRowFilter(), truncateToTimePeriodFunction); // Calcul du réalisé ContactTopiaDao contactDao = getContactDao(); SortedMap<Date, Integer> actualObservationsMyMonths = - contactDao.getActualObservationsByMonths(periodFromMonth, periodToMonth, filter); + contactDao.getActualObservationsByMonths(periodFromMonth, periodToMonth, filter, truncateToTimePeriodFunction); DefaultCategoryDataset dataset = new DefaultCategoryDataset(); for (Map.Entry<Date, Integer> entry : expectedObservationsByMonths.entrySet()) { - Date month = entry.getKey(); + Date period = entry.getKey(); Integer expected = entry.getValue(); - dataset.setValue(expected, I18n.l(locale, "wao.synthesis.planned"), WaoUtils.formatMonth(locale, month)); + dataset.setValue(expected, I18n.l(locale, "wao.synthesis.planned"), formatPeriodFunction.apply(period)); } String rowKey; if (filter.getRealVsEstimated()) { @@ -244,9 +257,9 @@ public class SynthesisService extends WaoServiceSupport { rowKey = I18n.l(locale, "wao.synthesis.estimated"); } for (Map.Entry<Date, Integer> entry : actualObservationsMyMonths.entrySet()) { - Date month = entry.getKey(); + Date period = entry.getKey(); Integer actual = entry.getValue(); - dataset.setValue(actual, rowKey, WaoUtils.formatMonth(locale, month)); + dataset.setValue(actual, rowKey, formatPeriodFunction.apply(period)); } // Axises -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository wao. See http://git.codelutin.com/wao.git commit 16a9054c7c8c8a5cfa76c7c13fa9fe8494e4e8a3 Author: Brendan Le Ny <bleny@codelutin.com> Date: Wed Jan 14 18:12:33 2015 +0100 Filtres pour la synthèse scléro --- .../src/main/webapp/WEB-INF/content/synthesis.jsp | 96 ++++++++++++++-------- 1 file changed, 60 insertions(+), 36 deletions(-) diff --git a/wao-web/src/main/webapp/WEB-INF/content/synthesis.jsp b/wao-web/src/main/webapp/WEB-INF/content/synthesis.jsp index c2d98d0..c950ddc 100644 --- a/wao-web/src/main/webapp/WEB-INF/content/synthesis.jsp +++ b/wao-web/src/main/webapp/WEB-INF/content/synthesis.jsp @@ -38,7 +38,12 @@ <s:if test="authenticatedWaoUser.authorizedToViewOtherCompanies"> { filterName: 'sampleRowFilter.organisationIds', - filterLabel: "<s:text name="wao.ui.entity.Company"/>", + <s:if test="obsMer || obsVente"> + filterLabel: "<s:text name="wao.ui.entity.Company"/>", + </s:if> + <s:else> + filterLabel: "<s:text name="wao.ui.entity.Organisation"/>", + </s:else> filterValuesField: 'sampleRowsFilterValues.organisations', }, </s:if> @@ -62,51 +67,70 @@ filterLabel: "<s:text name="wao.ui.field.FishingZone.sectorName"/>", filterValuesField: 'sampleRowsFilterValues.fishingZoneSectorNames', }, - { - filterName: 'sampleRowFilter.fishingGearDcfIds', - filterLabel: "<s:text name="wao.ui.entity.fishingGearDcf"/>", - filterValuesField: 'sampleRowsFilterValues.fishingGearDcfs', - }, - { - filterName: 'sampleRowFilter.targetSpeciesDcfIds', - filterLabel: "<s:text name="wao.ui.entity.targetSpeciesDcf"/>", - filterValuesField: 'sampleRowsFilterValues.targetSpeciesDcfs', - }, - <s:if test="obsVente"> + <s:if test="obsMer || obsVente"> { - filterName: 'sampleRowFilter.terrestrialDistrictIds', - filterLabel: "<s:text name="wao.ui.field.SampleRow.terrestrialLocation"/>", - filterValuesField: 'sampleRowsFilterValues.terrestrialDistricts' + filterName: 'sampleRowFilter.fishingGearDcfIds', + filterLabel: "<s:text name="wao.ui.entity.fishingGearDcf"/>", + filterValuesField: 'sampleRowsFilterValues.fishingGearDcfs', }, - </s:if> - <s:if test="authenticatedWaoUser.authorizedToFilterOnBoats"> { - filterName: 'boatFilter.boatIds', - filterLabel: "<s:text name="wao.ui.entity.Boat"/>", - filterValuesField: 'boatsFilterValues.boats', - minimumInputLength: 3 + filterName: 'sampleRowFilter.targetSpeciesDcfIds', + filterLabel: "<s:text name="wao.ui.entity.targetSpeciesDcf"/>", + filterValuesField: 'sampleRowsFilterValues.targetSpeciesDcfs', }, + <s:if test="obsVente"> + { + filterName: 'sampleRowFilter.terrestrialDistrictIds', + filterLabel: "<s:text name="wao.ui.field.SampleRow.terrestrialLocation"/>", + filterValuesField: 'sampleRowsFilterValues.terrestrialDistricts' + }, + </s:if> + <s:if test="authenticatedWaoUser.authorizedToFilterOnBoats"> + { + filterName: 'boatFilter.boatIds', + filterLabel: "<s:text name="wao.ui.entity.Boat"/>", + filterValuesField: 'boatsFilterValues.boats', + minimumInputLength: 3 + }, + </s:if> + { + filterName: 'boatFilter.districtIds', + filterLabel: "<s:text name="wao.ui.field.Boat.district.long"/>", + filterValuesField: 'boatsFilterValues.districts' + }, + <s:if test="obsVente"> + { + filterName: 'sampleRowFilter.samplingStrategies', + filterLabel: "<s:text name="wao.ui.field.SampleRow.samplingStrategy"/>", + filterValuesField: 'sampleRowsFilterValues.samplingStrategies' + }, + { + filterName: 'actualSamplingStrategies', + filterLabel: "<s:text name="wao.ui.field.Contact.samplingStrategy"/>", + filterValuesField: 'actualSamplingStrategies' + }, + { + filterName: 'completeSamplings', + filterLabel: "<s:text name="wao.ui.field.Contact.completeSampling"/>", + filterValuesField: 'completeSamplings' + }, + </s:if> </s:if> - { - filterName: 'boatFilter.districtIds', - filterLabel: "<s:text name="wao.ui.field.Boat.district.long"/>", - filterValuesField: 'boatsFilterValues.districts' - }, - <s:if test="obsVente"> + <s:if test="sclerochronology"> { - filterName: 'sampleRowFilter.samplingStrategies', - filterLabel: "<s:text name="wao.ui.field.SampleRow.samplingStrategy"/>", - filterValuesField: 'sampleRowsFilterValues.samplingStrategies' + filterName: 'sampleRowFilter.sclerochronologySamplingContexts', + filterLabel: "<s:text name="wao.ui.field.SampleRow.sclerochronologySamplingContext"/>", + filterValuesField: 'sampleRowsFilterValues.sclerochronologySamplingContexts' }, { - filterName: 'actualSamplingStrategies', - filterLabel: "<s:text name="wao.ui.field.Contact.samplingStrategy"/>", - filterValuesField: 'actualSamplingStrategies' + filterName: 'sampleRowFilter.individualMeasurementStrategies', + filterLabel: "<s:text name="wao.ui.field.SampleRow.individualMeasurementStrategy"/>", + filterValuesField: 'sampleRowsFilterValues.individualMeasurementStrategies' }, { - filterName: 'completeSamplings', - filterLabel: "<s:text name="wao.ui.field.Contact.completeSampling"/>", - filterValuesField: 'completeSamplings' + filterName: 'sampleRowFilter.species', + filterLabel: "<s:text name="wao.ui.field.SampleRow.species"/>", + filterValuesField: 'sampleRowsFilterValues.species' }, </s:if> { -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository wao. See http://git.codelutin.com/wao.git commit 9480d830a28b872a361fed3d118e4e7a15405232 Merge: dfaa79d 16a9054 Author: Brendan Le Ny <bleny@codelutin.com> Date: Wed Jan 14 18:13:06 2015 +0100 Synthèses pour la sclérochronologie (fixes #2265) .../src/main/java/fr/ifremer/wao/WaoUtils.java | 62 ++++- .../fr/ifremer/wao/entity/ContactTopiaDao.java | 26 +- .../fr/ifremer/wao/entity/SampleRowTopiaDao.java | 19 +- .../wao/services/service/ContactsService.java | 3 +- .../fr/ifremer/wao/services/service/Synthesis.java | 5 +- .../wao/services/service/SynthesisService.java | 66 +++-- .../resources/i18n/wao-services_en_GB.properties | 2 +- .../main/resources/i18n/wao-web_fr_FR.properties | 4 +- .../src/main/webapp/WEB-INF/content/synthesis.jsp | 296 ++++++++++++--------- .../src/main/webapp/WEB-INF/decorators/layout.jsp | 16 +- 10 files changed, 307 insertions(+), 192 deletions(-) -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm