Author: bleny Date: 2011-05-05 15:09:06 +0000 (Thu, 05 May 2011) New Revision: 1260 Log: add possibility to mark row as blank ; show what is realizes in sampling plan Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java trunk/wao-business/src/main/java/fr/ifremer/wao/WaoMigrationCallBack.java trunk/wao-business/src/main/java/fr/ifremer/wao/entity/SampleRowLogImpl.java trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/SamplingPlanImportExportModel.java trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSamplingImpl.java trunk/wao-business/src/main/xmi/wao.zargo trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/ObsDebSamplingPlan.java trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SampleRowForm.java trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/SampleRowModelFactory.java trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/pages/SampleRowForm_fr.properties trunk/wao-ui/src/main/webapp/ObsDebSamplingPlan.tml trunk/wao-ui/src/main/webapp/SampleRowForm.tml Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java 2011-05-05 13:39:39 UTC (rev 1259) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java 2011-05-05 15:09:06 UTC (rev 1260) @@ -869,4 +869,10 @@ protected void addTokensToUserProfiles_3_0(List<String> queries) { queries.add("ALTER TABLE UserProfile ADD token CHARACTER VARYING(50);"); } + + @Override + protected void addObsDebToSampleRows_3_0(List<String> queries) { + queries.add("ALTER TABLE SampleRow ADD blankRow BOOLEAN"); + queries.add("UPDATE TABLE SampleRow SET blankRow=FALSE"); + } } Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/WaoMigrationCallBack.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/WaoMigrationCallBack.java 2011-05-05 13:39:39 UTC (rev 1259) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/WaoMigrationCallBack.java 2011-05-05 15:09:06 UTC (rev 1260) @@ -143,6 +143,8 @@ protected abstract void addTokensToUserProfiles_3_0(List<String> queries); + protected abstract void addObsDebToSampleRows_3_0(List<String> queries); + protected static final Version[] VERSIONS = new Version[] { VersionUtil.valueOf("1.0"), VersionUtil.valueOf("1.1"), @@ -505,6 +507,8 @@ addTokensToUserProfiles_3_0(queries); + addObsDebToSampleRows_3_0(queries); + String[] strings = queries.toArray(new String[queries.size()]); executeSQL(tx, showSql, showProgression, strings); } 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-05-05 13:39:39 UTC (rev 1259) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/entity/SampleRowLogImpl.java 2011-05-05 15:09:06 UTC (rev 1260) @@ -26,6 +26,7 @@ import fr.ifremer.wao.WaoUtils; import fr.ifremer.wao.bean.ObsProgram; +import org.apache.commons.lang.BooleanUtils; import org.apache.commons.lang.ObjectUtils; import org.apache.commons.lang.StringUtils; import org.nuiton.util.DateUtil; @@ -470,6 +471,16 @@ } } + private void compareBlankRows() { + if (oldRow == null || oldRow.isBlankRow() != newRow.isBlankRow()) { + if (newRow.isBlankRow()) { + addChange("La ligne devient réalisée sans contacts"); + } else { + addChange("La ligne devient n'est plus réalisée sans contacts"); + } + } + } + /** Compare a sample row before and after its modifications and generate * a differences summary and save it by setting log text. */ @@ -517,6 +528,7 @@ compareDays(); compareObservationUnits(); compareObservers(); + compareBlankRows(); } compareCompanies(); Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/SamplingPlanImportExportModel.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/SamplingPlanImportExportModel.java 2011-05-05 13:39:39 UTC (rev 1259) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/io/csv2/models/SamplingPlanImportExportModel.java 2011-05-05 15:09:06 UTC (rev 1260) @@ -236,6 +236,7 @@ modelBuilder.newColumnForImportExport("REGION_IFREMER_COD", regionCodeGetterSetter); modelBuilder.newColumnForImportExport("UNITE_OBSERVATION_COD", SampleRow.PROPERTY_OBSERVATION_UNIT, observationUnitParser); modelBuilder.newColumnForImportExport("OBSERVATEURS", SampleRow.PROPERTY_OBSERVERS, new UsersParserFormatter(allWaoUsers)); + modelBuilder.newColumnForImportExport("LIGNE_SANS_CONTACTS", SampleRow.PROPERTY_BLANK_ROW, Common.BOOLEAN); } @Override Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSamplingImpl.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSamplingImpl.java 2011-05-05 13:39:39 UTC (rev 1259) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSamplingImpl.java 2011-05-05 15:09:06 UTC (rev 1260) @@ -388,7 +388,8 @@ SampleRow.PROPERTY_DAY, SampleRow.PROPERTY_GROUP_NAME, SampleRow.PROPERTY_OBSERVERS, - SampleRow.PROPERTY_OBSERVATION_UNIT); + SampleRow.PROPERTY_OBSERVATION_UNIT, + SampleRow.PROPERTY_BLANK_ROW); } else { oldRow.clearSampleMonth(); oldRow.addAllSampleMonth(row.getSampleMonth()); Modified: trunk/wao-business/src/main/xmi/wao.zargo =================================================================== (Binary files differ) 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-05-05 13:39:39 UTC (rev 1259) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/ObsDebSamplingPlan.java 2011-05-05 15:09:06 UTC (rev 1260) @@ -29,6 +29,7 @@ import fr.ifremer.wao.bean.ObsProgram; import fr.ifremer.wao.entity.SampleRow; import fr.ifremer.wao.io.ImportResults; +import fr.ifremer.wao.service.ServiceContact; import fr.ifremer.wao.service.ServiceSampling; import fr.ifremer.wao.ui.components.SamplingFilterComponent; import fr.ifremer.wao.ui.data.ExportStreamResponse; @@ -46,6 +47,7 @@ import org.apache.tapestry5.beaneditor.BeanModel; import org.apache.tapestry5.corelib.components.Zone; import org.apache.tapestry5.grid.GridDataSource; +import org.apache.tapestry5.ioc.Messages; import org.apache.tapestry5.ioc.annotations.Inject; import org.apache.tapestry5.services.BeanModelSource; import org.slf4j.Logger; @@ -72,6 +74,12 @@ @Inject private ServiceSampling serviceSampling; + @Inject + private ServiceContact serviceContact; + + @Inject + private Messages messages; + private DateFormat dateFormat; public DateFormat getDateFormat() { @@ -142,7 +150,9 @@ public BeanModel<SampleRow> getObsdebSamplingPlanModel() { if (obsdebSamplingPlanModel == null) { - SampleRowModelFactory sampleRowModelFactory = new SampleRowModelFactory(beanModelSource, resources, connectedUser); + SampleRowModelFactory sampleRowModelFactory = + new SampleRowModelFactory(beanModelSource, resources, connectedUser, + messages, serviceContact); obsdebSamplingPlanModel = sampleRowModelFactory.newModel(); } return obsdebSamplingPlanModel; Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SampleRowForm.java =================================================================== --- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SampleRowForm.java 2011-05-05 13:39:39 UTC (rev 1259) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SampleRowForm.java 2011-05-05 15:09:06 UTC (rev 1260) @@ -623,15 +623,18 @@ if (sampleRowModel == null) { sampleRowModel = beanModelSource.createEditModel(SampleRow.class, resources.getMessages()); if (user.isObsDeb()) { - sampleRowModel.include("comment"); + sampleRowModel.include(SampleRow.PROPERTY_COMMENT, SampleRow.PROPERTY_BLANK_ROW); } else { - sampleRowModel.add("company", null); + sampleRowModel.add(SampleRow.PROPERTY_COMPANY, null); sampleRowModel.add("boats", null); if (user.getProfile().getObsProgram() == ObsProgram.OBSMER) { - sampleRowModel.include("code", "company", "nbObservants", "averageTideTime", "boats", "comment"); + sampleRowModel.include(SampleRow.PROPERTY_CODE, SampleRow.PROPERTY_COMPANY, + SampleRow.PROPERTY_NB_OBSERVANTS, SampleRow.PROPERTY_AVERAGE_TIDE_TIME, "boats", + SampleRow.PROPERTY_COMMENT); } if (user.getProfile().getObsProgram() == ObsProgram.OBSVENTE) { - sampleRowModel.include("code", "company", "boats", "comment"); + sampleRowModel.include(SampleRow.PROPERTY_CODE, SampleRow.PROPERTY_COMPANY, "boats", + SampleRow.PROPERTY_COMMENT); sampleRowModel.add("samplingStrategy"); } } Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/SampleRowModelFactory.java =================================================================== --- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/SampleRowModelFactory.java 2011-05-05 13:39:39 UTC (rev 1259) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/SampleRowModelFactory.java 2011-05-05 15:09:06 UTC (rev 1260) @@ -25,14 +25,18 @@ import fr.ifremer.wao.WaoUtils; import fr.ifremer.wao.bean.ConnectedUser; +import fr.ifremer.wao.bean.ContactFilter; +import fr.ifremer.wao.bean.ContactFilterImpl; import fr.ifremer.wao.entity.Company; import fr.ifremer.wao.entity.Contact; import fr.ifremer.wao.entity.SampleRow; import fr.ifremer.wao.entity.WaoUser; +import fr.ifremer.wao.service.ServiceContact; import org.apache.commons.collections.CollectionUtils; import org.apache.tapestry5.ComponentResources; import org.apache.tapestry5.PropertyConduit; import org.apache.tapestry5.beaneditor.BeanModel; +import org.apache.tapestry5.ioc.Messages; import org.apache.tapestry5.services.BeanModelSource; import org.nuiton.util.StringUtil; @@ -60,12 +64,20 @@ protected ConnectedUser connectedUser; + protected Messages messages; + protected BeanModel<SampleRow> model; - public SampleRowModelFactory(BeanModelSource beanModelSource, ComponentResources resources, ConnectedUser connectedUser) { + protected ServiceContact serviceContact; + + public SampleRowModelFactory(BeanModelSource beanModelSource, ComponentResources resources, + ConnectedUser connectedUser, Messages messages, + ServiceContact serviceContact) { this.beanModelSource = beanModelSource; this.resources = resources; this.connectedUser = connectedUser; + this.messages = messages; + this.serviceContact = serviceContact; } /** add a property in the model and make it not sortable @@ -149,6 +161,29 @@ }); } add(SampleRow.PROPERTY_OBSERVATION_UNIT); + add("actual", new SampleRowReaderPropertyConduit() { + + protected String yes = messages.get("wao.ui.misc.yes"); + protected String no = messages.get("wao.ui.misc.no"); + protected ContactFilter contactFilter = new ContactFilterImpl(); + + @Override + public String getValue(SampleRow sampleRow) { + String value; + if (sampleRow.isBlankRow()) { + value = yes; + } else { + contactFilter.setSampleRow(sampleRow); + int nbContacts = serviceContact.getNbContacts(contactFilter); + if (nbContacts == 0) { + value = no; + } else { + value = yes + " (" + nbContacts + ")"; + } + } + return value; + } + }); add(SampleRow.PROPERTY_COMMENT); add(SampleRow.PROPERTY_OBSERVERS, new SampleRowReaderPropertyConduit() { Modified: trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/pages/SampleRowForm_fr.properties =================================================================== --- trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/pages/SampleRowForm_fr.properties 2011-05-05 13:39:39 UTC (rev 1259) +++ trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/pages/SampleRowForm_fr.properties 2011-05-05 15:09:06 UTC (rev 1260) @@ -47,6 +47,7 @@ averageTideTime-label: Dur\u00e9e moyenne d'une mar\u00e9e comment-label: Commentaire sur la ligne samplingStrategy-label: Stat\u00e9gie d'\u00e9chantillonnage +blankRow-label: Journ\u00e9e r\u00e9alis\u00e9e (sans contacts) # FORM errors-banner: La ligne n'a pas \u00e9t\u00e9 sauvegard\u00e9 \u00e0 cause des erreurs suivantes : Modified: trunk/wao-ui/src/main/webapp/ObsDebSamplingPlan.tml =================================================================== --- trunk/wao-ui/src/main/webapp/ObsDebSamplingPlan.tml 2011-05-05 13:39:39 UTC (rev 1259) +++ trunk/wao-ui/src/main/webapp/ObsDebSamplingPlan.tml 2011-05-05 15:09:06 UTC (rev 1260) @@ -124,6 +124,11 @@ ${message:wao.ui.field.SampleRow.observers} </p:observersHeader> + <!-- observers --> + <p:actualHeader> + ${message:wao.ui.samplingPlan.actual} + </p:actualHeader> + <!-- comment --> <p:commentHeader> ${message:wao.ui.field.SampleRow.comment} Modified: trunk/wao-ui/src/main/webapp/SampleRowForm.tml =================================================================== --- trunk/wao-ui/src/main/webapp/SampleRowForm.tml 2011-05-05 13:39:39 UTC (rev 1259) +++ trunk/wao-ui/src/main/webapp/SampleRowForm.tml 2011-05-05 15:09:06 UTC (rev 1260) @@ -269,6 +269,10 @@ <t:label t:for="samplingStrategy" /> <input t:type="select" t:id="samplingStrategy" value="sampleRow.samplingStrategy" t:validate="required" /> </p:samplingStrategy> + <p:blankRow> + <t:label t:for="blankRow" /> + <input t:type="checkbox" t:id="blankRow" value="sampleRow.blankRow" /> + </p:blankRow> </t:beaneditor> </div> </fieldset>