r2124 - in trunk: wao-persistence/src/main/java/fr/ifremer/wao/entity wao-services/src/main/java/fr/ifremer/wao/services/service
Author: bleny Date: 2014-07-07 12:52:51 +0200 (Mon, 07 Jul 2014) New Revision: 2124 Url: http://forge.codelutin.com/projects/wao/repository/revisions/2124 Log: refs #5288 improve boat filter values search Modified: trunk/wao-persistence/src/main/java/fr/ifremer/wao/entity/BoatTopiaDao.java trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/BoatsFilterValues.java trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/SampleRowsFilterValues.java Modified: trunk/wao-persistence/src/main/java/fr/ifremer/wao/entity/BoatTopiaDao.java =================================================================== --- trunk/wao-persistence/src/main/java/fr/ifremer/wao/entity/BoatTopiaDao.java 2014-07-04 14:49:50 UTC (rev 2123) +++ trunk/wao-persistence/src/main/java/fr/ifremer/wao/entity/BoatTopiaDao.java 2014-07-07 10:52:51 UTC (rev 2124) @@ -44,8 +44,15 @@ HqlAndParametersBuilder<Boat> query = toBoatHqlAndParametersBuilder(filter); - List<Boat> boats = findAll(query.getHql(), query.getHqlParameters()); + String hql = query.getHql(); + hql = StringUtils.replace( + hql, + "from fr.ifremer.wao.entity.Boat b", + "from fr.ifremer.wao.entity.BoatImpl b left outer join fetch b." + Boat.PROPERTY_DISTRICT + " left outer join fetch b." + Boat.PROPERTY_PORT_OF_REGISTRY + " left outer join fetch b." + Boat.PROPERTY_SHIP_OWNER + " so left outer join fetch b." + Boat.PROPERTY_ELLIGIBLE_BOAT + " eb left join fetch eb." + ElligibleBoat.PROPERTY_SAMPLE_ROW + " sr left join fetch sr." + SampleRow.PROPERTY_FISHING_ZONE); + + List<Boat> boats = findAll(hql, query.getHqlParameters()); + return boats; } Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/BoatsFilterValues.java =================================================================== --- trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/BoatsFilterValues.java 2014-07-04 14:49:50 UTC (rev 2123) +++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/BoatsFilterValues.java 2014-07-07 10:52:51 UTC (rev 2124) @@ -101,7 +101,7 @@ for (ElligibleBoat elligibleBoat : boat.getElligibleBoat()) { SampleRow sampleRow = elligibleBoat.getSampleRow(); if (elligibleBoat.isBoatElligible()) { - elligibleForSampleRowsFilterValues.addSampleRow(sampleRow); + elligibleForSampleRowsFilterValues.addSampleRowForBoatFilter(sampleRow); } } Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/SampleRowsFilterValues.java =================================================================== --- trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/SampleRowsFilterValues.java 2014-07-04 14:49:50 UTC (rev 2123) +++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/SampleRowsFilterValues.java 2014-07-07 10:52:51 UTC (rev 2124) @@ -83,6 +83,14 @@ } public void addSampleRow(SampleRow sampleRow) { + addSampleRow(sampleRow, false); + } + + public void addSampleRowForBoatFilter(SampleRow sampleRow) { + addSampleRow(sampleRow, true); + } + + protected void addSampleRow(SampleRow sampleRow, boolean fromBoatFilter) { boolean sampleRowMatchesObsProgram = obsProgram.equals(sampleRow.getObsProgram()); boolean sampleRowMatchesCompany = true; if (optionalCompanyId.isPresent()) { @@ -94,43 +102,48 @@ } if (sampleRowMatchesObsProgram && sampleRowMatchesCompany) { + for (FishingZone fishingZone : sampleRow.getFishingZone()) { fishingZoneFacadeNames.add(FilterOption.forString(fishingZone.getFacadeName())); fishingZoneSectorNames.add(FilterOption.forString(fishingZone.getSectorName())); } sampleRowCodes.add(FilterOption.forString(sampleRow.getCode())); - programNames.add(FilterOption.forString(sampleRow.getProgramName())); - Company company = sampleRow.getCompany(); - if (company != null) { - companies.add(FilterOption.forValueAndLabel(company.getTopiaId(), company.getName())); - } - samplingStrategies.add(FilterOption.forEnum(locale, sampleRow.getSamplingStrategy())); - if (sampleRow.getObsProgram().isObsVente()) { - TerrestrialLocation terrestrialDistrict = sampleRow.getTerrestrialLocation(); - terrestrialDistricts.add( - FilterOption.forValueAndLabel( - terrestrialDistrict.getTopiaId(), - terrestrialDistrict.getDescription()) - ); - } - for (DCF5Code dcf5Code : sampleRow.getdCF5Code()) { - FishingGearDCF fishingGearDCF = dcf5Code.getFishingGearDCF(); - String fishingGearLabel = fishingGearDCF.getCode() + " - " + l(locale, fishingGearDCF.getI18nKey()); - fishingGearDcfs.add( - FilterOption.forValueAndLabel( - fishingGearDCF.getTopiaId(), - fishingGearLabel) - ); - TargetSpeciesDCF targetSpeciesDCF = dcf5Code.getTargetSpeciesDCF(); - if (targetSpeciesDCF != null) { - String targetspeciesLabel = targetSpeciesDCF.getCode() + " - " + l(locale, targetSpeciesDCF.getI18nKey()); - targetSpeciesDcfs.add( + if ( ! fromBoatFilter) { + // XXX brendan 07/07/14 dans le calcul des filter values, on évite tout ça pour les perfs + programNames.add(FilterOption.forString(sampleRow.getProgramName())); + + Company company = sampleRow.getCompany(); + if (company != null) { + companies.add(FilterOption.forValueAndLabel(company.getTopiaId(), company.getName())); + } + samplingStrategies.add(FilterOption.forEnum(locale, sampleRow.getSamplingStrategy())); + if (sampleRow.getObsProgram().isObsVente()) { + TerrestrialLocation terrestrialDistrict = sampleRow.getTerrestrialLocation(); + terrestrialDistricts.add( FilterOption.forValueAndLabel( - targetSpeciesDCF.getTopiaId(), - targetspeciesLabel) + terrestrialDistrict.getTopiaId(), + terrestrialDistrict.getDescription()) ); } + for (DCF5Code dcf5Code : sampleRow.getdCF5Code()) { + FishingGearDCF fishingGearDCF = dcf5Code.getFishingGearDCF(); + String fishingGearLabel = fishingGearDCF.getCode() + " - " + l(locale, fishingGearDCF.getI18nKey()); + fishingGearDcfs.add( + FilterOption.forValueAndLabel( + fishingGearDCF.getTopiaId(), + fishingGearLabel) + ); + TargetSpeciesDCF targetSpeciesDCF = dcf5Code.getTargetSpeciesDCF(); + if (targetSpeciesDCF != null) { + String targetspeciesLabel = targetSpeciesDCF.getCode() + " - " + l(locale, targetSpeciesDCF.getI18nKey()); + targetSpeciesDcfs.add( + FilterOption.forValueAndLabel( + targetSpeciesDCF.getTopiaId(), + targetspeciesLabel) + ); + } + } } } }
participants (1)
-
bleny@users.forge.codelutin.com