[Suiviobsmer-commits] r533 - in trunk/wao-business/src/main/java/fr/ifremer/wao: . bean entity service
Author: fdesbois Date: 2010-06-15 16:16:52 +0000 (Tue, 15 Jun 2010) New Revision: 533 Log: Refactor deprecate methods from TopiaQuery Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/WaoQueryBuilder.java trunk/wao-business/src/main/java/fr/ifremer/wao/bean/ContactStatus.java trunk/wao-business/src/main/java/fr/ifremer/wao/entity/BoatInfosImpl.java trunk/wao-business/src/main/java/fr/ifremer/wao/entity/ContactDAOImpl.java trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceNewsImpl.java trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSynthesisImpl.java Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/WaoQueryBuilder.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/WaoQueryBuilder.java 2010-06-15 15:15:57 UTC (rev 532) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/WaoQueryBuilder.java 2010-06-15 16:16:52 UTC (rev 533) @@ -81,14 +81,6 @@ return query; } -// public TopiaQuery getQuery() { -// return query; -// } -// -// public void setQuery(TopiaQuery query) { -// this.query = query; -// } -// public void setSampleRowProperty(String sampleRowProperty) { this.sampleRowProperty = sampleRowProperty; } @@ -96,38 +88,10 @@ public void setFishingZoneProperty(String fishingZoneProperty) { this.fishingZoneProperty = fishingZoneProperty; } -// -// public void setBoatProperty(String boatProperty) { -// this.boatProperty = boatProperty; -// } -// -// public void setContactProperty(String contactProperty) { -// this.contactProperty = contactProperty; -// } -// -// public void setElligibleBoatProperty(String elligibleBoatProperty) { -// this.elligibleBoatProperty = elligibleBoatProperty; -// } -// + public String getSampleRowProperty() { return sampleRowProperty; } -// -// public String getFishingZoneProperty() { -// return fishingZoneProperty; -// } -// -// public String getBoatProperty() { -// return boatProperty; -// } -// -// public String getContactProperty() { -// return contactProperty; -// } -// -// public String getElligibleBoatProperty() { -// return elligibleBoatProperty; -// } public String getSectorNameProperty() { String result = getProperty(fishingZoneProperty, @@ -280,18 +244,6 @@ return result; } -// public String getContactBeginTideProperty() { -// String result = getProperty(contactProperty, -// Contact.TIDE_BEGIN_DATE); -// return result; -// } -// -// public String getElligibleBoatProperty() { -// String result = getProperty(elligibleBoatProperty, -// ElligibleBoat.BOAT); -// return result; -// } - public String getElligibleSampleRowProperty() { String result = getProperty(elligibleBoatProperty, ElligibleBoat.SAMPLE_ROW); @@ -361,12 +313,7 @@ sampleRowProperty = ALIAS_SAMPLE_ROW; query.addFrom(SampleRow.class, sampleRowProperty). - addWhere(new StringBuilder(sampleRowProperty). - append(" IN elements("). - append(getFishingZoneSampleRowProperty()). - append(")"). - toString() - ); + addInElements(sampleRowProperty, getFishingZoneSampleRowProperty()); } if (company != null) { @@ -527,20 +474,19 @@ // Company if (company != null) { // Test only valid ElligibleBoat for that company - query.addWhere(new StringBuilder(getElligibleCompanyActiveProperty()). - append(" = :booleanTrue "). - append("OR ("). - append(getElligibleCompanyActiveProperty()). - append(" IS NULL AND "). - append(getElligibleGlobalActiveProperty()). - append(" = :booleanTrue)"). - toString() +// query.addWhere(new StringBuilder(getElligibleCompanyActiveProperty()). +// append(" = :booleanTrue "). +// append("OR ("). +// append(getElligibleCompanyActiveProperty()). +// append(" IS NULL AND "). +// append(getElligibleGlobalActiveProperty()). +// append(" = :booleanTrue)"). +// toString() +// ).addParam("booleanTrue", Boolean.TRUE); + query.addWhere(_parse("$1 = :booleanTrue OR ($1 IS NULL AND $2 = :booleanTrue)", + getElligibleCompanyActiveProperty(), + getElligibleGlobalActiveProperty()) ).addParam("booleanTrue", Boolean.TRUE); - // TopiaQuery.newOr(getElligibleCompanyActiveProperty()). - // or("? = :booleanTrue"). - // orEnclosed("? IS NULL AND $1 = :booleanTrue", - // getElligibleGlobalActiveProperty()). - // toString() } } @@ -597,16 +543,16 @@ // MAMMALS_OBSERVATION and MAMMALS_CAPTURE if (mammalsObservation && mammalsCapture) { - query.addWhere(new StringBuilder(getMammalsObservationProperty()). - append(" = :mammals OR "). - append(getMammalsCaptureProperty()). - append(" = :mammals"). - toString() - ).addParam("mammals", Boolean.TRUE); - // TopiaQuery.newOr(getMammalsObservationProperty()). - // or("? = :mammals"). - // or("$1 = :mammals", getMammalsCaptureProperty()). - // toString() +// query.addWhere(new StringBuilder(getMammalsObservationProperty()). +// append(" = :mammals OR "). +// append(getMammalsCaptureProperty()). +// append(" = :mammals"). +// toString() +// ).addParam("mammals", Boolean.TRUE); + query.addWhere(_parse("$1 = :mammals OR $2 = :mammals", + getMammalsObservationProperty(), + getMammalsCaptureProperty()) + ).addParam("mammals", Boolean.TRUE); } else if (mammalsObservation) { query.addEquals(getMammalsObservationProperty(), Boolean.TRUE); } else if (mammalsCapture) { @@ -646,12 +592,6 @@ // FROM_DATE if (fromDate != null) { -// query.add("(" + tideBeginDateProperty + " IS NOT NULL AND " -// + tideBeginDateProperty + " >= :fromDate)" + -// " OR (" + tideBeginDateProperty + " IS NULL AND " -// + createDateProperty + " >= :fromDate)"); -// query.addParam("fromDate", getFromDate()); - query.addWhere(getContactCreateDateProperty(), TopiaQuery.Op.GE, fromDate); } @@ -664,6 +604,10 @@ return this; } - - + public static String _parse(String statement, String... properties) { + for (int i = 1; i <= properties.length; i++) { + statement = statement.replace("$" + i, properties[i-1]); + } + return statement; + } } Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/bean/ContactStatus.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/bean/ContactStatus.java 2010-06-15 15:15:57 UTC (rev 532) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/bean/ContactStatus.java 2010-06-15 16:16:52 UTC (rev 533) @@ -256,10 +256,8 @@ period.initDayOfMonthExtremities(); // Bind sampleMonth.sampleRow with contact sampleRow - query.add(SampleMonth.SAMPLE_ROW, sampleRow). - add(SampleMonth.PERIOD_DATE + " BETWEEN :fromDate AND :thruDate"). - addParam("fromDate", period.getFromDate()). - addParam("thruDate", period.getThruDate()); + query.addEquals(SampleMonth.SAMPLE_ROW, sampleRow). + addBetween(SampleMonth.PERIOD_DATE, period.getFromDate(), period.getThruDate()); //add(SampleMonth.PERIOD_DATE, period); SampleMonth result = monthDAO.findByQuery(query); if (result == null) { Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/entity/BoatInfosImpl.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/entity/BoatInfosImpl.java 2010-06-15 15:15:57 UTC (rev 532) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/entity/BoatInfosImpl.java 2010-06-15 16:16:52 UTC (rev 533) @@ -67,11 +67,16 @@ ContactDAO dao = WaoDAOHelper.getContactDAO(transaction); + TopiaQuery query = dao.createQueryDoneContactsFromDate(getBoat(), fromDate); - query.add(Contact.OBSERVER + "." + WaoUser.COMPANY, getCompany()); - result = query.executeCount(); + String companyProperty = + TopiaQuery.getProperty(query.getMainAlias(), Contact.OBSERVER, WaoUser.COMPANY); + + query.addEquals(companyProperty, getCompany()); + + result = dao.countByQuery(query); } catch (Exception eee) { WaoUtils.treateError(transaction, eee, Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/entity/ContactDAOImpl.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/entity/ContactDAOImpl.java 2010-06-15 15:15:57 UTC (rev 532) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/entity/ContactDAOImpl.java 2010-06-15 16:16:52 UTC (rev 533) @@ -25,13 +25,15 @@ package fr.ifremer.wao.entity; +import fr.ifremer.wao.WaoQueryBuilder; import fr.ifremer.wao.bean.ContactState; import java.util.Date; import org.nuiton.topia.framework.TopiaQuery; import org.nuiton.topia.framework.TopiaQuery.Op; -import org.nuiton.topia.persistence.TopiaEntity; +import static fr.ifremer.wao.WaoQueryBuilder._parse; + /** * ContactDAOImpl * @@ -51,17 +53,36 @@ */ @Override public TopiaQuery createQueryLastContactForBoat(Boat boat, Company company) { - TopiaQuery query = createQuery("C1"). - add("C1." + Contact.BOAT, boat). - add("C1." + Contact.OBSERVER + "." + WaoUser.COMPANY + " = :company"). - addParam("company", company); - TopiaQuery subquery = createQuery("C2"). - setSelect("MAX(C2." + TopiaEntity.TOPIA_CREATE_DATE + ")"). - add("C2." + Contact.BOAT + " = C1." + Contact.BOAT). - add("C2." + Contact.OBSERVER + "." + WaoUser.COMPANY + " = :company"); + // Prepare properties for queries + String mainContactAlias = WaoQueryBuilder.ALIAS_CONTACT + "1"; + String mainBoatProperty = + TopiaQuery.getProperty(mainContactAlias, Contact.BOAT); + String mainCompanyProperty = + TopiaQuery.getProperty(mainContactAlias, Contact.OBSERVER, WaoUser.COMPANY); + String mainCreateDateProperty = + TopiaQuery.getProperty(mainContactAlias, Contact.TOPIA_CREATE_DATE); - query.add("C1." + TopiaEntity.TOPIA_CREATE_DATE + " = (" + subquery.fullQuery() + ")"); + String subContactAlias = WaoQueryBuilder.ALIAS_CONTACT + "2"; + String subBoatProperty = + TopiaQuery.getProperty(subContactAlias, Contact.BOAT); + String subCompanyProperty = + TopiaQuery.getProperty(subContactAlias, Contact.OBSERVER, WaoUser.COMPANY); + String subCreateDateProperty = + TopiaQuery.getProperty(subContactAlias, Contact.TOPIA_CREATE_DATE); + + // Construct subquery + TopiaQuery subquery = createQuery(subContactAlias). + setSelect(_parse("MAX($1)", subCreateDateProperty)). + addWhere(_parse("$1 = $2", subBoatProperty ,mainBoatProperty)). + addEquals(subCompanyProperty, company); + + // Construct mainquery + TopiaQuery query = createQuery(mainContactAlias). + addEquals(mainBoatProperty, boat). + addEquals(mainCompanyProperty, company). + addSubQuery(_parse("$1 = (?)", mainCreateDateProperty), subquery); + return query; } @@ -77,19 +98,32 @@ */ @Override public TopiaQuery createQueryDoneContactsFromDate(Boat boat, Date fromDate) { - TopiaQuery query = createQuery("C"). - add("C." + Contact.STATE, ContactState.BOARDING_DONE.ordinal()). - add("C." + Contact.VALIDATION_COMPANY, Boolean.TRUE). - // TODO : use addNullOr method with Topia version 2.3.0-beta-9 - add("C." + Contact.VALIDATION_PROGRAM + " IS NULL OR " + "C." + Contact.VALIDATION_PROGRAM + " = :booleanTrue"). - addParam("booleanTrue", Boolean.TRUE); + // Prepare properties for query + String mainAlias = WaoQueryBuilder.ALIAS_CONTACT; + String stateProperty = + TopiaQuery.getProperty(mainAlias, Contact.STATE); + String validationCompanyProperty = + TopiaQuery.getProperty(mainAlias, Contact.VALIDATION_COMPANY); + String validationProgramProperty = + TopiaQuery.getProperty(mainAlias, Contact.VALIDATION_PROGRAM); + String boatProperty = + TopiaQuery.getProperty(mainAlias, Contact.BOAT); + String tideBeginProperty = + TopiaQuery.getProperty(mainAlias, Contact.TIDE_BEGIN_DATE); + + // Construct query + TopiaQuery query = createQuery(mainAlias). + addEquals(stateProperty, ContactState.BOARDING_DONE.ordinal()). + addEquals(validationCompanyProperty, Boolean.TRUE). + addNullOr(validationProgramProperty, Op.EQ, Boolean.TRUE); + if (boat != null) { - query.add("C." + Contact.BOAT, boat); + query.addEquals(boatProperty, boat); } if (fromDate != null) { - query.add("C." + Contact.TIDE_BEGIN_DATE, Op.GE, fromDate); + query.addWhere(tideBeginProperty, Op.GE, fromDate); } return query; } Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceNewsImpl.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceNewsImpl.java 2010-06-15 15:15:57 UTC (rev 532) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceNewsImpl.java 2010-06-15 16:16:52 UTC (rev 533) @@ -92,20 +92,11 @@ TopiaQuery.getProperty(newsAlias, News.TOPIA_CREATE_DATE); TopiaQuery query = dao.createQuery(newsAlias). - // Add fetch to load company (will used a join) - addFetch(companyProperty). - addOrderDesc(createDateProperty); + // Add fetch to load company (will used a join) + addFetch(companyProperty). + addOrderDesc(createDateProperty). + addNullOr(companyProperty, TopiaQuery.Op.EQ, user.getCompany()); - query.addWhere(new StringBuilder(companyProperty). - append(" IS NULL OR "). - append(companyProperty). - append(" = :company"). - toString() - ).addParam("company", user.getCompany()); - - // query.addWhere("$1 IS NULL OR $1 = :company", companyAlias).addParam("company", user.getCompany()); - // query.addWhere(TopiaQuery.newOr(News.COMPANY).or("? IS NULL").or("? = :company").toString()).addParam("company", user.getCompany()); - List<News> results = dao.findAllByQuery(query); return results; 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-06-15 15:15:57 UTC (rev 532) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSynthesisImpl.java 2010-06-15 16:16:52 UTC (rev 533) @@ -193,11 +193,11 @@ String sampleRow = contact + "." + Contact.SAMPLE_ROW; // Only for sampleRows with averageTideTime less or equals to 2 days - query.add(sampleRow + "." + SampleRow.AVERAGE_TIDE_TIME, Op.LE, 2.); + query.addWhere(sampleRow + "." + SampleRow.AVERAGE_TIDE_TIME, Op.LE, 2.); // Add filter on sampleRow company if needed if (company != null) { - query.add(sampleRow + "." + SampleRow.COMPANY, company); + query.addEquals(sampleRow + "." + SampleRow.COMPANY, company); } // Prepare aliases for mapping results in select part @@ -215,7 +215,7 @@ log.trace("Exec query : " + query); } - List<Map<String, Object>> nbBoardingsByBoat = query.execute(); + List<Map<String, Object>> nbBoardingsByBoat = transaction.findByQuery(query); if (!nbBoardingsByBoat.isEmpty()) { for (Map<String, Object> row : nbBoardingsByBoat) {
participants (1)
-
fdesbois@users.labs.libre-entreprise.org