Author: bleny Date: 2011-03-30 23:20:17 +0000 (Wed, 30 Mar 2011) New Revision: 1121 Log: enable historic for ObsDeb Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/entity/SampleRowLogImpl.java trunk/wao-business/src/test/java/fr/ifremer/wao/service/ObsDebTest.java trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/ObsDebSamplingPlan.java trunk/wao-ui/src/main/webapp/ObsDebSamplingPlan.tml trunk/wao-ui/src/main/webapp/SamplingPlan.tml Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/entity/SampleRowLogImpl.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/entity/SampleRowLogImpl.java 2011-03-30 18:18:56 UTC (rev 1120) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/entity/SampleRowLogImpl.java 2011-03-30 23:20:17 UTC (rev 1121) @@ -34,8 +34,10 @@ import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Collection; import java.util.Collections; import java.util.Date; +import java.util.LinkedList; import java.util.List; import java.util.Map; @@ -405,6 +407,65 @@ } } + protected void compareDays() { + if (oldRow == null) { + addChange("Le jour est " + WaoUtils.formatDate(newRow.getDay())); + } else { + if (DateUtil.getDifferenceInDays(oldRow.getDay(), newRow.getDay()) >= 1) { + addChange("L'observation est déplacée du " + WaoUtils.formatDate(oldRow.getDay()) + + " au " + WaoUtils.formatDate(newRow.getDay())); + } + } + } + + protected void compareObservers() { + Collection<WaoUser> oldObservers; + Collection<WaoUser> newObservers = newRow.getObservers(); + + if (oldRow == null) { + oldObservers = Collections.emptyList(); + } else { + oldObservers = oldRow.getObservers(); + } + + List<String> removedObservers = new LinkedList<String>(); + List<String> addedObservers = new LinkedList<String>(); + + for (WaoUser oldObserver : oldObservers) { + if ( ! newObservers.contains(oldObserver)) { + removedObservers.add(oldObserver.getFullName()); + } + } + + for (WaoUser newObserver : newObservers) { + if ( ! oldObservers.contains(newObserver)) { + addedObservers.add(newObserver.getFullName()); + } + } + + if (oldRow == null) { + if ( ! newObservers.isEmpty()) { + addChange("Les observateurs sont " + StringUtils.join(newObservers, ", ")); + } + } else { + if ( ! oldObservers.isEmpty()) { + addChange("Les observateurs dissociés de la ligne sont " + StringUtils.join(removedObservers, ", ")); + } + if ( ! newObservers.isEmpty()) { + addChange("Les observateurs associés à la ligne sont " + StringUtils.join(addedObservers, ", ")); + } + } + } + + protected void compareObservationUnits() { + if (oldRow == null || oldRow.getObservationUnit() == null) { + addChange("L'unité d'observation associée est " + newRow.getObservationUnit().getDescription()); + } else if ( ! newRow.getObservationUnit().equals(oldRow.getObservationUnit())) { + addChange("L'unité d'observation passe de '" + oldRow.getObservationUnit().getDescription() + + " à " + newRow.getObservationUnit().getDescription()); + } + } + /** Compare a sample row before and after its modifications and generate * a differences summary and save it by setting log text. */ @@ -449,7 +510,9 @@ compareFishingZones(); } if (ObsProgram.OBSDEB.equals(obsProgram)) { - + compareDays(); + compareObservationUnits(); + compareObservers(); } compareCompanies(); Modified: trunk/wao-business/src/test/java/fr/ifremer/wao/service/ObsDebTest.java =================================================================== --- trunk/wao-business/src/test/java/fr/ifremer/wao/service/ObsDebTest.java 2011-03-30 18:18:56 UTC (rev 1120) +++ trunk/wao-business/src/test/java/fr/ifremer/wao/service/ObsDebTest.java 2011-03-30 23:20:17 UTC (rev 1121) @@ -74,6 +74,8 @@ if (josh == null) { josh = new WaoUserImpl(); josh.setLogin("josh"); + josh.setFirstName("Joshua"); + josh.setLastName("B."); josh.setPassword(manager.getContext().encodeString("mdp")); josh.setActive(true); serviceUser = manager.getServiceUser(); @@ -213,6 +215,18 @@ samplingFilter = serviceSampling.newSamplingFilter(joshAsCoordinator()); SampleRow row2011_889 = serviceSampling.getSampleRowByCode(joshAsCoordinator(), "2011_889"); Assert.assertEquals(1, row2011_889.sizeObservers()); + + // adding an observer must add a log entry + Assert.assertEquals(1, row2011_889.sizeSampleRowLog()); + + // the text of the log entry itself + String logEntry = row2011_889.getSampleRowLog().get(0).getLogText(); + + if (log.isDebugEnabled()) { + log.debug("log entry after update on observers is: '" + logEntry + "'"); + } + + Assert.assertTrue("added observer is mentioned in the log", logEntry.contains("Joshua")); } } Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/ObsDebSamplingPlan.java =================================================================== --- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/ObsDebSamplingPlan.java 2011-03-30 18:18:56 UTC (rev 1120) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/ObsDebSamplingPlan.java 2011-03-30 23:20:17 UTC (rev 1121) @@ -23,13 +23,16 @@ */ package fr.ifremer.wao.ui.pages; +import fr.ifremer.wao.WaoBusinessException; import fr.ifremer.wao.WaoException; import fr.ifremer.wao.bean.ConnectedUser; import fr.ifremer.wao.bean.ObsProgram; import fr.ifremer.wao.entity.SampleRow; +import fr.ifremer.wao.io.ImportResults; import fr.ifremer.wao.service.ServiceSampling; import fr.ifremer.wao.ui.base.SamplingFilterManager; import fr.ifremer.wao.ui.data.ExportStreamResponse; +import fr.ifremer.wao.ui.data.ImportEngine; import fr.ifremer.wao.ui.data.RequiresAuthentication; import fr.ifremer.wao.ui.data.SampleRowDataSource; import fr.ifremer.wao.ui.services.SampleRowModelFactory; @@ -102,8 +105,19 @@ return obsdebSamplingPlanModel; } - /********** ACTIONS *********/ + /********** IMPORT / EXPORT *********/ + public ImportEngine getSamplingPlanImportEngine() { + return new ImportEngine() { + @Override + public ImportResults execute(InputStream input) + throws WaoException, WaoBusinessException { + ImportResults results = serviceSampling.importSamplingPlanCsv(input, connectedUser); + return results; + } + }; + } + StreamResponse onActionFromExportSamplingPlan() { return new ExportStreamResponse("wao-echantillonnage-obsdeb") { @Override Modified: trunk/wao-ui/src/main/webapp/ObsDebSamplingPlan.tml =================================================================== --- trunk/wao-ui/src/main/webapp/ObsDebSamplingPlan.tml 2011-03-30 18:18:56 UTC (rev 1120) +++ trunk/wao-ui/src/main/webapp/ObsDebSamplingPlan.tml 2011-03-30 23:20:17 UTC (rev 1121) @@ -40,6 +40,8 @@ t:filterManager="filterManager" t:legendMsg="${message:wao.ui.misc.advancedSearch}"/> + <t:importFieldSet t:label="${message:wao.ui.import.samplingPlanLabel}" t:engine="samplingPlanImportEngine" /> + <div t:type="grid" t:source="sampleRows" t:row="sampleRow" t:model="obsdebSamplingPlanModel" t:rowsPerPage="50"> <!-- code --> <p:codeHeader> @@ -71,7 +73,9 @@ ${message:wao.ui.samplingPlan.actions} </p:actionsHeader> <p:actionsCell> - pas d'actions + <a t:type="pagelink" t:page="sampleRowHistoric" t:context="sampleRow.code" title="${format:wao.ui.sampleRowLog.title=sampleRow.code}"> + <img src="${asset:context:}/img/clock-22px.png" alt="${format:wao.ui.sampleRowLog.title=sampleRow.code}" /> + </a> </p:actionsCell> </div> Modified: trunk/wao-ui/src/main/webapp/SamplingPlan.tml =================================================================== --- trunk/wao-ui/src/main/webapp/SamplingPlan.tml 2011-03-30 18:18:56 UTC (rev 1120) +++ trunk/wao-ui/src/main/webapp/SamplingPlan.tml 2011-03-30 23:20:17 UTC (rev 1121) @@ -77,11 +77,11 @@ </div> </div> <div> - ${format:wao.ui.form.periodFromTo=dateFormat.format(period.fromDate),dateFormat.format(period.thruDate)} - - <a t:type="actionlink" t:id="showFilters" t:zone="so-sampling-filters" class="display-form"> - ${message:wao.ui.misc.advancedSearch} - </a> + ${format:wao.ui.form.periodFromTo=dateFormat.format(period.fromDate),dateFormat.format(period.thruDate)} + + <a t:type="actionlink" t:id="showFilters" t:zone="so-sampling-filters" class="display-form"> + ${message:wao.ui.misc.advancedSearch} + </a> </div> <!--FIXME sletellier 20110316 : visible on parameter dont work in this case....-->