Author: tchemit Date: 2012-08-10 15:54:11 +0200 (Fri, 10 Aug 2012) New Revision: 396 Url: http://forge.codelutin.com/repositories/revision/sammoa/396 Log: fixes #1399: Validation des esp?\195?\168ces dans le tableau des observations Added: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/observations/SpeciesCodeValidator.java Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/ReferentialService.java trunk/sammoa-ui-swing/pom.xml trunk/sammoa-ui-swing/src/main/resources/fr/ulr/sammoa/persistence/Observation-warning-validation.xml trunk/sammoa-ui-swing/src/main/resources/i18n/sammoa-ui-swing_en_GB.properties trunk/sammoa-ui-swing/src/main/resources/validators.xml Modified: trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/ReferentialService.java =================================================================== --- trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/ReferentialService.java 2012-08-10 12:56:49 UTC (rev 395) +++ trunk/sammoa-application/src/main/java/fr/ulr/sammoa/application/ReferentialService.java 2012-08-10 13:54:11 UTC (rev 396) @@ -57,6 +57,7 @@ import org.slf4j.LoggerFactory; import java.io.Reader; +import java.util.Collection; import java.util.Collections; import java.util.Iterator; import java.util.List; @@ -361,6 +362,24 @@ } } + public Collection<Species> getAllValidSpecies() { + TopiaContext transaction = persistence.beginTransaction(); + try { + + SpeciesDAO dao = SammoaDAOHelper.getSpeciesDAO(transaction); + + Collection<Species> result = + dao.findAllByLocalCreation(false); + return result; + + } catch (TopiaException e) { + throw new TopiaRuntimeException(e); + + } finally { + persistence.endTransaction(transaction); + } + } + public int importTransects(String campaignId, Iterable<Transect> transects) { int result = 0; Modified: trunk/sammoa-ui-swing/pom.xml =================================================================== --- trunk/sammoa-ui-swing/pom.xml 2012-08-10 12:56:49 UTC (rev 395) +++ trunk/sammoa-ui-swing/pom.xml 2012-08-10 13:54:11 UTC (rev 396) @@ -146,7 +146,7 @@ <dependency> <groupId>org.apache.struts.xwork</groupId> <artifactId>xwork-core</artifactId> - <scope>runtime</scope> + <scope>compile</scope> </dependency> <!-- transitive dependencies --> Added: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/observations/SpeciesCodeValidator.java =================================================================== --- trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/observations/SpeciesCodeValidator.java (rev 0) +++ trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/observations/SpeciesCodeValidator.java 2012-08-10 13:54:11 UTC (rev 396) @@ -0,0 +1,36 @@ +package fr.ulr.sammoa.ui.swing.observations; + +import fr.ulr.sammoa.application.SammoaContext; +import fr.ulr.sammoa.persistence.Species; +import fr.ulr.sammoa.ui.swing.SammoaUIContext; +import org.nuiton.validator.xwork2.field.CollectionFieldExpressionValidator; +import org.nuiton.validator.xwork2.field.CollectionUniqueKeyValidator; + +import com.opensymphony.xwork2.validator.ValidationException; +import java.util.Collection; + +/** + * To validate that a given species use a known {@link Species#getCode()}. + * + * @author tchemit <chemit@codelutin.com> + * @since 0.5 + */ +public class SpeciesCodeValidator extends CollectionFieldExpressionValidator { + + protected Collection<Species> species; + + @Override + protected Collection<?> getCollection(Object object) throws ValidationException { + if (species==null) { + SammoaContext appContext = SammoaUIContext.getUIContext().getAppContext(); + species = appContext.getReferentialService().getAllValidSpecies(); + } + return species; + } + + @Override + public String getValidatorType() { + return "speciesCode"; + } + +} Property changes on: trunk/sammoa-ui-swing/src/main/java/fr/ulr/sammoa/ui/swing/observations/SpeciesCodeValidator.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Modified: trunk/sammoa-ui-swing/src/main/resources/fr/ulr/sammoa/persistence/Observation-warning-validation.xml =================================================================== --- trunk/sammoa-ui-swing/src/main/resources/fr/ulr/sammoa/persistence/Observation-warning-validation.xml 2012-08-10 12:56:49 UTC (rev 395) +++ trunk/sammoa-ui-swing/src/main/resources/fr/ulr/sammoa/persistence/Observation-warning-validation.xml 2012-08-10 13:54:11 UTC (rev 396) @@ -44,6 +44,15 @@ <message>sammoa.validator.observation.species.required</message> </field-validator> + <field-validator type="speciesCode" short-circuit="true"> + <param name="keys">code</param> + <param name="mode">AT_LEAST_ONE</param> + <param name="useSensitiveContext">true</param> + <param name="expression"> + <![CDATA[ species.code == current.code ]]></param> + <message>sammoa.validator.observation.unknown.species##${code}</message> + </field-validator> + </field> <field name="decAngle"> 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 2012-08-10 12:56:49 UTC (rev 395) +++ trunk/sammoa-ui-swing/src/main/resources/i18n/sammoa-ui-swing_en_GB.properties 2012-08-10 13:54:11 UTC (rev 396) @@ -236,6 +236,7 @@ sammoa.validator.observation.podSize.invalidMin=The pod size must be higher than %1$s sammoa.validator.observation.species.required=The species is mandatory sammoa.validator.observation.swimDir.invalidRange=The swim direction must be between %1$s and %2$s degrees +sammoa.validator.observation.unknown.species=The species with code %s does not exist in referential sammoa.validator.region.code.required=The region code must be defined sammoa.validator.region.uniqueKey=The region code '%1$s' already exists sammoa.validator.route.cloudCover.invalidRange=The cloud cover must be between %1$s and %2$s (octa system \: 8 for covered, 0 for cleared) Modified: trunk/sammoa-ui-swing/src/main/resources/validators.xml =================================================================== --- trunk/sammoa-ui-swing/src/main/resources/validators.xml 2012-08-10 12:56:49 UTC (rev 395) +++ trunk/sammoa-ui-swing/src/main/resources/validators.xml 2012-08-10 13:54:11 UTC (rev 396) @@ -41,6 +41,7 @@ <validator name="fieldexpression" class="com.opensymphony.xwork2.validator.validators.FieldExpressionValidator"/> <validator name="email" class="com.opensymphony.xwork2.validator.validators.EmailValidator"/> + <validator name="speciesCode" class="fr.ulr.sammoa.ui.swing.observations.SpeciesCodeValidator"/> <validator name="collectionUniqueKey" class="org.nuiton.validator.xwork2.field.CollectionUniqueKeyValidator"/> <!--<validator name="url" class="com.opensymphony.xwork2.validator.validators.URLValidator"/>