Author: fdesbois Date: 2010-01-22 18:48:16 +0000 (Fri, 22 Jan 2010) New Revision: 260 Modified: trunk/changelog.txt trunk/src/site/rst/business-rules.rst 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/bean/SamplingFilterImpl.java trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/ContactImpl.java trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/SampleRowImpl.java trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSamplingImpl.java trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/entity/SampleRowImplTest.java trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/base/AbstractFilteredPage.java trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Boats.java trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Contacts.java trunk/suiviobsmer-ui/src/main/resources/fr/ifremer/suiviobsmer/ui/pages/Boats.properties trunk/suiviobsmer-ui/src/main/webapp/Boats.tml trunk/suiviobsmer-ui/src/main/webapp/css/boats.css Log: - Problem with filters Ano #2033 and #2042 - Ano #2034 : Bad calcul for realTides Modified: trunk/changelog.txt =================================================================== --- trunk/changelog.txt 2010-01-22 15:45:52 UTC (rev 259) +++ trunk/changelog.txt 2010-01-22 18:48:16 UTC (rev 260) @@ -4,6 +4,9 @@ 0.1.2 ----- +- [fdesbois] Ano #2033 : Problème avec le filtre sur un code de ligne dans les synthèses +- [fdesbois] Ano #2034 : Mauvais calcul des marées réels +- [fdesbois] Ano #2042 : Problème sur les filtres de la page contacts (une validation les enlève) - [fdesbois] Evol #2017 : Permettre la suppression d'un utilisateur non utilisé dans l'application - [fdesbois] Evol #1959 : Contacts : Popup pour la sasie d'un commentaire sur une ligne - [fdesbois] Evol #2030 : Refactoré filtres des navires pour utiliser la partie commune a ceux des contacts et des syntheses Modified: trunk/src/site/rst/business-rules.rst =================================================================== --- trunk/src/site/rst/business-rules.rst 2010-01-22 15:45:52 UTC (rev 259) +++ trunk/src/site/rst/business-rules.rst 2010-01-22 18:48:16 UTC (rev 260) @@ -101,10 +101,10 @@ - Calcul du nombre de marées réels : - * Ajout si accepté (validé) par la société - * Retrait si invalidé par la société après avoir été accepté - * Retrait si refusé par le programme - * Ajout si validé par le programme après avoir été refusé + * Ajout d'une marée si accepté (validé) par la société + * Retrait d'une marée si invalidé par la société après avoir été accepté + * Retrait d'une marée si refusé par le programme + * Ajout d'une marée si validé par le programme après avoir été refusé - Unicité : code de la ligne du plan + immatriculation du navire + société + date de création (avec temps) 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-22 15:45:52 UTC (rev 259) +++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/BoatFilterImpl.java 2010-01-22 18:48:16 UTC (rev 260) @@ -63,4 +63,9 @@ public boolean isBoatFiltered() { return StringUtils.isNotEmpty(getBoatName()) || StringUtils.isNotEmpty(getBoatDistrictCode()) || getBoatImmatriculation() != null; } + +// @Override +// public boolean isFiltered() { +// return super.isFiltered() || isBoatFiltered(); +// } } 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-22 15:45:52 UTC (rev 259) +++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/ContactFilterImpl.java 2010-01-22 18:48:16 UTC (rev 260) @@ -81,6 +81,19 @@ } query.add(contact + "." + Contact.VALIDATION_COMPANY, companyValidValues, getCompanyUndefined()); + if (getState() != null) { + query.add(contact + "." + Contact.STATE, getState().toString()); + } + return query; } + + @Override + public boolean isFiltered() { + return isBoatFiltered() || isSamplingFiltered() || getObserver() != null || + getMammalsObservation() || getMammalsCapture() || + getProgramAccepted() || getProgramRefused() || getProgramUndefined() || + getCompanyAccepted() || getCompanyRefused() || getCompanyUndefined() || + getState() != null; + } } Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/SamplingFilterImpl.java =================================================================== --- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/SamplingFilterImpl.java 2010-01-22 15:45:52 UTC (rev 259) +++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/bean/SamplingFilterImpl.java 2010-01-22 18:48:16 UTC (rev 260) @@ -89,4 +89,9 @@ getPeriod() != null || getProfession() != null; } +// @Override +// public boolean isFiltered() { +// return super.isFiltered() || isSamplingFiltered(); +// } + } Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/ContactImpl.java =================================================================== --- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/ContactImpl.java 2010-01-22 15:45:52 UTC (rev 259) +++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/ContactImpl.java 2010-01-22 18:48:16 UTC (rev 260) @@ -47,13 +47,15 @@ @Override public void setTideBeginDate(Date beginDate) { super.setTideBeginDate(beginDate); - calculTideNbDays(); + // Temporarly commented, tideNbDays is not used yet +// calculTideNbDays(); } @Override public void setTideEndDate(Date beginDate) { super.setTideEndDate(beginDate); - calculTideNbDays(); + // Temporarly commented, tideNbDays is not used yet +// calculTideNbDays(); } /** Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/SampleRowImpl.java =================================================================== --- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/SampleRowImpl.java 2010-01-22 15:45:52 UTC (rev 259) +++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/SampleRowImpl.java 2010-01-22 18:48:16 UTC (rev 260) @@ -205,13 +205,13 @@ if (contact.getTideEndDate() == null || contact.getTideBeginDate() == null) { return; } - int nbDays = contact.getTideNbDays(); //getDifferenceDays(contact); + //int nbDays = contact.getTideNbDays(); //getDifferenceDays(contact); SampleMonth month = getSampleMonth(contact.getTideBeginDate()); - if (log.isDebugEnabled()) { - log.debug("Add tide time " + nbDays + " for " + + if (log.isTraceEnabled()) { + log.trace("Add 1 tide for " + month.getPeriodMonth() + "/" + month.getPeriodYear() + " [" + this.getCode() + "]"); } - month.addRealTideTime(nbDays); + month.addRealTideTime(1); } @Override @@ -219,13 +219,13 @@ if (contact.getTideEndDate() == null || contact.getTideBeginDate() == null) { return; } - int nbDays = contact.getTideNbDays(); //getDifferenceDays(contact); + //int nbDays = contact.getTideNbDays(); //getDifferenceDays(contact); SampleMonth month = getSampleMonth(contact.getTideBeginDate()); - if (log.isDebugEnabled()) { - log.debug("Remove tide time " + nbDays + " for " + + if (log.isTraceEnabled()) { + log.trace("Remove 1 tide for " + month.getPeriodMonth() + "/" + month.getPeriodYear() + " [" + this.getCode() + "]"); } - month.addRealTideTime(-nbDays); + month.addRealTideTime(-1); } @Override Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSamplingImpl.java =================================================================== --- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSamplingImpl.java 2010-01-22 15:45:52 UTC (rev 259) +++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/impl/ServiceSamplingImpl.java 2010-01-22 18:48:16 UTC (rev 260) @@ -339,8 +339,6 @@ try { transaction = rootContext.beginTransaction(); - // TODO-FD20090106 add filters for facadeName and sectorName (in argument) for Boats and Contacts use - SampleRowDAO dao = SuiviObsmerModelDAOHelper.getSampleRowDAO(transaction); TopiaQuery<SampleRow> query = dao.createQuery("S"); Modified: trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/entity/SampleRowImplTest.java =================================================================== --- trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/entity/SampleRowImplTest.java 2010-01-22 15:45:52 UTC (rev 259) +++ trunk/suiviobsmer-business/src/test/java/fr/ifremer/suiviobsmer/entity/SampleRowImplTest.java 2010-01-22 18:48:16 UTC (rev 260) @@ -120,7 +120,7 @@ Contact contact = new ContactImpl(); Date beginDate = DateUtils.createDate(12, 4, 2009); - Date endDate = DateUtils.createDate(12, 4, 2009); + Date endDate = DateUtils.createDate(15, 4, 2009); contact.setTideBeginDate(beginDate); contact.setTideEndDate(endDate); @@ -129,16 +129,15 @@ SampleMonth result = getRowFromContext().getSampleMonth(beginDate); assertEquals(1, result.getRealTidesValue()); - // Reinit result for next test - result.addRealTideTime(-1); - - // Test with a more than one day interval dates from contact - endDate = DateUtils.createDate(18, 4, 2009); - contact.setTideEndDate(endDate); - - getRowFromContext().addRealTideTime(contact); - result = getRowFromContext().getSampleMonth(beginDate); - assertEquals(7, result.getRealTidesValue()); +// // Reinit result for next test +// result.addRealTideTime(-1); +// // Test with a more than one day interval dates from contact +// endDate = DateUtils.createDate(18, 4, 2009); +// contact.setTideEndDate(endDate); +// +// getRowFromContext().addRealTideTime(contact); +// result = getRowFromContext().getSampleMonth(beginDate); +// assertEquals(1, result.getRealTidesValue()); } @Test @@ -157,20 +156,19 @@ /** EXEC METHOD **/ row.removeRealTideTime(contact); SampleMonth result = getRowFromContext().getSampleMonth(beginDate); - // result stay at 0, can't remove 1 day from 0 + // result stay at 0, can't remove 1 tide from 0 assertEquals(0, result.getRealTidesValue()); // Reinit result for next test result.addRealTideTime(12); - // Test with a more than one day interval dates from contact + // Test with a more than one day interval dates from contact : only one tide to remove endDate = DateUtils.createDate(18, 4, 2009); contact.setTideEndDate(endDate); getRowFromContext().removeRealTideTime(contact); result = getRowFromContext().getSampleMonth(beginDate); - // result put to 5 : 12 - 7 (diff) - assertEquals(5, result.getRealTidesValue()); + assertEquals(11, result.getRealTidesValue()); } @Test Modified: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/base/AbstractFilteredPage.java =================================================================== --- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/base/AbstractFilteredPage.java 2010-01-22 15:45:52 UTC (rev 259) +++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/base/AbstractFilteredPage.java 2010-01-22 18:48:16 UTC (rev 260) @@ -134,6 +134,10 @@ */ protected void initSelectFilters(boolean companySelect, boolean observerSelect) throws SuiviObsmerException { + if (log.isDebugEnabled()) { + log.debug("Filters : " + getFilter()); + } + facadeSelectModel = null; getFacadeSelectModel(); sectorSelectModel = null; @@ -142,6 +146,9 @@ getSampleRowSelectModel(); if (getFilter().getSampleRow() != null) { + if (log.isDebugEnabled()) { + log.debug("SampleRow filtered : " + getFilter().getSampleRow()); + } sampleRowId = getFilter().getSampleRow().getTopiaId(); } @@ -201,7 +208,13 @@ if (log.isInfoEnabled()) { log.info("BUSINESS REQUEST [getSampleRowsForUser]"); } + + // WARN : no use of sampleRow filter + SampleRow rowFiltered = getFilter().getSampleRow(); + getFilter().setSampleRow(null); List<SampleRow> sampleRows = serviceSampling.getSampleRowsByFilter(getFilter()); + getFilter().setSampleRow(rowFiltered); + sampleRowSelectModel = new GenericSelectModel<SampleRow>(sampleRows, SampleRow.class, "code", "topiaId", propertyAccess); } @@ -286,8 +299,16 @@ // return null; // } - @Log - public void onSuccess() throws SuiviObsmerException { + /** + * Called when search submit button is pressed. This method is useful to + * refresh all filters data from selects. + * + * @throws SuiviObsmerException + */ + public void onSelectedFromSearch() throws SuiviObsmerException { + if (log.isDebugEnabled()) { + log.debug("REFRESH FILTERS DATA"); + } SampleRow row = getSampleRowSelectModel().findObject(sampleRowId); getFilter().setSampleRow(row); if (user.getAdmin()) { Modified: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Boats.java =================================================================== --- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Boats.java 2010-01-22 15:45:52 UTC (rev 259) +++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Boats.java 2010-01-22 18:48:16 UTC (rev 260) @@ -352,9 +352,11 @@ * Other filters are managed by AbstractFilteredPage superclass. * * @throws SuiviObsmerException for business errors - * @see AbstractFilteredPage + * @see AbstractFilteredPage#onSelectedFromSearch() */ - void onSelectedFromSearch() throws SuiviObsmerException { + @Override + public void onSelectedFromSearch() throws SuiviObsmerException { + super.onSelectedFromSearch(); if (log.isDebugEnabled()) { log.debug("FILTER : facadeName=" + boatFilter.getFacadeName()); log.debug("FILTER : sectorName=" + boatFilter.getSectorName()); @@ -593,6 +595,8 @@ /** /////////////////////// ACTIONS //////////////////////////////////// **/ Block onSuccessFromCompanySelectForm() throws SuiviObsmerException { + // Must be call to refresh company data from select + super.onSelectedFromSearch(); companyBoatInfos = null; // boatSelectedImmatriculation is getting from Persist("flash") getCompanyBoatInfos(); Modified: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Contacts.java =================================================================== --- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Contacts.java 2010-01-22 15:45:52 UTC (rev 259) +++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/Contacts.java 2010-01-22 18:48:16 UTC (rev 260) @@ -123,6 +123,12 @@ contacts = null; getContacts(); } + String boatName = getFilter().getBoatName(); + boolean companyFiltered = getFilter().getCompany() != null && user.getAdmin(); + // Show filters only if no boatName is set + if ((getContactFilter().isFiltered() || companyFiltered) && StringUtils.isEmpty(boatName)) { + filtersVisible = true; + } contactsForm.clearErrors(); } @@ -139,7 +145,7 @@ @Property // @Persist(PersistenceConstants.FLASH) - @Persist +// @Persist private boolean filtersVisible; private boolean reset; @@ -147,9 +153,6 @@ public ContactFilter getContactFilter() throws SuiviObsmerException { if (contactFilter == null) { contactFilter = new ContactFilterImpl(); -// if (!user.getAdmin()) { -// contactFilter.setCompany(user.getCompany()); -// } } return contactFilter; } Modified: trunk/suiviobsmer-ui/src/main/resources/fr/ifremer/suiviobsmer/ui/pages/Boats.properties =================================================================== --- trunk/suiviobsmer-ui/src/main/resources/fr/ifremer/suiviobsmer/ui/pages/Boats.properties 2010-01-22 15:45:52 UTC (rev 259) +++ trunk/suiviobsmer-ui/src/main/resources/fr/ifremer/suiviobsmer/ui/pages/Boats.properties 2010-01-22 18:48:16 UTC (rev 260) @@ -14,7 +14,7 @@ # BOATS LIST immatriculation-label: Imma. buildYear-label: Ann\u00E9e -boatLength-label: Longueur +boatLength-label: Long. # BOAT INFOS referenceDate-label: Date Modified: trunk/suiviobsmer-ui/src/main/webapp/Boats.tml =================================================================== --- trunk/suiviobsmer-ui/src/main/webapp/Boats.tml 2010-01-22 15:45:52 UTC (rev 259) +++ trunk/suiviobsmer-ui/src/main/webapp/Boats.tml 2010-01-22 18:48:16 UTC (rev 260) @@ -87,7 +87,7 @@ <p:boatName> <t:label t:for="boatName" /> <span> nom </span> - <input t:type="textfield" t:id="boatName" t:value="filter.boatName" t:mixins="Autocomplete" /> + <input t:type="textfield" t:id="boatName" class="width150" t:value="filter.boatName" t:mixins="Autocomplete" /> <span> immatriculation </span> <input t:type="textfield" t:id="boatImmatriculation" class="width50" t:value="filter.boatImmatriculation" /> <span> code quartier </span> Modified: trunk/suiviobsmer-ui/src/main/webapp/css/boats.css =================================================================== --- trunk/suiviobsmer-ui/src/main/webapp/css/boats.css 2010-01-22 15:45:52 UTC (rev 259) +++ trunk/suiviobsmer-ui/src/main/webapp/css/boats.css 2010-01-22 18:48:16 UTC (rev 260) @@ -7,7 +7,7 @@ */ div#so-boats { - width: 90%; + width: 100%; margin-left: auto; margin-right: auto; margin-top: 20px;