[Suiviobsmer-commits] r196 - in trunk/suiviobsmer-business/src/main: java/fr/ifremer/suiviobsmer/bean java/fr/ifremer/suiviobsmer/impl xmi
Author: fdesbois Date: 2010-01-14 18:04:42 +0000 (Thu, 14 Jan 2010) New Revision: 196 Added: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/SamplingFilterImpl.java trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/UserFilterImpl.java Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/BoatFilterImpl.java trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/ContactFilterImpl.java trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceContactImpl.java trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSynthesisImpl.java trunk/suiviobsmer-business/src/main/xmi/suiviobsmer.zargo Log: Add prepareQuery in filters Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/BoatFilterImpl.java =================================================================== --- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/BoatFilterImpl.java 2010-01-14 14:44:49 UTC (rev 195) +++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/BoatFilterImpl.java 2010-01-14 18:04:42 UTC (rev 196) @@ -21,6 +21,11 @@ package fr.ifremer.suiviobsmer.bean; +import org.apache.commons.lang.StringUtils; +import org.nuiton.topia.framework.TopiaQuery; +import org.nuiton.topia.framework.TopiaQuery.Op; +import org.nuiton.topia.persistence.TopiaEntity; + /** * BoatFilterImpl * @@ -34,4 +39,22 @@ */ public class BoatFilterImpl extends BoatFilter { + @Override + public TopiaQuery prepareQueryForBoat(TopiaQuery query, String main) { + + String boat = main + ".boat"; + + if (!StringUtils.isEmpty(getBoatName())) { + query.add(boat + ".name", Op.LIKE, getBoatName() + "%"); + } + + if (!StringUtils.isEmpty(getBoatDistrictCode())) { + query.add(boat + ".districtCode", getBoatDistrictCode()); + } + + if (getBoatImmatriculation() != null) { + query.add(boat + ".immatriculation", getBoatImmatriculation()); + } + return query; + } } Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/ContactFilterImpl.java =================================================================== --- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/ContactFilterImpl.java 2010-01-14 14:44:49 UTC (rev 195) +++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/ContactFilterImpl.java 2010-01-14 18:04:42 UTC (rev 196) @@ -1,30 +1,15 @@ -/* - * *##% - * SuiviObsmer :: Business - * Copyright (C) 2009 - 2010 Ifremer - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Lesser Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * ##%* - */ package fr.ifremer.suiviobsmer.bean; +import fr.ifremer.suiviobsmer.entity.Contact; +import java.util.ArrayList; +import java.util.List; +import org.nuiton.topia.framework.TopiaQuery; + /** * ContactFilterImpl * - * Created: 5 janv. 2010 + * Created: 14 janv. 2010 * * @author fdesbois * @version $Revision$ @@ -34,4 +19,41 @@ */ public class ContactFilterImpl extends ContactFilter { + @Override + public TopiaQuery prepareQueryForContact(TopiaQuery query) { + query = prepareQueryForUser(query, query.getMainAlias()); + query = prepareQueryForSampling(query, query.getMainAlias()); + query = prepareQueryForBoat(query, query.getMainAlias()); + + String contact = query.getMainAlias(); + + if (getMammalsObservation() && getMammalsCapture()) { + query.add(contact + ".mammalsObservation = :mammals OR " + contact + ".mammalsCapture = :mammals"). + addParam("mammals", Boolean.TRUE); + } else if (getMammalsObservation()) { + query.add(contact + "." + Contact.MAMMALS_OBSERVATION, Boolean.TRUE); + } else if (getMammalsCapture()) { + query.add(contact + "." + Contact.MAMMALS_CAPTURE, Boolean.TRUE); + } + + List<Object> programValidValues = new ArrayList<Object>(); + if (getProgramAccepted()) { + programValidValues.add(Boolean.TRUE); + } + if (getProgramRefused()) { + programValidValues.add(Boolean.FALSE); + } + query.add(contact + "." + Contact.VALIDATION_PROGRAM, programValidValues, getProgramUndefined()); + + List<Object> companyValidValues = new ArrayList<Object>(); + if (getCompanyAccepted()) { + companyValidValues.add(Boolean.TRUE); + } + if (getCompanyRefused()) { + companyValidValues.add(Boolean.FALSE); + } + query.add(contact + "." + Contact.VALIDATION_COMPANY, companyValidValues, getCompanyUndefined()); + + return query; + } } Added: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/SamplingFilterImpl.java =================================================================== --- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/SamplingFilterImpl.java (rev 0) +++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/SamplingFilterImpl.java 2010-01-14 18:04:42 UTC (rev 196) @@ -0,0 +1,42 @@ + +package fr.ifremer.suiviobsmer.bean; + +import fr.ifremer.suiviobsmer.entity.FishingZone; +import fr.ifremer.suiviobsmer.entity.SampleMonth; +import org.apache.commons.lang.StringUtils; +import org.nuiton.topia.framework.TopiaQuery; +import org.nuiton.topia.persistence.TopiaEntity; + +/** + * SamplingFilterImpl + * + * Created: 14 janv. 2010 + * + * @author fdesbois + * @version $Revision$ + * + * Mise a jour: $Date$ + * par : $Author$ + */ +public class SamplingFilterImpl extends SamplingFilter { + + @Override + public TopiaQuery prepareQueryForSampling(TopiaQuery query, String main) { + //query = super.prepareQuery(query); + + String sampleRow = main + ".sampleRow"; + + if (getSampleRow() != null) { + query.add(sampleRow, getSampleRow()); + } else if (!StringUtils.isEmpty(getSectorName())) { + query.addFrom(FishingZone.class.getName() + " F"); + query.add("F.sectorName", getSectorName()).add(sampleRow + " IN elements(F.sampleRow)"); + } else if (!StringUtils.isEmpty(getFacadeName())) { + query.addFrom(FishingZone.class.getName() + " F"); + query.add("F.facadeName", getFacadeName()).add(sampleRow + " IN elements(F.sampleRow)"); + } + + return query; + } + +} Property changes on: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/SamplingFilterImpl.java ___________________________________________________________________ Added: svn:keywords + "Author Date Id Revision HeadURL" Added: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/UserFilterImpl.java =================================================================== --- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/UserFilterImpl.java (rev 0) +++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/UserFilterImpl.java 2010-01-14 18:04:42 UTC (rev 196) @@ -0,0 +1,34 @@ + +package fr.ifremer.suiviobsmer.bean; + +import fr.ifremer.suiviobsmer.entity.Contact; +import org.nuiton.topia.framework.TopiaQuery; + +/** + * UserFilterImpl + * + * Created: 14 janv. 2010 + * + * @author fdesbois + * @version $Revision$ + * + * Mise a jour: $Date$ + * par : $Author$ + */ +public class UserFilterImpl extends UserFilter { + + + @Override + public TopiaQuery prepareQueryForUser(TopiaQuery query, String main) { + + String user = main + ".user"; + + if (getObserver() != null) { + query.add(user, getObserver()); + } else if (getCompany() != null) { + query.add(user + ".company", getCompany()); + } + + return query; + } +} Property changes on: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/UserFilterImpl.java ___________________________________________________________________ Added: svn:keywords + "Author Date Id Revision HeadURL" Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceContactImpl.java =================================================================== --- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceContactImpl.java 2010-01-14 14:44:49 UTC (rev 195) +++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceContactImpl.java 2010-01-14 18:04:42 UTC (rev 196) @@ -103,60 +103,62 @@ TopiaQuery<Contact> query = dao.createQuery("C").addOrderDesc("C." + TopiaEntity.TOPIA_CREATE_DATE); - if (filter.getSampleRow() != null) { - query.add("C." + Contact.SAMPLE_ROW, filter.getSampleRow()); - } else if (!StringUtils.isEmpty(filter.getSectorName())) { - query.addFrom(FishingZone.class.getName() + " F"); - query.add("F.sectorName", filter.getSectorName()).add("C.sampleRow IN elements(F.sampleRow)"); - } else if (!StringUtils.isEmpty(filter.getFacadeName())) { - query.addFrom(FishingZone.class.getName() + " F"); - query.add("F.facadeName", filter.getFacadeName()).add("C.sampleRow IN elements(F.sampleRow)"); - } +// if (filter.getSampleRow() != null) { +// query.add("C." + Contact.SAMPLE_ROW, filter.getSampleRow()); +// } else if (!StringUtils.isEmpty(filter.getSectorName())) { +// query.addFrom(FishingZone.class.getName() + " F"); +// query.add("F.sectorName", filter.getSectorName()).add("C.sampleRow IN elements(F.sampleRow)"); +// } else if (!StringUtils.isEmpty(filter.getFacadeName())) { +// query.addFrom(FishingZone.class.getName() + " F"); +// query.add("F.facadeName", filter.getFacadeName()).add("C.sampleRow IN elements(F.sampleRow)"); +// } +// +// if (!StringUtils.isEmpty(filter.getBoatName())) { +// query.add("C.boat.name", Op.LIKE, filter.getBoatName() + "%"); +// } +// +// if (!StringUtils.isEmpty(filter.getBoatDistrictCode())) { +// query.add("C.boat.districtCode", filter.getBoatDistrictCode()); +// } +// +// if (filter.getBoatImmatriculation() != null) { +// query.add("C.boat.immatriculation", filter.getBoatImmatriculation()); +// } - if (!StringUtils.isEmpty(filter.getBoatName())) { - query.add("C.boat.name", Op.LIKE, filter.getBoatName() + "%"); - } + query = filter.prepareQueryForContact(query); - if (!StringUtils.isEmpty(filter.getBoatDistrictCode())) { - query.add("C.boat.districtCode", filter.getBoatDistrictCode()); - } +// if (filter.getObserver() != null) { +// query.add(Contact.USER, filter.getObserver()); +// } else if (filter.getCompany() != null) { +// query.add("C.user.company", filter.getCompany()); +// } - if (filter.getBoatImmatriculation() != null) { - query.add("C.boat.immatriculation", filter.getBoatImmatriculation()); - } +// if (filter.getMammalsObservation() && filter.getMammalsCapture()) { +// query.add("C.mammalsObservation = :mammals OR C.mammalsCapture = :mammals").addParam("mammals", Boolean.TRUE); +// } else if (filter.getMammalsObservation()) { +// query.add("C." + Contact.MAMMALS_OBSERVATION, Boolean.TRUE); +// } else if (filter.getMammalsCapture()) { +// query.add("C." + Contact.MAMMALS_CAPTURE, Boolean.TRUE); +// } +// +// List<Object> programValidValues = new ArrayList<Object>(); +// if (filter.getProgramAccepted()) { +// programValidValues.add(Boolean.TRUE); +// } +// if (filter.getProgramRefused()) { +// programValidValues.add(Boolean.FALSE); +// } +// query.add("C." + Contact.VALIDATION_PROGRAM, programValidValues, filter.getProgramUndefined()); +// +// List<Object> companyValidValues = new ArrayList<Object>(); +// if (filter.getCompanyAccepted()) { +// companyValidValues.add(Boolean.TRUE); +// } +// if (filter.getCompanyRefused()) { +// companyValidValues.add(Boolean.FALSE); +// } +// query.add("C." + Contact.VALIDATION_COMPANY, companyValidValues, filter.getCompanyUndefined()); - if (filter.getObserver() != null) { - query.add(Contact.USER, filter.getObserver()); - } else if (filter.getCompany() != null) { - query.add("C.user.company", filter.getCompany()); - } - - if (filter.getMammalsObservation() && filter.getMammalsCapture()) { - query.add("C.mammalsObservation = :mammals OR C.mammalsCapture = :mammals").addParam("mammals", Boolean.TRUE); - } else if (filter.getMammalsObservation()) { - query.add("C." + Contact.MAMMALS_OBSERVATION, Boolean.TRUE); - } else if (filter.getMammalsCapture()) { - query.add("C." + Contact.MAMMALS_CAPTURE, Boolean.TRUE); - } - - List<Object> programValidValues = new ArrayList<Object>(); - if (filter.getProgramAccepted()) { - programValidValues.add(Boolean.TRUE); - } - if (filter.getProgramRefused()) { - programValidValues.add(Boolean.FALSE); - } - query.add("C." + Contact.VALIDATION_PROGRAM, programValidValues, filter.getProgramUndefined()); - - List<Object> companyValidValues = new ArrayList<Object>(); - if (filter.getCompanyAccepted()) { - companyValidValues.add(Boolean.TRUE); - } - if (filter.getCompanyRefused()) { - companyValidValues.add(Boolean.FALSE); - } - query.add("C." + Contact.VALIDATION_COMPANY, companyValidValues, filter.getCompanyUndefined()); - query.addLoad("user.company", "sampleRow.profession", "sampleRow.company"); if (log.isDebugEnabled()) { Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSynthesisImpl.java =================================================================== --- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSynthesisImpl.java 2010-01-14 14:44:49 UTC (rev 195) +++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSynthesisImpl.java 2010-01-14 18:04:42 UTC (rev 196) @@ -4,6 +4,8 @@ import fr.ifremer.suiviobsmer.SuiviObsmerContext; import fr.ifremer.suiviobsmer.SuiviObsmerException; import fr.ifremer.suiviobsmer.SuiviObsmerModelDAOHelper; +import fr.ifremer.suiviobsmer.bean.BoatFilter; +import fr.ifremer.suiviobsmer.entity.ElligibleBoat; import fr.ifremer.suiviobsmer.entity.SampleMonth; import fr.ifremer.suiviobsmer.entity.SampleMonthDAO; import fr.ifremer.suiviobsmer.services.ServiceSynthesis; @@ -43,12 +45,13 @@ } @Override - public List<SortedMap<Date, Integer>> getDataSampling(PeriodDates period) throws SuiviObsmerException { + public List<SortedMap<Date, Integer>> getDataSampling(BoatFilter filter) throws SuiviObsmerException { TopiaContext transaction = null; List<SortedMap<Date, Integer>> results = new ArrayList<SortedMap<Date, Integer>>(); try { transaction = rootContext.beginTransaction(); + PeriodDates period = filter.getPeriod(); if (period.getFromDate() == null || period.getThruDate() == null) { return results; } @@ -68,11 +71,14 @@ TopiaQuery<SampleMonth> query = dao.createQuery("M"). setSelect("M.periodDate, SUM(M.realTidesValue), SUM(M.expectedTidesValue)"). //addFrom(SampleRow.class.getName() + " M").add("M IN elements(S)"). -// add("M.periodDate >= :fromDate").addParam("fromDate", period.getFromDate()). -// add("M.periodDate <= :thruDate").addParam("thruDate", period.getThruDate()). add("M.periodDate", Op.GE, period.getFromDate()). add("M.periodDate", Op.LE, period.getThruDate()). addGroup("M.periodDate").addOrder("M.periodDate"); + + query = filter.prepareQueryForUser(query, "M.sampleRow"); + query = filter.prepareQueryForSampling(query, "M"); + query.addFrom(ElligibleBoat.class.getName() + " E").add("E IN elements(M.sampleRow)"); + query = filter.prepareQueryForBoat(query, "E"); if (log.isTraceEnabled()) { log.trace("Exec query : " + query); Modified: trunk/suiviobsmer-business/src/main/xmi/suiviobsmer.zargo =================================================================== (Binary files differ)
participants (1)
-
fdesbois@users.labs.libre-entreprise.org