Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe Commits: 9e4cd83f by Tony Chemit at 2020-08-14T15:07:17+02:00 Make Entity JavaBean :) - - - - - 1c2d492a by Tony Chemit at 2020-08-14T15:36:36+02:00 Improve service delete method (now just two methods) - - - - - 18 changed files: - common-persistence/pom.xml - common-persistence/src/main/java/fr/ird/observe/entities/Entity.java - common-persistence/src/main/java/fr/ird/observe/entities/ObserveTopiaPersistenceContextSupport.java - + persistence/src/main/java/fr/ird/observe/entities/EntityImpl.java - services-local/pom.xml - services-local/src/main/java/fr/ird/observe/services/local/service/ObserveServiceLocal.java - services-local/src/main/java/fr/ird/observe/services/local/service/data/ll/landing/LandingServiceLocal.java - services-local/src/main/java/fr/ird/observe/services/local/service/data/ll/logbook/ActivitySampleServiceLocal.java - services-local/src/main/java/fr/ird/observe/services/local/service/data/ll/logbook/ActivityServiceLocal.java - services-local/src/main/java/fr/ird/observe/services/local/service/data/ll/logbook/SetServiceLocal.java - services-local/src/main/java/fr/ird/observe/services/local/service/data/ll/logbook/TripSampleServiceLocal.java - services-local/src/main/java/fr/ird/observe/services/local/service/data/ll/observation/ActivityServiceLocal.java - services-local/src/main/java/fr/ird/observe/services/local/service/data/ll/observation/SetServiceLocal.java - services-local/src/main/java/fr/ird/observe/services/local/service/data/ps/observation/ActivityServiceLocal.java - services-local/src/main/java/fr/ird/observe/services/local/service/data/ps/observation/FloatingObjectServiceLocal.java - services-local/src/main/java/fr/ird/observe/services/local/service/data/ps/observation/RouteServiceLocal.java - services-local/src/main/java/fr/ird/observe/services/local/service/data/ps/observation/SetServiceLocal.java - templates/src/main/java/fr/ird/observe/toolkit/templates/entity/EntityTransformer.java Changes: ===================================== common-persistence/pom.xml ===================================== @@ -70,6 +70,10 @@ <groupId>io.ultreia.java4all</groupId> <artifactId>application-context</artifactId> </dependency> + <dependency> + <groupId>io.ultreia.java4all</groupId> + <artifactId>java-bean</artifactId> + </dependency> <dependency> <groupId>io.ultreia.java4all.i18n</groupId> <artifactId>i18n-runtime</artifactId> ===================================== common-persistence/src/main/java/fr/ird/observe/entities/Entity.java ===================================== @@ -23,12 +23,15 @@ package fr.ird.observe.entities; */ import fr.ird.observe.dto.reference.DtoReferenceAware; +import io.ultreia.java4all.bean.JavaBean; +import io.ultreia.java4all.bean.definition.JavaBeanDefinition; +import io.ultreia.java4all.bean.definition.JavaBeanDefinitionStore; import org.nuiton.topia.persistence.TopiaEntity; import org.nuiton.topia.persistence.event.ListenableTopiaEntity; import java.util.Date; -public interface Entity extends TopiaEntity, ListenableTopiaEntity, DtoReferenceAware { +public interface Entity extends TopiaEntity, ListenableTopiaEntity, DtoReferenceAware, JavaBean { String PROPERTY_LAST_UPDATE_DATE = "lastUpdateDate"; ===================================== common-persistence/src/main/java/fr/ird/observe/entities/ObserveTopiaPersistenceContextSupport.java ===================================== @@ -211,7 +211,11 @@ public abstract class ObserveTopiaPersistenceContextSupport extends AbstractTopi Class<? extends DataEntity> associationType = getTopiaIdFactory().getClassName(associationId); throw new DataAssociationParentNotFoundException(locale, DbModelHelper.fromDataEntity(associationType).toDtoType(), associationName, associationId); } - return getDao(associationContainerType).forTopiaIdEquals(Objects.requireNonNull(parentId)).findUnique(); + E result = getDao(associationContainerType).forTopiaIdEquals(Objects.requireNonNull(parentId)).findUniqueOrNull(); + if (result == null) { + throw new DataNotFoundException(locale, DbModelHelper.fromEntity(associationContainerType).toDtoType(), parentId); + } + return result; } protected class CountTableSqlWork extends TopiaSqlQuery<Long> { ===================================== persistence/src/main/java/fr/ird/observe/entities/EntityImpl.java ===================================== @@ -0,0 +1,46 @@ +package fr.ird.observe.entities; + +/*- + * #%L + * ObServe :: Persistence + * %% + * Copyright (C) 2008 - 2020 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 io.ultreia.java4all.bean.definition.JavaBeanDefinition; +import io.ultreia.java4all.bean.definition.JavaBeanDefinitionStore; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public abstract class EntityImpl extends EntityAbstract { + + private static final long serialVersionUID = 1L; + private static final Logger log = LogManager.getLogger(EntityImpl.class); + private JavaBeanDefinition javaBeanDefinition; + + @Override + public JavaBeanDefinition javaBeanDefinition() { + if (javaBeanDefinition == null) { + Class<? extends Entity> contractClass = ObserveEntityEnum.getContractClass(getClass()); + javaBeanDefinition = JavaBeanDefinitionStore.getDefinition(contractClass).orElseThrow(IllegalStateException::new); + log.info(String.format("Loaded javaBean definition for: %s → %s", contractClass.getName(), javaBeanDefinition)); + } + return javaBeanDefinition; + } +} ===================================== services-local/pom.xml ===================================== @@ -106,6 +106,10 @@ <groupId>io.ultreia.java4all</groupId> <artifactId>class-mapping</artifactId> </dependency> + <dependency> + <groupId>io.ultreia.java4all</groupId> + <artifactId>java-bean</artifactId> + </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> ===================================== services-local/src/main/java/fr/ird/observe/services/local/service/ObserveServiceLocal.java ===================================== @@ -218,6 +218,42 @@ public abstract class ObserveServiceLocal implements ObserveService { protected List<Species> filterByOcean(Collection<Species> speciesCollection, Ocean ocean) { return speciesCollection.stream().filter(s -> s.containsOcean(ocean)).collect(Collectors.toList()); } + + protected void deleteSingleAssociation(String idToDelete, + DataDtoEntityContext<?, ?, ?, ?> spi, + DataDtoEntityContext<?, ?, ?, ?> parentSpi, + String associationName) { + + DataEntity<?, ?> entityToDelete = spi.loadEntity(getApplicationLocale(), getTopiaPersistenceContext(), idToDelete); + DataEntity<?, ?> parentEntity = getTopiaPersistenceContext().getSingleAssociationParent(getApplicationLocale(), parentSpi.toEntityType(), associationName, idToDelete); + Object realChild = parentEntity.get(associationName); + if (!Objects.equals(entityToDelete, realChild)) { + throw new DataNotFoundException(getApplicationLocale(), spi.toDtoType(), idToDelete); + } + parentEntity.set(associationName, null); + deleteEntity(parentSpi, parentEntity, entityToDelete); + } + + protected <E extends DataEntity<?, ?>> E deleteMultipleAssociation(DataDtoEntityContext<?, ?, E, ?> parentSpi, String associationName, DataDtoEntityContext<?, ?, ?, ?> spi, String idToDelete) { + + DataEntity<?, ?> entityToDelete = spi.loadEntity(getApplicationLocale(), getTopiaPersistenceContext(), idToDelete); + E parentEntity = getTopiaPersistenceContext().getMultipleAssociationParent(getApplicationLocale(), parentSpi.toEntityType(), associationName, idToDelete); + Collection<?> realChild = parentEntity.get(associationName); + if (!realChild.contains(entityToDelete)) { + throw new DataNotFoundException(getApplicationLocale(), spi.toDtoType(), idToDelete); + } + realChild.remove(entityToDelete); + deleteEntity(parentSpi, parentEntity, entityToDelete); + return parentEntity; + } + + private <C extends Entity, E extends Entity> void deleteEntity(DataDtoEntityContext<?, ?, ?, ?> spi, E parentEntity, C deletedEntity) { + Date lastUpdateDate = now(); + getTopiaPersistenceContext().updateLastUpdateDate(parentEntity, lastUpdateDate); + spi.updateLastUpdates(getTopiaPersistenceContext(), parentEntity.getTopiaId(), lastUpdateDate); + updateLastUpdateDate(spi.toEntityType()); + updateLastUpdateDate(getTopiaPersistenceContext().getType(deletedEntity)); + } } ===================================== services-local/src/main/java/fr/ird/observe/services/local/service/data/ll/landing/LandingServiceLocal.java ===================================== @@ -29,7 +29,6 @@ import fr.ird.observe.dto.form.Form; import fr.ird.observe.dto.reference.DataDtoReferenceSet; import fr.ird.observe.dto.result.SaveResultDto; import fr.ird.observe.dto.result.TripChildSaveResultDto; -import fr.ird.observe.entities.DataNotFoundException; import fr.ird.observe.entities.data.ll.common.Trip; import fr.ird.observe.entities.data.ll.common.TripTopiaDao; import fr.ird.observe.entities.data.ll.landing.Landing; @@ -93,13 +92,7 @@ public class LandingServiceLocal extends ObserveServiceLocal implements LandingS @Override public void delete(String landingLogbookId) { - Trip trip = getTopiaPersistenceContext().getMultipleAssociationParent(getApplicationLocale(), Trip.class, Trip.PROPERTY_LANDING, landingLogbookId); - Landing landing = Landing.loadEntity(getApplicationLocale(), getTopiaPersistenceContext(), landingLogbookId); - if (!trip.containsLanding(landing)) { - throw new DataNotFoundException(getApplicationLocale(), LandingDto.class, landingLogbookId); - } - trip.removeLanding(landing); - saveEntity(Trip.SPI, trip); + deleteMultipleAssociation(Trip.SPI, Trip.PROPERTY_LANDING, Landing.SPI, landingLogbookId); } @Override ===================================== services-local/src/main/java/fr/ird/observe/services/local/service/data/ll/logbook/ActivitySampleServiceLocal.java ===================================== @@ -69,10 +69,7 @@ public class ActivitySampleServiceLocal extends ObserveServiceLocal implements A @Override public void delete(String sampleLogbookId) { - Activity activity = getActivityLonglineLogbook(sampleLogbookId); - Sample.loadEntity(getApplicationLocale(), getTopiaPersistenceContext(), sampleLogbookId); - activity.setSample(null); - saveEntity(Activity.SPI, activity); + deleteSingleAssociation(sampleLogbookId, Sample.SPI, Activity.SPI, Activity.PROPERTY_SAMPLE); } @Override ===================================== services-local/src/main/java/fr/ird/observe/services/local/service/data/ll/logbook/ActivityServiceLocal.java ===================================== @@ -31,7 +31,6 @@ import fr.ird.observe.dto.form.Form; import fr.ird.observe.dto.reference.DataDtoReferenceSet; import fr.ird.observe.dto.result.SaveResultDto; import fr.ird.observe.dto.result.TripChildSaveResultDto; -import fr.ird.observe.entities.DataNotFoundException; import fr.ird.observe.entities.data.ll.common.Trip; import fr.ird.observe.entities.data.ll.logbook.Activity; import fr.ird.observe.entities.data.ll.logbook.ActivityTopiaDao; @@ -120,13 +119,7 @@ public class ActivityServiceLocal extends ObserveServiceLocal implements Activit @Override public boolean delete(String activityLonglineId) { - Trip trip = getTopiaPersistenceContext().getMultipleAssociationParent(getApplicationLocale(), Trip.class, Trip.PROPERTY_ACTIVITY_LOGBOOK, activityLonglineId); - Activity activityLongline = Activity.loadEntity(getApplicationLocale(), getTopiaPersistenceContext(), activityLonglineId); - if (!trip.containsActivityLogbook(activityLongline)) { - throw new DataNotFoundException(getApplicationLocale(), ActivityDto.class, activityLonglineId); - } - trip.removeActivityLogbook(activityLongline); - saveEntity(Trip.SPI, trip); + Trip trip = deleteMultipleAssociation(Trip.SPI, Trip.PROPERTY_ACTIVITY_LOGBOOK, Activity.SPI, activityLonglineId); return Trip.getDao(getTopiaPersistenceContext()).updateEndDate(trip); } ===================================== services-local/src/main/java/fr/ird/observe/services/local/service/data/ll/logbook/SetServiceLocal.java ===================================== @@ -29,7 +29,6 @@ import fr.ird.observe.dto.data.ll.logbook.SetReference; import fr.ird.observe.dto.data.ll.logbook.SetStubDto; import fr.ird.observe.dto.form.Form; import fr.ird.observe.dto.result.SaveResultDto; -import fr.ird.observe.entities.DataNotFoundException; import fr.ird.observe.entities.data.ll.common.Trip; import fr.ird.observe.entities.data.ll.logbook.Activity; import fr.ird.observe.entities.data.ll.logbook.Set; @@ -157,13 +156,14 @@ public class SetServiceLocal extends ObserveServiceLocal implements SetService { @Override public void delete(String setLonglineId) { - Activity activityLongline = getActivityLonglineLogbook(setLonglineId); - Set setLongline = Set.loadEntity(getApplicationLocale(), getTopiaPersistenceContext(), setLonglineId); - if (!activityLongline.getSet().equals(setLongline)) { - throw new DataNotFoundException(getApplicationLocale(), SetDto.class, setLonglineId); - } - activityLongline.setSet(null); - saveEntity(Activity.SPI, activityLongline); + deleteSingleAssociation(setLonglineId, Set.SPI, Activity.SPI, Activity.PROPERTY_SET); +// Activity activityLongline = getActivityLonglineLogbook(setLonglineId); +// Set setLongline = Set.loadEntity(getApplicationLocale(), getTopiaPersistenceContext(), setLonglineId); +// if (!activityLongline.getSet().equals(setLongline)) { +// throw new DataNotFoundException(getApplicationLocale(), SetDto.class, setLonglineId); +// } +// activityLongline.setSet(null); +// saveEntity(Activity.SPI, activityLongline); } private Activity getActivityLonglineLogbook(String setToCopyId) { ===================================== services-local/src/main/java/fr/ird/observe/services/local/service/data/ll/logbook/TripSampleServiceLocal.java ===================================== @@ -30,7 +30,6 @@ import fr.ird.observe.dto.form.Form; import fr.ird.observe.dto.reference.DataDtoReferenceSet; import fr.ird.observe.dto.result.SaveResultDto; import fr.ird.observe.dto.result.TripChildSaveResultDto; -import fr.ird.observe.entities.DataNotFoundException; import fr.ird.observe.entities.data.ll.common.Trip; import fr.ird.observe.entities.data.ll.common.TripTopiaDao; import fr.ird.observe.entities.data.ll.logbook.Activity; @@ -110,13 +109,7 @@ public class TripSampleServiceLocal extends ObserveServiceLocal implements TripS @Override public void delete(String tripLonglineId, String sampleLogbookId) { - Trip trip = Trip.loadEntity(getApplicationLocale(), getTopiaPersistenceContext(), tripLonglineId); - Sample sample = Sample.loadEntity(getApplicationLocale(), getTopiaPersistenceContext(), sampleLogbookId); - if (!trip.containsSample(sample)) { - throw new DataNotFoundException(getApplicationLocale(), SampleDto.class, sampleLogbookId); - } - trip.removeSample(sample); - saveEntity(Trip.SPI, trip); + deleteMultipleAssociation(Trip.SPI, Trip.PROPERTY_SAMPLE, Sample.SPI, tripLonglineId); } @Override ===================================== services-local/src/main/java/fr/ird/observe/services/local/service/data/ll/observation/ActivityServiceLocal.java ===================================== @@ -30,7 +30,6 @@ import fr.ird.observe.dto.form.Form; import fr.ird.observe.dto.reference.DataDtoReferenceSet; import fr.ird.observe.dto.result.SaveResultDto; import fr.ird.observe.dto.result.TripChildSaveResultDto; -import fr.ird.observe.entities.DataNotFoundException; import fr.ird.observe.entities.data.ll.common.Trip; import fr.ird.observe.entities.data.ll.observation.Activity; import fr.ird.observe.entities.data.ll.observation.ActivityTopiaDao; @@ -112,13 +111,7 @@ public class ActivityServiceLocal extends ObserveServiceLocal implements Activit @Override public boolean delete(String activityLonglineId) { - Trip trip = getTopiaPersistenceContext().getMultipleAssociationParent(getApplicationLocale(), Trip.class, Trip.PROPERTY_ACTIVITY_OBS, activityLonglineId); - Activity activityLongline = Activity.loadEntity(getApplicationLocale(), getTopiaPersistenceContext(), activityLonglineId); - if (!trip.containsActivityObs(activityLongline)) { - throw new DataNotFoundException(getApplicationLocale(), ActivityDto.class, activityLonglineId); - } - trip.removeActivityObs(activityLongline); - saveEntity(Trip.SPI, trip); + Trip trip = deleteMultipleAssociation(Trip.SPI, Trip.PROPERTY_ACTIVITY_OBS, Activity.SPI, activityLonglineId); return Trip.getDao(getTopiaPersistenceContext()).updateEndDate(trip); } ===================================== services-local/src/main/java/fr/ird/observe/services/local/service/data/ll/observation/SetServiceLocal.java ===================================== @@ -28,7 +28,6 @@ import fr.ird.observe.dto.data.ll.observation.SetReference; import fr.ird.observe.dto.data.ll.observation.SetStubDto; import fr.ird.observe.dto.form.Form; import fr.ird.observe.dto.result.SaveResultDto; -import fr.ird.observe.entities.DataNotFoundException; import fr.ird.observe.entities.data.ll.common.Trip; import fr.ird.observe.entities.data.ll.observation.Activity; import fr.ird.observe.entities.data.ll.observation.Set; @@ -104,13 +103,7 @@ public class SetServiceLocal extends ObserveServiceLocal implements SetService { @Override public void delete(String setLonglineId) { - Activity activityLongline = getTopiaPersistenceContext().getSingleAssociationParent(getApplicationLocale(), Activity.class, Activity.PROPERTY_SET, setLonglineId); - Set setLongline = Set.loadEntity(getApplicationLocale(), getTopiaPersistenceContext(), setLonglineId); - if (!activityLongline.getSet().equals(setLongline)) { - throw new DataNotFoundException(getApplicationLocale(), SetDto.class, setLonglineId); - } - activityLongline.setSet(null); - saveEntity(Activity.SPI, activityLongline); + deleteSingleAssociation(setLonglineId, Set.SPI, Activity.SPI, Activity.PROPERTY_SET); } private java.util.Set<SetStubDto> getOtherSetLonglineDtoSet(Activity currentActivityLongline, Set setLongline) { ===================================== services-local/src/main/java/fr/ird/observe/services/local/service/data/ps/observation/ActivityServiceLocal.java ===================================== @@ -30,7 +30,6 @@ import fr.ird.observe.dto.form.Form; import fr.ird.observe.dto.reference.DataDtoReferenceSet; import fr.ird.observe.dto.referential.ReferentialLocale; import fr.ird.observe.dto.result.SaveResultDto; -import fr.ird.observe.entities.DataNotFoundException; import fr.ird.observe.entities.data.ps.observation.Activity; import fr.ird.observe.entities.data.ps.observation.Route; import fr.ird.observe.entities.referential.common.FpaZone; @@ -118,13 +117,7 @@ public class ActivityServiceLocal extends ObserveServiceLocal implements Activit @Override public void delete(String activitySeineId) { - Route route = getTopiaPersistenceContext().getMultipleAssociationParent(getApplicationLocale(), Route.class, Route.PROPERTY_ACTIVITY, activitySeineId); - Activity activity = Activity.loadEntity(getApplicationLocale(), getTopiaPersistenceContext(), activitySeineId); - if (!route.containsActivity(activity)) { - throw new DataNotFoundException(getApplicationLocale(), ActivityDto.class, activitySeineId); - } - route.removeActivity(activity); - saveEntity(Route.SPI, route); + deleteMultipleAssociation(Route.SPI, Route.PROPERTY_ACTIVITY, Activity.SPI, activitySeineId); } @Override ===================================== services-local/src/main/java/fr/ird/observe/services/local/service/data/ps/observation/FloatingObjectServiceLocal.java ===================================== @@ -36,7 +36,6 @@ import fr.ird.observe.dto.reference.DataDtoReferenceSet; import fr.ird.observe.dto.referential.ReferentialLocale; import fr.ird.observe.dto.referential.ps.observation.ObjectMaterialDto; import fr.ird.observe.dto.result.SaveResultDto; -import fr.ird.observe.entities.DataNotFoundException; import fr.ird.observe.entities.ObserveTopiaPersistenceContext; import fr.ird.observe.entities.data.ps.observation.Activity; import fr.ird.observe.entities.data.ps.observation.FloatingObject; @@ -201,13 +200,7 @@ public class FloatingObjectServiceLocal extends ObserveServiceLocal implements F @Override public void delete(String floatingObjectId) { - Activity activity = getTopiaPersistenceContext().getMultipleAssociationParent(getApplicationLocale(), Activity.class, Activity.PROPERTY_FLOATING_OBJECT, floatingObjectId); - FloatingObject floatingObject = FloatingObject.loadEntity(getApplicationLocale(), getTopiaPersistenceContext(), floatingObjectId); - if (!activity.containsFloatingObject(floatingObject)) { - throw new DataNotFoundException(getApplicationLocale(), FloatingObjectDto.class, floatingObjectId); - } - activity.removeFloatingObject(floatingObject); - saveEntity(Activity.SPI, activity); + deleteMultipleAssociation(Activity.SPI, Activity.PROPERTY_FLOATING_OBJECT, FloatingObject.SPI, floatingObjectId); } private List<ObjectMaterialHierarchyDto> getObjectMaterialHierarchyDtos(List<ObjectMaterial> objectMaterials) { ===================================== services-local/src/main/java/fr/ird/observe/services/local/service/data/ps/observation/RouteServiceLocal.java ===================================== @@ -31,7 +31,6 @@ import fr.ird.observe.dto.form.Form; import fr.ird.observe.dto.reference.DataDtoReferenceSet; import fr.ird.observe.dto.result.SaveResultDto; import fr.ird.observe.dto.result.TripChildSaveResultDto; -import fr.ird.observe.entities.DataNotFoundException; import fr.ird.observe.entities.data.ps.common.Trip; import fr.ird.observe.entities.data.ps.observation.Activity; import fr.ird.observe.entities.data.ps.observation.ActivityImpl; @@ -140,13 +139,7 @@ public class RouteServiceLocal extends ObserveServiceLocal implements RouteServi @Override public boolean delete(String routeId) { - Trip trip = getTopiaPersistenceContext().getMultipleAssociationParent(getApplicationLocale(), Trip.class, Trip.PROPERTY_ROUTE, routeId); - Route route = Route.loadEntity(getApplicationLocale(), getTopiaPersistenceContext(), routeId); - if (!trip.containsRoute(route)) { - throw new DataNotFoundException(getApplicationLocale(), RouteDto.class, routeId); - } - trip.removeRoute(route); - saveEntity(Trip.SPI, trip); + Trip trip = deleteMultipleAssociation(Trip.SPI, Trip.PROPERTY_ROUTE, Route.SPI, routeId); return Trip.getDao(getTopiaPersistenceContext()).updateEndDate(trip); } ===================================== services-local/src/main/java/fr/ird/observe/services/local/service/data/ps/observation/SetServiceLocal.java ===================================== @@ -103,16 +103,7 @@ public class SetServiceLocal extends ObserveServiceLocal implements SetService { @Override public void delete(String setSeineId) { - Set set = Set.loadEntity(getApplicationLocale(), getTopiaPersistenceContext(), setSeineId); - Activity activity = getTopiaPersistenceContext().getSingleAssociationParent(getApplicationLocale(), Activity.class, Activity.PROPERTY_SET, setSeineId); - if (!activity.getSet().equals(set)) { - throw new DataNotFoundException(getApplicationLocale(), SetDto.class, setSeineId); - } - activity.setSet(null); - saveEntity(Activity.SPI, activity); - //FIXME Do this in update entity method - updateLastUpdateDate(Set.class); - updateLastUpdateDate(Activity.class); + deleteSingleAssociation(setSeineId, Set.SPI, Activity.SPI, Activity.PROPERTY_SET); } } ===================================== templates/src/main/java/fr/ird/observe/toolkit/templates/entity/EntityTransformer.java ===================================== @@ -40,6 +40,7 @@ import fr.ird.observe.spi.context.ReferentialDtoEntityContext; import fr.ird.observe.spi.mapping.DtoToEntityContextMapping; import fr.ird.observe.spi.mapping.EntityToDtoClassMapping; import fr.ird.observe.toolkit.templates.TemplateContract; +import io.ultreia.java4all.bean.spi.GenerateJavaBeanDefinition; import io.ultreia.java4all.classmapping.ImmutableClassMapping; import io.ultreia.java4all.lang.Strings; import org.apache.commons.lang3.StringUtils; @@ -227,7 +228,7 @@ public class EntityTransformer extends TopiaEntityTransformer implements Templat if (GeneratorUtil.hasDocumentation(input)) { setDocumentation(outputInterface, input.getDocumentation()); } - + addAnnotation(outputInterface, outputInterface, GenerateJavaBeanDefinition.class); boolean oneParentContainsEntity = false; List<String> interfaceAlreadyDone = new LinkedList<>(); for (ObjectModelClassifier parent : input.getInterfaces()) { View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/df94f73b810b012feb74bf0ee... -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/df94f73b810b012feb74bf0ee... You're receiving this email because of your account on gitlab.com.