Author: fdesbois Date: 2010-06-07 19:43:01 +0000 (Mon, 07 Jun 2010) New Revision: 494 Log: Ano #2327 : Don't manage contact fromDate in prepareQueryForSampling, Only use it for contact createDate property (not even tideBeginDate). Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/bean/ContactFilterImpl.java Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/bean/ContactFilterImpl.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/bean/ContactFilterImpl.java 2010-06-07 19:02:26 UTC (rev 493) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/bean/ContactFilterImpl.java 2010-06-07 19:43:01 UTC (rev 494) @@ -27,6 +27,7 @@ import fr.ifremer.wao.entity.Contact; import java.util.ArrayList; +import java.util.Date; import java.util.List; import org.nuiton.topia.framework.TopiaQuery; import org.nuiton.topia.persistence.TopiaEntity; @@ -43,35 +44,36 @@ @Override public TopiaQuery prepareQueryForContact(TopiaQuery query) { - String contact = query.getMainAlias(); + String contactAlias = query.getMainAlias(); // OBSERVER if (getObserver() != null) { String observerProperty = - TopiaQuery.getProperty(contact, Contact.OBSERVER); + TopiaQuery.getProperty(contactAlias, Contact.OBSERVER); query.add(observerProperty, getObserver()); } // Company filter is managed by SamplingFilter because the company is // linked with the sampleRow instead of contact user - - // FIXME-fdesbois-2010-06-07 ANO #2327 : problem on filtering fromDate for contacts : need to be filtered on topiaCreateDate of Contact - if (isSamplingFiltered() || getFromDate() != null || getCompany() != null) { + Date fromDate = getFromDate(); + // Ano #2327 : Reset fromDate, don't manage it in prepareQueryForSampling + this.fromDate = null; + if (isSamplingFiltered() || getCompany() != null) { String sampleRowProperty = - TopiaQuery.getProperty(contact, Contact.SAMPLE_ROW); + TopiaQuery.getProperty(contactAlias, Contact.SAMPLE_ROW); query = prepareQueryForSampling(query, sampleRowProperty); } - String boatProperty = TopiaQuery.getProperty(contact, Contact.BOAT); + String boatProperty = TopiaQuery.getProperty(contactAlias, Contact.BOAT); query = prepareQueryForBoat(query, boatProperty); // MAMMALS_OBSERVATION and MAMMALS_CAPTURE String mammalsObsProperty = - TopiaQuery.getProperty(contact, Contact.MAMMALS_OBSERVATION); + TopiaQuery.getProperty(contactAlias, Contact.MAMMALS_OBSERVATION); String mammalsCaptProperty = - TopiaQuery.getProperty(contact, Contact.MAMMALS_CAPTURE); + TopiaQuery.getProperty(contactAlias, Contact.MAMMALS_CAPTURE); if (getMammalsObservation() && getMammalsCapture()) { query.add(mammalsObsProperty + " = :mammals OR " @@ -95,7 +97,7 @@ programValidValues.add(null); } String programValidProperty = - TopiaQuery.getProperty(contact, Contact.VALIDATION_PROGRAM); + TopiaQuery.getProperty(contactAlias, Contact.VALIDATION_PROGRAM); query.add(programValidProperty, programValidValues.toArray()); // VALIDATION_COMPANY @@ -110,29 +112,34 @@ companyValidValues.add(null); } String companyValidProperty = - TopiaQuery.getProperty(contact, Contact.VALIDATION_COMPANY); + TopiaQuery.getProperty(contactAlias, Contact.VALIDATION_COMPANY); query.add(companyValidProperty, companyValidValues.toArray()); // STATE if (getState() != null) { String stateProperty = - TopiaQuery.getProperty(contact, Contact.STATE); + TopiaQuery.getProperty(contactAlias, Contact.STATE); query.add(stateProperty, getState().ordinal()); } // FROM_DATE - if (getFromDate() != null) { + if (fromDate != null) { String tideBeginDateProperty = - TopiaQuery.getProperty(contact, Contact.TIDE_BEGIN_DATE); + TopiaQuery.getProperty(contactAlias, Contact.TIDE_BEGIN_DATE); String createDateProperty = - TopiaQuery.getProperty(contact, TopiaEntity.TOPIA_CREATE_DATE); - query.add("(" + tideBeginDateProperty + " IS NOT NULL AND " - + tideBeginDateProperty + " >= :fromDate)" + - " OR (" + tideBeginDateProperty + " IS NULL AND " - + createDateProperty + " >= :fromDate)"); - query.addParam("fromDate", getFromDate()); + TopiaQuery.getProperty(contactAlias, TopiaEntity.TOPIA_CREATE_DATE); +// query.add("(" + tideBeginDateProperty + " IS NOT NULL AND " +// + tideBeginDateProperty + " >= :fromDate)" + +// " OR (" + tideBeginDateProperty + " IS NULL AND " +// + createDateProperty + " >= :fromDate)"); +// query.addParam("fromDate", getFromDate()); + + query.add(createDateProperty, TopiaQuery.Op.GE, fromDate); } + // Reinitialize fromDate of the filter, don't know if it's really needed + this.fromDate = fromDate; + return query; }