[Suiviobsmer-commits] r305 - in trunk: . suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/data suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages suiviobsmer-ui/src/main/webapp suiviobsmer-ui/src/main/webapp/css
Author: fdesbois Date: 2010-02-01 18:16:04 +0000 (Mon, 01 Feb 2010) New Revision: 305 Modified: trunk/changelog.txt trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/SampleMonthImpl.java trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/data/SuiviObsmerPropertyChangeListener.java trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/SampleRowForm.java trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/SamplingPlan.java trunk/suiviobsmer-ui/src/main/webapp/SampleRowForm.tml trunk/suiviobsmer-ui/src/main/webapp/css/sampling.css Log: Ano #2068 : Problem with sampleMonth validations : use PropertyChangeListener to test form changes Modified: trunk/changelog.txt =================================================================== --- trunk/changelog.txt 2010-02-01 14:54:29 UTC (rev 304) +++ trunk/changelog.txt 2010-02-01 18:16:04 UTC (rev 305) @@ -17,6 +17,7 @@ Anomalies +++++++++ +- [fdesbois] Ano #2068 : Plan d'échantillonnage : modification d'une ligne avec des efforts réels : blocage à la sauvegarde - [fdesbois] Ano #2064 : Export contact : ajouter l'extension .csv + n'exporte que les 20premières lignes - [fdesbois] Ano #2058 : Erreur affichage calendrier d'activité - [fdesbois] Ano #2056 : Le filtre sur la date de début pour les contacts ne reste pas Modified: trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/SampleMonthImpl.java =================================================================== --- trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/SampleMonthImpl.java 2010-02-01 14:54:29 UTC (rev 304) +++ trunk/suiviobsmer-business/src/main/java/fr/ifremer/suiviobsmer/entity/SampleMonthImpl.java 2010-02-01 18:16:04 UTC (rev 305) @@ -27,6 +27,8 @@ import java.io.Serializable; import java.text.DateFormat; import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.GregorianCalendar; import org.nuiton.topia.TopiaContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -48,67 +50,6 @@ private static final long serialVersionUID = 1L; -// @Override -// public PeriodDates getPeriod() { -// PeriodDates period = new PeriodDates(getPeriodDate(), getPeriodDate()); -// period.initDayOfMonthExtremities(); -// return period; -// } - -// protected Calendar getCalendar() { -// Calendar calendar = new GregorianCalendar(); -// if (getPeriodDate() != null) { -// calendar.setTime(getPeriodDate()); -// } -// return calendar; -// } -// -// /** -// * @since 0.0.3 new attribute periodDate -// * @deprecated -// */ -// @Override -// @Deprecated -// public int getPeriodMonth() { -// return getCalendar().get(Calendar.MONTH) + 1; -// } -// -// /** -// * @since 0.0.3 new attribute periodDate -// * @deprecated -// */ -// @Override -// @Deprecated -// public int getPeriodYear() { -// return getCalendar().get(Calendar.YEAR); -// } -// -// /** -// * @since 0.0.3 new attribute periodDate -// * @param month -// * @deprecated -// */ -// @Override -// @Deprecated -// public void setPeriodMonth(int month) { -// Calendar calendar = getCalendar(); -// calendar.set(Calendar.MONTH, month - 1); -// setPeriodDate(calendar.getTime()); -// } -// -// /** -// * @since 0.0.3 new attribute periodDate -// * @param year -// * @deprecated -// */ -// @Override -// @Deprecated -// public void setPeriodYear(int year) { -// Calendar calendar = getCalendar(); -// calendar.set(Calendar.YEAR, year); -// setPeriodDate(calendar.getTime()); -// } - /** * Method could be use to add some time for realTidesValue or * remove time with a negative nbDays. @@ -150,4 +91,18 @@ return dateFormat.format(getPeriodDate()); } + + @Override + public boolean isCurrentMonth() { + Calendar current = new GregorianCalendar(); + current.setTime(SuiviObsmerContext.getCurrentDate()); + Calendar calendar = new GregorianCalendar(); + calendar.setTime(getPeriodDate()); + + int currentMonth = current.get(Calendar.MONTH); + int month = calendar.get(Calendar.MONTH); + + return month == currentMonth; + } + } Modified: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/data/SuiviObsmerPropertyChangeListener.java =================================================================== --- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/data/SuiviObsmerPropertyChangeListener.java 2010-02-01 14:54:29 UTC (rev 304) +++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/data/SuiviObsmerPropertyChangeListener.java 2010-02-01 18:16:04 UTC (rev 305) @@ -23,6 +23,9 @@ import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; +import java.util.HashMap; +import java.util.Map; +import org.nuiton.topia.persistence.TopiaEntity; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -41,18 +44,38 @@ private static final Logger log = LoggerFactory.getLogger(SuiviObsmerPropertyChangeListener.class); - private boolean changed; + //private boolean changed; + private Map<String, Object> data; + @Override public void propertyChange(PropertyChangeEvent evt) { if (log.isDebugEnabled()) { - log.debug("property change"); + log.debug("property change : old = " + evt.getOldValue() + + " _ new = " + evt.getNewValue()); } - changed = true; + TopiaEntity entity = (TopiaEntity)evt.getSource(); + getData().put(entity.getTopiaId(), entity); } - public boolean isChanged() { - return changed; + protected Map<String, Object> getData() { + if (data == null) { + data = new HashMap<String, Object>(); + } + return data; } + public boolean hasChanged(String topiaId) { + + if (log.isTraceEnabled()) { + log.trace("data size : " + getData().size()); + } + + return getData().containsKey(topiaId); + } + + public void reset() { + data = null; + } + } Modified: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/SampleRowForm.java =================================================================== --- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/SampleRowForm.java 2010-02-01 14:54:29 UTC (rev 304) +++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/SampleRowForm.java 2010-02-01 18:16:04 UTC (rev 305) @@ -22,6 +22,7 @@ package fr.ifremer.suiviobsmer.ui.pages; import fr.ifremer.suiviobsmer.SuiviObsmerBusinessException; +import fr.ifremer.suiviobsmer.SuiviObsmerContext; import fr.ifremer.suiviobsmer.SuiviObsmerException; import fr.ifremer.suiviobsmer.entity.Boat; import fr.ifremer.suiviobsmer.entity.Company; @@ -39,6 +40,7 @@ import fr.ifremer.suiviobsmer.services.ServiceUser; import fr.ifremer.suiviobsmer.ui.base.GenericSelectModel; import fr.ifremer.suiviobsmer.ui.base.SuiviObsmerPage; +import fr.ifremer.suiviobsmer.ui.data.SuiviObsmerPropertyChangeListener; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; @@ -400,6 +402,18 @@ return new SimpleDateFormat("MM/yyyy"); } + public String getMonthStyle() { + String style = " "; + + Date current = SuiviObsmerContext.getCurrentDate(); + if (sampleMonth.isCurrentMonth()) { + style += "selected"; + } else if (current.after(sampleMonth.getPeriodDate())) { + style += "even"; + } + return style; + } + /** * Search a program from the list. * The program will be set from the one selected. If no selection, a new one will be set. @@ -482,6 +496,9 @@ private GenericSelectModel<Company> companySelectModel; private boolean cancel; + + @Persist + private SuiviObsmerPropertyChangeListener propertyChange; public SampleRow getSampleRow() throws SuiviObsmerException { if (sampleRow == null) { @@ -490,6 +507,10 @@ log.info("BUSINESS REQUEST [getSampleRow]"); } sampleRow = serviceSampling.getSampleRow(sampleRowId); + propertyChange = new SuiviObsmerPropertyChangeListener(); + for (SampleMonth month : sampleRow.getSampleMonth()) { + month.addPropertyChangeListener(SampleMonth.EXPECTED_TIDES_VALUE, propertyChange); + } } else { sampleRow = serviceSampling.getNewSampleRow(); } @@ -582,7 +603,13 @@ } for (SampleMonth month : getSampleMonths()) { - if (month.getExpectedTidesValue() < month.getRealTidesValue()) { + if (log.isTraceEnabled()) { + log.trace("month : " + month.formatMonth() + " _ " + + propertyChange.hasChanged(month.getTopiaId())); + } + + if (propertyChange.hasChanged(month.getTopiaId()) && + month.getExpectedTidesValue() < month.getRealTidesValue()) { sampleRowForm.recordError( "Il n'est pas possible de mettre moins de marées (" + month.getExpectedTidesValue() + ") " + "pour le mois " + getDateFormat().format(month.getPeriodDate()) + Modified: trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/SamplingPlan.java =================================================================== --- trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/SamplingPlan.java 2010-02-01 14:54:29 UTC (rev 304) +++ trunk/suiviobsmer-ui/src/main/java/fr/ifremer/suiviobsmer/ui/pages/SamplingPlan.java 2010-02-01 18:16:04 UTC (rev 305) @@ -23,6 +23,7 @@ import fr.ifremer.suiviobsmer.SuiviObsmerBusinessException; +import fr.ifremer.suiviobsmer.SuiviObsmerContext; import fr.ifremer.suiviobsmer.SuiviObsmerException; import fr.ifremer.suiviobsmer.bean.FacadeRow; import fr.ifremer.suiviobsmer.bean.ImportResults; @@ -340,7 +341,7 @@ } public String getMonthCurrentClass() { - return isCurrentMonth() ? "current" : ""; + return isCurrentMonth() ? "selected" : ""; } public DateFormat getDateFormat() { Modified: trunk/suiviobsmer-ui/src/main/webapp/SampleRowForm.tml =================================================================== --- trunk/suiviobsmer-ui/src/main/webapp/SampleRowForm.tml 2010-02-01 14:54:29 UTC (rev 304) +++ trunk/suiviobsmer-ui/src/main/webapp/SampleRowForm.tml 2010-02-01 18:16:04 UTC (rev 305) @@ -121,7 +121,7 @@ </tr> <tr> <td t:type="loop" class="acenter" volatile="true" t:source="sampleMonths" t:value="sampleMonth"> - <input t:type="textfield" class="width40" t:id="sampleMonth" value="sampleMonth.expectedTidesValue" /> + <input t:type="textfield" class="width40${monthStyle}" t:id="sampleMonth" value="sampleMonth.expectedTidesValue" /> </td> </tr> </table> Modified: trunk/suiviobsmer-ui/src/main/webapp/css/sampling.css =================================================================== --- trunk/suiviobsmer-ui/src/main/webapp/css/sampling.css 2010-02-01 14:54:29 UTC (rev 304) +++ trunk/suiviobsmer-ui/src/main/webapp/css/sampling.css 2010-02-01 18:16:04 UTC (rev 305) @@ -66,9 +66,9 @@ } /* Specific styles for table body rows */ -div#so-sampling table tbody td.current { +/*div#so-sampling table tbody td.current { background-color: yellow; -} +}*/ div#so-sampling table tbody td.facade { /* row facade */ font-size: 1.4em;
participants (1)
-
fdesbois@users.labs.libre-entreprise.org