branch feature/8404 updated (5833257 -> b9f1339)
This is an automated email from the git hooks/post-receive script. New change to branch feature/8404 in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git from 5833257 Introduction de deux nouveaux modules services-dto-reference et services-dto-gson new b9f1339 Utilisation de la conversion taille - taille quand requis The 1 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit b9f1339edaf1a4f82f44d8f21489a9cd4f36f642 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Nov 6 15:48:25 2016 +0100 Utilisation de la conversion taille - taille quand requis Summary of changes: .../observe/entities/LengthWeightComputable.java | 5 +- .../referentiel/LengthLengthParameterTopiaDao.java | 16 ++++++ .../referentiel/LengthLengthParameters.java | 9 ++++ .../referentiel/LengthWeightParameters.java | 63 ++++++++++------------ .../observe/entities/seine/NonTargetCatchImpl.java | 6 +++ .../consolidate/ConsolidateDataServiceTopia.java | 31 +++++++++-- .../topia/entity/LengthWeightParemetersTest.java | 4 +- 7 files changed, 92 insertions(+), 42 deletions(-) create mode 100644 entities/src/main/java/fr/ird/observe/entities/referentiel/LengthLengthParameterTopiaDao.java -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/8404 in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit b9f1339edaf1a4f82f44d8f21489a9cd4f36f642 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Nov 6 15:48:25 2016 +0100 Utilisation de la conversion taille - taille quand requis --- .../observe/entities/LengthWeightComputable.java | 5 +- .../referentiel/LengthLengthParameterTopiaDao.java | 16 ++++++ .../referentiel/LengthLengthParameters.java | 9 ++++ .../referentiel/LengthWeightParameters.java | 63 ++++++++++------------ .../observe/entities/seine/NonTargetCatchImpl.java | 6 +++ .../consolidate/ConsolidateDataServiceTopia.java | 31 +++++++++-- .../topia/entity/LengthWeightParemetersTest.java | 4 +- 7 files changed, 92 insertions(+), 42 deletions(-) diff --git a/entities/src/main/java/fr/ird/observe/entities/LengthWeightComputable.java b/entities/src/main/java/fr/ird/observe/entities/LengthWeightComputable.java index 0e2a5d6..7d8a60b 100644 --- a/entities/src/main/java/fr/ird/observe/entities/LengthWeightComputable.java +++ b/entities/src/main/java/fr/ird/observe/entities/LengthWeightComputable.java @@ -22,6 +22,7 @@ package fr.ird.observe.entities; * #L% */ +import fr.ird.observe.entities.referentiel.SizeMeasureType; import org.nuiton.topia.persistence.TopiaEntity; public interface LengthWeightComputable extends TopiaEntity { @@ -42,4 +43,6 @@ public interface LengthWeightComputable extends TopiaEntity { void setIsWeightComputed(boolean weightSource); -} //LengthWeightComputable + SizeMeasureType getSizeMeasureType(); + +} diff --git a/entities/src/main/java/fr/ird/observe/entities/referentiel/LengthLengthParameterTopiaDao.java b/entities/src/main/java/fr/ird/observe/entities/referentiel/LengthLengthParameterTopiaDao.java new file mode 100644 index 0000000..9d21663 --- /dev/null +++ b/entities/src/main/java/fr/ird/observe/entities/referentiel/LengthLengthParameterTopiaDao.java @@ -0,0 +1,16 @@ +package fr.ird.observe.entities.referentiel; + +import java.util.Optional; + +public class LengthLengthParameterTopiaDao extends AbstractLengthLengthParameterTopiaDao<LengthLengthParameter> { + + Optional<LengthLengthParameter> find(SizeMeasureType inputSizeMeasureType, SizeMeasureType outputSizeMeasureType) { + + return Optional.ofNullable( + forProperties(LengthLengthParameter.PROPERTY_INPUT_SIZE_MEASURE_TYPE, inputSizeMeasureType, + LengthLengthParameter.PROPERTY_OUTPUT_SIZE_MEASURE_TYPE, outputSizeMeasureType) + .tryFindAny() + .orNull()); + } +} + diff --git a/entities/src/main/java/fr/ird/observe/entities/referentiel/LengthLengthParameters.java b/entities/src/main/java/fr/ird/observe/entities/referentiel/LengthLengthParameters.java index d24f086..89f2506 100644 --- a/entities/src/main/java/fr/ird/observe/entities/referentiel/LengthLengthParameters.java +++ b/entities/src/main/java/fr/ird/observe/entities/referentiel/LengthLengthParameters.java @@ -1,5 +1,9 @@ package fr.ird.observe.entities.referentiel; +import fr.ird.observe.ObserveTopiaDaoSupplier; + +import java.util.Optional; + /** * Created on 05/11/16. * @@ -8,5 +12,10 @@ package fr.ird.observe.entities.referentiel; */ public class LengthLengthParameters { + public static Optional<LengthLengthParameter> findLengthLengthParameter(ObserveTopiaDaoSupplier daoSupplier, + SizeMeasureType inputSizeMeasureType, + SizeMeasureType outputSizeMeasureType) { + return daoSupplier.getLengthLengthParameterDao().find(inputSizeMeasureType, outputSizeMeasureType); + } } diff --git a/entities/src/main/java/fr/ird/observe/entities/referentiel/LengthWeightParameters.java b/entities/src/main/java/fr/ird/observe/entities/referentiel/LengthWeightParameters.java index 197d5e4..381826e 100644 --- a/entities/src/main/java/fr/ird/observe/entities/referentiel/LengthWeightParameters.java +++ b/entities/src/main/java/fr/ird/observe/entities/referentiel/LengthWeightParameters.java @@ -30,6 +30,7 @@ import java.util.Date; import java.util.Iterator; import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; /** * Created on 28/08/15. @@ -52,15 +53,17 @@ public class LengthWeightParameters { * Si non trouvé sur le gender (et que le gender n'est pas indéterminé) , alors * on recherche avec le gender indéterminé (gender=0). * - * @param daoSupplier la transaction en cours d'utilisation - * @param species l'espèce sur lequel on recherche le paramétrage - * @param ocean l'ocean recherché (peut être null) - * @param sex le sexe recherché (on essayera sans sexe (sexe.code=0) si non trouvé) - * @param date le jour recherché + * @param daoSupplier la transaction en cours d'utilisation + * @param sizeMeasureType le type de mensuration recherché + * @param species l'espèce sur lequel on recherche le paramétrage + * @param ocean l'ocean recherché (peut être null) + * @param sex le sexe recherché (on essayera sans sexe (sexe.code=0) si non trouvé) + * @param date le jour recherché * @return le paramétrage adéquate * @since 1.5 */ public static LengthWeightParameter findLengthWeightParameter(ObserveTopiaDaoSupplier daoSupplier, + SizeMeasureType sizeMeasureType, Species species, Ocean ocean, Sex sex, @@ -87,25 +90,25 @@ public class LengthWeightParameters { return null; } + if (sizeMeasureType!=null) { + + // on filtre par le type de mensuration entrant + List<LengthWeightParameter> list2 = filterBySizeMeasureType(list, sizeMeasureType); + + if (!list2.isEmpty()) { + + // ok pas trouvé avec le bon type de mensuration, on fera la conversion plus tard + // on tente cependante d'utiliser la RTP trouvé + list = list2; + } + } + // au final il ne devrait en rester qu'un if (list.size() > 1) { throw new DuplicateLengthWeightParameterException(species, ocean, sex, date, list); } - // if (log.isDebugEnabled()) { -// StringBuilder sb = new StringBuilder("Paramétrage trouvé pour les données suivantes :"); -// sb.append("\nEspece : "); -// sb.append(getDecoratorService().decorate(species)); -// sb.append("\nOcean : "); -// sb.append(getDecoratorService().decorate(ocean)); -// sb.append("\nSex : "); -// sb.append(getDecoratorService().decorate(sex)); -// sb.append("\nDate : ").append(date); -// sb.append("\nParamétrage: ").append(getDecoratorService().decorate(result)); -// log.debug(sb.toString()); -// } - return list.get(0); } @@ -246,27 +249,17 @@ public class LengthWeightParameters { } public static List<LengthWeightParameter> filterBySexe(List<LengthWeightParameter> list, Sex sex) { - List<LengthWeightParameter> result = new ArrayList<>(); + return list.stream().filter(l -> l.getSex() == sex).collect(Collectors.toList()); + } - for (LengthWeightParameter parametrageLengthWeight : list) { - if (parametrageLengthWeight.getSex() == sex) { - result.add(parametrageLengthWeight); - } - } - return result; + public static List<LengthWeightParameter> filterBySizeMeasureType(List<LengthWeightParameter> list, SizeMeasureType sizeMeasureType) { + return list.stream().filter(l -> l.getSizeMeasureType() == sizeMeasureType).collect(Collectors.toList()); } public static List<LengthWeightParameter> filterByDateDebutValidite(List<LengthWeightParameter> list, Date startDate) { - List<LengthWeightParameter> result = new ArrayList<>(); - - for (LengthWeightParameter parametrageLengthWeight : list) { - - if (parametrageLengthWeight.getStartDate() == null || parametrageLengthWeight.getStartDate().before(startDate) || - parametrageLengthWeight.getStartDate().equals(startDate)) { - result.add(parametrageLengthWeight); - } - } - return result; + return list.stream() + .filter(l -> l.getStartDate() == null || l.getStartDate().before(startDate) || l.getStartDate().equals(startDate)) + .collect(Collectors.toList()); } public static List<LengthWeightParameter> filterByDateFinValidite(List<LengthWeightParameter> list, Date endDate) { diff --git a/entities/src/main/java/fr/ird/observe/entities/seine/NonTargetCatchImpl.java b/entities/src/main/java/fr/ird/observe/entities/seine/NonTargetCatchImpl.java index 867bb76..8901543 100644 --- a/entities/src/main/java/fr/ird/observe/entities/seine/NonTargetCatchImpl.java +++ b/entities/src/main/java/fr/ird/observe/entities/seine/NonTargetCatchImpl.java @@ -23,6 +23,7 @@ package fr.ird.observe.entities.seine; import fr.ird.observe.entities.constants.seine.NonTargetCatchComputedValueSourcePersist; import fr.ird.observe.entities.referentiel.LengthWeightParameter; +import fr.ird.observe.entities.referentiel.SizeMeasureType; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.util.NumberUtil; @@ -88,6 +89,11 @@ public class NonTargetCatchImpl extends NonTargetCatchAbstract { } @Override + public SizeMeasureType getSizeMeasureType() { + return null; // pas utilisé pour les captures + } + + @Override public void setMeanWeight(Float meanWeight) { if (meanWeight != null) { diff --git a/services-topia/src/main/java/fr/ird/observe/services/topia/service/actions/consolidate/ConsolidateDataServiceTopia.java b/services-topia/src/main/java/fr/ird/observe/services/topia/service/actions/consolidate/ConsolidateDataServiceTopia.java index 303240c..9ce88be 100644 --- a/services-topia/src/main/java/fr/ird/observe/services/topia/service/actions/consolidate/ConsolidateDataServiceTopia.java +++ b/services-topia/src/main/java/fr/ird/observe/services/topia/service/actions/consolidate/ConsolidateDataServiceTopia.java @@ -28,11 +28,14 @@ import fr.ird.observe.ObserveTopiaPersistenceContext; import fr.ird.observe.entities.LengthWeightComputable; import fr.ird.observe.entities.constants.seine.NonTargetCatchComputedValueSourcePersist; import fr.ird.observe.entities.constants.seine.SchoolTypePersist; +import fr.ird.observe.entities.referentiel.LengthLengthParameter; +import fr.ird.observe.entities.referentiel.LengthLengthParameters; import fr.ird.observe.entities.referentiel.LengthWeightParameter; import fr.ird.observe.entities.referentiel.LengthWeightParameterNotFoundException; import fr.ird.observe.entities.referentiel.LengthWeightParameters; import fr.ird.observe.entities.referentiel.Ocean; import fr.ird.observe.entities.referentiel.Sex; +import fr.ird.observe.entities.referentiel.SizeMeasureType; import fr.ird.observe.entities.referentiel.Species; import fr.ird.observe.entities.seine.ActivitySeine; import fr.ird.observe.entities.seine.NonTargetCatch; @@ -276,7 +279,7 @@ public class ConsolidateDataServiceTopia extends ObserveServiceTopia implements Species species = nonTargetCatch.getSpecies(); // récupération du référentiel - LengthWeightParameter lengthWeightParameter = activityContext.findLengthWeightParameter(species, null /* pas de sexe spécifié*/); + LengthWeightParameter lengthWeightParameter = activityContext.findLengthWeightParameter(null, species, null /* pas de sexe spécifié*/); // -- Cas n°1 (calcul uniquement à partir des relations taille - poids) updateNonTargetCatchByLengthWeightRelation(nonTargetCatch, lengthWeightParameter); @@ -541,7 +544,8 @@ public class ConsolidateDataServiceTopia extends ObserveServiceTopia implements } // recherche du parametrage adequate - LengthWeightParameter lengthWeightParameter = activityContext.findLengthWeightParameter(species, sex); + SizeMeasureType inputSizeMeasureType = lengthWeightComputable.getSizeMeasureType(); + LengthWeightParameter lengthWeightParameter = activityContext.findLengthWeightParameter(inputSizeMeasureType, species, sex); if (lengthWeightParameter == null) { @@ -566,6 +570,25 @@ public class ConsolidateDataServiceTopia extends ObserveServiceTopia implements } + SizeMeasureType outputSizeMeasureType = lengthWeightParameter.getSizeMeasureType(); + if (!outputSizeMeasureType.equals(inputSizeMeasureType)) { + + // on doit effectuer une conversion taille - taille avant de convertir en poids + Optional<LengthLengthParameter> optionalLengthLengthParameter = LengthLengthParameters.findLengthLengthParameter(activityContext.daoSupplier, inputSizeMeasureType, outputSizeMeasureType); + + if (optionalLengthLengthParameter.isPresent()) { + + length = optionalLengthLengthParameter.get().computeFromFomulaOne(length); + + } else { + + if (log.isWarnEnabled()) { + log.warn("Could not find lengLengthParameter for input: " + inputSizeMeasureType + " - output: " + outputSizeMeasureType); + } + return; + } + } + // on cherche obligatoirement a calculer le poids Float newWeight = lengthWeightParameter.computeFromFomulaOne(length); if (newWeight != null) { @@ -669,10 +692,10 @@ public class ConsolidateDataServiceTopia extends ObserveServiceTopia implements return activity.getSetSeine(); } - public LengthWeightParameter findLengthWeightParameter(Species species, Sex sex) { + public LengthWeightParameter findLengthWeightParameter(SizeMeasureType sizeMeasureType, Species species, Sex sex) { Ocean ocean = getOcean(); Date routeDate = getRouteDate(); - LengthWeightParameter lengthWeightParameter = LengthWeightParameters.findLengthWeightParameter(daoSupplier, species, ocean, sex, routeDate); + LengthWeightParameter lengthWeightParameter = LengthWeightParameters.findLengthWeightParameter(daoSupplier, sizeMeasureType, species, ocean, sex, routeDate); if (lengthWeightParameter == null) { if (failIfLenghtWeightParameterNotFound) { diff --git a/services-topia/src/test/java/fr/ird/observe/services/topia/entity/LengthWeightParemetersTest.java b/services-topia/src/test/java/fr/ird/observe/services/topia/entity/LengthWeightParemetersTest.java index 67db9a1..be7d169 100644 --- a/services-topia/src/test/java/fr/ird/observe/services/topia/entity/LengthWeightParemetersTest.java +++ b/services-topia/src/test/java/fr/ird/observe/services/topia/entity/LengthWeightParemetersTest.java @@ -222,7 +222,7 @@ public class LengthWeightParemetersTest extends AbstractServiceTopiaTest { if (log.isInfoEnabled()) { log.info("Try to find length weith parameter for species " + species.getFaoCode() + " - ocean " + ocean.getLabel1() + " - sex " + (sex == null ? "null" : sex.getLabel1()) + " at " + date); } - LengthWeightParameter lengthWeightParameter = LengthWeightParameters.findLengthWeightParameter(supplier, species, ocean, sex, date); + LengthWeightParameter lengthWeightParameter = LengthWeightParameters.findLengthWeightParameter(supplier, null, species, ocean, sex, date); Assert.assertNotNull("length weith parameter not found for species " + species.getFaoCode() + " - ocean " + ocean.getLabel1() + " - sex " + (sex == null ? "null" : sex.getLabel1()) + " at " + date, lengthWeightParameter); Assert.assertEquals("Expected sex is " + expectedSex.getLabel1() + " but the one found was " + lengthWeightParameter.getSex().getLabel1(), expectedSex, lengthWeightParameter.getSex()); @@ -237,7 +237,7 @@ public class LengthWeightParemetersTest extends AbstractServiceTopiaTest { if (log.isInfoEnabled()) { log.info("Try to find length weith parameter for species " + species.getFaoCode() + " - ocean " + ocean.getLabel1() + " - sex " + (sex == null ? "null" : sex.getLabel1()) + " at " + date); } - LengthWeightParameter lengthWeightParameter = LengthWeightParameters.findLengthWeightParameter(supplier, species, ocean, sex, date); + LengthWeightParameter lengthWeightParameter = LengthWeightParameters.findLengthWeightParameter(supplier, null, species, ocean, sex, date); Assert.assertNull("length weith parameter should not ne found for species " + species.getFaoCode() + " - ocean " + ocean.getLabel1() + " - sex " + (sex == null ? "null" : sex.getLabel1()) + " at " + date, lengthWeightParameter); } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm