r700 - in trunk/sammoa-ui-swing/src/main: java/fr/ulr/sammoa/ui/swing java/fr/ulr/sammoa/ui/swing/flight/effort java/fr/ulr/sammoa/ui/swing/util resources/fr/ulr/sammoa/persistence resources/i18n
Author: sbavencoff Date: 2014-06-03 18:02:35 +0200 (Tue, 03 Jun 2014) New Revision: 700 Url: http://forge.codelutin.com/projects/sammoa/repository/revisions/700 Log: refs #4791 : check if a last geopoint after a observation should not be older than five seconds Added: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/util/ValidationControl.java Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/MainUIHandler.java trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/effort/EffortPanelHandler.java trunk/sammoa-ui-swing/src/main/resources/fr/ulr/sammoa/persistence/Observation-validation-error-validation.xml trunk/sammoa-ui-swing/src/main/resources/i18n/sammoa-ui-swing_en_GB.properties Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/MainUIHandler.java =================================================================== --- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/MainUIHandler.java 2014-06-03 13:59:35 UTC (rev 699) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/MainUIHandler.java 2014-06-03 16:02:35 UTC (rev 700) @@ -24,6 +24,7 @@ */ package fr.ulr.sammoa.ui.swing; +import com.opensymphony.xwork2.util.ValueStack; import fr.ulr.sammoa.application.SammoaConfig; import fr.ulr.sammoa.application.SammoaContext; import fr.ulr.sammoa.application.device.DeviceManager; @@ -45,11 +46,13 @@ import fr.ulr.sammoa.ui.swing.io.output.application.ExportApplicationUI; import fr.ulr.sammoa.ui.swing.io.output.map.ExportMapUI; import fr.ulr.sammoa.ui.swing.util.SammoaUtil; +import fr.ulr.sammoa.ui.swing.util.ValidationControl; import jaxx.runtime.SwingUtil; import jaxx.runtime.swing.AboutPanel; import jaxx.runtime.swing.ErrorDialogUI; import jaxx.runtime.swing.config.ConfigUIHelper; import org.nuiton.config.ApplicationConfig; +import org.nuiton.validator.xwork2.XWork2ValidatorUtil; import org.nuiton.widget.SwingSession; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -100,7 +103,11 @@ @Override public void beforeInitUI() { - // nothing to do + // init validator value stack + ValueStack valueStack = XWork2ValidatorUtil.getSharedValueStack(); + + valueStack.push(ValidationControl.getInstance()); + } @Override Modified: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/effort/EffortPanelHandler.java =================================================================== --- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/effort/EffortPanelHandler.java 2014-06-03 13:59:35 UTC (rev 699) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/flight/effort/EffortPanelHandler.java 2014-06-03 16:02:35 UTC (rev 700) @@ -69,6 +69,7 @@ import fr.ulr.sammoa.ui.swing.util.TextCellEditor; import fr.ulr.sammoa.ui.swing.util.TimeCellEditor; import fr.ulr.sammoa.ui.swing.util.ValidRowHighlightPredicate; +import fr.ulr.sammoa.ui.swing.util.ValidationControl; import jaxx.runtime.JAXXUtil; import jaxx.runtime.SwingUtil; import jaxx.runtime.swing.JAXXDatePicker; @@ -557,6 +558,8 @@ } } + ValidationControl.getInstance().setGeoPoints(getModel().getGeoPoints()); + BeanListValidator<Observation> validator = ui.getObservationValidator(); ObservationValidatorDataLocator dataLocator = new ObservationValidatorDataLocator(); Added: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/util/ValidationControl.java =================================================================== --- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/util/ValidationControl.java (rev 0) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/util/ValidationControl.java 2014-06-03 16:02:35 UTC (rev 700) @@ -0,0 +1,41 @@ +package fr.ulr.sammoa.ui.swing.util; + +import com.google.common.base.Function; +import com.google.common.collect.Collections2; +import com.google.common.collect.Sets; +import fr.ulr.sammoa.persistence.GeoPoint; + +import java.util.Collection; +import java.util.Date; +import java.util.SortedSet; + +/** + * @author Sylvain Bavencoff <bavencoff@codelutin.com> + */ +public class ValidationControl { + + protected static ValidationControl INSTANCE = new ValidationControl(); + + public static ValidationControl getInstance() { + return INSTANCE; + } + + private ValidationControl() {} + + protected SortedSet<Date> geoPointDates; + + public boolean validateLastGeoPointIsNotOlder(Date date) { + return geoPointDates.contains(date) || date.getTime() - geoPointDates.headSet(date).last().getTime() < 5000 ; + } + + public void setGeoPoints(Collection<GeoPoint> geoPoints) { + geoPointDates = Sets.newTreeSet(); + geoPointDates.addAll(Collections2.transform(geoPoints, new Function<GeoPoint, Date>() { + @Override + public Date apply(GeoPoint input) { + return input.getRecordTime(); + } + })); + } + +} Modified: trunk/sammoa-ui-swing/src/main/resources/fr/ulr/sammoa/persistence/Observation-validation-error-validation.xml =================================================================== --- trunk/sammoa-ui-swing/src/main/resources/fr/ulr/sammoa/persistence/Observation-validation-error-validation.xml 2014-06-03 13:59:35 UTC (rev 699) +++ trunk/sammoa-ui-swing/src/main/resources/fr/ulr/sammoa/persistence/Observation-validation-error-validation.xml 2014-06-03 16:02:35 UTC (rev 700) @@ -29,6 +29,14 @@ "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd"> <validators> + <field name="observationTime"> + <field-validator type="fieldexpression"> + <param name="expression"> + <![CDATA[ validateLastGeoPointIsNotOlder(observationTime) ]]></param> + <message>sammoa.validator.observation.podSize.geoPointOlder</message> + </field-validator> + </field> + <field name="podSize"> <field-validator type="int" short-circuit="true"> Modified: trunk/sammoa-ui-swing/src/main/resources/i18n/sammoa-ui-swing_en_GB.properties =================================================================== --- trunk/sammoa-ui-swing/src/main/resources/i18n/sammoa-ui-swing_en_GB.properties 2014-06-03 13:59:35 UTC (rev 699) +++ trunk/sammoa-ui-swing/src/main/resources/i18n/sammoa-ui-swing_en_GB.properties 2014-06-03 16:02:35 UTC (rev 700) @@ -302,6 +302,7 @@ sammoa.validator.observation.behaviour.unkownValue=The behaviour must be one of this value \: SW (normal), MI (milling), BR (breaching), LO (logging), FE (feeding), FA (feeding aggregation), SB (following boat), OT (other) sammoa.validator.observation.cue.unkownValue=The cue must be between 2 and 9 or U for underwater and A for surface sammoa.validator.observation.decAngle.invalidRange=The angle must be between %1$s and %2$s degrees or for the band \: 1 (in the band), 2 (outside the band), 3 (put in the band) +sammoa.validator.observation.podSize.geoPointOlder=The previous geopoint should not be older than five seconds sammoa.validator.observation.podSize.invalidMin=The pod size must be higher than %1$s sammoa.validator.observation.position.outOfDate=capture delay is out of date sammoa.validator.observation.species.required=The species is mandatory
participants (1)
-
sbavencoffļ¼ users.forge.codelutin.com