mailman.cloud.codelutin.com
Sign In Sign Up
Manage this list Sign In Sign Up

Keyboard Shortcuts

Thread View

  • j: Next unread message
  • k: Previous unread message
  • j a: Jump to all threads
  • j l: Jump to MailingList overview

Observe-commits

Thread Start a new thread
Download
Threads by month
  • ----- 2026 -----
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2025 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2024 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2023 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2022 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2021 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2020 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2019 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2018 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2017 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2016 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2015 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2014 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2013 -----
  • December
  • November
  • October
  • September
observe-commits@list.forge.codelutin.com

July 2018

  • 1 participants
  • 80 discussions
[Git][ultreiaio/ird-observe][develop-7.x] [PS][SERVER] La création du form FOB (Ctrl+P) depuis le form activité échoue en…
by Tony CHEMIT 11 Jul '18

11 Jul '18
Tony CHEMIT pushed to branch develop-7.x at ultreiaio / ird-observe Commits: 68981f33 by Tony CHEMIT at 2018-07-11T11:59:50Z [PS][SERVER] La création du form FOB (Ctrl+P) depuis le form activité échoue en mode serveur - closes #1024 - - - - - 12 changed files: - client/src/main/java/fr/ird/observe/client/ui/actions/content/LonglineDetailCompositionDeleteAllSectionsAction.java - client/src/main/java/fr/ird/observe/client/ui/actions/content/LonglineDetailCompositionGenerateAllSectionsAction.java - dto/src/main/java/fr/ird/observe/dto/referential/LengthLengthParameterDto.java - dto/src/main/java/fr/ird/observe/dto/referential/LengthWeightParameterDto.java - − dto/src/main/java/fr/ird/observe/dto/referential/WithLengthFormula.java - − dto/src/main/java/fr/ird/observe/dto/referential/WithStartEndDate.java - dto/src/main/models/Observe.model - persistence/src/main/java/fr/ird/observe/entities/referentiel/FormulaSupportImpl.java - persistence/src/main/models/Observe.model - pom.xml - + services/src/main/java/fr/ird/observe/services/gson/FloatingObjectModificationAdapter.java - services/src/main/java/fr/ird/observe/services/gson/ObserveDtoGsonSupplier.java Changes: ===================================== client/src/main/java/fr/ird/observe/client/ui/actions/content/LonglineDetailCompositionDeleteAllSectionsAction.java ===================================== @@ -1,5 +1,27 @@ package fr.ird.observe.client.ui.actions.content; +/*- + * #%L + * ObServe :: Client + * %% + * Copyright (C) 2008 - 2018 IRD, Code Lutin, Ultreia.io + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + import fr.ird.observe.client.ObserveSwingApplicationContext; import fr.ird.observe.client.ui.ObserveKeyStrokes; import fr.ird.observe.client.ui.ObserveMainUI; ===================================== client/src/main/java/fr/ird/observe/client/ui/actions/content/LonglineDetailCompositionGenerateAllSectionsAction.java ===================================== @@ -1,5 +1,27 @@ package fr.ird.observe.client.ui.actions.content; +/*- + * #%L + * ObServe :: Client + * %% + * Copyright (C) 2008 - 2018 IRD, Code Lutin, Ultreia.io + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + import com.google.common.collect.Lists; import fr.ird.observe.client.ui.ObserveKeyStrokes; import fr.ird.observe.client.ui.ObserveMainUI; ===================================== dto/src/main/java/fr/ird/observe/dto/referential/LengthLengthParameterDto.java ===================================== @@ -22,11 +22,6 @@ package fr.ird.observe.dto.referential; * #L% */ -import io.ultreia.java4all.bean.definition.JavaBeanDefinition; -import io.ultreia.java4all.bean.definition.JavaBeanDefinitionStore; -import io.ultreia.java4all.bean.spi.GenerateJavaBeanDefinition; - -@GenerateJavaBeanDefinition public class LengthLengthParameterDto extends GeneratedLengthLengthParameterDto { private static final long serialVersionUID = 1L; @@ -83,8 +78,4 @@ public class LengthLengthParameterDto extends GeneratedLengthLengthParameterDto setOutputInputFormulaValid(formulaTwoValid); } - @Override - public JavaBeanDefinition javaBeanDefinition() { - return JavaBeanDefinitionStore.definition(LengthLengthParameterDtoJavaBeanDefinition.class); - } } ===================================== dto/src/main/java/fr/ird/observe/dto/referential/LengthWeightParameterDto.java ===================================== @@ -23,11 +23,7 @@ package fr.ird.observe.dto.referential; */ import io.ultreia.java4all.bean.JavaBean; -import io.ultreia.java4all.bean.definition.JavaBeanDefinition; -import io.ultreia.java4all.bean.definition.JavaBeanDefinitionStore; -import io.ultreia.java4all.bean.spi.GenerateJavaBeanDefinition; -@GenerateJavaBeanDefinition public class LengthWeightParameterDto extends GeneratedLengthWeightParameterDto implements JavaBean { private static final long serialVersionUID = 1L; @@ -84,8 +80,4 @@ public class LengthWeightParameterDto extends GeneratedLengthWeightParameterDto setWeightLengthFormulaValid(formulaTwoValid); } - @Override - public JavaBeanDefinition javaBeanDefinition() { - return JavaBeanDefinitionStore.definition(LengthWeightParameterDtoJavaBeanDefinition.class); - } } ===================================== dto/src/main/java/fr/ird/observe/dto/referential/WithLengthFormula.java deleted ===================================== @@ -1,103 +0,0 @@ -package fr.ird.observe.dto.referential; - -/*- - * #%L - * ObServe Toolkit :: Common Dto - * %% - * Copyright (C) 2017 - 2018 IRD, Ultreia.io - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - -import java.util.Comparator; -import java.util.Date; -import java.util.List; -import java.util.Set; - -/** - * Created on 22/12/16. - * - * @author Tony Chemit - dev(a)tchemit.fr - * @since 6.0 - */ -public interface WithLengthFormula extends WithFormula, WithStartEndDate { - - String PROPERTY_OCEAN = "ocean"; - String PROPERTY_SPECIES = "species"; - String PROPERTY_SEX = "sex"; - String PROPERTY_START_DATE = "startDate"; - String PROPERTY_END_DATE = "endDate"; - String PROPERTY_COEFFICIENTS = "coefficients"; - String PROPERTY_SOURCE = "source"; - - Comparator<WithLengthFormula> FORMULA_SUPPORT_START_DATE_COMPARATOR = Comparator.comparing(WithStartEndDate::getStartDate, WithStartEndDate.START_DATE_COMPARATOR); - Comparator<WithLengthFormula> FORMULA_SUPPORT_END_DATE_COMPARATOR = Comparator.comparing(WithStartEndDate::getEndDate, WithStartEndDate.END_DATE_COMPARATOR); - Comparator<WithLengthFormula> FORMULA_SUPPORT_COMPARATOR = FORMULA_SUPPORT_START_DATE_COMPARATOR.thenComparing(FORMULA_SUPPORT_END_DATE_COMPARATOR); - - static <D extends WithLengthFormula> void sort(List<D> list) { - list.sort(FORMULA_SUPPORT_COMPARATOR); - } - -// static <D extends WithStartEndDate> List<D> filter(List<D> list, Date date) { -// return list.stream() -// .filter(f -> WithStartEndDate.START_DATE_COMPARATOR.compare(f.getStartDate(), date) <= 0 && WithStartEndDate.END_DATE_COMPARATOR.compare(date, f.getEndDate()) <= 0) -// .collect(Collectors.toList()); -// } - - String getFormulaOneVariableName(); - - String getFormulaTwoVariableName(); - - void setStartDate(Date startDate); - - void setEndDate(Date endDate); - - void setCoefficients(String coefficients); - - String getSource(); - - void setSource(String source); - - default Set<String> getCoefficientNames() { - return getCoefficientValues().keySet(); - } - - String getFormulaOne(); - - String getFormulaTwo(); - - default void revalidateFormulaOne() { - boolean result = FormulaHelper.validateRelation(this, getFormulaOne(), getFormulaOneVariableName()); - setFormulaOneValid(result); - } - - boolean isFormulaOneValid(); - - void setFormulaOneValid(boolean formulaOneValid); - - boolean isFormulaTwoValid(); - - void setFormulaTwoValid(boolean formulaTwoValid); - - default void revalidateFormulaTwo() { - boolean result = FormulaHelper.validateRelation(this, getFormulaTwo(), getFormulaTwoVariableName()); - setFormulaTwoValid(result); - } - - default Double getCoefficientValue(String coefficientName) { - return getCoefficientValues().get(coefficientName); - } -} ===================================== dto/src/main/java/fr/ird/observe/dto/referential/WithStartEndDate.java deleted ===================================== @@ -1,26 +0,0 @@ -package fr.ird.observe.dto.referential; - -import com.google.common.collect.Ordering; -import fr.ird.observe.dto.reference.DtoReferenceAware; - -import java.util.Comparator; -import java.util.Date; - -/** - * Created by tchemit on 10/07/2018. - * - * @author Tony Chemit - dev(a)tchemit.fr - */ -public interface WithStartEndDate extends DtoReferenceAware { - - Comparator<Date> START_DATE_COMPARATOR = Ordering.natural().nullsFirst(); - Comparator<Date> END_DATE_COMPARATOR = Ordering.natural().nullsLast(); - - Comparator<WithStartEndDate> WITH_START_DATE_COMPARATOR = Comparator.comparing(WithStartEndDate::getStartDate, START_DATE_COMPARATOR); - Comparator<WithStartEndDate> WITH_END_DATE_COMPARATOR = Comparator.comparing(WithStartEndDate::getEndDate, END_DATE_COMPARATOR); - - Date getStartDate(); - - Date getEndDate(); - -} ===================================== dto/src/main/models/Observe.model ===================================== @@ -12,19 +12,9 @@ package fr.ird.observe.dto.form enum constants.ObserveDbRole -enum data.seine.SetSeineConstants -targetSampleCapture -endSetDate -endPursingDate -endSetTime -endPursingTime - -enum data.seine.TargetLengthConstants -totalWeight - interface ObserveDto -interface referential.WithLengthFormula +interface referential.WithFormula interface WithComment getComment() String @@ -70,7 +60,7 @@ label6 + {*:1} String label7 + {*:1} String label8 + {*:1} String -abstract referential.LengthFormulaSupport > referential.Referential >> referential.WithLengthFormula +abstract referential.LengthFormulaSupport > referential.Referential >> referential.WithFormula startDate + {*:1} Date endDate + {*:1} Date coefficients + {*:1} String @@ -750,7 +740,7 @@ totalWeight + {*:1} Integer meanWeight + {*:1} Integer species {*:1} fr.ird.observe.dto.referential.SpeciesReference -data.seine.SetSeine > data.Commentable | references=comment +data.seine.SetSeine > data.Commentable | references=comment constants=targetSampleCapture,endSetDate,endPursingDate,endSetTime,endPursingTime startTime + {*:1} Date endPursingTimeStamp + {*:1} Date endSetTimeStamp + {*:1} Date @@ -795,7 +785,7 @@ weightCategory {*:1} fr.ird.observe.dto.referential.seine.WeightCategoryReferenc reasonForDiscard {*:0..1} fr.ird.observe.dto.referential.seine.ReasonForDiscardReference species {*:1} fr.ird.observe.dto.referential.SpeciesReference -data.seine.TargetLength > data.Data | references=speciesLabel,length,count +data.seine.TargetLength > data.Data | references=speciesLabel,length,count constants=totalWeight length + {*:1} Float isLengthComputed + {*:1} boolean count + {*:1} Integer ===================================== persistence/src/main/java/fr/ird/observe/entities/referentiel/FormulaSupportImpl.java ===================================== @@ -23,7 +23,6 @@ package fr.ird.observe.entities.referentiel; */ import fr.ird.observe.dto.referential.FormulaHelper; -import fr.ird.observe.dto.referential.WithLengthFormula; import org.apache.commons.lang3.BooleanUtils; import java.util.Map; @@ -34,7 +33,7 @@ import java.util.Map; * @author Tony Chemit - dev(a)tchemit.fr * @since 6.0 */ -public abstract class FormulaSupportImpl extends FormulaSupportAbstract implements WithLengthFormula { +public abstract class FormulaSupportImpl extends FormulaSupportAbstract { private static final long serialVersionUID = 1L; ===================================== persistence/src/main/models/Observe.model ===================================== @@ -25,62 +25,6 @@ enum !fr.ird.observe.dto.data.seine.TypeTransmittingBuoyOperation enum !fr.ird.observe.dto.data.seine.DcpComputedValue -enum longline.ActivityLonglineConstants -date -time - -enum longline.BranchlineConstants -timerTimeOnBoardDate -timerTimeOnBoardTime - -enum longline.SetLonglineConstants -settingStartDate -settingStartTime -settingStartQuadrant -settingEndDate -settingEndTime -settingEndQuadrant -haulingStartDate -haulingStartTime -haulingStartQuadrant -haulingEndDate -haulingEndTime -haulingEndQuadrant -floatlinesCompositionProportionSum -branchlinesCompositionProportionSum -hooksCompositionProportionSum -baitsCompositionProportionSum - -enum longline.TdrConstants -deployementStartDate -deployementStartTime -deployementEndDate -deployementEndTime -fishingStartDate -fishingStartTime -fishingEndDate -fishingEndTime - -enum referentiel.FormulaSupportConstants -formulaOneValid -formulaTwoValid - -enum referentiel.HarbourConstants -quadrant - -enum referentiel.ProgramConstants -gearTypePrefix - -enum seine.SetConstants -targetSampleCapture -endSetDate -endPursingDate -endSetTime -endPursingTime - -enum seine.TargetLengthConstants -totalWeight - interface Activity interface LengthWeightComputable @@ -122,7 +66,7 @@ abstract ObserveDataEntity > ObserveEntity | entity abstract ObserveEntity >> fr.ird.observe.dto.reference.DtoReferenceAware | entity lastUpdateDate + {*:1} Date | notNull -longline.ActivityLongline > CommentableEntity >> Activity | entity dbName=Activity +longline.ActivityLongline > CommentableEntity >> Activity | entity dbName=Activity constants=date,time timeStamp + {*:1} Date latitude + {*:1} Float longitude + {*:1} Float @@ -156,7 +100,7 @@ catchLongline {*} longline.CatchLongline tdr {*} longline.Tdr setLongline {*:1} longline.SetLongline | dbName=set -longline.Branchline > CommentableEntity >> longline.LonglineCompositionEntity | entity +longline.Branchline > CommentableEntity >> longline.LonglineCompositionEntity | entity constants=timerTimeOnBoardDate,timerTimeOnBoardTime settingIdentifier + {*:1} Integer | notNull haulingIdentifier + {*:1} Integer depthRecorder + {*:1} Boolean @@ -265,7 +209,7 @@ sensorType {*:1} referentiel.longline.SensorType sensorDataFormat {*:0..1} referentiel.longline.SensorDataFormat sensorBrand {*:1} referentiel.longline.SensorBrand -longline.SetLongline > CommentableEntity >> ObserveSet | entity dbName=Set +longline.SetLongline > CommentableEntity >> ObserveSet | entity dbName=Set constants=settingStartTime,settingStartQuadrant,settingEndDate,settingEndTime,settingEndQuadrant,haulingStartDate,haulingStartTime,haulingStartQuadrant,haulingEndDate,haulingEndTime,haulingEndQuadrant,floatlinesCompositionProportionSum,branchlinesCompositionProportionSum,hooksCompositionProportionSum,baitsCompositionProportionSum homeId + {*:1} String number + {*:1} Integer basketsPerSectionCount + {*:1} Integer @@ -347,7 +291,7 @@ longline.SizeMeasure > ObserveDataEntity | entity size + {*:1} Float | sqlType=numeric sizeMeasureType {*:1} referentiel.SizeMeasureType -longline.Tdr > ObserveDataEntity >> longline.LonglinePositionAware | entity +longline.Tdr > ObserveDataEntity >> longline.LonglinePositionAware | entity constants=deployementStartDate,deployementStartTime,deployementEndDate,deployementEndTime,fishingStartDate,fishingStartTime,fishingEndDate,fishingEndTime homeId + {*:1} String floatline1Length + {*:1} Float | sqlType=numeric floatline2Length + {*:1} Float | sqlType=numeric @@ -427,7 +371,7 @@ iso3Code + {*:1} String referentiel.DataQuality > referentiel.I18nReferentialEntity | entity -abstract referentiel.FormulaSupport > referentiel.ObserveReferentialEntity >> fr.ird.observe.dto.referential.WithLengthFormula | entity +abstract referentiel.FormulaSupport > referentiel.ObserveReferentialEntity >> fr.ird.observe.dto.referential.WithFormula | entity constants=formulaOneValid,formulaTwoValid ocean {*:0..1} referentiel.Ocean | notNull lazy=false species {*:1} referentiel.Species | notNull lazy=false sex {*:1} referentiel.Sex | notNull lazy=false @@ -451,7 +395,7 @@ gearCaracteristicType {*:1} referentiel.GearCaracteristicType | lazy=false referentiel.GearCaracteristicType > referentiel.I18nReferentialEntity | entity -referentiel.Harbour > referentiel.ObserveReferentialEntity | entity +referentiel.Harbour > referentiel.ObserveReferentialEntity | entity constants=quadrant country {*:1} referentiel.Country locode + {*:1} String name + {*:1} String @@ -508,7 +452,7 @@ captain + {*:1} boolean dataEntryOperator + {*:1} boolean country {*:0..1} referentiel.Country -referentiel.Program > referentiel.I18nReferentialEntity | entity +referentiel.Program > referentiel.I18nReferentialEntity | entity constants=gearTypePrefix organism {*:1} referentiel.Organism | lazy=false nonTargetObservation + {*:1} int targetDiscardsObservation + {*:1} int @@ -827,7 +771,7 @@ meanWeight + {*:1} Integer setSeine {*:1} seine.SetSeine | naturalId dbName=set species {*:1} referentiel.Species | naturalId -seine.SetSeine > CommentableEntity >> ObserveSet | entity dbName=Set +seine.SetSeine > CommentableEntity >> ObserveSet | entity dbName=Set constants=targetSampleCapture,endSetDate,endPursingDate,endSetTime,endPursingTime startTime + {*:1} Date | hibernateAttributeType.java.util.Date=time endPursingTimeStamp + {*:1} Date endSetTimeStamp + {*:1} Date @@ -879,7 +823,7 @@ reasonForDiscard {*:0..1} referentiel.seine.ReasonForDiscard | naturalId notNull getSpecies() referentiel.Species setSpecies(species referentiel.Species) -seine.TargetLength > ObserveDataEntity >> LengthWeightComputable | entity +seine.TargetLength > ObserveDataEntity >> LengthWeightComputable | entity constants=totalWeight length + {*:1} Float | sqlType=numeric isLengthComputed + {*:1} boolean count + {*:1} Integer ===================================== pom.xml ===================================== @@ -26,7 +26,7 @@ <parent> <groupId>io.ultreia.maven</groupId> <artifactId>pom</artifactId> - <version>2018.36</version> + <version>2018.40</version> </parent> <groupId>fr.ird.observe</groupId> @@ -152,8 +152,7 @@ <maven.build.timestamp.format>dd/MM/yyyy HH:mm z</maven.build.timestamp.format> <buildDate>${maven.build.timestamp}</buildDate> - <observeToolkitVersion>3.7.1</observeToolkitVersion> - + <observeToolkitVersion>3.7.2</observeToolkitVersion> <!--<lib.version.java4all.jaxx>3.0-alpha-31</lib.version.java4all.jaxx>--> <!--<lib.version.nuiton.topia>3.4.2-SNAPSHOT</lib.version.nuiton.topia>--> <lib.version.nuiton.validation>3.1</lib.version.nuiton.validation> @@ -162,7 +161,8 @@ <!--<lib.version.hibernate>5.2.10.Final</lib.version.hibernate>--> <!--can't use 1.4.197 (date has changed + blob also--> <lib.version.h2>1.4.196</lib.version.h2> - <lib.version.java4all.eugene>3.0-alpha-21</lib.version.java4all.eugene> + <!--<lib.version.java4all.eugene>3.0-alpha-21</lib.version.java4all.eugene>--> + <lib.version.java4all.eugene>3.0-alpha-23</lib.version.java4all.eugene> <!--<lib.version.java4all.topia>1.1.2-SNAPSHOT</lib.version.java4all.topia>--> <!-- license header configuration --> <license.licenseName>gpl_v3</license.licenseName> ===================================== services/src/main/java/fr/ird/observe/services/gson/FloatingObjectModificationAdapter.java ===================================== @@ -0,0 +1,65 @@ +package fr.ird.observe.services.gson; + +/*- + * #%L + * ObServe :: Services API + * %% + * Copyright (C) 2008 - 2018 IRD, Code Lutin, Ultreia.io + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonDeserializer; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParseException; +import com.google.gson.JsonSerializationContext; +import com.google.gson.JsonSerializer; +import fr.ird.observe.services.service.actions.consolidate.dcp.FloatingObjectModification; + +import java.io.Serializable; +import java.lang.reflect.Type; + +/** + * Created by tchemit on 11/07/2018. + * + * @author Tony Chemit - dev(a)tchemit.fr + */ +public class FloatingObjectModificationAdapter implements JsonDeserializer<FloatingObjectModification>, JsonSerializer<FloatingObjectModification> { + + @Override + public FloatingObjectModification deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { + JsonObject reportVariableJson = json.getAsJsonObject(); + + String dcpId = context.deserialize(reportVariableJson.get("dcpId"), String.class); + String propertyName = context.deserialize(reportVariableJson.get("propertyName"), String.class); + Class<?> type = context.deserialize(reportVariableJson.get("type"), Class.class); + Serializable newValue1 = context.deserialize(reportVariableJson.get("newValue"), type); + return new FloatingObjectModification(dcpId, propertyName, newValue1); + } + + @Override + public JsonElement serialize(FloatingObjectModification src, Type typeOfSrc, JsonSerializationContext context) { + JsonObject element2 = new JsonObject(); + element2.add("dcpId", context.serialize(src.getDcpId())); + element2.add("propertyName", context.serialize(src.getPropertyName())); + Serializable newValue = src.getNewValue(); + element2.add("type", context.serialize(newValue == null ? String.class : newValue.getClass())); + element2.add("newValue", context.serialize(newValue)); + return null; + } +} ===================================== services/src/main/java/fr/ird/observe/services/gson/ObserveDtoGsonSupplier.java ===================================== @@ -23,6 +23,7 @@ package fr.ird.observe.services.gson; */ import com.google.gson.GsonBuilder; +import fr.ird.observe.services.service.actions.consolidate.dcp.FloatingObjectModification; import fr.ird.observe.services.service.actions.report.ReportVariable; import io.ultreia.java4all.http.HResponseError; import io.ultreia.java4all.http.HResponseErrorAdapter; @@ -49,6 +50,7 @@ public class ObserveDtoGsonSupplier extends ObserveDtoGsonSupplierSupport { if (create) { gsonBuilder.registerTypeAdapter(ReportVariable.class, new ReportVariableAdapter()); gsonBuilder.registerTypeAdapter(HResponseError.class, new HResponseErrorAdapter()); + gsonBuilder.registerTypeAdapter(FloatingObjectModification.class, new FloatingObjectModificationAdapter()); } return gsonBuilder; View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/68981f3313ff61a2d1df9f4aef6… -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/68981f3313ff61a2d1df9f4aef6… You're receiving this email because of your account on gitlab.com.
1 0
0 0
[Git][ultreiaio/ird-observe][develop-7.x] [PS] Raccourcis F5 non fonctionnel - Closes #1022
by Tony CHEMIT 10 Jul '18

10 Jul '18
Tony CHEMIT pushed to branch develop-7.x at ultreiaio / ird-observe Commits: 2e34b2db by Tony CHEMIT at 2018-07-10T13:47:26Z [PS] Raccourcis F5 non fonctionnel - Closes #1022 - - - - - 1 changed file: - client/src/main/java/fr/ird/observe/client/ui/content/ContentUIInitializer.java Changes: ===================================== client/src/main/java/fr/ird/observe/client/ui/content/ContentUIInitializer.java ===================================== @@ -696,6 +696,8 @@ public class ContentUIInitializer<E extends IdDto, UI extends ContentUI<E, UI>> protected void init(JXDatePicker picker) { log.debug("init JXDatePicker editor" + picker.getName()); + picker.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(KeyStroke.getKeyStroke(KeyEvent.VK_F5, 0), "none"); + picker.setLocale(ObserveSwingApplicationContext.get().getConfig().getLocale()); JFormattedTextField editor = picker.getEditor(); editor.setEditable(true); View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/2e34b2db2dc6e0aa534e0be7460… -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/2e34b2db2dc6e0aa534e0be7460… You're receiving this email because of your account on gitlab.com.
1 0
0 0
[Git][ultreiaio/ird-observe][develop-7.x] [LL] Ajout de 2 racourcis - closes #1027
by Tony CHEMIT 10 Jul '18

10 Jul '18
Tony CHEMIT pushed to branch develop-7.x at ultreiaio / ird-observe Commits: fd9b4b6d by Tony CHEMIT at 2018-07-10T13:25:41Z [LL] Ajout de 2 racourcis - closes #1027 - - - - - 9 changed files: - + client/src/main/java/fr/ird/observe/client/ui/actions/content/LonglineDetailCompositionDeleteAllSectionsAction.java - + client/src/main/java/fr/ird/observe/client/ui/actions/content/LonglineDetailCompositionGenerateAllSectionsAction.java - client/src/main/java/fr/ird/observe/client/ui/content/data/longline/BasketsTableModel.java - client/src/main/java/fr/ird/observe/client/ui/content/data/longline/BranchlinesTableModel.java - client/src/main/java/fr/ird/observe/client/ui/content/data/longline/LonglineDetailCompositionUI.jaxx - client/src/main/java/fr/ird/observe/client/ui/content/data/longline/LonglineDetailCompositionUI.jcss - client/src/main/java/fr/ird/observe/client/ui/content/data/longline/LonglineDetailCompositionUIHandler.java - client/src/main/java/fr/ird/observe/client/ui/content/data/longline/LonglineDetailCompositionUIValidationHelper.java - client/src/main/java/fr/ird/observe/client/ui/content/data/longline/SectionsTableModel.java Changes: ===================================== client/src/main/java/fr/ird/observe/client/ui/actions/content/LonglineDetailCompositionDeleteAllSectionsAction.java ===================================== @@ -0,0 +1,104 @@ +package fr.ird.observe.client.ui.actions.content; + +import fr.ird.observe.client.ObserveSwingApplicationContext; +import fr.ird.observe.client.ui.ObserveKeyStrokes; +import fr.ird.observe.client.ui.ObserveMainUI; +import fr.ird.observe.client.ui.content.ContentUI; +import fr.ird.observe.client.ui.content.data.longline.LonglineDetailCompositionUI; +import fr.ird.observe.client.ui.content.data.longline.LonglineDetailCompositionUIValidationHelper; +import fr.ird.observe.client.ui.content.data.longline.SectionsTableModel; +import fr.ird.observe.client.ui.util.UIHelper; +import fr.ird.observe.dto.data.longline.SectionWithTemplate; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import javax.swing.JOptionPane; +import java.util.ArrayList; + +import static org.nuiton.i18n.I18n.t; + +/** + * Created by tchemit on 10/07/2018. + * + * @author Tony Chemit - dev(a)tchemit.fr + */ +public class LonglineDetailCompositionDeleteAllSectionsAction extends AbstractContentUIAction { + + public static final String ACTION_NAME = LonglineDetailCompositionDeleteAllSectionsAction.class.getName(); + private static final Log log = LogFactory.getLog(LonglineDetailCompositionDeleteAllSectionsAction.class); + + public LonglineDetailCompositionDeleteAllSectionsAction(ObserveMainUI mainUI) { + super(mainUI, NAME, t("observe.common.LonglineDetailCompositionDto.action.deleteAllSections"), t("observe.common.LonglineDetailCompositionDto.action.deleteAllSections.tip"), "delete", ObserveKeyStrokes.KEY_STROKE_DELETE_DATA_GLOBAL); + } + + @Override + protected void actionPerformed(ContentUI<?, ?> contentUI) { + + LonglineDetailCompositionUI ui = (LonglineDetailCompositionUI) contentUI; + + LonglineDetailCompositionUIValidationHelper validationHelper = ui.getHandler().getValidationHelper(); + + if (log.isInfoEnabled()) { + log.info("Generate all sections."); + } + + SectionsTableModel sectionsTableModel = ui.getSectionsTableModel(); + if (sectionsTableModel.isEmpty()) { + + // no section + return; + } + + boolean canDelete = true; + for (SectionWithTemplate sectionWithTemplate : sectionsTableModel.getNotEmptyData()) { + + if (!ui.getHandler().canDeleteSection(sectionWithTemplate.getDelegate())) { + canDelete = false; + break; + } + } + + if (!canDelete) { + + // there is some references, can't delete + UIHelper.displayWarning(t("observe.common.LonglineDetailCompositionDto.section.cant.delete.title"), t("observe.common.LonglineDetailCompositionDto.section.cant.delete.message")); + return; + + } + + ObserveMainUI mainUI = ObserveSwingApplicationContext.get().getMainUI(); + int response = UIHelper.askUser(mainUI, + t("observe.title.delete"), + t("observe.common.LonglineDetailCompositionDto.section.delete.message"), + JOptionPane.WARNING_MESSAGE, + new Object[]{t("observe.choice.confirm.delete"), + t("observe.choice.cancel")}, + 1); + + if (response != 0) { + + // user cancel + return; + } + + if (log.isInfoEnabled()) { + log.info("Remove all sections."); + } + + validationHelper.setObjectValueAdjusting(true); + + try { + + sectionsTableModel.setData(new ArrayList<>()); + ui.getBean().getSection().clear(); + ui.getModel().setModified(true); + + } finally { + + validationHelper.setObjectValueAdjusting(false); + validationHelper.whenSectionChanged(); + + } + } + +} ===================================== client/src/main/java/fr/ird/observe/client/ui/actions/content/LonglineDetailCompositionGenerateAllSectionsAction.java ===================================== @@ -0,0 +1,155 @@ +package fr.ird.observe.client.ui.actions.content; + +import com.google.common.collect.Lists; +import fr.ird.observe.client.ui.ObserveKeyStrokes; +import fr.ird.observe.client.ui.ObserveMainUI; +import fr.ird.observe.client.ui.content.ContentUI; +import fr.ird.observe.client.ui.content.data.longline.BasketsTableModel; +import fr.ird.observe.client.ui.content.data.longline.BranchlinesTableModel; +import fr.ird.observe.client.ui.content.data.longline.LonglineDetailCompositionUI; +import fr.ird.observe.client.ui.content.data.longline.LonglineDetailCompositionUIValidationHelper; +import fr.ird.observe.client.ui.content.data.longline.SectionTemplatesTableModel; +import fr.ird.observe.client.ui.content.data.longline.SectionsTableModel; +import fr.ird.observe.client.ui.util.UIHelper; +import fr.ird.observe.dto.data.longline.BasketDto; +import fr.ird.observe.dto.data.longline.BranchlineDto; +import fr.ird.observe.dto.data.longline.SectionDto; +import fr.ird.observe.dto.data.longline.SectionTemplate; +import fr.ird.observe.dto.data.longline.SectionWithTemplate; +import fr.ird.observe.dto.data.longline.SetLonglineDetailCompositionDto; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import java.util.ArrayList; +import java.util.LinkedList; +import java.util.List; +import java.util.stream.Collectors; + +import static org.nuiton.i18n.I18n.t; + +/** + * Created by tchemit on 10/07/2018. + * + * @author Tony Chemit - dev(a)tchemit.fr + */ +public class LonglineDetailCompositionGenerateAllSectionsAction extends AbstractContentUIAction { + + public static final String ACTION_NAME = LonglineDetailCompositionGenerateAllSectionsAction.class.getName(); + private static final Log log = LogFactory.getLog(LonglineDetailCompositionGenerateAllSectionsAction.class); + public LonglineDetailCompositionGenerateAllSectionsAction(ObserveMainUI mainUI) { + + super(mainUI, ACTION_NAME, t("observe.common.LonglineDetailCompositionDto.action.generateAllSections"), t("observe.common.LonglineDetailCompositionDto.action.generateAllSections.tip"), "generate", ObserveKeyStrokes.KEY_STROKE_NEW_NEXT_DATA); + } + + @Override + protected void actionPerformed(ContentUI<?, ?> contentUI) { + + LonglineDetailCompositionUI ui = (LonglineDetailCompositionUI) contentUI; + + LonglineDetailCompositionUIValidationHelper validationHelper = ui.getHandler().getValidationHelper(); + + if (log.isInfoEnabled()) { + log.info("Generate all sections."); + } + + SetLonglineDetailCompositionDto bean = ui.getBean(); + Integer nbSections = bean.getTotalSectionsCount(); + Integer basketsCount = bean.getBasketsPerSectionCount(); + Integer nbBranchlines = bean.getBranchlinesPerBasketCount(); + + SectionTemplate template = null; + + SectionTemplatesTableModel sectionTemplatesTableModel = ui.getSectionTemplatesTableModel(); + List<SectionTemplate> sectionTemplates = sectionTemplatesTableModel.getNotEmptyData(); + if (sectionTemplates.size() == 1) { + + template = sectionTemplates.get(0); + + boolean compliantWithBasketCount = template.isCompiliantWithBasketCount(basketsCount); + if (!compliantWithBasketCount) { + + if (log.isWarnEnabled()) { + log.warn("sectionTemplate " + template + " is not compliant with basketCount: " + basketsCount); + } + + UIHelper.displayWarning(t("observe.common.LonglineDetailCompositionDto.title.section.cant.use.firstTemplate"), t("observe.common.LonglineDetailCompositionDto.firstTemplate.template.notCompilant.basketCount", template.getFloatlineLengths(), basketsCount)); + + template = null; + + } + + } + + boolean usingTemplate = template != null; + + if (usingTemplate) { + + if (log.isInfoEnabled()) { + log.info("Will use sectionTemplate: " + template); + } + } + + validationHelper.setObjectValueAdjusting(true); + + try { + + SectionsTableModel sectionsTableModel = ui.getSectionsTableModel(); + BasketsTableModel basketsTableModel = ui.getBasketsTableModel(); + BranchlinesTableModel branchlinesTableModel = ui.getBranchlinesTableModel(); + + List<SectionWithTemplate> sections = new ArrayList<>(nbSections); + + for (int sectionNumber = 0; sectionNumber < nbSections; sectionNumber++) { + + SectionWithTemplate section = sectionsTableModel.createNewRow(); + sections.add(section); + + for (int basketNumber = 0; basketNumber < basketsCount; basketNumber++) { + + BasketDto basket = basketsTableModel.createNewRow(); + section.addBasket(basket); + + for (int branchlineNumber = 0; branchlineNumber < nbBranchlines; branchlineNumber++) { + + BranchlineDto branchline = branchlinesTableModel.createNewRow(); + basket.addBranchline(branchline); + + } + + LinkedList<BranchlineDto> branchlines = Lists.newLinkedList(basket.getBranchline()); + branchlinesTableModel.rearrangeIds(branchlines); + + } + + List<BasketDto> baskets = Lists.newLinkedList(section.getBasket()); + basketsTableModel.rearrangeIds(baskets); + + if (usingTemplate) { + + section.setSectionTemplate(template); + template.applyToBaskets(baskets); + + } + + } + + sectionsTableModel.rearrangeIds(sections); + sectionsTableModel.setData(sections); + + List<SectionDto> sectionHelper = sections.stream() + .map(SectionWithTemplate::getDelegate) + .collect(Collectors.toList()); + + ui.getBean().addAllSection(sectionHelper); + + ui.getModel().setModified(true); + + } finally { + + validationHelper.setObjectValueAdjusting(false); + validationHelper.whenSectionChanged(); + + } + } + +} ===================================== client/src/main/java/fr/ird/observe/client/ui/content/data/longline/BasketsTableModel.java ===================================== @@ -40,7 +40,7 @@ public class BasketsTableModel extends LonglineCompositionTableModelSupport<Bask } @Override - protected BasketDto createNewRow() { + public BasketDto createNewRow() { return new BasketDto(); } ===================================== client/src/main/java/fr/ird/observe/client/ui/content/data/longline/BranchlinesTableModel.java ===================================== @@ -49,7 +49,7 @@ public class BranchlinesTableModel extends LonglineCompositionTableModelSupport< } @Override - protected BranchlineDto createNewRow() { + public BranchlineDto createNewRow() { BranchlineDto branchline = new BranchlineDto(); branchline.setTimerTimeOnBoard(defaultDate); ===================================== client/src/main/java/fr/ird/observe/client/ui/content/data/longline/LonglineDetailCompositionUI.jaxx ===================================== @@ -26,6 +26,8 @@ <import> fr.ird.observe.client.ObserveSwingApplicationContext fr.ird.observe.dto.data.longline.SetLonglineDetailCompositionDto + fr.ird.observe.client.ui.actions.content.LonglineDetailCompositionDeleteAllSectionsAction + fr.ird.observe.client.ui.actions.content.LonglineDetailCompositionGenerateAllSectionsAction fr.ird.observe.client.ui.actions.content.ResetEditUIAction fr.ird.observe.client.ui.actions.content.SaveEditUIAction fr.ird.observe.client.ui.actions.main.global.ResetDataGlobalUIAction @@ -146,8 +148,8 @@ <JPanel layout='{new BorderLayout()}'> <JPanel id="compositionActionPanel" constraints='BorderLayout.NORTH' layout='{new GridLayout()}'> - <JButton id='generateAll' onActionPerformed='getHandler().generateAllSections()'/> - <JButton id='deleteAll' onActionPerformed='getHandler().deleteAllSections()'/> + <JButton id='generateAll' /> + <JButton id='deleteAll' /> </JPanel> <JPanel id="compositionTablesPanel" constraints='BorderLayout.CENTER' layout='{new GridLayout(0,1)}'> ===================================== client/src/main/java/fr/ird/observe/client/ui/content/data/longline/LonglineDetailCompositionUI.jcss ===================================== @@ -81,17 +81,13 @@ } #generateAll { - text: "observe.common.LonglineDetailCompositionDto.action.generateAllSections"; - toolTipText: "observe.common.LonglineDetailCompositionDto.action.generateAllSections.tip"; - actionIcon: generate; + _observeAction:{LonglineDetailCompositionGenerateAllSectionsAction.ACTION_NAME}; visible: {model.isUpdatingMode()}; enabled: {model.isCanGenerate() && sectionsTableModel.isEmpty()}; } #deleteAll { - text: "observe.common.LonglineDetailCompositionDto.action.deleteAllSections"; - toolTipText: "observe.common.LonglineDetailCompositionDto.action.deleteAllSections.tip"; - actionIcon: delete; + _observeAction:{LonglineDetailCompositionDeleteAllSectionsAction.ACTION_NAME}; visible: {model.isUpdatingMode()}; enabled: {!sectionsTableModel.isEmpty()}; } ===================================== client/src/main/java/fr/ird/observe/client/ui/content/data/longline/LonglineDetailCompositionUIHandler.java ===================================== @@ -22,7 +22,6 @@ package fr.ird.observe.client.ui.content.data.longline; * #L% */ -import com.google.common.collect.Lists; import fr.ird.observe.client.ObserveSwingApplicationContext; import fr.ird.observe.client.db.ClientDataContext; import fr.ird.observe.client.db.ObserveSwingDataSource; @@ -64,10 +63,8 @@ import javax.swing.event.TableModelListener; import java.beans.PropertyChangeListener; import java.util.ArrayList; import java.util.LinkedHashSet; -import java.util.LinkedList; import java.util.List; import java.util.Optional; -import java.util.stream.Collectors; import static com.google.common.collect.Lists.newArrayList; import static org.nuiton.i18n.I18n.t; @@ -490,174 +487,6 @@ public class LonglineDetailCompositionUIHandler extends ContentUIHandler<SetLong return continueSave; } - public void generateAllSections() { - - if (log.isInfoEnabled()) { - log.info("Generate all sections."); - } - - SetLonglineDetailCompositionDto bean = getBean(); - Integer nbSections = bean.getTotalSectionsCount(); - Integer basketsCount = bean.getBasketsPerSectionCount(); - Integer nbBranchlines = bean.getBranchlinesPerBasketCount(); - - SectionTemplate template = null; - - SectionTemplatesTableModel sectionTemplatesTableModel = getSectionTemplatesTableModel(); - List<SectionTemplate> sectionTemplates = sectionTemplatesTableModel.getNotEmptyData(); - if (sectionTemplates.size() == 1) { - - template = sectionTemplates.get(0); - - boolean compliantWithBasketCount = template.isCompiliantWithBasketCount(basketsCount); - if (!compliantWithBasketCount) { - - if (log.isWarnEnabled()) { - log.warn("sectionTemplate " + template + " is not compliant with basketCount: " + basketsCount); - } - - UIHelper.displayWarning(t("observe.common.LonglineDetailCompositionDto.title.section.cant.use.firstTemplate"), t("observe.common.LonglineDetailCompositionDto.firstTemplate.template.notCompilant.basketCount", template.getFloatlineLengths(), basketsCount)); - - template = null; - - } - - } - - boolean usingTemplate = template != null; - - if (usingTemplate) { - - if (log.isInfoEnabled()) { - log.info("Will use sectionTemplate: " + template); - } - } - - validationHelper.setObjectValueAdjusting(true); - - try { - - SectionsTableModel sectionsTableModel = getSectionsTableModel(); - BasketsTableModel basketsTableModel = getBasketsTableModel(); - BranchlinesTableModel branchlinesTableModel = getBranchlinesTableModel(); - - List<SectionWithTemplate> sections = new ArrayList<>(nbSections); - - for (int sectionNumber = 0; sectionNumber < nbSections; sectionNumber++) { - - SectionWithTemplate section = sectionsTableModel.createNewRow(); - sections.add(section); - - for (int basketNumber = 0; basketNumber < basketsCount; basketNumber++) { - - BasketDto basket = basketsTableModel.createNewRow(); - section.addBasket(basket); - - for (int branchlineNumber = 0; branchlineNumber < nbBranchlines; branchlineNumber++) { - - BranchlineDto branchline = branchlinesTableModel.createNewRow(); - basket.addBranchline(branchline); - - } - - LinkedList<BranchlineDto> branchlines = Lists.newLinkedList(basket.getBranchline()); - branchlinesTableModel.rearrangeIds(branchlines); - - } - - List<BasketDto> baskets = Lists.newLinkedList(section.getBasket()); - basketsTableModel.rearrangeIds(baskets); - - if (usingTemplate) { - - section.setSectionTemplate(template); - template.applyToBaskets(baskets); - - } - - } - - sectionsTableModel.rearrangeIds(sections); - sectionsTableModel.setData(sections); - - List<SectionDto> sectionHelper = sections.stream() - .map(SectionWithTemplate::getDelegate) - .collect(Collectors.toList()); - - getBean().addAllSection(sectionHelper); - - getModel().setModified(true); - - } finally { - - validationHelper.setObjectValueAdjusting(false); - validationHelper.whenSectionChanged(); - - } - - } - - public void deleteAllSections() { - - if (getSectionsTableModel().isEmpty()) { - - // no section - return; - } - - boolean canDelete = true; - for (SectionWithTemplate sectionWithTemplate : getSectionsTableModel().getNotEmptyData()) { - - if (!canDeleteSection(sectionWithTemplate.getDelegate())) { - canDelete = false; - break; - } - } - - if (!canDelete) { - - // there is some references, can't delete - UIHelper.displayWarning(t("observe.common.LonglineDetailCompositionDto.section.cant.delete.title"), t("observe.common.LonglineDetailCompositionDto.section.cant.delete.message")); - return; - - } - - ObserveMainUI mainUI = ObserveSwingApplicationContext.get().getMainUI(); - int response = UIHelper.askUser(mainUI, - t("observe.title.delete"), - t("observe.common.LonglineDetailCompositionDto.section.delete.message"), - JOptionPane.WARNING_MESSAGE, - new Object[]{t("observe.choice.confirm.delete"), - t("observe.choice.cancel")}, - 1); - - if (response != 0) { - - // user cancel - return; - } - - if (log.isInfoEnabled()) { - log.info("Remove all sections."); - } - - validationHelper.setObjectValueAdjusting(true); - - try { - - getSectionsTableModel().setData(new ArrayList<>()); - getBean().getSection().clear(); - getModel().setModified(true); - - } finally { - - validationHelper.setObjectValueAdjusting(false); - validationHelper.whenSectionChanged(); - - } - - } - public void insertBeforeSelectedSectionTemplate() { getSectionTemplatesTableModel().insertBeforeSelectedRow(); } @@ -1367,7 +1196,7 @@ public class LonglineDetailCompositionUIHandler extends ContentUIHandler<SetLong return getUi().getBranchlineDetailUIModel(); } - private boolean canDeleteSection(SectionDto section) { + public boolean canDeleteSection(SectionDto section) { return section.isNotPersisted() || getSetLonglineDetailCompositionService().canDeleteSection(section.getId()); @@ -1385,4 +1214,7 @@ public class LonglineDetailCompositionUIHandler extends ContentUIHandler<SetLong } + public LonglineDetailCompositionUIValidationHelper getValidationHelper() { + return validationHelper; + } } ===================================== client/src/main/java/fr/ird/observe/client/ui/content/data/longline/LonglineDetailCompositionUIValidationHelper.java ===================================== @@ -47,7 +47,7 @@ import java.util.Set; * @author Tony Chemit - dev(a)tchemit.fr * @since 3.15 */ -class LonglineDetailCompositionUIValidationHelper { +public class LonglineDetailCompositionUIValidationHelper { /** Logger. */ private static final Log log = LogFactory.getLog(LonglineDetailCompositionUIValidationHelper.class); @@ -89,7 +89,7 @@ class LonglineDetailCompositionUIValidationHelper { ); } - void whenSectionChanged() { + public void whenSectionChanged() { if (!objectValueAdjusting) { @@ -157,7 +157,7 @@ class LonglineDetailCompositionUIValidationHelper { }); } - void setObjectValueAdjusting(boolean objectValueAdjusting) { + public void setObjectValueAdjusting(boolean objectValueAdjusting) { this.objectValueAdjusting = objectValueAdjusting; } ===================================== client/src/main/java/fr/ird/observe/client/ui/content/data/longline/SectionsTableModel.java ===================================== @@ -47,7 +47,7 @@ public class SectionsTableModel extends LonglineCompositionTableModelSupport<Sec } @Override - protected SectionWithTemplate createNewRow() { + public SectionWithTemplate createNewRow() { return new SectionWithTemplate(); } View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/fd9b4b6d5dcf54a367aacdf87ae… -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/fd9b4b6d5dcf54a367aacdf87ae… You're receiving this email because of your account on gitlab.com.
1 0
0 0
[Git][ultreiaio/ird-observe][develop-7.x] [LL] Plus de validation sur snap et émerillon - Closes #1028
by Tony CHEMIT 10 Jul '18

10 Jul '18
Tony CHEMIT pushed to branch develop-7.x at ultreiaio / ird-observe Commits: 91f26bf0 by Tony CHEMIT at 2018-07-10T12:50:15Z [LL] Plus de validation sur snap et émerillon - Closes #1028 - - - - - 14 changed files: - client/src/main/resources/i18n/client_en_GB.properties - client/src/main/resources/i18n/client_es_ES.properties - client/src/main/resources/i18n/client_fr_FR.properties - dto/src/main/java/fr/ird/observe/dto/decoration/ObserveI18nLabelsBuilder.java - dto/src/main/resources/i18n/dto_en_GB.properties - dto/src/main/resources/i18n/dto_es_ES.properties - dto/src/main/resources/i18n/dto_fr_FR.properties - validation/src/main/resources/fr/ird/observe/dto/data/longline/BranchlineDto-update-error-validation.xml - validation/src/main/resources/fr/ird/observe/dto/data/longline/BranchlineDto-update-table-error-validation.xml - validation/src/main/resources/fr/ird/observe/dto/data/longline/SetLonglineDto-create-error-validation.xml - validation/src/main/resources/fr/ird/observe/dto/data/longline/SetLonglineDto-update-error-validation.xml - validation/src/main/resources/i18n/validation_en_GB.properties - validation/src/main/resources/i18n/validation_es_ES.properties - validation/src/main/resources/i18n/validation_fr_FR.properties Changes: ===================================== client/src/main/resources/i18n/client_en_GB.properties ===================================== @@ -410,8 +410,6 @@ observe.common.BranchlineDto.hookLost=Hook lost observe.common.BranchlineDto.hookOffset=Hook offset observe.common.BranchlineDto.message.modified=Branchline was modified and is valid. observe.common.BranchlineDto.message.modified.but.invalid=Branchline was modified but is not valid. -observe.common.BranchlineDto.snapWeight=Snap weight (kg) -observe.common.BranchlineDto.swivelWeight=Swivel weight (kg) observe.common.BranchlineDto.timeSinceContact=Time since contact observe.common.BranchlineDto.timer=Timer observe.common.BranchlineDto.timerTimeOnBoard=Time on board ===================================== client/src/main/resources/i18n/client_es_ES.properties ===================================== @@ -410,8 +410,6 @@ observe.common.BranchlineDto.hookLost=Anzuelo erdido observe.common.BranchlineDto.hookOffset=Offset anzuelo (°) observe.common.BranchlineDto.message.modified=El arponcillo que se está modificando actualmente ha sido modificado y es valido. observe.common.BranchlineDto.message.modified.but.invalid=El arponcillo que se está modificando actualmente ha sido modificado, pero no es valido. -observe.common.BranchlineDto.snapWeight=Peso snap (kg) -observe.common.BranchlineDto.swivelWeight=Peso destorcedor (kg) observe.common.BranchlineDto.timeSinceContact=Tiempo desde el estallido observe.common.BranchlineDto.timer=Reloj observe.common.BranchlineDto.timerTimeOnBoard=Timestamp de subida a bordo ===================================== client/src/main/resources/i18n/client_fr_FR.properties ===================================== @@ -410,8 +410,6 @@ observe.common.BranchlineDto.hookLost=Hameçon perdu observe.common.BranchlineDto.hookOffset=Offset hameçon (°) observe.common.BranchlineDto.message.modified=L'avançon en cours d'édition a été modifié et est valide. observe.common.BranchlineDto.message.modified.but.invalid=L'avançon en cours d'édition a été modifié, mais n'est pas valide. -observe.common.BranchlineDto.snapWeight=Poids snap (kg) -observe.common.BranchlineDto.swivelWeight=Poids émerillon (kg) observe.common.BranchlineDto.timeSinceContact=Temps depuis déclenchement observe.common.BranchlineDto.timer=Horloge observe.common.BranchlineDto.timerTimeOnBoard=Horodatage de montée à bord ===================================== dto/src/main/java/fr/ird/observe/dto/decoration/ObserveI18nLabelsBuilder.java ===================================== @@ -47,6 +47,7 @@ public class ObserveI18nLabelsBuilder extends I18nLabelsBuilder { static { n("observe.common.I18nReferentialDto.label"); n("observe.common.SetLonglineGlobalCompositionDto.type"); + n("observe.common.SetLonglineDetailCompositionDto.type"); } private static final ObserveI18nLabelsBuilder INSTANCE = new ObserveI18nLabelsBuilder(null); ===================================== dto/src/main/resources/i18n/dto_en_GB.properties ===================================== @@ -159,6 +159,7 @@ observe.common.SensorTypeDto.types=Sensors type observe.common.SensorUsedDto.title=Sensors ursed observe.common.SensorUsedDto.type=Sensor used observe.common.SensorUsedDto.types=Sensors used +observe.common.SetLonglineDetailCompositionDto.type=Detailed composition observe.common.SetLonglineDto.title=Fishing operation observe.common.SetLonglineDto.type=Set observe.common.SetLonglineDto.types=Sets ===================================== dto/src/main/resources/i18n/dto_es_ES.properties ===================================== @@ -157,6 +157,7 @@ observe.common.SensorTypeDto.types=Tipos de sensor observe.common.SensorUsedDto.title=Sensores observe.common.SensorUsedDto.type=Sensor utilizado observe.common.SensorUsedDto.types=Sensores utilizados +observe.common.SetLonglineDetailCompositionDto.type=Esquema del palangre observe.common.SetLonglineDto.title=Operación de pesca observe.common.SetLonglineDto.type=Operación de pesca observe.common.SetLonglineDto.types=Operaciones de pesca ===================================== dto/src/main/resources/i18n/dto_fr_FR.properties ===================================== @@ -159,6 +159,7 @@ observe.common.SensorTypeDto.types=Types de capteur observe.common.SensorUsedDto.title=Capteurs observe.common.SensorUsedDto.type=Capteur utilisé observe.common.SensorUsedDto.types=Capteurs utilisés +observe.common.SetLonglineDetailCompositionDto.type=Schéma de palangre observe.common.SetLonglineDto.title=Opération de pêche observe.common.SetLonglineDto.type=Opération de pêche observe.common.SetLonglineDto.types=Opérations de pêche ===================================== validation/src/main/resources/fr/ird/observe/dto/data/longline/BranchlineDto-update-error-validation.xml ===================================== @@ -108,4 +108,30 @@ </field> + <field name="swivelWeight"> + + <!-- 0.0 <= swivelWeight <= 0.2 --> + <field-validator type="fieldexpressionwithparams" short-circuit="true"> + <param name="doubleParams">min:0.0|max:0.2</param> + <param name="expression"><![CDATA[ !weightedSwivel || swivelWeight == null || (doubles.min < swivelWeight && (swivelWeight - doubles.max) * 1000 < 1)]]></param> + <message> + observe.validation.setLongline.bound.swivelWeight##${doubles.min}##${doubles.max} + </message> + </field-validator> + + </field> + + <field name="snapWeight"> + + <!-- 0.0 <= snapWeight <= 0.2 --> + <field-validator type="fieldexpressionwithparams" short-circuit="true"> + <param name="doubleParams">min:0.0|max:0.2</param> + <param name="expression"><![CDATA[ !weightedSnap || snapWeight == null || (doubles.min < snapWeight && (snapWeight - doubles.max) * 1000 < 1)]]></param> + <message> + observe.validation.setLongline.bound.snapWeight##${doubles.min}##${doubles.max} + </message> + </field-validator> + + </field> + </validators> ===================================== validation/src/main/resources/fr/ird/observe/dto/data/longline/BranchlineDto-update-table-error-validation.xml ===================================== @@ -39,7 +39,7 @@ <field-validator type="fieldexpressionwithparams" short-circuit="true"> <param name="doubleParams">min:0.0|max:50.0</param> <param name="expression"> - <![CDATA[ branchlineLength == null || (doubles.min <= branchlineLength && branchlineLength <= doubles.max)]]> + <![CDATA[ branchlineLength == null || (doubles.min < branchlineLength && (branchlineLength - doubles.max) * 1000 < 1)]]> </param> <message> observe.validation.branchline.bound.branchlineLength##${doubles.min}##${doubles.max} @@ -54,7 +54,7 @@ <field-validator type="fieldexpressionwithparams" short-circuit="true"> <param name="doubleParams">min:0.0|max:50.0</param> <param name="expression"> - <![CDATA[ tracelineLength == null || (doubles.min <= tracelineLength && tracelineLength <= doubles.max)]]> + <![CDATA[ tracelineLength == null || (doubles.min <= tracelineLength && (tracelineLength - doubles.max) * 1000 < 1)]]> </param> <message> observe.validation.branchline.bound.tracelineLength##${doubles.min}##${doubles.max} ===================================== validation/src/main/resources/fr/ird/observe/dto/data/longline/SetLonglineDto-create-error-validation.xml ===================================== @@ -113,11 +113,8 @@ <!-- 0.0 <= swivelWeight <= 0.2 --> <field-validator type="fieldexpressionwithparams" short-circuit="true"> - <param name="doubleParams">min:0.0|max:0.2001</param> - <param name="expression"><![CDATA[ - swivelWeight == null || (doubles.min < swivelWeight && swivelWeight <= doubles.max) - ]]> - </param> + <param name="doubleParams">min:0.0|max:0.2</param> + <param name="expression"><![CDATA[ !weightedSwivel || swivelWeight == null || (doubles.min < swivelWeight && (swivelWeight - doubles.max) * 1000 < 1)]]></param> <message> observe.validation.setLongline.bound.swivelWeight##${doubles.min}##${doubles.max} </message> @@ -129,11 +126,8 @@ <!-- 0.0 <= snapWeight <= 0.2 --> <field-validator type="fieldexpressionwithparams" short-circuit="true"> - <param name="doubleParams">min:0.0|max:0.2001</param> - <param name="expression"><![CDATA[ - snapWeight == null || (doubles.min < snapWeight && snapWeight <= doubles.max) - ]]> - </param> + <param name="doubleParams">min:0.0|max:0.2</param> + <param name="expression"><![CDATA[ !weightedSnap || snapWeight == null || (doubles.min < snapWeight && (snapWeight - doubles.max) * 1000 < 1)]]></param> <message> observe.validation.setLongline.bound.snapWeight##${doubles.min}##${doubles.max} </message> ===================================== validation/src/main/resources/fr/ird/observe/dto/data/longline/SetLonglineDto-update-error-validation.xml ===================================== @@ -147,11 +147,8 @@ <!-- 0.0 <= swivelWeight <= 0.2 --> <field-validator type="fieldexpressionwithparams" short-circuit="true"> - <param name="doubleParams">min:0.0|max:0.20001</param> - <param name="expression"><![CDATA[ - swivelWeight == null || (doubles.min < swivelWeight && swivelWeight <= doubles.max) - ]]> - </param> + <param name="doubleParams">min:0.0|max:0.2</param> + <param name="expression"><![CDATA[ !weightedSwivel || swivelWeight == null || (doubles.min < swivelWeight && (swivelWeight - doubles.max) * 1000 < 1)]]></param> <message> observe.validation.setLongline.bound.swivelWeight##${doubles.min}##${doubles.max} </message> @@ -163,11 +160,8 @@ <!-- 0.0 <= snapWeight <= 0.2 --> <field-validator type="fieldexpressionwithparams" short-circuit="true"> - <param name="doubleParams">min:0.0|max:0.200001</param> - <param name="expression"><![CDATA[ - snapWeight == null || (doubles.min < snapWeight && snapWeight <= doubles.max) - ]]> - </param> + <param name="doubleParams">min:0.0|max:0.2</param> + <param name="expression"><![CDATA[ !weightedSnap || snapWeight == null || (doubles.min < snapWeight && (snapWeight - doubles.max) * 1000 < 1)]]></param> <message> observe.validation.setLongline.bound.snapWeight##${doubles.min}##${doubles.max} </message> ===================================== validation/src/main/resources/i18n/validation_en_GB.properties ===================================== @@ -44,6 +44,8 @@ observe.common.BranchlineDto.branchlineLength=Branchline length observe.common.BranchlineDto.hookSize=Hook size observe.common.BranchlineDto.hookType=Hook type observe.common.BranchlineDto.settingIdentifier=Setting +observe.common.BranchlineDto.snapWeight=Snap weight (kg) +observe.common.BranchlineDto.swivelWeight=Swivel weight (kg) observe.common.BranchlineDto.topType=Top part type observe.common.BranchlineDto.tracelineLength=Traceline length observe.common.BranchlineDto.tracelineType=Traceline type ===================================== validation/src/main/resources/i18n/validation_es_ES.properties ===================================== @@ -44,6 +44,8 @@ observe.common.BranchlineDto.branchlineLength=Arponcillo (m) observe.common.BranchlineDto.hookSize=Tamaño del anzuelo observe.common.BranchlineDto.hookType=Tipo de anzuelo observe.common.BranchlineDto.settingIdentifier=Calada +observe.common.BranchlineDto.snapWeight=Peso snap (kg) +observe.common.BranchlineDto.swivelWeight=Peso de el destorcedor (kg) observe.common.BranchlineDto.topType=Tipo parte superior observe.common.BranchlineDto.tracelineLength=Parte baja (m) observe.common.BranchlineDto.tracelineType=Tipo bajo de línea @@ -457,7 +459,7 @@ observe.validation.lengthFormula.endDate.before.startDate=End date must be after observe.validation.lengthLengthParameter.disabled.inputSizeMeasureType=Le type de mensuration d'entrée sélectionné est désactivé. \#TODO observe.validation.lengthLengthParameter.invalid.inputOutputFormula=La formule n'est pas valide. \#TODO observe.validation.lengthLengthParameter.invalid.outputInputFormula=La formule n'est pas valide. \#TODO -observe.validation.lengthLengthParameter.invalid.uniqueKey=Tupla (especiesexo/océano/input size measure/ output size measure/startDate) debe ser única, la tupla ya se ha usado. #TODO +observe.validation.lengthLengthParameter.invalid.uniqueKey=Tupla (especiesexo/océano/input size measure/ output size measure/startDate) debe ser única, la tupla ya se ha usado. \#TODO observe.validation.lengthLengthParameter.null.inputSizeMeasureType=Le type de mensuration d'entrée n'est pas renseigné. \#TODO observe.validation.lengthLengthParameter.null.ocean=No se ha seleccionado oceano. observe.validation.lengthLengthParameter.null.outputSizeMeasureType=Le type de mensuration de sortie n'est pas renseigné. \#TODO @@ -470,7 +472,7 @@ observe.validation.lengthLengthParameter.required.species=Especie no especificad observe.validation.lengthLengthParameter.required.startDate=fecha de comienzo de validez no especificada. observe.validation.lengthWeightParameter.disabled.sizeMeasureType=Le type de mensuration sélectionné est désactivé. \#TODO observe.validation.lengthWeightParameter.invalid.lengthWeightFormula=Relación de peso introducida no es coherente. -observe.validation.lengthWeightParameter.invalid.uniqueKey=Tupla (especie/sexo/océano/sizeMeasureType/startDate) debe ser única, la tupla ya se ha usado. #TODO +observe.validation.lengthWeightParameter.invalid.uniqueKey=Tupla (especie/sexo/océano/sizeMeasureType/startDate) debe ser única, la tupla ya se ha usado. \#TODO observe.validation.lengthWeightParameter.invalid.weightLengthFormula=Relación de talla introducida no es coherente. observe.validation.lengthWeightParameter.null.ocean=No se ha seleccionado oceano. observe.validation.lengthWeightParameter.null.sizeMeasureType=Type de mensuration non renseigné. \#TODO ===================================== validation/src/main/resources/i18n/validation_fr_FR.properties ===================================== @@ -44,6 +44,8 @@ observe.common.BranchlineDto.branchlineLength=Longueur Avançon (m) observe.common.BranchlineDto.hookSize=Taille d'hameçon observe.common.BranchlineDto.hookType=Type d'hameçon observe.common.BranchlineDto.settingIdentifier=Filage +observe.common.BranchlineDto.snapWeight=Poids snap (kg) +observe.common.BranchlineDto.swivelWeight=Poids de l'émerillon (kg) observe.common.BranchlineDto.topType=Type partie supérieure observe.common.BranchlineDto.tracelineLength=Partie basse (m) observe.common.BranchlineDto.tracelineType=Type bas de ligne View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/91f26bf075775a04ce7e4836b1d… -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/91f26bf075775a04ce7e4836b1d… You're receiving this email because of your account on gitlab.com.
1 0
0 0
[Git][ultreiaio/ird-observe][develop-7.x] [LL] Plus de validation sur snap et émerillon - Closes #1028
by Tony CHEMIT 10 Jul '18

10 Jul '18
Tony CHEMIT pushed to branch develop-7.x at ultreiaio / ird-observe Commits: 88d65a50 by Tony CHEMIT at 2018-07-10T12:39:49Z [LL] Plus de validation sur snap et émerillon - Closes #1028 - - - - - 10 changed files: - client/src/main/resources/i18n/client_en_GB.properties - client/src/main/resources/i18n/client_es_ES.properties - client/src/main/resources/i18n/client_fr_FR.properties - validation/src/main/resources/fr/ird/observe/dto/data/longline/BranchlineDto-update-error-validation.xml - validation/src/main/resources/fr/ird/observe/dto/data/longline/BranchlineDto-update-table-error-validation.xml - validation/src/main/resources/fr/ird/observe/dto/data/longline/SetLonglineDto-create-error-validation.xml - validation/src/main/resources/fr/ird/observe/dto/data/longline/SetLonglineDto-update-error-validation.xml - validation/src/main/resources/i18n/validation_en_GB.properties - validation/src/main/resources/i18n/validation_es_ES.properties - validation/src/main/resources/i18n/validation_fr_FR.properties Changes: ===================================== client/src/main/resources/i18n/client_en_GB.properties ===================================== @@ -410,8 +410,6 @@ observe.common.BranchlineDto.hookLost=Hook lost observe.common.BranchlineDto.hookOffset=Hook offset observe.common.BranchlineDto.message.modified=Branchline was modified and is valid. observe.common.BranchlineDto.message.modified.but.invalid=Branchline was modified but is not valid. -observe.common.BranchlineDto.snapWeight=Snap weight (kg) -observe.common.BranchlineDto.swivelWeight=Swivel weight (kg) observe.common.BranchlineDto.timeSinceContact=Time since contact observe.common.BranchlineDto.timer=Timer observe.common.BranchlineDto.timerTimeOnBoard=Time on board ===================================== client/src/main/resources/i18n/client_es_ES.properties ===================================== @@ -410,8 +410,6 @@ observe.common.BranchlineDto.hookLost=Anzuelo erdido observe.common.BranchlineDto.hookOffset=Offset anzuelo (°) observe.common.BranchlineDto.message.modified=El arponcillo que se está modificando actualmente ha sido modificado y es valido. observe.common.BranchlineDto.message.modified.but.invalid=El arponcillo que se está modificando actualmente ha sido modificado, pero no es valido. -observe.common.BranchlineDto.snapWeight=Peso snap (kg) -observe.common.BranchlineDto.swivelWeight=Peso destorcedor (kg) observe.common.BranchlineDto.timeSinceContact=Tiempo desde el estallido observe.common.BranchlineDto.timer=Reloj observe.common.BranchlineDto.timerTimeOnBoard=Timestamp de subida a bordo ===================================== client/src/main/resources/i18n/client_fr_FR.properties ===================================== @@ -410,8 +410,6 @@ observe.common.BranchlineDto.hookLost=Hameçon perdu observe.common.BranchlineDto.hookOffset=Offset hameçon (°) observe.common.BranchlineDto.message.modified=L'avançon en cours d'édition a été modifié et est valide. observe.common.BranchlineDto.message.modified.but.invalid=L'avançon en cours d'édition a été modifié, mais n'est pas valide. -observe.common.BranchlineDto.snapWeight=Poids snap (kg) -observe.common.BranchlineDto.swivelWeight=Poids émerillon (kg) observe.common.BranchlineDto.timeSinceContact=Temps depuis déclenchement observe.common.BranchlineDto.timer=Horloge observe.common.BranchlineDto.timerTimeOnBoard=Horodatage de montée à bord ===================================== validation/src/main/resources/fr/ird/observe/dto/data/longline/BranchlineDto-update-error-validation.xml ===================================== @@ -108,4 +108,30 @@ </field> + <field name="swivelWeight"> + + <!-- 0.0 <= swivelWeight <= 0.2 --> + <field-validator type="fieldexpressionwithparams" short-circuit="true"> + <param name="doubleParams">min:0.0|max:0.2</param> + <param name="expression"><![CDATA[ !weightedSwivel || swivelWeight == null || (doubles.min < swivelWeight && (swivelWeight - doubles.max) * 1000 < 1)]]></param> + <message> + observe.validation.setLongline.bound.swivelWeight##${doubles.min}##${doubles.max} + </message> + </field-validator> + + </field> + + <field name="snapWeight"> + + <!-- 0.0 <= snapWeight <= 0.2 --> + <field-validator type="fieldexpressionwithparams" short-circuit="true"> + <param name="doubleParams">min:0.0|max:0.2</param> + <param name="expression"><![CDATA[ !weightedSnap || snapWeight == null || (doubles.min < snapWeight && (snapWeight - doubles.max) * 1000 < 1)]]></param> + <message> + observe.validation.setLongline.bound.snapWeight##${doubles.min}##${doubles.max} + </message> + </field-validator> + + </field> + </validators> ===================================== validation/src/main/resources/fr/ird/observe/dto/data/longline/BranchlineDto-update-table-error-validation.xml ===================================== @@ -39,7 +39,7 @@ <field-validator type="fieldexpressionwithparams" short-circuit="true"> <param name="doubleParams">min:0.0|max:50.0</param> <param name="expression"> - <![CDATA[ branchlineLength == null || (doubles.min <= branchlineLength && branchlineLength <= doubles.max)]]> + <![CDATA[ branchlineLength == null || (doubles.min < branchlineLength && (branchlineLength - doubles.max) * 1000 < 1)]]> </param> <message> observe.validation.branchline.bound.branchlineLength##${doubles.min}##${doubles.max} @@ -54,7 +54,7 @@ <field-validator type="fieldexpressionwithparams" short-circuit="true"> <param name="doubleParams">min:0.0|max:50.0</param> <param name="expression"> - <![CDATA[ tracelineLength == null || (doubles.min <= tracelineLength && tracelineLength <= doubles.max)]]> + <![CDATA[ tracelineLength == null || (doubles.min <= tracelineLength && (tracelineLength - doubles.max) * 1000 < 1)]]> </param> <message> observe.validation.branchline.bound.tracelineLength##${doubles.min}##${doubles.max} ===================================== validation/src/main/resources/fr/ird/observe/dto/data/longline/SetLonglineDto-create-error-validation.xml ===================================== @@ -113,11 +113,8 @@ <!-- 0.0 <= swivelWeight <= 0.2 --> <field-validator type="fieldexpressionwithparams" short-circuit="true"> - <param name="doubleParams">min:0.0|max:0.2001</param> - <param name="expression"><![CDATA[ - swivelWeight == null || (doubles.min < swivelWeight && swivelWeight <= doubles.max) - ]]> - </param> + <param name="doubleParams">min:0.0|max:0.2</param> + <param name="expression"><![CDATA[ !weightedSwivel || swivelWeight == null || (doubles.min < swivelWeight && (swivelWeight - doubles.max) * 1000 < 1)]]></param> <message> observe.validation.setLongline.bound.swivelWeight##${doubles.min}##${doubles.max} </message> @@ -129,11 +126,8 @@ <!-- 0.0 <= snapWeight <= 0.2 --> <field-validator type="fieldexpressionwithparams" short-circuit="true"> - <param name="doubleParams">min:0.0|max:0.2001</param> - <param name="expression"><![CDATA[ - snapWeight == null || (doubles.min < snapWeight && snapWeight <= doubles.max) - ]]> - </param> + <param name="doubleParams">min:0.0|max:0.2</param> + <param name="expression"><![CDATA[ !weightedSnap || snapWeight == null || (doubles.min < snapWeight && (snapWeight - doubles.max) * 1000 < 1)]]></param> <message> observe.validation.setLongline.bound.snapWeight##${doubles.min}##${doubles.max} </message> ===================================== validation/src/main/resources/fr/ird/observe/dto/data/longline/SetLonglineDto-update-error-validation.xml ===================================== @@ -147,11 +147,8 @@ <!-- 0.0 <= swivelWeight <= 0.2 --> <field-validator type="fieldexpressionwithparams" short-circuit="true"> - <param name="doubleParams">min:0.0|max:0.20001</param> - <param name="expression"><![CDATA[ - swivelWeight == null || (doubles.min < swivelWeight && swivelWeight <= doubles.max) - ]]> - </param> + <param name="doubleParams">min:0.0|max:0.2</param> + <param name="expression"><![CDATA[ !weightedSwivel || swivelWeight == null || (doubles.min < swivelWeight && (swivelWeight - doubles.max) * 1000 < 1)]]></param> <message> observe.validation.setLongline.bound.swivelWeight##${doubles.min}##${doubles.max} </message> @@ -163,11 +160,8 @@ <!-- 0.0 <= snapWeight <= 0.2 --> <field-validator type="fieldexpressionwithparams" short-circuit="true"> - <param name="doubleParams">min:0.0|max:0.200001</param> - <param name="expression"><![CDATA[ - snapWeight == null || (doubles.min < snapWeight && snapWeight <= doubles.max) - ]]> - </param> + <param name="doubleParams">min:0.0|max:0.2</param> + <param name="expression"><![CDATA[ !weightedSnap || snapWeight == null || (doubles.min < snapWeight && (snapWeight - doubles.max) * 1000 < 1)]]></param> <message> observe.validation.setLongline.bound.snapWeight##${doubles.min}##${doubles.max} </message> ===================================== validation/src/main/resources/i18n/validation_en_GB.properties ===================================== @@ -44,6 +44,8 @@ observe.common.BranchlineDto.branchlineLength=Branchline length observe.common.BranchlineDto.hookSize=Hook size observe.common.BranchlineDto.hookType=Hook type observe.common.BranchlineDto.settingIdentifier=Setting +observe.common.BranchlineDto.snapWeight=Snap weight (kg) +observe.common.BranchlineDto.swivelWeight=Swivel weight (kg) observe.common.BranchlineDto.topType=Top part type observe.common.BranchlineDto.tracelineLength=Traceline length observe.common.BranchlineDto.tracelineType=Traceline type ===================================== validation/src/main/resources/i18n/validation_es_ES.properties ===================================== @@ -44,6 +44,8 @@ observe.common.BranchlineDto.branchlineLength=Arponcillo (m) observe.common.BranchlineDto.hookSize=Tamaño del anzuelo observe.common.BranchlineDto.hookType=Tipo de anzuelo observe.common.BranchlineDto.settingIdentifier=Calada +observe.common.BranchlineDto.snapWeight=Peso snap (kg) +observe.common.BranchlineDto.swivelWeight=Peso de el destorcedor (kg) observe.common.BranchlineDto.topType=Tipo parte superior observe.common.BranchlineDto.tracelineLength=Parte baja (m) observe.common.BranchlineDto.tracelineType=Tipo bajo de línea @@ -457,7 +459,7 @@ observe.validation.lengthFormula.endDate.before.startDate=End date must be after observe.validation.lengthLengthParameter.disabled.inputSizeMeasureType=Le type de mensuration d'entrée sélectionné est désactivé. \#TODO observe.validation.lengthLengthParameter.invalid.inputOutputFormula=La formule n'est pas valide. \#TODO observe.validation.lengthLengthParameter.invalid.outputInputFormula=La formule n'est pas valide. \#TODO -observe.validation.lengthLengthParameter.invalid.uniqueKey=Tupla (especiesexo/océano/input size measure/ output size measure/startDate) debe ser única, la tupla ya se ha usado. #TODO +observe.validation.lengthLengthParameter.invalid.uniqueKey=Tupla (especiesexo/océano/input size measure/ output size measure/startDate) debe ser única, la tupla ya se ha usado. \#TODO observe.validation.lengthLengthParameter.null.inputSizeMeasureType=Le type de mensuration d'entrée n'est pas renseigné. \#TODO observe.validation.lengthLengthParameter.null.ocean=No se ha seleccionado oceano. observe.validation.lengthLengthParameter.null.outputSizeMeasureType=Le type de mensuration de sortie n'est pas renseigné. \#TODO @@ -470,7 +472,7 @@ observe.validation.lengthLengthParameter.required.species=Especie no especificad observe.validation.lengthLengthParameter.required.startDate=fecha de comienzo de validez no especificada. observe.validation.lengthWeightParameter.disabled.sizeMeasureType=Le type de mensuration sélectionné est désactivé. \#TODO observe.validation.lengthWeightParameter.invalid.lengthWeightFormula=Relación de peso introducida no es coherente. -observe.validation.lengthWeightParameter.invalid.uniqueKey=Tupla (especie/sexo/océano/sizeMeasureType/startDate) debe ser única, la tupla ya se ha usado. #TODO +observe.validation.lengthWeightParameter.invalid.uniqueKey=Tupla (especie/sexo/océano/sizeMeasureType/startDate) debe ser única, la tupla ya se ha usado. \#TODO observe.validation.lengthWeightParameter.invalid.weightLengthFormula=Relación de talla introducida no es coherente. observe.validation.lengthWeightParameter.null.ocean=No se ha seleccionado oceano. observe.validation.lengthWeightParameter.null.sizeMeasureType=Type de mensuration non renseigné. \#TODO ===================================== validation/src/main/resources/i18n/validation_fr_FR.properties ===================================== @@ -44,6 +44,8 @@ observe.common.BranchlineDto.branchlineLength=Longueur Avançon (m) observe.common.BranchlineDto.hookSize=Taille d'hameçon observe.common.BranchlineDto.hookType=Type d'hameçon observe.common.BranchlineDto.settingIdentifier=Filage +observe.common.BranchlineDto.snapWeight=Poids snap (kg) +observe.common.BranchlineDto.swivelWeight=Poids de l'émerillon (kg) observe.common.BranchlineDto.topType=Type partie supérieure observe.common.BranchlineDto.tracelineLength=Partie basse (m) observe.common.BranchlineDto.tracelineType=Type bas de ligne View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/88d65a5006f501d9cad40e4eaaa… -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/88d65a5006f501d9cad40e4eaaa… You're receiving this email because of your account on gitlab.com.
1 0
0 0
[Git][ultreiaio/ird-observe][develop-7.x] Revoir la clé d'unicité sur le référentiel taille-taille - Closes #992
by Tony CHEMIT 10 Jul '18

10 Jul '18
Tony CHEMIT pushed to branch develop-7.x at ultreiaio / ird-observe Commits: 4575713f by Tony CHEMIT at 2018-07-10T10:40:21Z Revoir la clé d&#39;unicité sur le référentiel taille-taille - Closes #992 - - - - - 15 changed files: - + dto/src/main/java/fr/ird/observe/dto/referential/LengthLengthParameterReference.java - + dto/src/main/java/fr/ird/observe/dto/referential/LengthWeightParameterReference.java - dto/src/main/java/fr/ird/observe/dto/referential/WithLengthFormula.java - + dto/src/main/java/fr/ird/observe/dto/referential/WithStartEndDate.java - persistence/src/main/java/fr/ird/observe/entities/referentiel/AbstractFormulaSupportTopiaDao.java - services/src/main/java/fr/ird/observe/services/validation/ValidationContext.java - services/src/main/java/fr/ird/observe/services/validation/validators/ObserveReferentialCollectionUniqueKeyDtoValidator.java → services/src/main/java/fr/ird/observe/services/validation/validators/ObserveLengthFormulaCollectionUniqueKeyDtoValidator.java - validation/src/main/resources/fr/ird/observe/dto/referential/LengthLengthParameterDto-create-error-validation.xml - validation/src/main/resources/fr/ird/observe/dto/referential/LengthLengthParameterDto-update-error-validation.xml - validation/src/main/resources/fr/ird/observe/dto/referential/LengthWeightParameterDto-create-error-validation.xml - validation/src/main/resources/fr/ird/observe/dto/referential/LengthWeightParameterDto-update-error-validation.xml - validation/src/main/resources/i18n/validation_en_GB.properties - validation/src/main/resources/i18n/validation_es_ES.properties - validation/src/main/resources/i18n/validation_fr_FR.properties - validation/src/main/resources/validators.xml Changes: ===================================== dto/src/main/java/fr/ird/observe/dto/referential/LengthLengthParameterReference.java ===================================== @@ -0,0 +1,35 @@ +package fr.ird.observe.dto.referential; + +/*- + * #%L + * ObServe :: Dto + * %% + * Copyright (C) 2008 - 2018 IRD, Code Lutin, Ultreia.io + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import fr.ird.observe.dto.reference.ReferentialDtoReferenceAware; + +import java.util.Date; + +public class LengthLengthParameterReference extends GeneratedLengthLengthParameterReference implements WithStartEndDate { + + public LengthLengthParameterReference(ReferentialDtoReferenceAware dto, String oceanLabel, String speciesLabel, String sexLabel, Date startDate, Date endDate, String inputSizeMeasureTypeCode, String inputSizeMeasureTypeLabel, String outputSizeMeasureTypeCode, String outputSizeMeasureTypeLabel, String inputOutputFormula, String outputInputFormula) { + super(dto, oceanLabel, speciesLabel, sexLabel, startDate, endDate, inputSizeMeasureTypeCode, inputSizeMeasureTypeLabel, outputSizeMeasureTypeCode, outputSizeMeasureTypeLabel, inputOutputFormula, outputInputFormula); + } + +} ===================================== dto/src/main/java/fr/ird/observe/dto/referential/LengthWeightParameterReference.java ===================================== @@ -0,0 +1,35 @@ +package fr.ird.observe.dto.referential; + +/*- + * #%L + * ObServe :: Dto + * %% + * Copyright (C) 2008 - 2018 IRD, Code Lutin, Ultreia.io + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import fr.ird.observe.dto.reference.ReferentialDtoReferenceAware; + +import java.util.Date; + +public class LengthWeightParameterReference extends GeneratedLengthWeightParameterReference implements WithStartEndDate { + + public LengthWeightParameterReference(ReferentialDtoReferenceAware dto, String oceanLabel, String speciesLabel, String sexLabel, Date startDate, Date endDate, String lengthWeightFormula, String weightLengthFormula, String sizeMeasureTypeCode) { + super(dto, oceanLabel, speciesLabel, sexLabel, startDate, endDate, lengthWeightFormula, weightLengthFormula, sizeMeasureTypeCode); +} + +} ===================================== dto/src/main/java/fr/ird/observe/dto/referential/WithLengthFormula.java ===================================== @@ -22,14 +22,10 @@ package fr.ird.observe.dto.referential; * #L% */ -import com.google.common.collect.Ordering; -import org.apache.commons.lang3.BooleanUtils; - import java.util.Comparator; import java.util.Date; import java.util.List; import java.util.Set; -import java.util.stream.Collectors; /** * Created on 22/12/16. @@ -37,7 +33,7 @@ import java.util.stream.Collectors; * @author Tony Chemit - dev(a)tchemit.fr * @since 6.0 */ -public interface WithLengthFormula extends WithFormula { +public interface WithLengthFormula extends WithFormula, WithStartEndDate { String PROPERTY_OCEAN = "ocean"; String PROPERTY_SPECIES = "species"; @@ -47,32 +43,26 @@ public interface WithLengthFormula extends WithFormula { String PROPERTY_COEFFICIENTS = "coefficients"; String PROPERTY_SOURCE = "source"; - Comparator<Date> START_DATE_COMPARATOR = Ordering.natural().nullsFirst(); - Comparator<Date> END_DATE_COMPARATOR = Ordering.natural().nullsLast(); - Comparator<WithLengthFormula> FORMULA_SUPPORT_START_DATE_COMPARATOR = Comparator.comparing(WithLengthFormula::getStartDate, WithLengthFormula.START_DATE_COMPARATOR); - Comparator<WithLengthFormula> FORMULA_SUPPORT_END_DATE_COMPARATOR = Comparator.comparing(WithLengthFormula::getEndDate, WithLengthFormula.END_DATE_COMPARATOR); + Comparator<WithLengthFormula> FORMULA_SUPPORT_START_DATE_COMPARATOR = Comparator.comparing(WithStartEndDate::getStartDate, WithStartEndDate.START_DATE_COMPARATOR); + Comparator<WithLengthFormula> FORMULA_SUPPORT_END_DATE_COMPARATOR = Comparator.comparing(WithStartEndDate::getEndDate, WithStartEndDate.END_DATE_COMPARATOR); Comparator<WithLengthFormula> FORMULA_SUPPORT_COMPARATOR = FORMULA_SUPPORT_START_DATE_COMPARATOR.thenComparing(FORMULA_SUPPORT_END_DATE_COMPARATOR); static <D extends WithLengthFormula> void sort(List<D> list) { list.sort(FORMULA_SUPPORT_COMPARATOR); } - static <D extends WithLengthFormula> List<D> filter(List<D> list, Date date) { - return list.stream() - .filter(f -> WithLengthFormula.START_DATE_COMPARATOR.compare(f.getStartDate(), date) <= 0 && WithLengthFormula.END_DATE_COMPARATOR.compare(date, f.getEndDate()) <= 0) - .collect(Collectors.toList()); - } +// static <D extends WithStartEndDate> List<D> filter(List<D> list, Date date) { +// return list.stream() +// .filter(f -> WithStartEndDate.START_DATE_COMPARATOR.compare(f.getStartDate(), date) <= 0 && WithStartEndDate.END_DATE_COMPARATOR.compare(date, f.getEndDate()) <= 0) +// .collect(Collectors.toList()); +// } String getFormulaOneVariableName(); String getFormulaTwoVariableName(); - Date getStartDate(); - void setStartDate(Date startDate); - Date getEndDate(); - void setEndDate(Date endDate); void setCoefficients(String coefficients); @@ -96,10 +86,10 @@ public interface WithLengthFormula extends WithFormula { boolean isFormulaOneValid(); - boolean isFormulaTwoValid(); - void setFormulaOneValid(boolean formulaOneValid); + boolean isFormulaTwoValid(); + void setFormulaTwoValid(boolean formulaTwoValid); default void revalidateFormulaTwo() { ===================================== dto/src/main/java/fr/ird/observe/dto/referential/WithStartEndDate.java ===================================== @@ -0,0 +1,26 @@ +package fr.ird.observe.dto.referential; + +import com.google.common.collect.Ordering; +import fr.ird.observe.dto.reference.DtoReferenceAware; + +import java.util.Comparator; +import java.util.Date; + +/** + * Created by tchemit on 10/07/2018. + * + * @author Tony Chemit - dev(a)tchemit.fr + */ +public interface WithStartEndDate extends DtoReferenceAware { + + Comparator<Date> START_DATE_COMPARATOR = Ordering.natural().nullsFirst(); + Comparator<Date> END_DATE_COMPARATOR = Ordering.natural().nullsLast(); + + Comparator<WithStartEndDate> WITH_START_DATE_COMPARATOR = Comparator.comparing(WithStartEndDate::getStartDate, START_DATE_COMPARATOR); + Comparator<WithStartEndDate> WITH_END_DATE_COMPARATOR = Comparator.comparing(WithStartEndDate::getEndDate, END_DATE_COMPARATOR); + + Date getStartDate(); + + Date getEndDate(); + +} ===================================== persistence/src/main/java/fr/ird/observe/entities/referentiel/AbstractFormulaSupportTopiaDao.java ===================================== @@ -22,7 +22,7 @@ package fr.ird.observe.entities.referentiel; * #L% */ -import fr.ird.observe.dto.referential.LengthFormulaSupportDto; +import fr.ird.observe.dto.referential.WithStartEndDate; import java.util.Comparator; import java.util.Date; @@ -32,13 +32,13 @@ import java.util.stream.Stream; public class AbstractFormulaSupportTopiaDao<E extends FormulaSupport> extends GeneratedFormulaSupportTopiaDao<E> { - public static final Comparator<FormulaSupport> FORMULA_SUPPORT_START_DATE_COMPARATOR = Comparator.comparing(FormulaSupport::getStartDate, LengthFormulaSupportDto.START_DATE_COMPARATOR); - public static final Comparator<FormulaSupport> FORMULA_SUPPORT_END_DATE_COMPARATOR = Comparator.comparing(FormulaSupport::getEndDate, LengthFormulaSupportDto.END_DATE_COMPARATOR); + public static final Comparator<FormulaSupport> FORMULA_SUPPORT_START_DATE_COMPARATOR = Comparator.comparing(FormulaSupport::getStartDate, WithStartEndDate.START_DATE_COMPARATOR); + public static final Comparator<FormulaSupport> FORMULA_SUPPORT_END_DATE_COMPARATOR = Comparator.comparing(FormulaSupport::getEndDate, WithStartEndDate.END_DATE_COMPARATOR); public static final Comparator<FormulaSupport> FORMULA_SUPPORT_COMPARATOR = FORMULA_SUPPORT_START_DATE_COMPARATOR.thenComparing(FORMULA_SUPPORT_END_DATE_COMPARATOR); public static <E extends FormulaSupport> List<E> sortAndFilter(Stream<E> list, Date date) { return list.sorted(FORMULA_SUPPORT_COMPARATOR) - .filter(f -> LengthFormulaSupportDto.START_DATE_COMPARATOR.compare(f.getStartDate(), date) <= 0 && LengthFormulaSupportDto.END_DATE_COMPARATOR.compare(date, f.getEndDate()) <= 0) + .filter(f -> WithStartEndDate.START_DATE_COMPARATOR.compare(f.getStartDate(), date) <= 0 && WithStartEndDate.END_DATE_COMPARATOR.compare(date, f.getEndDate()) <= 0) .collect(Collectors.toList()); } ===================================== services/src/main/java/fr/ird/observe/services/validation/ValidationContext.java ===================================== @@ -193,6 +193,7 @@ public abstract class ValidationContext extends AbstractSerializableBean { return validationSpeedMaxValue; } + @SuppressWarnings("unused") public Function<ReferentialDto, ReferentialDtoReference> getReferentialReferenceFunction() { return this::toReferentialReference; } ===================================== services/src/main/java/fr/ird/observe/services/validation/validators/ObserveReferentialCollectionUniqueKeyDtoValidator.java → services/src/main/java/fr/ird/observe/services/validation/validators/ObserveLengthFormulaCollectionUniqueKeyDtoValidator.java ===================================== @@ -24,18 +24,18 @@ package fr.ird.observe.services.validation.validators; import com.opensymphony.xwork2.validator.ValidationException; import fr.ird.observe.dto.IdDto; -import fr.ird.observe.dto.reference.ReferentialDtoReference; +import fr.ird.observe.dto.referential.WithStartEndDate; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.validator.xwork2.field.NuitonFieldValidatorSupport; import java.util.Collection; import java.util.Collections; -import java.util.Comparator; import java.util.Date; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; import java.util.Objects; -import java.util.Set; -import java.util.TreeSet; import java.util.function.Function; /** @@ -44,9 +44,10 @@ import java.util.function.Function; * @author Tony Chemit - dev(a)tchemit.fr * @since 4.0.1 */ -public class ObserveReferentialCollectionUniqueKeyDtoValidator extends NuitonFieldValidatorSupport { +public class ObserveLengthFormulaCollectionUniqueKeyDtoValidator extends NuitonFieldValidatorSupport { + + private static final Log log = LogFactory.getLog(ObserveLengthFormulaCollectionUniqueKeyDtoValidator.class); - private static final Log log = LogFactory.getLog(ObserveReferentialCollectionUniqueKeyDtoValidator.class); /** * pour indiquer la propriété qui contient la liste à valider. * <p> @@ -65,7 +66,6 @@ public class ObserveReferentialCollectionUniqueKeyDtoValidator extends NuitonFie * clef unique. */ protected String[] keys; - private Comparator<?> comparator; public String getCollectionFieldName() { return collectionFieldName; @@ -103,70 +103,72 @@ public class ObserveReferentialCollectionUniqueKeyDtoValidator extends NuitonFie throw new ValidationException("keys not defined"); } - Collection<?> col = getCollection(object); - if (log.isDebugEnabled()) { - log.debug("collection found : " + col); - } + Collection<? super WithStartEndDate> col = getCollection(object); - if (log.isDebugEnabled()) { - log.debug("againtBean = " + object); - } + log.debug("collection found : " + col); + log.debug("againstBean = " + object); boolean answer = true; @SuppressWarnings("unchecked") - Set<Object> hashCodes = new TreeSet<>((Comparator<? super Object>) getComparator()); - Function decoratorService = (Function) getFieldValue("referentialReferenceFunction", object); - ReferentialDtoReference referentialDtoReference = (ReferentialDtoReference) decoratorService.apply(object); - hashCodes.add(referentialDtoReference); + Function<Object, WithStartEndDate> decoratorService = (Function) getFieldValue("referentialReferenceFunction", object); + WithStartEndDate referentialDtoReference = decoratorService.apply(object); + + Date startDate = referentialDtoReference.getStartDate(); + Date endDate = referentialDtoReference.getEndDate(); String idToExclude = ((IdDto) object).getId(); - int index = -1; + List<WithStartEndDate> challenges = new LinkedList<>(); for (Object o : col) { - index++; - String id = ((IdDto) o).getId(); if (Objects.equals(idToExclude, id)) { - // Do not treat again object continue; - } - boolean wasAdded = hashCodes.add(o); - if (!wasAdded) { - answer = false; - if (log.isDebugEnabled()) { - log.debug("duplicated unique entry at " + index); - } + if (equals(referentialDtoReference, o)) { + // same common key + challenges.add((WithStartEndDate) o); break; } + } + if (challenges.isEmpty()) { + // no other entries with same common key + return; } - if (!answer) { + Iterator<WithStartEndDate> iterator = challenges.iterator(); + while (answer && iterator.hasNext()) { + WithStartEndDate challenge = iterator.next(); + Date challengeStartDate = challenge.getStartDate(); + Date challengeEndDate = challenge.getEndDate(); + int min = WithStartEndDate.START_DATE_COMPARATOR.compare(startDate, challengeStartDate); + if (min == 0) { + // same lower bound + answer = false; + continue; + } + if (min < 0) { + // only valid if check upper bound is lower than chanllenge min bound + answer = WithStartEndDate.END_DATE_COMPARATOR.compare(endDate, challengeStartDate) < 0; + continue; + } + // check min is after challenge min + answer = WithStartEndDate.END_DATE_COMPARATOR.compare(startDate, challengeEndDate) > 0; + } + + if (!answer) { String fieldName = getFieldName(); addFieldError(fieldName, object); - } } - @Override - public String getValidatorType() { - return "observeReferentialCollectionUniqueKeyDto"; - } - private Comparator<?> getComparator() { - if (comparator == null) { - comparator = new MyComparator<>(keys); - } - return comparator; - } - - private Object getPropertyValue(String key, Object o) { + Object getPropertyValue(String key, Object o) { Object result; @@ -193,7 +195,7 @@ public class ObserveReferentialCollectionUniqueKeyDtoValidator extends NuitonFie * property * @throws ValidationException if any pb to retreave the collection */ - private Collection<?> getCollection(Object object) throws ValidationException { + Collection<? super WithStartEndDate> getCollection(Object object) throws ValidationException { String fieldName = getCollectionFieldName(); @@ -227,53 +229,38 @@ public class ObserveReferentialCollectionUniqueKeyDtoValidator extends NuitonFie } - return (Collection<?>) obj; + return (Collection) obj; } - @SuppressWarnings("ComparatorNotSerializable") - private class MyComparator<O> implements Comparator<O> { - - private final String[] comparatorKeys; - - MyComparator(String... comparatorKeys) { - - this.comparatorKeys = comparatorKeys; - } - - @Override - public int compare(O o1, O o2) { - - boolean equals = true; - for (String key : comparatorKeys) { + protected boolean equals(Object o1, Object o2) { + boolean equals = true; - Object property1 = getPropertyValue(key, o1); - Object property2 = getPropertyValue(key, o2); + for (String key : keys) { - equals = equals(property1, property2); + Object property1 = getPropertyValue(key, o1); + Object property2 = getPropertyValue(key, o2); - if (!equals) { - break; - } + if (property1 instanceof Date) { + property1 = ((Date) property1).getTime(); } - - return equals ? 0 : -1; - } - - protected boolean equals(Object o1, Object o2) { - - if (o1 instanceof Date) { - o1 = ((Date) o1).getTime(); - } - if (o2 instanceof Date) { - o2 = ((Date) o2).getTime(); + if (property2 instanceof Date) { + property2 = ((Date) property2).getTime(); } - return Objects.equals(o1, o2); + equals = Objects.equals(property1, property2); + if (!equals) { + break; + } } + return equals; + } + @Override + public String getValidatorType() { + return "observeLengthFormulaCollectionUniqueKeyDto"; } } ===================================== validation/src/main/resources/fr/ird/observe/dto/referential/LengthLengthParameterDto-create-error-validation.xml ===================================== @@ -32,10 +32,10 @@ <message>observe.validation.lengthLengthParameter.required.species</message> </field-validator> - <!-- clef unique species - gender - ocean - startDate --> - <field-validator type="observeReferentialCollectionUniqueKeyDto" short-circuit="true"> + <!-- clef unique species - gender - ocean - inputSizeMeasureTypeCode - outputSizeMeasureTypeCode --> + <field-validator type="observeLengthFormulaCollectionUniqueKeyDto" short-circuit="true"> <param name="collectionFieldName">editingReferentielList</param> - <param name="keys">speciesLabel,sexLabel,oceanLabel,startDate</param> + <param name="keys">speciesLabel,sexLabel,oceanLabel,inputSizeMeasureTypeCode,outputSizeMeasureTypeCode</param> <!--<param name="againstMe">true</param>--> <message>observe.validation.lengthLengthParameter.invalid.uniqueKey</message> </field-validator> @@ -47,10 +47,10 @@ <message>observe.validation.lengthLengthParameter.null.ocean</message> </field-validator> - <!-- clef unique species - gender - ocean - startDate --> - <field-validator type="observeReferentialCollectionUniqueKeyDto" short-circuit="true"> + <!-- clef unique species - gender - ocean - inputSizeMeasureTypeCode - outputSizeMeasureTypeCode --> + <field-validator type="observeLengthFormulaCollectionUniqueKeyDto" short-circuit="true"> <param name="collectionFieldName">editingReferentielList</param> - <param name="keys">speciesLabel,sexLabel,oceanLabel,startDate</param> + <param name="keys">speciesLabel,sexLabel,oceanLabel,inputSizeMeasureTypeCode,outputSizeMeasureTypeCode</param> <!--<param name="againstMe">true</param>--> <message>observe.validation.lengthLengthParameter.invalid.uniqueKey</message> </field-validator> @@ -62,25 +62,38 @@ <message>observe.validation.lengthLengthParameter.null.sex</message> </field-validator> - <!-- clef unique species - gender - ocean - startDate --> - <field-validator type="observeReferentialCollectionUniqueKeyDto" short-circuit="true"> + <!-- clef unique species - gender - ocean - inputSizeMeasureTypeCode - outputSizeMeasureTypeCode --> + <field-validator type="observeLengthFormulaCollectionUniqueKeyDto" short-circuit="true"> <param name="collectionFieldName">editingReferentielList</param> - <param name="keys">speciesLabel,sexLabel,oceanLabel,startDate</param> + <param name="keys">speciesLabel,sexLabel,oceanLabel,inputSizeMeasureTypeCode,outputSizeMeasureTypeCode</param> <!--<param name="againstMe">true</param>--> <message>observe.validation.lengthLengthParameter.invalid.uniqueKey</message> </field-validator> </field> <field name="startDate"> - <!-- clef unique species - gender - ocean - startDate --> - <field-validator type="observeReferentialCollectionUniqueKeyDto" short-circuit="true"> + <field-validator type="fieldexpression" short-circuit="true"> + <param name="expression"> + <![CDATA[ endDate == null || startDate == null || endDate.after(startDate) ]]> + </param> + <message>observe.validation.lengthFormula.endDate.before.startDate</message> + </field-validator> + <!-- clef unique species - gender - ocean - inputSizeMeasureTypeCode - outputSizeMeasureTypeCode --> + <field-validator type="observeLengthFormulaCollectionUniqueKeyDto" short-circuit="true"> <param name="collectionFieldName">editingReferentielList</param> - <param name="keys">speciesLabel,sexLabel,oceanLabel,startDate</param> + <param name="keys">speciesLabel,sexLabel,oceanLabel,inputSizeMeasureTypeCode,outputSizeMeasureTypeCode</param> <!--<param name="againstMe">true</param>--> <message>observe.validation.lengthLengthParameter.invalid.uniqueKey</message> </field-validator> </field> - + <field name="endDate"> + <field-validator type="fieldexpression"> + <param name="expression"> + <![CDATA[ endDate == null || startDate == null || endDate.after(startDate) ]]> + </param> + <message>observe.validation.lengthFormula.endDate.before.startDate</message> + </field-validator> + </field> <field name="inputSizeMeasureType"> <!-- pas de inputSizeMeasureType selectionne --> @@ -95,6 +108,14 @@ </param> <message>observe.validation.lengthLengthParameter.disabled.inputSizeMeasureType</message> </field-validator> + + <!-- clef unique species - gender - ocean - inputSizeMeasureTypeCode - outputSizeMeasureTypeCode --> + <field-validator type="observeLengthFormulaCollectionUniqueKeyDto" short-circuit="true"> + <param name="collectionFieldName">editingReferentielList</param> + <param name="keys">speciesLabel,sexLabel,oceanLabel,inputSizeMeasureTypeCode,outputSizeMeasureTypeCode</param> + <!--<param name="againstMe">true</param>--> + <message>observe.validation.lengthLengthParameter.invalid.uniqueKey</message> + </field-validator> </field> @@ -112,6 +133,14 @@ </param> <message>observe.validation.lengthLengthParameter.disabled.inputSizeMeasureType</message> </field-validator> + + <!-- clef unique species - gender - ocean - inputSizeMeasureTypeCode - outputSizeMeasureTypeCode --> + <field-validator type="observeLengthFormulaCollectionUniqueKeyDto" short-circuit="true"> + <param name="collectionFieldName">editingReferentielList</param> + <param name="keys">speciesLabel,sexLabel,oceanLabel,inputSizeMeasureTypeCode,outputSizeMeasureTypeCode</param> + <!--<param name="againstMe">true</param>--> + <message>observe.validation.lengthLengthParameter.invalid.uniqueKey</message> + </field-validator> </field> <field name="inputOutputFormula"> ===================================== validation/src/main/resources/fr/ird/observe/dto/referential/LengthLengthParameterDto-update-error-validation.xml ===================================== @@ -32,10 +32,11 @@ <message>observe.validation.lengthLengthParameter.required.species</message> </field-validator> - <!-- clef unique species - gender - ocean - startDate --> - <field-validator type="observeReferentialCollectionUniqueKeyDto" short-circuit="true"> + <!-- clef unique species - gender - ocean - inputSizeMeasureTypeCode - outputSizeMeasureTypeCode --> + <field-validator type="observeLengthFormulaCollectionUniqueKeyDto" short-circuit="true"> <param name="collectionFieldName">editingReferentielList</param> - <param name="keys">speciesLabel,sexLabel,oceanLabel,startDate</param> + <param name="keys">speciesLabel,sexLabel,oceanLabel,inputSizeMeasureTypeCode,outputSizeMeasureTypeCode</param> + <!--<param name="againstMe">true</param>--> <message>observe.validation.lengthLengthParameter.invalid.uniqueKey</message> </field-validator> </field> @@ -46,12 +47,12 @@ <message>observe.validation.lengthLengthParameter.null.ocean</message> </field-validator> - <!-- clef unique species - gender - ocean - startDate --> - <field-validator type="observeReferentialCollectionUniqueKeyDto" short-circuit="true"> + <!-- clef unique species - gender - ocean - inputSizeMeasureTypeCode - outputSizeMeasureTypeCode --> + <field-validator type="observeLengthFormulaCollectionUniqueKeyDto" short-circuit="true"> <param name="collectionFieldName">editingReferentielList</param> - <param name="keys">speciesLabel,sexLabel,oceanLabel,startDate</param> + <param name="keys">speciesLabel,sexLabel,oceanLabel,inputSizeMeasureTypeCode,outputSizeMeasureTypeCode</param> <!--<param name="againstMe">true</param>--> - <message>observe.validation.lengthWeightParameter.invalid.uniqueKey</message> + <message>observe.validation.lengthLengthParameter.invalid.uniqueKey</message> </field-validator> </field> @@ -61,24 +62,38 @@ <message>observe.validation.lengthLengthParameter.null.sex</message> </field-validator> - <!-- clef unique species - gender - ocean - startDate --> - <field-validator type="observeReferentialCollectionUniqueKeyDto" short-circuit="true"> + <!-- clef unique species - gender - ocean - inputSizeMeasureTypeCode - outputSizeMeasureTypeCode --> + <field-validator type="observeLengthFormulaCollectionUniqueKeyDto" short-circuit="true"> <param name="collectionFieldName">editingReferentielList</param> - <param name="keys">speciesLabel,sexLabel,oceanLabel,startDate</param> + <param name="keys">speciesLabel,sexLabel,oceanLabel,inputSizeMeasureTypeCode,outputSizeMeasureTypeCode</param> <!--<param name="againstMe">true</param>--> - <message>observe.validation.lengthWeightParameter.invalid.uniqueKey</message> + <message>observe.validation.lengthLengthParameter.invalid.uniqueKey</message> </field-validator> </field> + <field name="startDate"> - <!-- clef unique species - gender - ocean - startDate --> - <field-validator type="observeReferentialCollectionUniqueKeyDto" short-circuit="true"> + <field-validator type="fieldexpression" short-circuit="true"> + <param name="expression"> + <![CDATA[ endDate == null || startDate == null || endDate.after(startDate) ]]> + </param> + <message>observe.validation.lengthFormula.endDate.before.startDate</message> + </field-validator> + <!-- clef unique species - gender - ocean - inputSizeMeasureTypeCode - outputSizeMeasureTypeCode --> + <field-validator type="observeLengthFormulaCollectionUniqueKeyDto" short-circuit="true"> <param name="collectionFieldName">editingReferentielList</param> - <param name="keys">speciesLabel,sexLabel,oceanLabel,startDate</param> + <param name="keys">speciesLabel,sexLabel,oceanLabel,inputSizeMeasureTypeCode,outputSizeMeasureTypeCode</param> <!--<param name="againstMe">true</param>--> - <message>observe.validation.lengthWeightParameter.invalid.uniqueKey</message> + <message>observe.validation.lengthLengthParameter.invalid.uniqueKey</message> + </field-validator> + </field> + <field name="endDate"> + <field-validator type="fieldexpression"> + <param name="expression"> + <![CDATA[ endDate == null || startDate == null || endDate.after(startDate) ]]> + </param> + <message>observe.validation.lengthFormula.endDate.before.startDate</message> </field-validator> </field> - <field name="inputSizeMeasureType"> <!-- pas de inputSizeMeasureType selectionne --> @@ -93,6 +108,14 @@ </param> <message>observe.validation.lengthLengthParameter.disabled.inputSizeMeasureType</message> </field-validator> + + <!-- clef unique species - gender - ocean - inputSizeMeasureTypeCode - outputSizeMeasureTypeCode --> + <field-validator type="observeLengthFormulaCollectionUniqueKeyDto" short-circuit="true"> + <param name="collectionFieldName">editingReferentielList</param> + <param name="keys">speciesLabel,sexLabel,oceanLabel,inputSizeMeasureTypeCode,outputSizeMeasureTypeCode</param> + <!--<param name="againstMe">true</param>--> + <message>observe.validation.lengthLengthParameter.invalid.uniqueKey</message> + </field-validator> </field> @@ -110,6 +133,14 @@ </param> <message>observe.validation.lengthLengthParameter.disabled.inputSizeMeasureType</message> </field-validator> + + <!-- clef unique species - gender - ocean - inputSizeMeasureTypeCode - outputSizeMeasureTypeCode --> + <field-validator type="observeLengthFormulaCollectionUniqueKeyDto" short-circuit="true"> + <param name="collectionFieldName">editingReferentielList</param> + <param name="keys">speciesLabel,sexLabel,oceanLabel,inputSizeMeasureTypeCode,outputSizeMeasureTypeCode</param> + <!--<param name="againstMe">true</param>--> + <message>observe.validation.lengthLengthParameter.invalid.uniqueKey</message> + </field-validator> </field> <field name="inputOutputFormula"> ===================================== validation/src/main/resources/fr/ird/observe/dto/referential/LengthWeightParameterDto-create-error-validation.xml ===================================== @@ -32,10 +32,10 @@ <message>observe.validation.lengthWeightParameter.required.species</message> </field-validator> - <!-- clef unique species - gender - ocean - startDate --> - <field-validator type="observeReferentialCollectionUniqueKeyDto" short-circuit="true"> + <!-- clef unique species - gender - ocean - startDate - sizeMeasureType --> + <field-validator type="observeLengthFormulaCollectionUniqueKeyDto" short-circuit="true"> <param name="collectionFieldName">editingReferentielList</param> - <param name="keys">speciesLabel,sexLabel,oceanLabel,startDate</param> + <param name="keys">speciesLabel,sexLabel,oceanLabel,startDate,sizeMeasureTypeCode</param> <!--<param name="againstMe">true</param>--> <message>observe.validation.lengthWeightParameter.invalid.uniqueKey</message> </field-validator> @@ -47,10 +47,10 @@ <message>observe.validation.lengthWeightParameter.null.ocean</message> </field-validator> - <!-- clef unique species - gender - ocean - startDate --> - <field-validator type="observeReferentialCollectionUniqueKeyDto" short-circuit="true"> + <!-- clef unique species - gender - ocean - startDate - sizeMeasureType --> + <field-validator type="observeLengthFormulaCollectionUniqueKeyDto" short-circuit="true"> <param name="collectionFieldName">editingReferentielList</param> - <param name="keys">speciesLabel,sexLabel,oceanLabel,startDate</param> + <param name="keys">speciesLabel,sexLabel,oceanLabel,startDate,sizeMeasureTypeCode</param> <!--<param name="againstMe">true</param>--> <message>observe.validation.lengthWeightParameter.invalid.uniqueKey</message> </field-validator> @@ -62,25 +62,40 @@ <message>observe.validation.lengthWeightParameter.null.sex</message> </field-validator> - <!-- clef unique species - gender - ocean - startDate --> - <field-validator type="observeReferentialCollectionUniqueKeyDto" short-circuit="true"> + <!-- clef unique species - gender - ocean - startDate - sizeMeasureType --> + <field-validator type="observeLengthFormulaCollectionUniqueKeyDto" short-circuit="true"> <param name="collectionFieldName">editingReferentielList</param> - <param name="keys">speciesLabel,sexLabel,oceanLabel,startDate</param> + <param name="keys">speciesLabel,sexLabel,oceanLabel,startDate,sizeMeasureTypeCode</param> <!--<param name="againstMe">true</param>--> <message>observe.validation.lengthWeightParameter.invalid.uniqueKey</message> </field-validator> </field> <field name="startDate"> - <!-- clef unique species - gender - ocean - startDate --> - <field-validator type="observeReferentialCollectionUniqueKeyDto" short-circuit="true"> + <field-validator type="fieldexpression" short-circuit="true"> + <param name="expression"> + <![CDATA[ endDate == null || startDate == null || endDate.after(startDate) ]]> + </param> + <message>observe.validation.lengthFormula.endDate.before.startDate</message> + </field-validator> + <!-- clef unique species - gender - ocean - startDate - sizeMeasureType --> + <field-validator type="observeLengthFormulaCollectionUniqueKeyDto" short-circuit="true"> <param name="collectionFieldName">editingReferentielList</param> - <param name="keys">speciesLabel,sexLabel,oceanLabel,startDate</param> + <param name="keys">speciesLabel,sexLabel,oceanLabel,startDate,sizeMeasureTypeCode</param> <!--<param name="againstMe">true</param>--> <message>observe.validation.lengthWeightParameter.invalid.uniqueKey</message> </field-validator> </field> + <field name="endDate"> + <field-validator type="fieldexpression"> + <param name="expression"> + <![CDATA[ endDate == null || startDate == null || endDate.after(startDate) ]]> + </param> + <message>observe.validation.lengthFormula.endDate.before.startDate</message> + </field-validator> + </field> + <field name="sizeMeasureType"> <!-- pas de sizeMeasureType renseigne --> <field-validator type="required"> @@ -94,6 +109,14 @@ </param> <message>observe.validation.lengthWeightParameter.disabled.sizeMeasureType</message> </field-validator> + <!-- clef unique species - gender - ocean - startDate - sizeMeasureType --> + <field-validator type="observeLengthFormulaCollectionUniqueKeyDto" short-circuit="true"> + <param name="collectionFieldName">editingReferentielList</param> + <param name="keys">speciesLabel,sexLabel,oceanLabel,startDate,sizeMeasureTypeCode</param> + <!--<param name="againstMe">true</param>--> + <message>observe.validation.lengthWeightParameter.invalid.uniqueKey</message> + </field-validator> + </field> <field name="lengthWeightFormula"> ===================================== validation/src/main/resources/fr/ird/observe/dto/referential/LengthWeightParameterDto-update-error-validation.xml ===================================== @@ -26,43 +26,36 @@ "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd"> <validators> - <!--<field name="code">--> - - <!--&lt;!&ndash; clef unique sur le code &ndash;&gt;--> - <!--<field-validator type="referentialCode" short-circuit="true">--> - <!--<message>observe.validation.referentiel.invalid.code.uniqueKey##${code}</message>--> - <!--</field-validator>--> - - <!--</field>--> - <field name="species"> <!-- pas de species selectionne --> <field-validator type="required" short-circuit="true"> <message>observe.validation.lengthWeightParameter.required.species</message> </field-validator> - <!-- clef unique species - gender - ocean - startDate --> - <field-validator type="observeReferentialCollectionUniqueKeyDto" short-circuit="true"> + <!-- clef unique species - gender - ocean - startDate - sizeMeasureType --> + <field-validator type="observeLengthFormulaCollectionUniqueKeyDto" short-circuit="true"> <param name="collectionFieldName">editingReferentielList</param> - <param name="keys">speciesLabel,sexLabel,oceanLabel,startDate</param> + <param name="keys">speciesLabel,sexLabel,oceanLabel,startDate,sizeMeasureTypeCode</param> <!--<param name="againstMe">true</param>--> <message>observe.validation.lengthWeightParameter.invalid.uniqueKey</message> </field-validator> + </field> <field name="ocean"> <!-- pas de ocean renseigne --> - <field-validator type="required"> + <field-validator type="required" short-circuit="true"> <message>observe.validation.lengthWeightParameter.null.ocean</message> </field-validator> - <!-- clef unique species - gender - ocean - startDate --> - <field-validator type="observeReferentialCollectionUniqueKeyDto" short-circuit="true"> + <!-- clef unique species - gender - ocean - startDate - sizeMeasureType --> + <field-validator type="observeLengthFormulaCollectionUniqueKeyDto" short-circuit="true"> <param name="collectionFieldName">editingReferentielList</param> - <param name="keys">speciesLabel,sexLabel,oceanLabel,startDate</param> + <param name="keys">speciesLabel,sexLabel,oceanLabel,startDate,sizeMeasureTypeCode</param> <!--<param name="againstMe">true</param>--> <message>observe.validation.lengthWeightParameter.invalid.uniqueKey</message> </field-validator> + </field> <field name="sex"> @@ -71,38 +64,62 @@ <message>observe.validation.lengthWeightParameter.null.sex</message> </field-validator> - <!-- clef unique species - gender - ocean - startDate --> - <field-validator type="observeReferentialCollectionUniqueKeyDto" short-circuit="true"> + <!-- clef unique species - gender - ocean - startDate - sizeMeasureType --> + <field-validator type="observeLengthFormulaCollectionUniqueKeyDto" short-circuit="true"> <param name="collectionFieldName">editingReferentielList</param> - <param name="keys">speciesLabel,sexLabel,oceanLabel,startDate</param> + <param name="keys">speciesLabel,sexLabel,oceanLabel,startDate,sizeMeasureTypeCode</param> <!--<param name="againstMe">true</param>--> <message>observe.validation.lengthWeightParameter.invalid.uniqueKey</message> </field-validator> + </field> <field name="startDate"> - <!-- clef unique species - gender - ocean - startDate --> - <field-validator type="observeReferentialCollectionUniqueKeyDto" short-circuit="true"> + <field-validator type="fieldexpression" short-circuit="true"> + <param name="expression"> + <![CDATA[ endDate == null || startDate == null || endDate.after(startDate) ]]> + </param> + <message>observe.validation.lengthFormula.endDate.before.startDate</message> + </field-validator> + <!-- clef unique species - gender - ocean - startDate - sizeMeasureType --> + <field-validator type="observeLengthFormulaCollectionUniqueKeyDto" short-circuit="true"> <param name="collectionFieldName">editingReferentielList</param> - <param name="keys">speciesLabel,sexLabel,oceanLabel,startDate</param> + <param name="keys">speciesLabel,sexLabel,oceanLabel,startDate,sizeMeasureTypeCode</param> <!--<param name="againstMe">true</param>--> <message>observe.validation.lengthWeightParameter.invalid.uniqueKey</message> </field-validator> </field> + <field name="endDate"> + <field-validator type="fieldexpression"> + <param name="expression"> + <![CDATA[ endDate == null || startDate == null || endDate.after(startDate) ]]> + </param> + <message>observe.validation.lengthFormula.endDate.before.startDate</message> + </field-validator> + </field> + <field name="sizeMeasureType"> <!-- pas de sizeMeasureType renseigne --> - <field-validator type="required"> + <field-validator type="required" short-circuit="true"> <message>observe.validation.lengthWeightParameter.null.sizeMeasureType</message> </field-validator> <!-- sizeMeasureType desactive --> - <field-validator type="fieldexpression"> + <field-validator type="fieldexpression" short-circuit="true"> <param name="expression"> <![CDATA[ sizeMeasureType == null || sizeMeasureType.enabled ]]> </param> <message>observe.validation.lengthWeightParameter.disabled.sizeMeasureType</message> </field-validator> + <!-- clef unique species - gender - ocean - startDate - sizeMeasureType --> + <field-validator type="observeLengthFormulaCollectionUniqueKeyDto" short-circuit="true"> + <param name="collectionFieldName">editingReferentielList</param> + <param name="keys">speciesLabel,sexLabel,oceanLabel,startDate,sizeMeasureTypeCode</param> + <!--<param name="againstMe">true</param>--> + <message>observe.validation.lengthWeightParameter.invalid.uniqueKey</message> + </field-validator> + </field> <field name="lengthWeightFormula"> ===================================== validation/src/main/resources/i18n/validation_en_GB.properties ===================================== @@ -451,10 +451,11 @@ observe.validation.hooksComposition.desactivated.hookSize=Selected hook size is observe.validation.hooksComposition.desactivated.hookType=Selected hook type is disabled. observe.validation.hooksComposition.required.hookType=Hook type must be filled. observe.validation.hooksComposition.required.proportion=Proportion must be filled. +observe.validation.lengthFormula.endDate.before.startDate=End date must be after start date observe.validation.lengthLengthParameter.disabled.inputSizeMeasureType=Selected Input Size measure type is disabled observe.validation.lengthLengthParameter.invalid.inputOutputFormula=Formula is not valid. observe.validation.lengthLengthParameter.invalid.outputInputFormula=Formula is not valid. -observe.validation.lengthLengthParameter.invalid.uniqueKey=Tuple (gender/ocean/species/startDate) must be unique. +observe.validation.lengthLengthParameter.invalid.uniqueKey=Tuple (species/ocean/gender/input size measure/ output size measure/startDate) must be unique. observe.validation.lengthLengthParameter.null.inputSizeMeasureType=Input size measure type is not filled. observe.validation.lengthLengthParameter.null.ocean=Ocean is not filled. observe.validation.lengthLengthParameter.null.outputSizeMeasureType=Output size measure type is not filled. @@ -467,7 +468,7 @@ observe.validation.lengthLengthParameter.required.species=Species must be filled observe.validation.lengthLengthParameter.required.startDate=Start date must be filled. observe.validation.lengthWeightParameter.disabled.sizeMeasureType=Selected size measure type is disabled. observe.validation.lengthWeightParameter.invalid.lengthWeightFormula=Formula is not valid. -observe.validation.lengthWeightParameter.invalid.uniqueKey=Tuple (gender/ocean/species/startDate) must be unique. +observe.validation.lengthWeightParameter.invalid.uniqueKey=Tuple (species/ocean/gender/sizeMeasureType/startDate) must be unique. observe.validation.lengthWeightParameter.invalid.weightLengthFormula=Formula is not valid. observe.validation.lengthWeightParameter.null.ocean=Ocean is not filled. observe.validation.lengthWeightParameter.null.sizeMeasureType=Size measure type is not filled. ===================================== validation/src/main/resources/i18n/validation_es_ES.properties ===================================== @@ -453,10 +453,11 @@ observe.validation.hooksComposition.desactivated.hookSize=El tamaño de avanzuel observe.validation.hooksComposition.desactivated.hookType=El tipo de avanzuelo seleccionado está desactivado. observe.validation.hooksComposition.required.hookType=La selección de un tipo de avanzuelo es mandatoria. observe.validation.hooksComposition.required.proportion=La proporción está vacía. +observe.validation.lengthFormula.endDate.before.startDate=End date must be after start date \#TODO observe.validation.lengthLengthParameter.disabled.inputSizeMeasureType=Le type de mensuration d'entrée sélectionné est désactivé. \#TODO observe.validation.lengthLengthParameter.invalid.inputOutputFormula=La formule n'est pas valide. \#TODO observe.validation.lengthLengthParameter.invalid.outputInputFormula=La formule n'est pas valide. \#TODO -observe.validation.lengthLengthParameter.invalid.uniqueKey=Tupla (sexo/océano/especie) debe ser única, la tupla ya se ha usado. +observe.validation.lengthLengthParameter.invalid.uniqueKey=Tupla (especiesexo/océano/input size measure/ output size measure/startDate) debe ser única, la tupla ya se ha usado. #TODO observe.validation.lengthLengthParameter.null.inputSizeMeasureType=Le type de mensuration d'entrée n'est pas renseigné. \#TODO observe.validation.lengthLengthParameter.null.ocean=No se ha seleccionado oceano. observe.validation.lengthLengthParameter.null.outputSizeMeasureType=Le type de mensuration de sortie n'est pas renseigné. \#TODO @@ -469,7 +470,7 @@ observe.validation.lengthLengthParameter.required.species=Especie no especificad observe.validation.lengthLengthParameter.required.startDate=fecha de comienzo de validez no especificada. observe.validation.lengthWeightParameter.disabled.sizeMeasureType=Le type de mensuration sélectionné est désactivé. \#TODO observe.validation.lengthWeightParameter.invalid.lengthWeightFormula=Relación de peso introducida no es coherente. -observe.validation.lengthWeightParameter.invalid.uniqueKey=Tupla (sexo/océano/especie) debe ser única, la tupla ya se ha usado. +observe.validation.lengthWeightParameter.invalid.uniqueKey=Tupla (especie/sexo/océano/sizeMeasureType/startDate) debe ser única, la tupla ya se ha usado. #TODO observe.validation.lengthWeightParameter.invalid.weightLengthFormula=Relación de talla introducida no es coherente. observe.validation.lengthWeightParameter.null.ocean=No se ha seleccionado oceano. observe.validation.lengthWeightParameter.null.sizeMeasureType=Type de mensuration non renseigné. \#TODO ===================================== validation/src/main/resources/i18n/validation_fr_FR.properties ===================================== @@ -451,10 +451,11 @@ observe.validation.hooksComposition.desactivated.hookSize=La taille d'hameçon s observe.validation.hooksComposition.desactivated.hookType=Le type d'hameçon sélectionné est désactivée. observe.validation.hooksComposition.required.hookType=La sélection d'un type d'hameçon est obligatoire. observe.validation.hooksComposition.required.proportion=Proportion non renseignée. +observe.validation.lengthFormula.endDate.before.startDate=La date de fin doit être ultérieure à celle de débuts observe.validation.lengthLengthParameter.disabled.inputSizeMeasureType=Le type de mensuration d'entrée sélectionné est désactivé. observe.validation.lengthLengthParameter.invalid.inputOutputFormula=La formule n'est pas valide. observe.validation.lengthLengthParameter.invalid.outputInputFormula=La formule n'est pas valide. -observe.validation.lengthLengthParameter.invalid.uniqueKey=Le tuple (sexe/océan/espèce/date de début) doit être unique +observe.validation.lengthLengthParameter.invalid.uniqueKey=Le tuple (espèce/sexe/océan/type de measure en entrée/type de mesure en sortie/date de début) doit être unique observe.validation.lengthLengthParameter.null.inputSizeMeasureType=Le type de mensuration d'entrée n'est pas renseigné. observe.validation.lengthLengthParameter.null.ocean=Aucun océan sélectionné. observe.validation.lengthLengthParameter.null.outputSizeMeasureType=Le type de mensuration de sortie n'est pas renseigné. @@ -467,7 +468,7 @@ observe.validation.lengthLengthParameter.required.species=L'espèce n'est pas re observe.validation.lengthLengthParameter.required.startDate=date de début de validité non renseignée. observe.validation.lengthWeightParameter.disabled.sizeMeasureType=Le type de mensuration sélectionné est désactivé. observe.validation.lengthWeightParameter.invalid.lengthWeightFormula=La relation poids saisie n'est pas cohérente. -observe.validation.lengthWeightParameter.invalid.uniqueKey=Le tuple (sexe/océan/espèce/date de début) doit être unique +observe.validation.lengthWeightParameter.invalid.uniqueKey=Le tuple (espèce/sexe/océan/type de measure/date de début) doit être unique observe.validation.lengthWeightParameter.invalid.weightLengthFormula=La relation taille saisie n'est pas cohérente. observe.validation.lengthWeightParameter.null.ocean=Aucun océan sélectionné. observe.validation.lengthWeightParameter.null.sizeMeasureType=Type de mensuration non renseigné. ===================================== validation/src/main/resources/validators.xml ===================================== @@ -54,7 +54,7 @@ <!-- Les validateurs spécifique aux Dto dans observe --> <validator name="collectionUniqueKeyDto" class="fr.ird.observe.services.validation.validators.CollectionUniqueKeyDtoValidator"/> <validator name="observeCollectionUniqueKeyDto" class="fr.ird.observe.services.validation.validators.ObserveCollectionUniqueKeyDtoValidator"/> - <validator name="observeReferentialCollectionUniqueKeyDto" class="fr.ird.observe.services.validation.validators.ObserveReferentialCollectionUniqueKeyDtoValidator"/> + <validator name="observeLengthFormulaCollectionUniqueKeyDto" class="fr.ird.observe.services.validation.validators.ObserveLengthFormulaCollectionUniqueKeyDtoValidator"/> <validator name="openableDto" class="fr.ird.observe.services.validation.validators.OpenableDtoFieldValidator"/> <validator name="species_lengthDto" class="fr.ird.observe.services.validation.validators.SpeciesLengthFieldDtoValidator"/> <validator name="species_weightDto" class="fr.ird.observe.services.validation.validators.SpeciesWeightFieldDtoValidator"/> View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/4575713fd28cb2cd53d95b9c9f4… -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/4575713fd28cb2cd53d95b9c9f4… You're receiving this email because of your account on gitlab.com.
1 0
0 0
[Git][ultreiaio/ird-observe][develop] Fix some bugs...
by Tony CHEMIT 10 Jul '18

10 Jul '18
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe Commits: a66d04a1 by Tony CHEMIT at 2018-07-10T07:23:09Z Fix some bugs... - - - - - 6 changed files: - client/src/main/java/fr/ird/observe/client/ui/content/ObserveFocusManager.java - client/src/main/java/fr/ird/observe/client/ui/content/data/longline/logbook/CatchLonglineLogbookUI.jaxx - client/src/main/java/fr/ird/observe/client/ui/content/data/longline/logbook/CatchLonglineLogbookUI.jcss - client/src/main/java/fr/ird/observe/client/ui/content/data/longline/logbook/CatchLonglineLogbookUIHandler.java - client/src/main/java/fr/ird/observe/client/ui/content/data/longline/logbook/TripLonglineSampleLogbookListUIHandler.java - persistence/src/main/resources/db/migration/8.0/08_add_weight_category-common.sql Changes: ===================================== client/src/main/java/fr/ird/observe/client/ui/content/ObserveFocusManager.java ===================================== @@ -35,6 +35,8 @@ import fr.ird.observe.client.ui.content.data.longline.logbook.FloatlinesComposit import fr.ird.observe.client.ui.content.data.longline.logbook.HooksCompositionLogbookUI; import fr.ird.observe.client.ui.content.data.longline.logbook.LonglineGlobalCompositionLogbookUI; import fr.ird.observe.client.ui.content.data.longline.logbook.SetLonglineLogbookUI; +import fr.ird.observe.client.ui.content.data.longline.logbook.TripLonglineLandingLogbookListUI; +import fr.ird.observe.client.ui.content.data.longline.logbook.TripLonglineSampleLogbookListUI; import fr.ird.observe.client.ui.content.data.longline.obs.ActivityLonglineObsListUI; import fr.ird.observe.client.ui.content.data.longline.obs.ActivityLonglineObsUI; import fr.ird.observe.client.ui.content.data.longline.obs.BaitsCompositionObsUI; @@ -559,6 +561,9 @@ public class ObserveFocusManager { builder.put(ActivityLonglineObsListUI.class, new ContentListUIObserveLayoutFocusTraversalPolicy()); builder.put(ActivityLonglineLogbookListUI.class, new ContentListUIObserveLayoutFocusTraversalPolicy()); + builder.put(TripLonglineLandingLogbookListUI.class, new ContentListUIObserveLayoutFocusTraversalPolicy()); + builder.put(TripLonglineSampleLogbookListUI.class, new ContentListUIObserveLayoutFocusTraversalPolicy()); + builder.put(TripLonglineUI.class, new ObserveLayoutFocusTraversalPolicy<TripLonglineUI>() { @Override ===================================== client/src/main/java/fr/ird/observe/client/ui/content/data/longline/logbook/CatchLonglineLogbookUI.jaxx ===================================== @@ -36,6 +36,7 @@ fr.ird.observe.dto.data.longline.SetLonglineLogbookCatchDto fr.ird.observe.dto.referential.SpeciesReference fr.ird.observe.dto.referential.SexReference + fr.ird.observe.dto.referential.WeightMeasureMethodReference fr.ird.observe.dto.referential.longline.BaitHaulingStatusReference fr.ird.observe.dto.referential.longline.CatchFateLonglineReference fr.ird.observe.dto.referential.longline.HealthnessReference @@ -156,10 +157,10 @@ <NumberEditor id='totalWeight' constructorParams='this' styleClass="float3"/> </cell> <cell> - <JLabel id='weightDeterminationMethodLabel'/> + <JLabel id='weightMeasureMethodLabel'/> </cell> <cell weightx='1' anchor='east'> - <BeanComboBox id='weightDeterminationMethod' constructorParams='this' genericType='HealthnessReference'/> + <BeanComboBox id='weightMeasureMethod' constructorParams='this' genericType='WeightMeasureMethodReference'/> </cell> </row> ===================================== client/src/main/java/fr/ird/observe/client/ui/content/data/longline/logbook/CatchLonglineLogbookUI.jcss ===================================== @@ -76,6 +76,10 @@ selectedItem:{tableEditBean.getSpeciesCatch()}; } +#weightMeasureMethod { + selectedItem:{tableEditBean.getWeightMeasureMethod()}; +} + #onBoardProcessing { selectedItem:{tableEditBean.getOnBoardProcessing()}; } ===================================== client/src/main/java/fr/ird/observe/client/ui/content/data/longline/logbook/CatchLonglineLogbookUIHandler.java ===================================== @@ -96,14 +96,14 @@ public class CatchLonglineLogbookUIHandler extends ContentTableUIHandler<SetLong addReferentialFilter(CatchLonglineLogbookDto.PROPERTY_SPECIES_CATCH, (ReferentialReferencesFilter<SpeciesDto, SpeciesReference>) incomingReferences -> { String speciesListId = ObserveSwingApplicationContext.get().getConfig().getSpeciesListLonglineCatchId(); - String tripLonglineId = getSelectedId(); + String tripLonglineId = ObserveSwingApplicationContext.get().getNavigationSelect().getLongline().getTrip().getId(); List<SpeciesReference> result = getTripLonglineService().getSpeciesByListAndTrip(tripLonglineId, speciesListId).toList(); return DtoReferenceCollection.filterEnabled(result); }); addReferentialFilter(CatchLonglineLogbookDto.PROPERTY_PREDATOR, (ReferentialReferencesFilter<SpeciesDto, SpeciesReference>) incomingReferences -> { String speciesListId = ObserveSwingApplicationContext.get().getConfig().getSpeciesListLonglineDepredatorId(); - String tripLonglineId = getSelectedId(); + String tripLonglineId = ObserveSwingApplicationContext.get().getNavigationSelect().getLongline().getTrip().getId(); List<SpeciesReference> result = getTripLonglineService().getSpeciesByListAndTrip(tripLonglineId, speciesListId).toList(); return DtoReferenceCollection.filterEnabled(result); }); @@ -211,7 +211,7 @@ public class CatchLonglineLogbookUIHandler extends ContentTableUIHandler<SetLong boolean isGrouped = CatchAcquisitionMode.GROUPED.equals(newMode); ui.getTotalWeight().setEnabled(isGrouped); - ui.getWeightDeterminationMethod().setEnabled(isGrouped); + ui.getWeightMeasureMethod().setEnabled(isGrouped); ui.getCount().setEnabled(isGrouped); if (createMode) { ===================================== client/src/main/java/fr/ird/observe/client/ui/content/data/longline/logbook/TripLonglineSampleLogbookListUIHandler.java ===================================== @@ -83,7 +83,7 @@ public class TripLonglineSampleLogbookListUIHandler extends ContentListUIHandler @Override protected ContentMode getContentMode() { - String selectedId = getSelectedId(); + String selectedId = getSelectedParentId(); if (!selectedId.equals(getEditNode().getId())) { addInfoMessage(n("observe.common.TripLonglineDto.message.no.active.found")); return ContentMode.READ; ===================================== persistence/src/main/resources/db/migration/8.0/08_add_weight_category-common.sql ===================================== @@ -21,4 +21,4 @@ --- CREATE TABLE observe_longline.WeightCategory(topiaid VARCHAR(255) NOT NULL,topiaversion BIGINT NOT NULL, topiacreatedate DATE, lastupdatedate TIMESTAMP NOT NULL, code VARCHAR(255), status INTEGER DEFAULT 1, needComment BOOLEAN DEFAULT false, uri VARCHAR(255), label1 VARCHAR(255), label2 VARCHAR(255), label3 VARCHAR(255),label4 VARCHAR(255),label5 VARCHAR(255),label6 VARCHAR(255),label7 VARCHAR(255),label8 VARCHAR(255)); ALTER TABLE observe_longline.WeightCategory ADD CONSTRAINT PK_WeightCategory PRIMARY KEY(topiaid); -INSERT INTO observe_common.LASTUPDATEDATE(topiaId, topiaversion, topiacreatedate, TYPE , LASTUPDATEDATE) values ('fr.ird.observe.entities.LastUpdateDate#666#1005', 0,CURRENT_DATE, 'fr.ird.observe.entities.referentiel.longline.WeightCategory', CURRENT_TIMESTAMP); +INSERT INTO observe_common.LASTUPDATEDATE(topiaId, topiaversion, topiacreatedate, TYPE , LASTUPDATEDATE) values ('fr.ird.observe.entities.LastUpdateDate#666#1005', 0,CURRENT_DATE, 'fr.ird.observe.entities.referentiel.longline.WeightCategoryLongline', CURRENT_TIMESTAMP); View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/a66d04a181aaf3d4f08db7cf941… -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/a66d04a181aaf3d4f08db7cf941… You're receiving this email because of your account on gitlab.com.
1 0
0 0
[Git][ultreiaio/ird-observe][pages] Site checkin for project ObServe :: Pom
by Tony CHEMIT 05 Jul '18

05 Jul '18
Tony CHEMIT pushed to branch pages at ultreiaio / ird-observe Commits: 39b9e4a5 by 166231 at 2018-07-05T14:34:29Z Site checkin for project ObServe :: Pom - - - - - 11 changed files: - administration-web.html - aggregate-third-party-report.html - architecture-logicielle.html - changelog.html - changes-report.html - config-report.html - dependency-convergence.html - dependency-info.html - dependency-management.html - dependency-updates-report.html - dev-activity.html The diff was not included because it is too large. View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/39b9e4a5c4ea80dcb5409b28ce3… -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/39b9e4a5c4ea80dcb5409b28ce3… You're receiving this email because of your account on gitlab.com.
1 0
0 0
[Git][ultreiaio/ird-observe][develop] use last topia exntension
by Tony CHEMIT 05 Jul '18

05 Jul '18
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe Commits: 1762645d by Tony CHEMIT at 2018-07-05T14:11:22Z use last topia exntension - - - - - 1 changed file: - pom.xml Changes: ===================================== pom.xml ===================================== --- a/pom.xml +++ b/pom.xml @@ -158,7 +158,7 @@ <!--<lib.version.java4all.jaxx>3.0-alpha-31</lib.version.java4all.jaxx>--> <!--<lib.version.nuiton.topia>3.4.2-SNAPSHOT</lib.version.nuiton.topia>--> <lib.version.nuiton.validation>3.1</lib.version.nuiton.validation> - <!--<lib.version.java4all.config>1.0.3</lib.version.java4all.config>--> + <lib.version.java4all.topia>1.1.2-SNAPSHOT</lib.version.java4all.topia> <xworkVersion>2.3.34</xworkVersion> <!--<lib.version.hibernate>5.2.10.Final</lib.version.hibernate>--> <!--can't use 1.4.197 (date has changed + blob also--> View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/1762645de1059ce44b45298d147… -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/1762645de1059ce44b45298d147… You're receiving this email because of your account on gitlab.com.
1 0
0 0
[Git][ultreiaio/ird-observe] Deleted branch release/7.0-RC-16
by Tony CHEMIT 05 Jul '18

05 Jul '18
Tony CHEMIT deleted branch release/7.0-RC-16 at ultreiaio / ird-observe -- You're receiving this email because of your account on gitlab.com.
1 0
0 0
  • ← Newer
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • Older →

HyperKitty Powered by HyperKitty version 1.3.12.