Author: fdesbois Date: 2010-06-08 11:19:33 +0000 (Tue, 08 Jun 2010) New Revision: 498 Log: Refactor filtering on FishingZOne using WaoQueryBuilder Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceBoatImpl.java trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceReferentialImpl.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 2010-06-08 11:05:20 UTC (rev 497) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceBoatImpl.java 2010-06-08 11:19:33 UTC (rev 498) @@ -304,7 +304,7 @@ List<String> boatNames = dao.createQuery(). addDistinct(). setSelect(Boat.NAME). - addEquals(Boat.NAME, Op.LIKE, input + "%"). + addWhere(Boat.NAME, Op.LIKE, input + "%"). execute(transaction); return boatNames; Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceReferentialImpl.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceReferentialImpl.java 2010-06-08 11:05:20 UTC (rev 497) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceReferentialImpl.java 2010-06-08 11:19:33 UTC (rev 498) @@ -29,6 +29,7 @@ import fr.ifremer.wao.WaoContext; import fr.ifremer.wao.WaoDAOHelper; import fr.ifremer.wao.WaoException; +import fr.ifremer.wao.WaoQueryBuilder; import fr.ifremer.wao.bean.SamplingFilter; import fr.ifremer.wao.entity.FishingZone; import fr.ifremer.wao.entity.FishingZoneDAO; @@ -87,25 +88,23 @@ public List<String> executeGetFacades(TopiaContext transaction, SamplingFilter filter) throws TopiaException { - FishingZoneDAO dao = WaoDAOHelper.getFishingZoneDAO(transaction); - TopiaQuery query = dao.createQuery("F"); +// FishingZoneDAO dao = WaoDAOHelper.getFishingZoneDAO(transaction); +// TopiaQuery query = dao.createQuery("F"); +// +// query = prepareQueryForFishingZoneFilter(query, filter); +// +// query.addDistinct(). +// setSelect("F." + FishingZone.FACADE_NAME); - query = prepareQueryForFishingZoneFilter(query, filter); + WaoQueryBuilder queryBuilder = new WaoQueryBuilder(FishingZone.class). + applyFishingZoneFilter(filter); - query.addDistinct(). - setSelect("F." + FishingZone.FACADE_NAME); + TopiaQuery query = queryBuilder.toQuery(). + addDistinct(). + setSelect(queryBuilder.getFacadeNameProperty()); List<String> results = transaction.findByQuery(query); -// WaoQueryBuilder queryBuilder = new WaoQueryBuilder(FishingZone.class). -// applyFishingZoneFilter(filter); -// -// TopiaQuery query = queryBuilder.toQuery(). -// addDistinct(). -// setSelect(queryBuilder.getFacadeNameProperty()); -// -// List<String> results = query.execute(); - return results; } @@ -113,50 +112,31 @@ public List<String> executeGetSectors(TopiaContext transaction, SamplingFilter filter) throws TopiaException { - FishingZoneDAO dao = WaoDAOHelper.getFishingZoneDAO(transaction); - TopiaQuery query = dao.createQuery("F"); - - query = prepareQueryForFishingZoneFilter(query, filter); - - if (StringUtils.isNotEmpty(filter.getFacadeName())) { - query.addEquals("F." + FishingZone.FACADE_NAME, filter.getFacadeName()); - } - query.addDistinct(). - setSelect("F." + FishingZone.SECTOR_NAME); - -// WaoQueryBuilder queryBuilder = new WaoQueryBuilder(FishingZone.class). -// applyFishingZoneFilter(filter); +// FishingZoneDAO dao = WaoDAOHelper.getFishingZoneDAO(transaction); +// TopiaQuery query = dao.createQuery("F"); // -// TopiaQuery query = queryBuilder.toQuery(). -// addDistinct(). -// setSelect(queryBuilder.getSectorNameProperty()); +// query = prepareQueryForFishingZoneFilter(query, filter); // // if (StringUtils.isNotEmpty(filter.getFacadeName())) { -// query.add(queryBuilder.getFacadeNameProperty(), filter.getFacadeName()); +// query.addEquals("F." + FishingZone.FACADE_NAME, filter.getFacadeName()); // } +// query.addDistinct(). +// setSelect("F." + FishingZone.SECTOR_NAME); - List<String> results = transaction.findByQuery(query); + WaoQueryBuilder queryBuilder = new WaoQueryBuilder(FishingZone.class). + applyFishingZoneFilter(filter); - return results; - } + TopiaQuery query = queryBuilder.toQuery(). + addDistinct(). + setSelect(queryBuilder.getSectorNameProperty()); - protected TopiaQuery prepareQueryForFishingZoneFilter(TopiaQuery query, - SamplingFilter filter) throws TopiaException { - if (filter.getCompany() != null || - StringUtils.isNotEmpty(filter.getProgramName())) { - query.addFrom(SampleRow.class.getName() + " S"). - add("S IN elements(F." + FishingZone.SAMPLE_ROW + ")"); + if (StringUtils.isNotEmpty(filter.getFacadeName())) { + query.addEquals(queryBuilder.getFacadeNameProperty(), filter.getFacadeName()); } - if (filter.getCompany() != null) { - query.add("S." + SampleRow.COMPANY, filter.getCompany()); - } + List<String> results = transaction.findByQuery(query); - if (filter.getProgramName() != null) { - query.add("S." + SampleRow.PROGRAM_NAME, filter.getProgramName()); - } - - return query; + return results; } @Override @@ -217,13 +197,15 @@ protected List<String> executeGetCodesDCF5Contains(TopiaContext transaction, String input) throws Exception { - ProfessionDAO dao = WaoDAOHelper.getProfessionDAO(transaction); - TopiaQuery query = dao.createQuery().addDistinct(). + TopiaQuery query = transaction.createQuery(Profession.class, null). + addDistinct(). setSelect(Profession.CODE_DCF5). - add(Profession.CODE_DCF5, Op.LIKE, "%" + input + "%"). + addWhere(Profession.CODE_DCF5, Op.LIKE, "%" + input + "%"). addOrder(Profession.CODE_DCF5); - return (List<String>)query.execute(); + List<String> results = transaction.findByQuery(query); + + return results; } }