Author: bleny Date: 2011-05-23 09:44:39 +0000 (Mon, 23 May 2011) New Revision: 1289 Log: add ContactStatesStatistics synthesis for ObsDeb Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/bean/SamplingFilterValuesImpl.java trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSamplingImpl.java trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSynthesisImpl.java trunk/wao-business/src/test/java/fr/ifremer/wao/service/ObsDebTest.java trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/SamplingFilterComponent.java trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/components/SamplingFilterComponent.tml trunk/wao-ui/src/main/resources/i18n/wao-ui_en_GB.properties trunk/wao-ui/src/main/resources/i18n/wao-ui_fr_FR.properties trunk/wao-ui/src/main/webapp/ObsDebSamplingPlan.tml trunk/wao-ui/src/main/webapp/Synthesis.tml Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/bean/SamplingFilterValuesImpl.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/bean/SamplingFilterValuesImpl.java 2011-05-20 09:13:43 UTC (rev 1288) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/bean/SamplingFilterValuesImpl.java 2011-05-23 09:44:39 UTC (rev 1289) @@ -31,7 +31,6 @@ import fr.ifremer.wao.entity.TerrestrialDivision; import fr.ifremer.wao.entity.TerrestrialLocation; import fr.ifremer.wao.entity.WaoUser; -import org.apache.commons.collections.OrderedMap; import java.util.ArrayList; import java.util.Collection; Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSamplingImpl.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSamplingImpl.java 2011-05-20 09:13:43 UTC (rev 1288) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSamplingImpl.java 2011-05-23 09:44:39 UTC (rev 1289) @@ -581,6 +581,11 @@ TopiaContext transaction, SamplingFilter filter) throws TopiaException { + if (filter.getObsProgram() == ObsProgram.OBSDEB) { + // in ObsDeb, ordering is done by date of action + filter.setOrderBy(SampleRow.PROPERTY_EXPECTED_DATE); + } + SampleRowDAO dao = WaoDAOHelper.getSampleRowDAO(transaction); // TopiaQuery query = dao.createQuery("S"). @@ -1517,11 +1522,6 @@ samplingFilter.setSampleRowObserver(connectedUser.getUser()); } - if (connectedUser.isObsDeb()) { - // in ObsDeb, ordering is done by date of action - samplingFilter.setOrderBy(SampleRow.PROPERTY_EXPECTED_DATE); - } - return samplingFilter; } Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSynthesisImpl.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSynthesisImpl.java 2011-05-20 09:13:43 UTC (rev 1288) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSynthesisImpl.java 2011-05-23 09:44:39 UTC (rev 1289) @@ -530,6 +530,8 @@ (TopiaContext transaction, SamplingFilter filter) throws TopiaException { + filter.setOrderBy(null); + WaoQueryBuilder builder = context.newQueryBuilder(); ContactProperty contactProperty = builder.initializeForContact(); TopiaQuery query = builder.applySamplingFilter(filter). Modified: trunk/wao-business/src/test/java/fr/ifremer/wao/service/ObsDebTest.java =================================================================== --- trunk/wao-business/src/test/java/fr/ifremer/wao/service/ObsDebTest.java 2011-05-20 09:13:43 UTC (rev 1288) +++ trunk/wao-business/src/test/java/fr/ifremer/wao/service/ObsDebTest.java 2011-05-23 09:44:39 UTC (rev 1289) @@ -30,6 +30,7 @@ import fr.ifremer.wao.bean.ConnectedUser; import fr.ifremer.wao.bean.ContactFilter; import fr.ifremer.wao.bean.ContactState; +import fr.ifremer.wao.bean.ContactStateStatistics; import fr.ifremer.wao.bean.ObservationType; import fr.ifremer.wao.bean.SamplingFilter; import fr.ifremer.wao.bean.SamplingFilterValues; @@ -55,6 +56,7 @@ import java.io.IOException; import java.io.InputStream; +import java.util.Collection; import java.util.Date; import java.util.List; import java.util.Map; @@ -283,6 +285,7 @@ // as a coordinator, i can export the sampling plan SamplingFilter samplingFilter = serviceSampling.newSamplingFilter(fixtures.joshAsCoordinator()); + samplingFilter.setExpectedObservationType(ObservationType.FIELD_WORK_OBSERVATION); InputStream input = serviceSampling.exportSamplingPlanCsv(fixtures.joshAsCoordinator(), samplingFilter); String csv = IOUtils.toString(input); @@ -529,14 +532,28 @@ // TODO 20110426 bleny consider validation company and validation program when counting SamplingFilter samplingFilter = serviceSampling.newSamplingFilter(fixtures.joshAsCoordinator()); - Map<String, Map<String, Integer>> observationHours = serviceSynthesis.getObservationHours(samplingFilter); + Map<String, Map<String, Integer>> observationHours = + serviceSynthesis.getObservationHours(samplingFilter); Assert.assertEquals(2, observationHours.get("2010").get("09").intValue()); - Assert.assertEquals("24 values associated with '2010', one for each hour of the day", 24, observationHours.get("2010").size()); + Assert.assertEquals("24 values associated with '2010', one for each hour of the day", + 24, observationHours.get("2010").size()); samplingFilter = serviceSampling.newSamplingFilter(fixtures.joshAsCoordinator()); - Map<String, Map<String, Integer>> boatsCounts = serviceSynthesis.getDistinctBoatsCounts(samplingFilter); - Assert.assertEquals("Two distinct boats observed on February 2010", 2, boatsCounts.get("2010").get("02").intValue()); - Assert.assertEquals("12 values for must be associated to '2010', one for each month", 12, boatsCounts.get("2010").size()); + Map<String, Map<String, Integer>> boatsCounts = + serviceSynthesis.getDistinctBoatsCounts(samplingFilter); + Assert.assertEquals("Two distinct boats observed on February 2010", + 2, boatsCounts.get("2010").get("02").intValue()); + Assert.assertEquals("12 values for must be associated to '2010', one for each month", + 12, boatsCounts.get("2010").size()); + + samplingFilter = serviceSampling. + newSamplingFilter(fixtures.joshAsCoordinator()); + Collection<ContactStateStatistics> contactStateStatistics = + serviceSynthesis.getContactStateStatistics(samplingFilter); + for (ContactStateStatistics contactStateStatistic : contactStateStatistics) { + log.debug(contactStateStatistic.getCompanyName() + " -> " + + contactStateStatistic.getData()); + } } } Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/SamplingFilterComponent.java =================================================================== --- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/SamplingFilterComponent.java 2011-05-20 09:13:43 UTC (rev 1288) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/SamplingFilterComponent.java 2011-05-23 09:44:39 UTC (rev 1289) @@ -23,6 +23,7 @@ */ package fr.ifremer.wao.ui.components; +import fr.ifremer.wao.bean.ObservationType; import fr.ifremer.wao.bean.SamplingFilter; import fr.ifremer.wao.bean.SamplingFilterValues; import fr.ifremer.wao.service.ServiceSampling; @@ -32,6 +33,9 @@ import org.apache.tapestry5.annotations.Persist; import org.apache.tapestry5.internal.OptionModelImpl; import org.apache.tapestry5.internal.SelectModelImpl; +import org.apache.tapestry5.ioc.Messages; +import org.apache.tapestry5.ioc.annotations.Inject; +import org.apache.tapestry5.util.EnumSelectModel; import org.nuiton.util.PeriodDates; import java.util.ArrayList; @@ -44,6 +48,9 @@ public class SamplingFilterComponent extends FilterComponent<SamplingFilter> { @Parameter(required = false) + private Boolean showObservationTypes; + + @Parameter(required = false) private Boolean showEstimatedTides; @Parameter(required = true) @@ -55,6 +62,9 @@ @Parameter(required = true) private ServiceSampling serviceSampling; + @Inject + private Messages messages; + /* * Datas */ @@ -131,6 +141,13 @@ return showEstimatedTides; } + public Boolean getShowObservationTypes() { + if (showObservationTypes == null) { + showObservationTypes = true; + } + return showObservationTypes; + } + public String getLegendMsg() { return legendMsg; } @@ -192,4 +209,13 @@ } return regionIfremerSelectModel; } + + public SelectModel getObservationTypeSelectModel() { + ObservationType[] allowedObservationTypes = { + ObservationType.FIELD_WORK_OBSERVATION, + ObservationType.PHONE_CALL }; + EnumSelectModel selectModel = new EnumSelectModel(ObservationType.class, + messages, allowedObservationTypes); + return selectModel; + } } Modified: trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/components/SamplingFilterComponent.tml =================================================================== --- trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/components/SamplingFilterComponent.tml 2011-05-20 09:13:43 UTC (rev 1288) +++ trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/components/SamplingFilterComponent.tml 2011-05-23 09:44:39 UTC (rev 1289) @@ -73,6 +73,13 @@ </div> <t:if test="user.obsDeb"> <!-- filter fields only for obsdeb--> + <t:if t:test="showObservationTypes"> + <label for="observationType">${message:wao.ui.field.SampleRow.observationType}</label> + <input t:type="select" + t:id="observationType" + t:value="filter.expectedObservationType" + t:model="observationTypeSelectModel" /> + </t:if> <label for="regionIfremer">${message:wao.ui.field.TerrestrialDivision.regionIfremer}</label> <t:select t:id="regionIfremer" t:model="regionIfremerSelectModel" Modified: trunk/wao-ui/src/main/resources/i18n/wao-ui_en_GB.properties =================================================================== --- trunk/wao-ui/src/main/resources/i18n/wao-ui_en_GB.properties 2011-05-20 09:13:43 UTC (rev 1288) +++ trunk/wao-ui/src/main/resources/i18n/wao-ui_en_GB.properties 2011-05-23 09:44:39 UTC (rev 1289) @@ -127,6 +127,7 @@ wao.ui.field.SampleRow.fishingZones=Fishing zone(s) wao.ui.field.SampleRow.libelle=Labels wao.ui.field.SampleRow.meshSize=Mesh size +wao.ui.field.SampleRow.observationType=Observation type wao.ui.field.SampleRow.observationUnit=Observation unit wao.ui.field.SampleRow.observers=Observers wao.ui.field.SampleRow.other=Other Modified: trunk/wao-ui/src/main/resources/i18n/wao-ui_fr_FR.properties =================================================================== --- trunk/wao-ui/src/main/resources/i18n/wao-ui_fr_FR.properties 2011-05-20 09:13:43 UTC (rev 1288) +++ trunk/wao-ui/src/main/resources/i18n/wao-ui_fr_FR.properties 2011-05-23 09:44:39 UTC (rev 1289) @@ -126,6 +126,7 @@ wao.ui.field.SampleRow.fishingZones=Zone(s) de pêche wao.ui.field.SampleRow.libelle=Libellé wao.ui.field.SampleRow.meshSize=Maillage +wao.ui.field.SampleRow.observationType=Type d'observation wao.ui.field.SampleRow.observationUnit=Unité d'observation wao.ui.field.SampleRow.observers=Observateurs wao.ui.field.SampleRow.other=Autre Modified: trunk/wao-ui/src/main/webapp/ObsDebSamplingPlan.tml =================================================================== --- trunk/wao-ui/src/main/webapp/ObsDebSamplingPlan.tml 2011-05-20 09:13:43 UTC (rev 1288) +++ trunk/wao-ui/src/main/webapp/ObsDebSamplingPlan.tml 2011-05-23 09:44:39 UTC (rev 1289) @@ -79,7 +79,8 @@ t:user="connectedUser" t:serviceSampling="serviceSampling" t:visibleOnStartup="false" - t:legendMsg="${message:wao.ui.misc.advancedSearch}" /> + t:legendMsg="${message:wao.ui.misc.advancedSearch}" + t:showObservationTypes="false" /> <div t:type="grid" Modified: trunk/wao-ui/src/main/webapp/Synthesis.tml =================================================================== --- trunk/wao-ui/src/main/webapp/Synthesis.tml 2011-05-20 09:13:43 UTC (rev 1288) +++ trunk/wao-ui/src/main/webapp/Synthesis.tml 2011-05-23 09:44:39 UTC (rev 1289) @@ -92,14 +92,14 @@ </a> </li> </t:if> - <li> - <a t:type="actionlink" t:context="[actionSynthesisId,'IND_CONTACT_STATE']" t:zone="so-synthesis-main" title="${message:SynthesisId.IND_CONTACT_STATE}"> - <img src="${asset:context:}/img/synthesis-ind-contact-states.png" alt="${message:SynthesisId.IND_CONTACT_STATE}" /> - </a> - </li> </t:unless> </p:else> </t:if> + <li> + <a t:type="actionlink" t:context="[actionSynthesisId,'IND_CONTACT_STATE']" t:zone="so-synthesis-main" title="${message:SynthesisId.IND_CONTACT_STATE}"> + <img src="${asset:context:}/img/synthesis-ind-contact-states.png" alt="${message:SynthesisId.IND_CONTACT_STATE}" /> + </a> + </li> </ul> </div> <div t:type="zone" t:id="delegator" class="fleft" t:update="show" id="so-synthesis-main">