Author: bleny Date: 2011-04-06 15:39:45 +0000 (Wed, 06 Apr 2011) New Revision: 1147 Log: optimize getPossibleValues for BoatFilter, prevent browsing 9000 boats when filter is empty Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceBoatImpl.java Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceBoatImpl.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceBoatImpl.java 2011-04-06 14:33:43 UTC (rev 1146) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceBoatImpl.java 2011-04-06 15:39:45 UTC (rev 1147) @@ -700,20 +700,29 @@ @Override protected BoatFilterValues executeGetPossibleValuesForFilter(TopiaContext transaction, BoatFilter filter) throws Exception { - // extract data - Map<Integer, Boat> integerBoatMap = executeGetBoatsByFilter(transaction, filter); + BoatFilterValues result = new BoatFilterValuesImpl(); + if (filter.getFacadeName() == null && filter.getSectorName() == null) { + ServiceReferential serviceReferential = context.getServiceFactory().getServiceReferential(); + ServiceSampling serviceSampling = context.getServiceFactory().getServiceSampling(); - logger.info("Starting extracting rows : " + new Date()); - // Extract sampleRows - List<SampleRow> rows = extractSampleRows(integerBoatMap.values()); + result.setFacadeNames(serviceReferential.getFacades(filter)); + result.setSectorsNames(serviceReferential.getSectors(filter)); + result.setSampleRows(serviceSampling.getSampleRowsByFilter(filter)); + } else { + // extract data + Map<Integer, Boat> integerBoatMap = executeGetBoatsByFilter(transaction, filter); - logger.info("End of extracting rows : " + new Date()); + logger.info("Starting extracting rows : " + new Date()); + // Extract sampleRows + List<SampleRow> rows = extractSampleRows(integerBoatMap.values()); - // collect values - BoatFilterValues result = new BoatFilterValuesImpl(); + logger.info("End of extracting rows : " + new Date()); - result.fill(rows); + // collect values + result.fill(rows); + } + return result; }