This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository observe. See http://git.codelutin.com/observe.git commit efafe24c04dd581a15a1d62c7dfc3a5458b1b5cf Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Mon Nov 9 16:48:52 2015 +0100 migartion du validateur sur les tailles et poids des espèces (refs 7706) --- .../ird/observe/validation/ValidationContext.java | 20 +++++++++++++ .../dto/AbstractEspeceFieldDtoValidator.java | 34 +++++++++++----------- ...TargetCatchDto-n1-update-warning-validation.xml | 4 +-- ...argetLengthDto-n1-update-warning-validation.xml | 4 +-- ...choolEstimateDto-n1-update-error-validation.xml | 2 +- .../v1/ReferentialServiceController.java | 6 ++++ .../services/service/ReferentialService.java | 4 +++ .../services/service/ReferentialServiceTopia.java | 12 ++++++++ 8 files changed, 64 insertions(+), 22 deletions(-) diff --git a/observe-application-swing/src/main/java/fr/ird/observe/validation/ValidationContext.java b/observe-application-swing/src/main/java/fr/ird/observe/validation/ValidationContext.java index e34e5b9..913c026 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/validation/ValidationContext.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/validation/ValidationContext.java @@ -28,11 +28,13 @@ import fr.ird.observe.services.dto.IdDto; import fr.ird.observe.services.dto.longline.ActivityLonglineDto; import fr.ird.observe.services.dto.longline.SetLonglineDto; import fr.ird.observe.services.dto.longline.TripLonglineDto; +import fr.ird.observe.services.dto.referential.SpeciesDto; import fr.ird.observe.services.dto.seine.ActivitySeineDto; import fr.ird.observe.services.dto.seine.FloatingObjectDto; import fr.ird.observe.services.dto.seine.RouteDto; import fr.ird.observe.services.dto.seine.SetSeineDto; import fr.ird.observe.services.dto.seine.TripSeineDto; +import fr.ird.observe.services.service.ReferentialService; import fr.ird.observe.services.service.longline.ActivityLonglineService; import fr.ird.observe.services.service.longline.SetLonglineService; import fr.ird.observe.services.service.longline.TripLonglineService; @@ -141,6 +143,16 @@ public class ValidationContext { } }; + private static final DtoSupplier<SpeciesDto> SPECIES_DTO_SUPPLIER = new DtoSupplier<SpeciesDto>() { + + @Override + public SpeciesDto get(ObserveSwingDataSource dataSource, String id) { + ReferentialService service = dataSource.newService(ReferentialService.class); + SpeciesDto dto = service.loadSpecies(id); + return dto; + } + }; + protected DataContext dataContext; protected Map<String, Object> cache; @@ -253,6 +265,14 @@ public class ValidationContext { return result; } + public SpeciesDto getSpecies(String speciesId) { + SpeciesDto result = null; + if (speciesId != null) { + result = getDto(SPECIES_DTO_SUPPLIER, speciesId); + } + return result; + } + public List<?> getEditingReferentielList() { return referentielList; } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/validation/validator/dto/AbstractEspeceFieldDtoValidator.java b/observe-application-swing/src/main/java/fr/ird/observe/validation/validator/dto/AbstractEspeceFieldDtoValidator.java index 542966b..fbee473 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/validation/validator/dto/AbstractEspeceFieldDtoValidator.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/validation/validator/dto/AbstractEspeceFieldDtoValidator.java @@ -218,19 +218,21 @@ public abstract class AbstractEspeceFieldDtoValidator extends FieldValidatorSupp } // l'species associée - ReferenceDto<SpeciesDto> species = (ReferenceDto<SpeciesDto>) getFieldValue(speciesFieldName, object); + ReferenceDto<SpeciesDto> speciesRef = (ReferenceDto<SpeciesDto>) getFieldValue(speciesFieldName, object); - if (species == null) { + if (speciesRef == null) { // pas de species trouvée, on ne peut pas valider return; } if (log.isDebugEnabled()) { - log.debug("Espece to validate : " + species); + log.debug("Espece to validate : " + speciesRef); } - Bound bound = getBound(species); + SpeciesDto speciesDto = (SpeciesDto) getValueStack().findValue("getSpecies(\"" + speciesRef.getId() + "\")"); + + Bound bound = getBound(speciesDto); if (log.isDebugEnabled()) { log.debug("Espece Bound to validate : " + bound); @@ -264,19 +266,17 @@ public abstract class AbstractEspeceFieldDtoValidator extends FieldValidatorSupp } } - protected Bound getBound(ReferenceDto<SpeciesDto> referentiel) { - - // FIXME il faut mettre en place un cache dans la valueStack de la validation pour recupéré les SpeciesDto -// Float min = getBoundMin(referentiel); -// Float max = getBoundMax(referentiel); -// -// if (min == null || min == 0 || max == null || max == 0) { -// // l'une des deux borne n'est pas définie, on ne peut pas utiliser -// // la données -// return null; -// } -// return new Bound(min, max); - return null; + protected Bound getBound(SpeciesDto species) { + + Float min = getBoundMin(species); + Float max = getBoundMax(species); + + if (min == null || min == 0 || max == null || max == 0) { + // l'une des deux borne n'est pas définie, on ne peut pas utiliser + // la données + return null; + } + return new Bound(min, max); } protected boolean validateBound(Float value, diff --git a/observe-application-swing/src/main/resources/fr/ird/observe/services/dto/seine/NonTargetCatchDto-n1-update-warning-validation.xml b/observe-application-swing/src/main/resources/fr/ird/observe/services/dto/seine/NonTargetCatchDto-n1-update-warning-validation.xml index 1cfbfdc..fc038c0 100644 --- a/observe-application-swing/src/main/resources/fr/ird/observe/services/dto/seine/NonTargetCatchDto-n1-update-warning-validation.xml +++ b/observe-application-swing/src/main/resources/fr/ird/observe/services/dto/seine/NonTargetCatchDto-n1-update-warning-validation.xml @@ -63,7 +63,7 @@ </field-validator> <!-- validation du weight par borne --> - <field-validator type="species_weight"> + <field-validator type="species_weightDto"> <param name="ratio">1.0</param> <message>validator.nonTargetCatch.bound.meanWeight##${min}##${max}</message> </field-validator> @@ -81,7 +81,7 @@ </field-validator> <!-- validation de la taille par borne --> - <field-validator type="species_length"> + <field-validator type="species_lengthDto"> <param name="ratio">1.0</param> <message>validator.nonTargetCatch.bound.meanLength##${min}##${max}</message> </field-validator> diff --git a/observe-application-swing/src/main/resources/fr/ird/observe/services/dto/seine/NonTargetLengthDto-n1-update-warning-validation.xml b/observe-application-swing/src/main/resources/fr/ird/observe/services/dto/seine/NonTargetLengthDto-n1-update-warning-validation.xml index e38c3f0..22d42a2 100644 --- a/observe-application-swing/src/main/resources/fr/ird/observe/services/dto/seine/NonTargetLengthDto-n1-update-warning-validation.xml +++ b/observe-application-swing/src/main/resources/fr/ird/observe/services/dto/seine/NonTargetLengthDto-n1-update-warning-validation.xml @@ -29,7 +29,7 @@ <field name="length"> <!-- validation de la taille par borne --> - <field-validator type="species_length"> + <field-validator type="species_lengthDto"> <!--<param name="fieldName">length</param>--> <param name="ratio">1.0</param> <message>validator.nonTargetSample.bound.length##${min}##${max}</message> @@ -40,7 +40,7 @@ <field name="weight"> <!-- validation du weight par borne (uniquement pour mode saisie par individus) --> - <field-validator type="species_weight"> + <field-validator type="species_weightDto"> <param name="ratio">1.0</param> <param name="expression"> <![CDATA[ acquisitionMode == 1 ]]> diff --git a/observe-application-swing/src/main/resources/fr/ird/observe/services/dto/seine/SchoolEstimateDto-n1-update-error-validation.xml b/observe-application-swing/src/main/resources/fr/ird/observe/services/dto/seine/SchoolEstimateDto-n1-update-error-validation.xml index 43e663a..284d9cf 100644 --- a/observe-application-swing/src/main/resources/fr/ird/observe/services/dto/seine/SchoolEstimateDto-n1-update-error-validation.xml +++ b/observe-application-swing/src/main/resources/fr/ird/observe/services/dto/seine/SchoolEstimateDto-n1-update-error-validation.xml @@ -66,7 +66,7 @@ </field-validator> <!-- validation du weight par borne --> - <field-validator type="species_weight"> + <field-validator type="species_weightDto"> <param name="ratio">1.0</param> <message>validator.nonTargetCatch.bound.meanWeight##${min}##${max}</message> </field-validator> diff --git a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/ReferentialServiceController.java b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/ReferentialServiceController.java index 525c3ec..464e0ee 100644 --- a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/ReferentialServiceController.java +++ b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/ReferentialServiceController.java @@ -27,6 +27,7 @@ import fr.ird.observe.services.dto.FormDto; import fr.ird.observe.services.dto.ReferenceDto; import fr.ird.observe.services.dto.ReferenceSetDto; import fr.ird.observe.services.dto.referential.ReferentialDto; +import fr.ird.observe.services.dto.referential.SpeciesDto; import fr.ird.observe.services.service.DataNotFoundException; import fr.ird.observe.services.service.ReferentialService; @@ -60,6 +61,11 @@ public class ReferentialServiceController extends ObserveAuthenticatedServiceCon } @Override + public SpeciesDto loadSpecies(String id) { + return service.loadSpecies(id); + } + + @Override public <R extends ReferentialDto> FormDto<R> loadToRead(Class<R> type, String id) throws DataNotFoundException { return service.loadToRead(type, id); } diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/ReferentialService.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/ReferentialService.java index 950be0a..dc35e0e 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/ReferentialService.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/ReferentialService.java @@ -28,6 +28,7 @@ import fr.ird.observe.services.dto.FormDto; import fr.ird.observe.services.dto.ReferenceDto; import fr.ird.observe.services.dto.ReferenceSetDto; import fr.ird.observe.services.dto.referential.ReferentialDto; +import fr.ird.observe.services.dto.referential.SpeciesDto; import fr.ird.observe.services.spi.DeleteRequest; import fr.ird.observe.services.spi.PostRequest; import fr.ird.observe.services.spi.ReadDataPermission; @@ -55,6 +56,9 @@ public interface ReferentialService extends ObserveService { <R extends ReferentialDto> ReferenceSetDto<R> getReferentialReferenceSetIfModify(Class<R> type, Date updateAfter); @ReadReferentialPermission + SpeciesDto loadSpecies(String id); + + @ReadReferentialPermission <R extends ReferentialDto> FormDto<R> loadToRead(Class<R> type, String id) throws DataNotFoundException; @ReadReferentialPermission diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/service/ReferentialServiceTopia.java b/observe-services-topia/src/main/java/fr/ird/observe/services/service/ReferentialServiceTopia.java index 787648d..c4e9908 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/service/ReferentialServiceTopia.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/service/ReferentialServiceTopia.java @@ -25,6 +25,7 @@ package fr.ird.observe.services.service; import com.google.common.base.Optional; import fr.ird.observe.entities.EntityMap; import fr.ird.observe.entities.referentiel.ReferenceEntity; +import fr.ird.observe.entities.referentiel.Species; import fr.ird.observe.services.ObserveServiceTopia; import fr.ird.observe.services.dto.DtoMap; import fr.ird.observe.services.dto.FormDto; @@ -35,6 +36,7 @@ import fr.ird.observe.services.dto.ReferenceSetDtos; import fr.ird.observe.services.dto.constants.ReferenceStatus; import fr.ird.observe.services.dto.referential.ReferentialDto; import fr.ird.observe.services.dto.referential.ReferentialReferenceDto; +import fr.ird.observe.services.dto.referential.SpeciesDto; import org.nuiton.topia.persistence.TopiaDao; import org.nuiton.topia.persistence.TopiaEntity; @@ -78,6 +80,16 @@ public class ReferentialServiceTopia extends ObserveServiceTopia implements Refe } @Override + public SpeciesDto loadSpecies(String id) { + + Species speciesEntity = loadEntity(SpeciesDto.class, Species.class, id); + + SpeciesDto speciesDto = entityToDto(SpeciesDto.class, Species.class, speciesEntity); + + return speciesDto; + } + + @Override public <D extends ReferentialDto> FormDto<D> loadToRead(Class<D> dtoType, String id) { Class<ReferenceEntity> entityType = getEntityType(dtoType); ReferenceEntity entity = loadEntity(dtoType, entityType, id); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.