Author: bleny Date: 2010-11-30 11:11:13 +0000 (Tue, 30 Nov 2010) New Revision: 817 Log: add DCF5 code filtering in synthesis Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/WaoQueryBuilder.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-ui/src/main/webapp/Synthesis.tml Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/WaoQueryBuilder.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/WaoQueryBuilder.java 2010-11-29 17:53:00 UTC (rev 816) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/WaoQueryBuilder.java 2010-11-30 11:11:13 UTC (rev 817) @@ -204,14 +204,21 @@ return query; } + public TopiaQuery applySamplingFilter(SamplingFilter filter) { + return applySamplingFilter(filter, true); + } + /** * Prepare the {@code query} with sampleRow filters. Need the {@code main} * alias to set SampleRow properties. The zoneAlias can also be used if * the query already have the fishingZone. * + * @param joinDCF5ifneeded set it to false if your request already join + * sample-rows to DCF5code. Otherwise, your request full to the join + * two times and will lead to a bad HQL * @return the query with filtered elements added */ - public TopiaQuery applySamplingFilter(SamplingFilter filter) { + public TopiaQuery applySamplingFilter(SamplingFilter filter, boolean joinDCF5ifneeded) { // need sampleRowProperty, may have fishingZoneProperty @@ -331,13 +338,28 @@ query.addWhere(sampleRowProperty.periodEnd(), TopiaQuery.Op.GE, calendar.getTime()); } + WaoQueryHelper.DCF5CodeProperty dcf5CodeProperty = + WaoQueryHelper.newDCF5CodeProperty(); + + if (joinDCF5ifneeded) { + // needed is true if we need to make the join, we need to if any + // of DCF is used in filter + boolean needed = filter.getFishingGearDCF() != null + || filter.getTargetSpeciesDCF() != null; + + if (needed) { + query.addLeftJoin(sampleRowProperty.dCF5Code(), + dcf5CodeProperty.$alias(), false); + } + } + if (filter.getFishingGearDCF() != null) { - query.addEquals(WaoQueryHelper.newDCF5CodeProperty().fishingGearDCF(), + query.addEquals(dcf5CodeProperty.fishingGearDCF(), filter.getFishingGearDCF()); } if (filter.getTargetSpeciesDCF() != null) { - query.addEquals(WaoQueryHelper.newDCF5CodeProperty().targetSpeciesDCF(), + query.addEquals(dcf5CodeProperty.targetSpeciesDCF(), filter.getTargetSpeciesDCF()); } 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 2010-11-29 17:53:00 UTC (rev 816) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSamplingImpl.java 2010-11-30 11:11:13 UTC (rev 817) @@ -531,7 +531,7 @@ WaoQueryHelper.DCF5CodeProperty dcf5CodeProperty = WaoQueryHelper.newDCF5CodeProperty(); - TopiaQuery query = builder.applySamplingFilter(filter). + TopiaQuery query = builder.applySamplingFilter(filter, false). addDistinct(). setSelect(sampleRowProperty.$alias()). addLeftJoin(sampleRowProperty.dCF5Code(), 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 2010-11-29 17:53:00 UTC (rev 816) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSynthesisImpl.java 2010-11-30 11:11:13 UTC (rev 817) @@ -273,7 +273,7 @@ } } - // results like + // results like (first column is a boat entity) // [AN TUAZ COZ, 2010_0043, 2009-11-19 00:00:00.0] // [AN TUAZ COZ, 2010_0043, 2009-11-20 00:00:00.0] // [APHRODITE, 2009_0185, 2009-09-24 00:00:00.0] Modified: trunk/wao-ui/src/main/webapp/Synthesis.tml =================================================================== --- trunk/wao-ui/src/main/webapp/Synthesis.tml 2010-11-29 17:53:00 UTC (rev 816) +++ trunk/wao-ui/src/main/webapp/Synthesis.tml 2010-11-30 11:11:13 UTC (rev 817) @@ -79,6 +79,12 @@ <!--<t:label t:for="program" />: <input t:type="select" t:id="program" t:model="programSelectModel" value="programId" />--> </div> + <div> + <t:label t:for="fishingGearDCF" /> : + <input t:type="select" t:id="fishingGearDCF" t:model="dcfGearSelectModel" value="fishingGearDCFId"/> + <t:label t:for="targetSpeciesDCF" /> : + <input t:type="select" t:id="targetSpeciesDCF" t:model="dcfSpeciesSelectModel" value="targetSpeciesDCFId"/> + </div> <div class="filterRow"> <input t:type="checkbox" t:id="estimatedTides" value="filter.estimatedTides" /> <t:label t:for="estimatedTides" title="L'effort d'observations estimé équivaut au nombre de contacts validés ou non par la société. Les contacts refusés par le programme ne sont pas pris en compte" />