Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe Commits: d8ca5361 by Tony Chemit at 2023-07-19T12:12:40+02:00 Revue du code de sauvegarde d'un openDto au niveau du service pour pouvoir interagir avec l'objet responsable de la finalisation de la sauvegarde (on supprime la méthode flottante saveCallback qui ne permet de conserver certains états dont nous allons avoir besoin dans la suite des développements). - - - - - 8cddc462 by Tony Chemit at 2023-07-20T09:29:51+02:00 Fix ValidationDefinitionTemplate which always store for update scope, the create scope... - - - - - 27 changed files: - core/persistence/java/src/main/java/fr/ird/observe/entities/data/ll/landing/LandingSpi.java - core/persistence/java/src/main/java/fr/ird/observe/entities/data/ll/logbook/ActivitySpi.java - core/persistence/java/src/main/java/fr/ird/observe/entities/data/ll/logbook/SampleSpi.java - core/persistence/java/src/main/java/fr/ird/observe/entities/data/ll/observation/ActivitySpi.java - core/persistence/java/src/main/java/fr/ird/observe/entities/data/ps/localmarket/SurveySpi.java - core/persistence/java/src/main/java/fr/ird/observe/entities/data/ps/logbook/ActivitySpi.java - core/persistence/java/src/main/java/fr/ird/observe/entities/data/ps/logbook/RouteSpi.java - core/persistence/java/src/main/java/fr/ird/observe/entities/data/ps/logbook/SampleSpi.java - core/persistence/java/src/main/java/fr/ird/observe/entities/data/ps/logbook/WellSpi.java - core/persistence/java/src/main/java/fr/ird/observe/entities/data/ps/observation/ActivitySpi.java - core/persistence/java/src/main/java/fr/ird/observe/entities/data/ps/observation/RouteSpi.java - core/persistence/resources/src/main/resources/fr/ird/observe/entities/data/ll/common/Trip/validation-update.json - core/persistence/resources/src/main/resources/fr/ird/observe/entities/data/ll/landing/LandingPart/validation-update.json - core/persistence/resources/src/main/resources/fr/ird/observe/entities/data/ps/logbook/Activity/validation-update.json - core/persistence/resources/src/main/resources/fr/ird/observe/entities/data/ps/logbook/Route/validation-update.json - core/persistence/resources/src/main/resources/fr/ird/observe/entities/data/ps/observation/Activity/validation-update.json - core/persistence/resources/src/main/resources/fr/ird/observe/entities/data/ps/observation/Catch/validation-update.json - core/persistence/resources/src/main/resources/fr/ird/observe/entities/data/ps/observation/Route/validation-update.json - server/runner/src/main/webResources/doc/api/public/data/ll/common/Trip/validation-update.json - server/runner/src/main/webResources/doc/api/public/data/ll/landing/LandingPart/validation-update.json - server/runner/src/main/webResources/doc/api/public/data/ps/logbook/Activity/validation-update.json - server/runner/src/main/webResources/doc/api/public/data/ps/logbook/Route/validation-update.json - server/runner/src/main/webResources/doc/api/public/data/ps/observation/Activity/validation-update.json - server/runner/src/main/webResources/doc/api/public/data/ps/observation/Catch/validation-update.json - server/runner/src/main/webResources/doc/api/public/data/ps/observation/Route/validation-update.json - toolkit/persistence/src/main/java/fr/ird/observe/spi/context/OpenableDtoEntityContext.java - toolkit/plugin/src/main/java/fr/ird/observe/toolkit/maven/plugin/server/definition/ValidationDefinitionTemplate.java Changes: ===================================== core/persistence/java/src/main/java/fr/ird/observe/entities/data/ll/landing/LandingSpi.java ===================================== @@ -26,8 +26,11 @@ import fr.ird.observe.dto.data.ll.landing.LandingDto; import fr.ird.observe.dto.form.Form; import fr.ird.observe.entities.data.ll.common.Trip; import fr.ird.observe.services.service.SaveResultDto; +import fr.ird.observe.spi.result.AddEntityToUpdateStep; import fr.ird.observe.spi.service.ServiceContext; +import java.util.function.Consumer; + /** * Created on 10/05/2021. * @@ -43,8 +46,8 @@ public class LandingSpi extends GeneratedLandingSpi { } @Override - protected SaveResultDto saveEntity(ServiceContext context, Trip parent, Landing entity) { + protected SaveResultDto saveEntity(ServiceContext context, Trip parent, Landing entity, Consumer<AddEntityToUpdateStep> extraConsumer) { LandingPart.SPI.initId(context, entity.getLandingPart()); - return super.saveEntity(context, parent, entity); + return super.saveEntity(context, parent, entity, extraConsumer); } } ===================================== core/persistence/java/src/main/java/fr/ird/observe/entities/data/ll/logbook/ActivitySpi.java ===================================== @@ -34,6 +34,7 @@ import fr.ird.observe.dto.referential.ReferentialLocale; import fr.ird.observe.entities.data.ll.common.Trip; import fr.ird.observe.entities.referential.common.DataQuality; import fr.ird.observe.entities.referential.common.Species; +import fr.ird.observe.spi.result.AddEntityToUpdateStep; import fr.ird.observe.spi.service.ServiceContext; import io.ultreia.java4all.util.Dates; import org.apache.logging.log4j.LogManager; @@ -41,6 +42,7 @@ import org.apache.logging.log4j.Logger; import java.util.Calendar; import java.util.Date; +import java.util.function.Consumer; import java.util.stream.Collectors; /** @@ -104,11 +106,11 @@ public class ActivitySpi extends GeneratedActivitySpi { // } @Override - public void onSave(ServiceContext context, Trip parent, Activity entity, ActivityDto dto, boolean needCopy) { + public Consumer<AddEntityToUpdateStep> onSave(ServiceContext context, Trip parent, Activity entity, ActivityDto dto, boolean needCopy) { if (!dto.isSetEnabled() && entity.getSet() != null) { log.info(String.format("Remove set: %s", entity.getSet().getTopiaId())); entity.setSet(null); } - super.onSave(context, parent, entity, dto, needCopy); + return super.onSave(context, parent, entity, dto, needCopy); } } ===================================== core/persistence/java/src/main/java/fr/ird/observe/entities/data/ll/logbook/SampleSpi.java ===================================== @@ -27,10 +27,12 @@ import fr.ird.observe.dto.data.ll.logbook.SampleDto; import fr.ird.observe.dto.form.Form; import fr.ird.observe.entities.data.ll.common.Trip; import fr.ird.observe.services.service.SaveResultDto; +import fr.ird.observe.spi.result.AddEntityToUpdateStep; import fr.ird.observe.spi.service.ServiceContext; import java.util.Calendar; import java.util.Date; +import java.util.function.Consumer; /** * Created on 10/05/2021. @@ -57,8 +59,8 @@ public class SampleSpi extends GeneratedSampleSpi { } @Override - protected SaveResultDto saveEntity(ServiceContext context, Trip parent, Sample entity) { + protected SaveResultDto saveEntity(ServiceContext context, Trip parent, Sample entity, Consumer<AddEntityToUpdateStep> extraConsumer) { SamplePart.SPI.initId(context, entity.getSamplePart()); - return super.saveEntity(context, parent, entity); + return super.saveEntity(context, parent, entity, extraConsumer); } } ===================================== core/persistence/java/src/main/java/fr/ird/observe/entities/data/ll/observation/ActivitySpi.java ===================================== @@ -29,12 +29,14 @@ import fr.ird.observe.dto.data.ll.observation.ActivityReference; import fr.ird.observe.dto.form.Form; import fr.ird.observe.dto.referential.ReferentialLocale; import fr.ird.observe.entities.data.ll.common.Trip; +import fr.ird.observe.spi.result.AddEntityToUpdateStep; import fr.ird.observe.spi.service.ServiceContext; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import java.util.Calendar; import java.util.Date; +import java.util.function.Consumer; /** * Created on 10/05/2021. @@ -78,12 +80,12 @@ public class ActivitySpi extends GeneratedActivitySpi { // } @Override - public void onSave(ServiceContext context, Trip parent, Activity entity, ActivityDto dto, boolean needCopy) { + public Consumer<AddEntityToUpdateStep> onSave(ServiceContext context, Trip parent, Activity entity, ActivityDto dto, boolean needCopy) { if (!dto.isSetEnabled() && entity.getSet() != null) { log.info(String.format("Remove set: %s", entity.getSet().getTopiaId())); entity.setSet(null); } - super.onSave(context, parent, entity, dto, needCopy); + return super.onSave(context, parent, entity, dto, needCopy); } } ===================================== core/persistence/java/src/main/java/fr/ird/observe/entities/data/ps/localmarket/SurveySpi.java ===================================== @@ -35,6 +35,7 @@ import java.util.Collection; import java.util.LinkedList; import java.util.Objects; import java.util.Set; +import java.util.function.Consumer; import java.util.stream.Collectors; /** @@ -61,7 +62,7 @@ public class SurveySpi extends GeneratedSurveySpi { } @Override - public void onSave(ServiceContext context, Trip parent, Survey entity, SurveyDto dto, boolean needCopy) { + public Consumer<AddEntityToUpdateStep> onSave(ServiceContext context, Trip parent, Survey entity, SurveyDto dto, boolean needCopy) { // Get all batch ids associated to this survey Set<String> newBatchIds = dto.getBatches().stream().map(BatchReference::getId).collect(Collectors.toSet()); @@ -70,8 +71,8 @@ public class SurveySpi extends GeneratedSurveySpi { // Remove from batches survey if equals to this one String surveyId = dto.getId(); localmarketBatches.stream() - .filter(b -> b.getSurvey() != null && surveyId.equals(b.getSurvey().getTopiaId())) - .forEach(b -> b.setSurvey(null)); + .filter(b -> b.getSurvey() != null && surveyId.equals(b.getSurvey().getTopiaId())) + .forEach(b -> b.setSurvey(null)); } if (needCopy) { fromDto(context, entity, dto); @@ -79,18 +80,19 @@ public class SurveySpi extends GeneratedSurveySpi { // Set new association on batches associated to this survey localmarketBatches.stream().filter(b -> newBatchIds.contains(b.getTopiaId())).forEach(b -> b.setSurvey(entity)); super.onSave(context, parent, entity, dto, false); + return s -> s.updateCollection(SurveyPart.SPI, entity.getSurveyPart()); } -// + // @Override // public void moveCallback(Trip oldParent, Trip newParent, List<Survey> moved) { // //FIXME Copy missing meta-data to new parent? // } - - @Override - public void saveCallback(AddEntityToUpdateStep saveHelper, Survey entity) { - saveHelper.updateCollection(SurveyPart.SPI, entity.getSurveyPart()); - } +// +// @Override +// public void saveCallback(AddEntityToUpdateStep saveHelper, Survey entity) { +// saveHelper.updateCollection(SurveyPart.SPI, entity.getSurveyPart()); +// } public void fillFormObject(ReferentialLocale referentialLocale, Trip trip, Survey survey, Form<SurveyDto> form) { Collection<Batch> availableBatches = new LinkedList<>(); ===================================== core/persistence/java/src/main/java/fr/ird/observe/entities/data/ps/logbook/ActivitySpi.java ===================================== @@ -30,6 +30,7 @@ import fr.ird.observe.dto.form.Form; import fr.ird.observe.dto.referential.ReferentialLocale; import fr.ird.observe.entities.referential.common.FpaZone; import fr.ird.observe.entities.referential.ps.logbook.InformationSource; +import fr.ird.observe.spi.result.AddEntityToUpdateStep; import fr.ird.observe.spi.service.ServiceContext; import io.ultreia.java4all.util.Dates; import org.apache.logging.log4j.LogManager; @@ -37,6 +38,7 @@ import org.apache.logging.log4j.Logger; import java.util.Date; import java.util.function.BiConsumer; +import java.util.function.Consumer; /** * Created on 10/05/2021. @@ -103,7 +105,7 @@ public class ActivitySpi extends GeneratedActivitySpi { } @Override - public void onSave(ServiceContext context, Route parent, Activity entity, ActivityDto dto, boolean needCopy) { + public Consumer<AddEntityToUpdateStep> onSave(ServiceContext context, Route parent, Activity entity, ActivityDto dto, boolean needCopy) { if (!dto.isCatchesEnabled() && entity.isCatchesNotEmpty()) { log.info(String.format("Remove %d catch(es).", entity.getCatchesSize())); entity.clearCatches(); @@ -114,7 +116,7 @@ public class ActivitySpi extends GeneratedActivitySpi { } entity.clearFloatingObject(); } - super.onSave(context, parent, entity, dto, needCopy); + return null; } @Override ===================================== core/persistence/java/src/main/java/fr/ird/observe/entities/data/ps/logbook/RouteSpi.java ===================================== @@ -29,12 +29,14 @@ import fr.ird.observe.dto.form.Form; import fr.ird.observe.entities.data.ps.common.Trip; import fr.ird.observe.entities.data.ps.common.TripSpi; import fr.ird.observe.services.service.SaveResultDto; +import fr.ird.observe.spi.result.AddEntityToUpdateStep; import fr.ird.observe.spi.service.ServiceContext; import io.ultreia.java4all.util.Dates; import org.apache.commons.lang3.time.DateUtils; import java.util.Date; import java.util.Set; +import java.util.function.Consumer; import java.util.stream.Collectors; /** @@ -59,14 +61,14 @@ public class RouteSpi extends GeneratedRouteSpi { } @Override - protected SaveResultDto saveEntity(ServiceContext context, Trip parent, Route entity) { + protected SaveResultDto saveEntity(ServiceContext context, Trip parent, Route entity, Consumer<AddEntityToUpdateStep> extraConsumer) { if (TripSpi.updateEndDate(parent)) { return newSaveHelper(context) .update(Trip.SPI, parent) .update(this, entity) .build(entity); } - return super.saveEntity(context, parent, entity); + return super.saveEntity(context, parent, entity, extraConsumer); } @Override ===================================== core/persistence/java/src/main/java/fr/ird/observe/entities/data/ps/logbook/SampleSpi.java ===================================== @@ -30,9 +30,11 @@ import fr.ird.observe.entities.data.ps.common.Trip; import fr.ird.observe.entities.referential.ps.common.SampleType; import fr.ird.observe.entities.referential.ps.logbook.SampleQuality; import fr.ird.observe.services.service.SaveResultDto; +import fr.ird.observe.spi.result.AddEntityToUpdateStep; import fr.ird.observe.spi.service.ServiceContext; import java.util.Objects; +import java.util.function.Consumer; /** * Created on 10/05/2021. @@ -70,7 +72,7 @@ public class SampleSpi extends GeneratedSampleSpi { } @Override - public void onSave(ServiceContext context, Trip parent, Sample entity, SampleDto dto, boolean needCopy) { + public Consumer<AddEntityToUpdateStep> onSave(ServiceContext context, Trip parent, Sample entity, SampleDto dto, boolean needCopy) { boolean superSampleChanged = !Objects.equals(entity.isSuperSample(), dto.isSuperSample()); if (superSampleChanged && entity.isSampleSpeciesNotEmpty()) { // superSample changed (adapt) @@ -87,7 +89,7 @@ public class SampleSpi extends GeneratedSampleSpi { entity.getSampleSpecies().forEach(sampleSpecies -> sampleSpecies.setSubSampleNumber(0)); } } - super.onSave(context, parent, entity, dto, needCopy); + return super.onSave(context, parent, entity, dto, needCopy); } private int getSampleSpeciesSubNumber(Sample entity) { @@ -95,9 +97,9 @@ public class SampleSpi extends GeneratedSampleSpi { } @Override - protected SaveResultDto saveEntity(ServiceContext context, Trip parent, Sample entity) { + protected SaveResultDto saveEntity(ServiceContext context, Trip parent, Sample entity, Consumer<AddEntityToUpdateStep> extraConsumer) { SampleActivity.SPI.initId(context, entity.getSampleActivity()); - return super.saveEntity(context, parent, entity); + return super.saveEntity(context, parent, entity, extraConsumer); } //FIXME Add a callback in MoveRequest ===================================== core/persistence/java/src/main/java/fr/ird/observe/entities/data/ps/logbook/WellSpi.java ===================================== @@ -22,30 +22,43 @@ package fr.ird.observe.entities.data.ps.logbook; * #L% */ +import fr.ird.observe.dto.data.ps.logbook.WellDto; import fr.ird.observe.entities.data.ps.common.Trip; import fr.ird.observe.services.service.SaveResultDto; import fr.ird.observe.spi.result.AddEntityToUpdateStep; import fr.ird.observe.spi.service.ServiceContext; import java.util.Set; +import java.util.function.Consumer; public class WellSpi extends GeneratedWellSpi { +// @Override +// public void saveCallback(AddEntityToUpdateStep saveHelper, Well entity) { +// Set<WellActivity> wellActivity = entity.getWellActivity(); +// saveHelper.updateCollection(WellActivity.SPI, wellActivity); +// wellActivity.forEach(c -> saveHelper.updateCollection(WellActivitySpecies.SPI, c.getWellActivitySpecies(), false)); +// saveHelper.updateLastUpdateDateTable(WellActivitySpecies.SPI); +// } + @Override - public void saveCallback(AddEntityToUpdateStep saveHelper, Well entity) { - Set<WellActivity> wellActivity = entity.getWellActivity(); - saveHelper.updateCollection(WellActivity.SPI, wellActivity); - wellActivity.forEach(c -> saveHelper.updateCollection(WellActivitySpecies.SPI, c.getWellActivitySpecies(), false)); - saveHelper.updateLastUpdateDateTable(WellActivitySpecies.SPI); + public Consumer<AddEntityToUpdateStep> onSave(ServiceContext context, Trip parent, Well entity, WellDto dto, boolean needCopy) { + super.onSave(context, parent, entity, dto, needCopy); + return s -> { + Set<WellActivity> wellActivity = entity.getWellActivity(); + s.updateCollection(WellActivity.SPI, wellActivity); + wellActivity.forEach(c -> s.updateCollection(WellActivitySpecies.SPI, c.getWellActivitySpecies(), false)); + s.updateLastUpdateDateTable(WellActivitySpecies.SPI); + }; } @Override - protected SaveResultDto saveEntity(ServiceContext context, Trip parent, Well entity) { + protected SaveResultDto saveEntity(ServiceContext context, Trip parent, Well entity, Consumer<AddEntityToUpdateStep> extraConsumer) { Set<WellActivity> wellActivity = entity.getWellActivity(); if (wellActivity != null) { WellActivity.SPI.initId(context, wellActivity); wellActivity.forEach(activity -> WellActivitySpecies.SPI.initId(context, activity.getWellActivitySpecies())); } - return super.saveEntity(context, parent, entity); + return super.saveEntity(context, parent, entity, extraConsumer); } } //WellSpi ===================================== core/persistence/java/src/main/java/fr/ird/observe/entities/data/ps/observation/ActivitySpi.java ===================================== @@ -31,6 +31,7 @@ import fr.ird.observe.dto.referential.ReferentialLocale; import fr.ird.observe.dto.referential.common.SpeciesReference; import fr.ird.observe.entities.referential.common.FpaZone; import fr.ird.observe.entities.referential.common.Species; +import fr.ird.observe.spi.result.AddEntityToUpdateStep; import fr.ird.observe.spi.service.ServiceContext; import io.ultreia.java4all.util.Dates; import org.apache.logging.log4j.LogManager; @@ -39,6 +40,7 @@ import org.apache.logging.log4j.Logger; import java.util.Date; import java.util.LinkedHashSet; import java.util.function.BiConsumer; +import java.util.function.Consumer; import java.util.stream.Stream; /** @@ -97,7 +99,7 @@ public class ActivitySpi extends GeneratedActivitySpi { } @Override - public void onSave(ServiceContext context, Route parent, Activity entity, ActivityDto dto, boolean needCopy) { + public Consumer<AddEntityToUpdateStep> onSave(ServiceContext context, Route parent, Activity entity, ActivityDto dto, boolean needCopy) { if (!dto.isSetEnabled() && entity.getSet() != null) { log.info(String.format("Remove set: %s", entity.getSet().getTopiaId())); entity.setSet(null); @@ -108,7 +110,7 @@ public class ActivitySpi extends GeneratedActivitySpi { } entity.clearFloatingObject(); } - super.onSave(context, parent, entity, dto, needCopy); + return super.onSave(context, parent, entity, dto, needCopy); } @Override ===================================== core/persistence/java/src/main/java/fr/ird/observe/entities/data/ps/observation/RouteSpi.java ===================================== @@ -30,6 +30,7 @@ import fr.ird.observe.dto.form.Form; import fr.ird.observe.entities.data.ps.common.Trip; import fr.ird.observe.entities.data.ps.common.TripSpi; import fr.ird.observe.services.service.SaveResultDto; +import fr.ird.observe.spi.result.AddEntityToUpdateStep; import fr.ird.observe.spi.service.ServiceContext; import io.ultreia.java4all.util.Dates; import org.apache.commons.lang3.time.DateUtils; @@ -39,6 +40,7 @@ import java.util.Date; import java.util.LinkedHashSet; import java.util.Objects; import java.util.Set; +import java.util.function.Consumer; import java.util.stream.Collectors; /** @@ -72,7 +74,7 @@ public class RouteSpi extends GeneratedRouteSpi { } @Override - public void onSave(ServiceContext context, Trip parent, Route entity, RouteDto dto, boolean needCopy) { + public Consumer<AddEntityToUpdateStep> onSave(ServiceContext context, Trip parent, Route entity, RouteDto dto, boolean needCopy) { boolean dateHasChanged = false; if (dto.isPersisted()) { @@ -85,18 +87,18 @@ public class RouteSpi extends GeneratedRouteSpi { if (dateHasChanged) { getDao(context).updateActivitiesDate(entity.getTopiaId(), new java.sql.Date(dto.getDate().getTime())); } - super.onSave(context, parent, entity, dto, needCopy); + return super.onSave(context, parent, entity, dto, needCopy); } @Override - protected SaveResultDto saveEntity(ServiceContext context, Trip parent, Route entity) { + protected SaveResultDto saveEntity(ServiceContext context, Trip parent, Route entity, Consumer<AddEntityToUpdateStep> extraConsumer) { if (TripSpi.updateEndDate(parent)) { return newSaveHelper(context) .update(Trip.SPI, parent) .update(this, entity) .build(entity); } - return super.saveEntity(context, parent, entity); + return super.saveEntity(context, parent, entity, extraConsumer); } @Override ===================================== core/persistence/resources/src/main/resources/fr/ird/observe/entities/data/ll/common/Trip/validation-update.json ===================================== @@ -25,6 +25,7 @@ "endDate": { "errors": [ "endDate <= now", + "endDate > any activity date", "endDate >= startDate", "endDate is mandatory" ] @@ -184,6 +185,7 @@ }, "startDate": { "errors": [ + "startDate < any activity date", "startDate <= now", "startDate is mandatory" ] ===================================== core/persistence/resources/src/main/resources/fr/ird/observe/entities/data/ll/landing/LandingPart/validation-update.json ===================================== @@ -1,4 +1,9 @@ { + "categoryMax": { + "errors": [ + "if filled, categoryMax > categoryMin" + ] + }, "conservation": { "errors": [ "check if referential conservation is disabled (only if validation is strong)" ===================================== core/persistence/resources/src/main/resources/fr/ird/observe/entities/data/ps/logbook/Activity/validation-update.json ===================================== @@ -29,6 +29,11 @@ "check if referential dataQuality is disabled (only if validation is not strong)" ] }, + "floatingObjectEmpty": { + "warnings": [ + "No DCP" + ] + }, "fpaZone": { "errors": [ "check if referential fpaZone is disabled (only if validation is strong)" ===================================== core/persistence/resources/src/main/resources/fr/ird/observe/entities/data/ps/logbook/Route/validation-update.json ===================================== @@ -1,4 +1,10 @@ { + "activity": { + "errors": [ + "activities quadrant check", + "activities time check" + ] + }, "comment": { "errors": [ "comment (if not null) is not a blank string", ===================================== core/persistence/resources/src/main/resources/fr/ird/observe/entities/data/ps/observation/Activity/validation-update.json ===================================== @@ -35,6 +35,11 @@ "ersId (if not null) is not a blank string" ] }, + "floatingObjectEmpty": { + "warnings": [ + "No DCP" + ] + }, "homeId": { "errors": [ "homeId (if not null) is not a blank string" @@ -44,18 +49,12 @@ "errors": [ "check latitude format", "latitude is mandatory" - ], - "warnings": [ - "check speed" ] }, "longitude": { "errors": [ "check longitude format", "longitude is mandatory" - ], - "warnings": [ - "check speed" ] }, "nextFpaZone": { @@ -138,13 +137,12 @@ "unique activity time on route" ], "warnings": [ - "check speed" + "Check speed" ] }, "vesselActivity": { "errors": [ "check if referential vesselActivity is disabled (only if validation is strong)", - "if end of search activity possible?", "vesselActivity is mandatory" ], "warnings": [ ===================================== core/persistence/resources/src/main/resources/fr/ird/observe/entities/data/ps/observation/Catch/validation-update.json ===================================== @@ -77,6 +77,7 @@ "species": { "errors": [ "check if referential species is disabled (only if validation is strong)", + "check missing observed system", "species is mandatory" ], "warnings": [ ===================================== core/persistence/resources/src/main/resources/fr/ird/observe/entities/data/ps/observation/Route/validation-update.json ===================================== @@ -1,4 +1,15 @@ { + "activity": { + "errors": [ + "activities quadrant check", + "activities speed check", + "activities time check" + ], + "warnings": [ + "activities speed check", + "end of search activity required" + ] + }, "comment": { "errors": [ "comment (if not null) is not a blank string", @@ -18,6 +29,10 @@ "endLogValue": { "errors": [ "endLogValue is a positive number" + ], + "warnings": [ + "loch matin < endLogValue ou l'un des deux lochs non renseigne", + "| endLogValue - loch Matin | < maxGap ou l'un des deux lochs non renseigne" ] }, "homeId": { @@ -30,7 +45,7 @@ "startLogValue is a positive number" ], "warnings": [ - "check loch matin ( supérieur a tout loch soir d'une route plus ancienne)" + "check loch matin ( superieur a tout loch soir d'une route plus ancienne)" ] } } \ No newline at end of file ===================================== server/runner/src/main/webResources/doc/api/public/data/ll/common/Trip/validation-update.json ===================================== @@ -25,6 +25,7 @@ "endDate": { "errors": [ "endDate <= now", + "endDate > any activity date", "endDate >= startDate", "endDate is mandatory" ] @@ -184,6 +185,7 @@ }, "startDate": { "errors": [ + "startDate < any activity date", "startDate <= now", "startDate is mandatory" ] ===================================== server/runner/src/main/webResources/doc/api/public/data/ll/landing/LandingPart/validation-update.json ===================================== @@ -1,4 +1,9 @@ { + "categoryMax": { + "errors": [ + "if filled, categoryMax > categoryMin" + ] + }, "conservation": { "errors": [ "check if referential conservation is disabled (only if validation is strong)" ===================================== server/runner/src/main/webResources/doc/api/public/data/ps/logbook/Activity/validation-update.json ===================================== @@ -29,6 +29,11 @@ "check if referential dataQuality is disabled (only if validation is not strong)" ] }, + "floatingObjectEmpty": { + "warnings": [ + "No DCP" + ] + }, "fpaZone": { "errors": [ "check if referential fpaZone is disabled (only if validation is strong)" ===================================== server/runner/src/main/webResources/doc/api/public/data/ps/logbook/Route/validation-update.json ===================================== @@ -1,4 +1,10 @@ { + "activity": { + "errors": [ + "activities quadrant check", + "activities time check" + ] + }, "comment": { "errors": [ "comment (if not null) is not a blank string", ===================================== server/runner/src/main/webResources/doc/api/public/data/ps/observation/Activity/validation-update.json ===================================== @@ -35,6 +35,11 @@ "ersId (if not null) is not a blank string" ] }, + "floatingObjectEmpty": { + "warnings": [ + "No DCP" + ] + }, "homeId": { "errors": [ "homeId (if not null) is not a blank string" @@ -44,18 +49,12 @@ "errors": [ "check latitude format", "latitude is mandatory" - ], - "warnings": [ - "check speed" ] }, "longitude": { "errors": [ "check longitude format", "longitude is mandatory" - ], - "warnings": [ - "check speed" ] }, "nextFpaZone": { @@ -138,13 +137,12 @@ "unique activity time on route" ], "warnings": [ - "check speed" + "Check speed" ] }, "vesselActivity": { "errors": [ "check if referential vesselActivity is disabled (only if validation is strong)", - "if end of search activity possible?", "vesselActivity is mandatory" ], "warnings": [ ===================================== server/runner/src/main/webResources/doc/api/public/data/ps/observation/Catch/validation-update.json ===================================== @@ -77,6 +77,7 @@ "species": { "errors": [ "check if referential species is disabled (only if validation is strong)", + "check missing observed system", "species is mandatory" ], "warnings": [ ===================================== server/runner/src/main/webResources/doc/api/public/data/ps/observation/Route/validation-update.json ===================================== @@ -1,4 +1,15 @@ { + "activity": { + "errors": [ + "activities quadrant check", + "activities speed check", + "activities time check" + ], + "warnings": [ + "activities speed check", + "end of search activity required" + ] + }, "comment": { "errors": [ "comment (if not null) is not a blank string", @@ -18,6 +29,10 @@ "endLogValue": { "errors": [ "endLogValue is a positive number" + ], + "warnings": [ + "loch matin < endLogValue ou l'un des deux lochs non renseigne", + "| endLogValue - loch Matin | < maxGap ou l'un des deux lochs non renseigne" ] }, "homeId": { @@ -30,7 +45,7 @@ "startLogValue is a positive number" ], "warnings": [ - "check loch matin ( supérieur a tout loch soir d'une route plus ancienne)" + "check loch matin ( superieur a tout loch soir d'une route plus ancienne)" ] } } \ No newline at end of file ===================================== toolkit/persistence/src/main/java/fr/ird/observe/spi/context/OpenableDtoEntityContext.java ===================================== @@ -56,6 +56,7 @@ import java.util.List; import java.util.Set; import java.util.TreeSet; import java.util.function.BiConsumer; +import java.util.function.Consumer; import java.util.function.Function; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -95,13 +96,14 @@ public abstract class OpenableDtoEntityContext< public void onLoadForm(ServiceContext context, E entity, Form<D> form) { } - public void onSave(ServiceContext context, PE parent, E entity, D dto, boolean needCopy) { + public Consumer<AddEntityToUpdateStep> onSave(ServiceContext context, PE parent, E entity, D dto, boolean needCopy) { if (needCopy) { fromDto(context.getReferentialLocale(), entity, dto); } if (dto.isNotPersisted()) { addChildrenToParent(parent, entity); } + return null; } public Set<ToolkitIdDtoBean> getRealDependencies(ServiceContext context, Set<String> ids) { @@ -250,18 +252,16 @@ public abstract class OpenableDtoEntityContext< PE parent = parentSpi().loadEntity(context, parentId); E entity = loadOrCreateEntityFromDto(context, dto); checkLastUpdateDate(context, entity, dto); - onSave(context, parent, entity, dto, true); - return saveEntity(context, parent, entity); - } - - public void saveCallback(AddEntityToUpdateStep saveHelper, E entity) { + Consumer<AddEntityToUpdateStep> extraConsumer = onSave(context, parent, entity, dto, true); + return saveEntity(context, parent, entity, extraConsumer); } - protected SaveResultDto saveEntity(ServiceContext context, PE parent, E entity) { + protected SaveResultDto saveEntity(ServiceContext context, PE parent, E entity, Consumer<AddEntityToUpdateStep> extraConsumer) { AddEntityToUpdateStep saveHelper = newSaveHelper(context).update(this, entity); - saveCallback(saveHelper, entity); - return saveHelper - .build(entity); + if (extraConsumer != null) { + extraConsumer.accept(saveHelper); + } + return saveHelper.build(entity); } protected BiConsumer<E, R> getChildrenExtraConsumer(PE parent) { ===================================== toolkit/plugin/src/main/java/fr/ird/observe/toolkit/maven/plugin/server/definition/ValidationDefinitionTemplate.java ===================================== @@ -174,7 +174,7 @@ public class ValidationDefinitionTemplate { } Pair<String, String> pair = generateTypeDefinitionContent(validatorsByType, gson, dtoType); String createFileContent = pair.getLeft(); - String updateFileContent = pair.getLeft(); + String updateFileContent = pair.getRight(); Files.write(path.resolve(DtoEntityContext.VALIDATION_CREATE_CLASSIFIER), createFileContent.getBytes(StandardCharsets.UTF_8)); Files.write(path.resolve(DtoEntityContext.VALIDATION_UPDATE_CLASSIFIER), updateFileContent.getBytes(StandardCharsets.UTF_8)); View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/4ddd0436e61d7fddeecefcdf6... -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/4ddd0436e61d7fddeecefcdf6... You're receiving this email because of your account on gitlab.com.