[Suiviobsmer-commits] r626 - in trunk/wao-business/src: main/java/fr/ifremer/wao main/java/fr/ifremer/wao/entity main/java/fr/ifremer/wao/service main/xmi test/java/fr/ifremer/wao/service
Author: fdesbois Date: 2010-07-24 14:57:19 +0000 (Sat, 24 Jul 2010) New Revision: 626 Log: Evo #2369 : - Use ContactFilter to retrieve data for contacts cartography Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/WaoQueryBuilder.java trunk/wao-business/src/main/java/fr/ifremer/wao/entity/ContactDAOImpl.java trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceCartographyImpl.java trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceContactImpl.java trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSynthesisImpl.java trunk/wao-business/src/main/xmi/wao.zargo trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceCartographyImplTest.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-07-24 12:35:32 UTC (rev 625) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/WaoQueryBuilder.java 2010-07-24 14:57:19 UTC (rev 626) @@ -387,6 +387,7 @@ // need contactProperty + String orderBy = filter.getOrderBy(); WaoUser observer = filter.getObserver(); Company company = filter.getCompany(); Date fromDate = filter.getFromDate(); @@ -490,7 +491,9 @@ filter.setFromDate(fromDate); // ORDER_BY - query.addOrderDesc(contactProperty.topiaCreateDate()); + if (StringUtils.isNotEmpty(orderBy)) { + query.addOrder(contactProperty.$property(orderBy)); + } return query; } 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-07-24 12:35:32 UTC (rev 625) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/entity/ContactDAOImpl.java 2010-07-24 14:57:19 UTC (rev 626) @@ -25,7 +25,9 @@ package fr.ifremer.wao.entity; +import fr.ifremer.wao.WaoQueryBuilder; import fr.ifremer.wao.WaoQueryHelper; +import fr.ifremer.wao.bean.ContactFilter; import fr.ifremer.wao.bean.ContactState; import java.util.Date; import org.nuiton.topia.framework.TopiaQuery; @@ -51,35 +53,6 @@ @Override public TopiaQuery createQueryLastContactForBoat(Boat boat, 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); -// -// 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($("MAX($1)", subCreateDateProperty)). -// addWhere($("$1 = $2", subBoatProperty ,mainBoatProperty)). -// addEquals(subCompanyProperty, company); -// -// // Construct mainquery -// TopiaQuery query = createQuery(mainContactAlias). -// addEquals(mainBoatProperty, boat). -// addEquals(mainCompanyProperty, company). -// addSubQuery($("$1 = (?)", mainCreateDateProperty), subquery); - // Prepare properties for queries WaoQueryHelper.ContactProperty mainContactProperty = WaoQueryHelper.newContactProperty("C1"); @@ -117,33 +90,6 @@ @Override public TopiaQuery createQueryDoneContactsFromDate(Boat boat, Date fromDate) { -// // 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.addEquals(boatProperty, boat); -// } -// -// if (fromDate != null) { -// query.addWhere(tideBeginProperty, Op.GE, fromDate); -// } - // Prepare properties for query WaoQueryHelper.ContactProperty contactProperty = WaoQueryHelper.newContactProperty(); Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceCartographyImpl.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceCartographyImpl.java 2010-07-24 12:35:32 UTC (rev 625) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceCartographyImpl.java 2010-07-24 14:57:19 UTC (rev 626) @@ -24,6 +24,8 @@ import fr.ifremer.wao.WaoContext; import fr.ifremer.wao.WaoDAOHelper; import fr.ifremer.wao.WaoException; +import fr.ifremer.wao.WaoQueryBuilder; +import fr.ifremer.wao.WaoQueryHelper; import fr.ifremer.wao.bean.ContactFilter; import fr.ifremer.wao.bean.ContactPieChartConstant; import fr.ifremer.wao.bean.ContactState; @@ -31,6 +33,7 @@ import fr.ifremer.wao.entity.BoatDistrict; import fr.ifremer.wao.entity.BoatDistrictDAO; import fr.ifremer.wao.entity.Company; +import fr.ifremer.wao.entity.ContactDAO; import fr.ifremer.wao.io.BoatDistrictData; import fr.ifremer.wao.io.ImportResults; import fr.ifremer.wao.io.ImportResultsImpl; @@ -40,6 +43,7 @@ import org.apache.commons.io.FileUtils; import org.nuiton.topia.TopiaContext; import org.nuiton.topia.TopiaException; +import org.nuiton.topia.framework.TopiaQuery; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -164,8 +168,22 @@ KmlWriter writer = KmlIOFactory.newContactWriterJak(); Map<String, PieChartData> districts = - serviceSynthesis.getContactPieChartDataByBoatDistrict(filter.getCompany()); + serviceSynthesis.getContactPieChartDataByBoatDistrict(filter); + // Get the max of nbContacts to calculate size of each pieChart +// ContactDAO contactDAO = WaoDAOHelper.getContactDAO(transaction); +// WaoQueryBuilder builder = contactDAO.createQueryWithBoatDistrictCoordinates(filter); +// WaoQueryHelper.BoatDistrictProperty boatDistrictProperty = +// builder.getContactProperty().boatProperty().boatDistrictProperty(); +// +// long max = builder.getQuery(). +// addGroup(boatDistrictProperty.topiaId()). +// executeToInteger(transaction, "MAX(COUNT(*))"); +// +// if (logger.isDebugEnabled()) { +// logger.debug("Max contacts : " + max); +// } + NumberFormat numberFormat = NumberFormat.getInstance(); // Only 2 digits maximum after the comma numberFormat.setMaximumFractionDigits(2); Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceContactImpl.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceContactImpl.java 2010-07-24 12:35:32 UTC (rev 625) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceContactImpl.java 2010-07-24 14:57:19 UTC (rev 626) @@ -162,6 +162,9 @@ WaoQueryHelper.ContactProperty contactProperty = builder.initializeForContact(); + // Default order + filter.setOrderBy(TopiaEntity.TOPIA_CREATE_DATE + " desc"); + TopiaQuery query = builder.applyContactFilter(filter). // addLoad(contactProperty.observerProperty().company(), // contactProperty.sampleRowProperty().sampleMonth()); @@ -411,6 +414,8 @@ WaoQueryBuilder builder = context.newQueryBuilder(); builder.initializeForContact(); + filter.setOrderBy(TopiaEntity.TOPIA_CREATE_DATE + " desc"); + TopiaQuery query = builder.applyContactFilter(filter); // No page limit in this case 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-07-24 12:35:32 UTC (rev 625) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSynthesisImpl.java 2010-07-24 14:57:19 UTC (rev 626) @@ -30,10 +30,13 @@ import fr.ifremer.wao.WaoException; import fr.ifremer.wao.WaoQueryBuilder; import fr.ifremer.wao.WaoQueryHelper; +import fr.ifremer.wao.WaoQueryHelper.ContactProperty; +import fr.ifremer.wao.WaoQueryHelper.BoatDistrictProperty; import fr.ifremer.wao.bean.BoardingResult; import fr.ifremer.wao.bean.BoardingResultImpl; import fr.ifremer.wao.bean.ContactAverageReactivity; import fr.ifremer.wao.bean.ContactAverageReactivityImpl; +import fr.ifremer.wao.bean.ContactFilter; import fr.ifremer.wao.bean.ContactPieChartConstant; import fr.ifremer.wao.bean.ContactState; import fr.ifremer.wao.bean.ContactStateStatistics; @@ -568,34 +571,54 @@ @Override public Map<String, PieChartData> executeGetContactPieChartDataByBoatDistrict( - TopiaContext transaction, Company company) + TopiaContext transaction, ContactFilter filter) throws TopiaException { ContactDAO dao = WaoDAOHelper.getContactDAO(transaction); - WaoQueryHelper.ContactProperty contactProperty = - WaoQueryHelper.newContactProperty(); +// WaoQueryHelper.ContactProperty contactProperty = +// WaoQueryHelper.newContactProperty(); +// +// WaoQueryHelper.BoatDistrictProperty boatDistrictProperty = +// contactProperty.boatProperty().boatDistrictProperty(); +// +// TopiaQuery query = dao.createQuery(contactProperty.$alias()). +// // Only districts with no null coordinates +// addNotNull(boatDistrictProperty.latitude()). +// addNotNull(boatDistrictProperty.longitude()). +// // Don't take contacts refused by company or program +// addNullOr(contactProperty.validationCompany(), Op.NEQ, Boolean.FALSE). +// addNullOr(contactProperty.validationProgram(), Op.NEQ, Boolean.FALSE); +// +// if (company != null) { +// query.addEquals(contactProperty.observerProperty().company(), company); +// } - WaoQueryHelper.BoatDistrictProperty boatDistrictProperty = +// WaoQueryBuilder builder = dao.createQueryWithBoatDistrictCoordinates(filter); +// +// ContactProperty contactProperty = builder.getContactProperty(); +// +// BoatDistrictProperty boatDistrictProperty = +// contactProperty.boatProperty().boatDistrictProperty(); + + WaoQueryBuilder builder = context.newQueryBuilder(); + + ContactProperty contactProperty = builder.initializeForContact(); + + BoatDistrictProperty boatDistrictProperty = contactProperty.boatProperty().boatDistrictProperty(); - TopiaQuery query = dao.createQuery(contactProperty.$alias()). + TopiaQuery query = builder.applyContactFilter(filter). // Only districts with no null coordinates addNotNull(boatDistrictProperty.latitude()). addNotNull(boatDistrictProperty.longitude()). // Don't take contacts refused by company or program addNullOr(contactProperty.validationCompany(), Op.NEQ, Boolean.FALSE). - addNullOr(contactProperty.validationProgram(), Op.NEQ, Boolean.FALSE); + addNullOr(contactProperty.validationProgram(), Op.NEQ, Boolean.FALSE). + // Set the results wanted : by boatDistrict, by State, get number of results + setSelect(boatDistrictProperty.topiaId(), contactProperty.state(), "COUNT(*)"). + addGroup(boatDistrictProperty.topiaId(), contactProperty.state()); - if (company != null) { - query.addEquals(contactProperty.observerProperty().company(), company); - } - - //String countSelect = WaoQueryHelper.format("COUNT($1)", contactProperty.$alias()); - - query.setSelect(boatDistrictProperty.topiaId(), contactProperty.state(), "COUNT(*)"). - addGroup(boatDistrictProperty.topiaId(), contactProperty.state()); - int realized = 0, refused = 0, other = 0, total = 0; List<Object[]> queryResults = transaction.findByQuery(query); Modified: trunk/wao-business/src/main/xmi/wao.zargo =================================================================== (Binary files differ) Modified: trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceCartographyImplTest.java =================================================================== --- trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceCartographyImplTest.java 2010-07-24 12:35:32 UTC (rev 625) +++ trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceCartographyImplTest.java 2010-07-24 14:57:19 UTC (rev 626) @@ -25,6 +25,7 @@ import fr.ifremer.wao.WaoBusinessException; import fr.ifremer.wao.WaoDAOHelper; import fr.ifremer.wao.WaoException; +import fr.ifremer.wao.bean.ContactFilterImpl; import fr.ifremer.wao.entity.BoatDistrict; import fr.ifremer.wao.entity.BoatDistrictDAO; import fr.ifremer.wao.entity.Company; @@ -138,7 +139,7 @@ ImportResults results = service.importBoatDistrictKml(input); /** EXEC METHOD **/ - InputStream stream = service.exportContactStatisticsKml(null); + InputStream stream = service.exportContactStatisticsKml(new ContactFilterImpl()); //FileUtils.readFileToString() }
participants (1)
-
fdesbois@users.labs.libre-entreprise.org