Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe Commits: 324f44c1 by Tony Chemit at 2021-03-20T18:22:37+01:00 Génération des nœuds des référentiels - See #1819 - - - - - 9957c389 by Tony Chemit at 2021-03-20T23:45:47+01:00 Realign code to Open UI - - - - - dabdc097 by Tony Chemit at 2021-03-20T23:49:25+01:00 Improve EditableDataServiceLocalSupport (manage now single or multiple association type) - - - - - 38cc77f6 by Tony Chemit at 2021-03-20T23:49:29+01:00 update toolkit - - - - - 14 changed files: - client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/edit/ContentEditUIOpenExecutor.java - client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/selection/RootSelectionTreeNodeProvider.java - client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/selection/SelectionTreeModel.java - client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/selection/nodes/RootSelectionTreeNode.java - client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/navigation/tree/root/RootNavigationTreeNodeProvider.java - client/datasource/editor/common/src/main/java/fr/ird/observe/client/datasource/editor/common/CommonRootNavigationTreeNodeProvider.java - client/datasource/editor/common/src/main/java/fr/ird/observe/client/datasource/editor/common/CommonRootSelectionTreeNodeProvider.java - client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/LlRootNavigationTreeNodeProvider.java - client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/LlRootSelectionTreeNodeProvider.java - client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/PsRootNavigationTreeNodeProvider.java - client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/PsRootSelectionTreeNodeProvider.java - pom.xml - services/local-impl/src/main/java/fr/ird/observe/services/local/service/data/EditableDataServiceLocalSupport.java - services/local-impl/src/main/java/fr/ird/observe/services/local/service/data/ps/observation/FloatingObjectServiceLocalSupport.java Changes: ===================================== client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/edit/ContentEditUIOpenExecutor.java ===================================== @@ -42,24 +42,30 @@ public class ContentEditUIOpenExecutor<D extends EditableDto, U extends ContentE @Override public void loadContent(U ui) { - // suppression des messages de validation - ContentUIHandler.removeAllMessages(ui); - ContentEditUIHandler<D, U> handler = ui.getHandler(); handler.getContentOpen().resetCoordinateEditors(); //FIXME chemit 20100913 : il vaudrait le faire uniquement lors de l'édition // chaque arrive sur un écran invalide le cache de validation getClientValidationContext().reset(); - ContentEditUIModel<D> model = ui.getModel(); - Form<D> form = model.openForm(handler, model.getStates().getSelectedId()); - handler.getContentOpen().onOpenForm(form); - handler.onOpenAfterOpenModel(); + // suppression des messages de validation + ContentUIHandler.removeAllMessages(ui); + + openModel(ui); handler.fixFormSize(); handler.onEndOpenUI(); } + public void openModel(U ui) { + ContentEditUIModel<D> model = ui.getModel(); + String selectedId = model.getStates().getSelectedId(); + ContentEditUIHandler<D, U> handler = ui.getHandler(); + Form<D> form = model.openForm(handler, selectedId); + handler.getContentOpen().onOpenForm(form); + handler.onOpenAfterOpenModel(); + } + @Override public void startEdit(U ui) { ContentEditUIModel<D> model = ui.getModel(); @@ -67,6 +73,7 @@ public class ContentEditUIOpenExecutor<D extends EditableDto, U extends ContentE handler.getContentOpen().prepareValidationContext(); handler.getContentOpen().installValidators(model.getStates().getBean()); ui.getHandler().getContentOpen().startEditTabUIModel(); + model.getStates().setModified(model.getStates().isCreatingMode()); } ===================================== client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/selection/RootSelectionTreeNodeProvider.java ===================================== @@ -23,7 +23,11 @@ package fr.ird.observe.client.datasource.editor.api.content.selection; */ import fr.ird.observe.client.configuration.NavigationTreeConfig; +import fr.ird.observe.client.datasource.editor.api.content.referential.ReferentialHomeUINavigationNode; import fr.ird.observe.client.datasource.editor.api.content.selection.nodes.RootSelectionTreeNode; +import fr.ird.observe.client.datasource.editor.api.content.selection.nodes.ref.ReferentialListSelectionTreeNode; +import fr.ird.observe.client.datasource.editor.api.navigation.tree.NavigationNode; +import fr.ird.observe.client.datasource.editor.api.navigation.tree.root.RootNavigationTreeNodeProvider; import fr.ird.observe.dto.decoration.DecoratorService; import fr.ird.observe.dto.referential.common.ProgramReference; import fr.ird.observe.services.service.data.SelectionResult; @@ -31,7 +35,7 @@ import fr.ird.observe.spi.module.BusinessModule; import fr.ird.observe.spi.module.BusinessProject; import fr.ird.observe.spi.module.ObserveBusinessModule; -import java.util.Locale; +import java.util.List; import java.util.Objects; /** @@ -45,18 +49,26 @@ public abstract class RootSelectionTreeNodeProvider { private final BusinessModule module; private final int priority; - public static String getIconSuffix(BusinessModule module) { - return module.getName().equals("common") ? "" : ("_" + module.getName()); - } - protected RootSelectionTreeNodeProvider(BusinessProject project, BusinessModule module) { this.module = Objects.requireNonNull(module); this.priority = Objects.requireNonNull(project).getModulePriority(module); } - public abstract void initRootDataNode(DecoratorService decoratorService, NavigationTreeConfig config, SelectionResult navigationResult, RootSelectionTreeNode rootNode); + public void initRootDataNode(DecoratorService decoratorService, NavigationTreeConfig config, SelectionResult navigationResult, RootSelectionTreeNode rootNode) { + // by default no data + } - public abstract void initRootReferentialNode(Locale locale, NavigationTreeConfig config, SelectionResult navigationResult, RootSelectionTreeNode rootNode); + public final void initRootReferentialNode(NavigationTreeConfig config, SelectionResult navigationResult, RootSelectionTreeNode rootNode) { + if (!config.isLoadReferential()) { + return; + } + List<Class<? extends NavigationNode>> referentialHomes = RootNavigationTreeNodeProvider.referentialHomes(getModule()); + for (Class<? extends NavigationNode> referentialHome : referentialHomes) { + @SuppressWarnings("unchecked") Class<? extends ReferentialHomeUINavigationNode> nodeType = (Class<? extends ReferentialHomeUINavigationNode>) referentialHome; + ReferentialHomeUINavigationNode node = ReferentialHomeUINavigationNode.create(nodeType, navigationResult.getReferentialCountMap()); + rootNode.add(new ReferentialListSelectionTreeNode(node)); + } + } public int priority() { return priority; ===================================== client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/selection/SelectionTreeModel.java ===================================== @@ -179,12 +179,8 @@ public class SelectionTreeModel extends DefaultTreeModel implements WithClientCo SelectionResult navigationResult = navigationService.getSelection(config.isLoadPsModule(), config.isLoadLlModule(), config.isLoadReferential()); RootSelectionTreeNode root = new RootSelectionTreeNode(); - root.initRootNode(config, decoratorService, navigationResult); - - if (config.isLoadReferential()) { - root.initRootReferentialNode(config, navigationResult, getClientConfig().getLocale()); - } + root.initRootReferentialNode(config, navigationResult); setRoot(root); } ===================================== client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/selection/nodes/RootSelectionTreeNode.java ===================================== @@ -33,7 +33,6 @@ import java.util.Comparator; import java.util.Enumeration; import java.util.LinkedList; import java.util.List; -import java.util.Locale; import java.util.ServiceLoader; /** @@ -114,9 +113,9 @@ public class RootSelectionTreeNode extends SelectionTreeNodeSupport<Void> { } } - public void initRootReferentialNode(NavigationTreeConfig config, SelectionResult navigationResult, Locale locale) { + public void initRootReferentialNode(NavigationTreeConfig config, SelectionResult navigationResult) { for (RootSelectionTreeNodeProvider rootNodeProvider : rootNodeProviders) { - rootNodeProvider.initRootReferentialNode(locale, config, navigationResult, this); + rootNodeProvider.initRootReferentialNode(config, navigationResult, this); } } } ===================================== client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/navigation/tree/root/RootNavigationTreeNodeProvider.java ===================================== @@ -28,11 +28,15 @@ import fr.ird.observe.client.configuration.NavigationTreeConfig; import fr.ird.observe.client.datasource.editor.api.content.data.list.ContentListUINavigationNode; import fr.ird.observe.client.datasource.editor.api.content.referential.ReferentialHomeUINavigationNode; import fr.ird.observe.client.datasource.editor.api.navigation.tree.NavigationNode; +import fr.ird.observe.client.datasource.editor.api.navigation.tree.NavigationScope; +import fr.ird.observe.client.datasource.editor.api.navigation.tree.NavigationScopes; import fr.ird.observe.dto.reference.DtoReference; import fr.ird.observe.dto.referential.ReferentialDto; import fr.ird.observe.dto.referential.common.ProgramReference; import fr.ird.observe.services.service.data.NavigationResult; +import fr.ird.observe.spi.module.BusinessModule; import fr.ird.observe.spi.module.BusinessProject; +import fr.ird.observe.spi.module.BusinessSubModule; import fr.ird.observe.spi.module.ObserveBusinessModule; import java.util.Comparator; @@ -66,9 +70,35 @@ public abstract class RootNavigationTreeNodeProvider<B extends fr.ird.observe.sp return PROVIDERS; } - protected RootNavigationTreeNodeProvider(BusinessProject project, B module, ImmutableList<Class<? extends NavigationNode>> acceptedNodeTypes, Class<? extends DtoReference> acceptedType) { + public static List<Class<? extends NavigationNode>> referentialHomes(BusinessModule module) { + ImmutableMap.Builder<Class<?>, Integer> priorityBuilder = ImmutableMap.builder(); + for (BusinessSubModule subModule : module.getSubModules()) { + priorityBuilder.put(subModule.getClass(), module.getSubModulePriority(subModule)); + } + ImmutableMap<Class<?>, Integer> priority = priorityBuilder.build(); + return NavigationScopes.get().getScopes().values().stream() + .filter(s -> Objects.equals(module.getClass(), s.getModuleType()) + && ReferentialHomeUINavigationNode.class.isAssignableFrom(s.getNodeType()) + ) + .sorted(Comparator.comparingInt(s -> priority.get(s.getSubModuleType()))) + .map(NavigationScope::getNodeType) + .collect(Collectors.toList()); + } + + + protected RootNavigationTreeNodeProvider(BusinessProject project, B module) { + this(project, module, null, null); + } + + protected RootNavigationTreeNodeProvider(BusinessProject project, B module, Class<? extends NavigationNode> acceptedEntryPointNode, Class<? extends DtoReference> acceptedType) { this.module = Objects.requireNonNull(module); - this.acceptedNodeTypes = acceptedNodeTypes; + ImmutableList.Builder<Class<? extends NavigationNode>> acceptedNodeTypes = ImmutableList.builder(); + if (acceptedEntryPointNode != null) { + acceptedNodeTypes.add(acceptedEntryPointNode); + } + List<Class<? extends NavigationNode>> referentialHomes = referentialHomes(module); + acceptedNodeTypes.addAll(referentialHomes); + this.acceptedNodeTypes = acceptedNodeTypes.build(); this.acceptedType = acceptedType; this.priority = Objects.requireNonNull(project).getModulePriority(module); } ===================================== client/datasource/editor/common/src/main/java/fr/ird/observe/client/datasource/editor/common/CommonRootNavigationTreeNodeProvider.java ===================================== @@ -23,7 +23,6 @@ package fr.ird.observe.client.datasource.editor.common; */ import com.google.auto.service.AutoService; -import com.google.common.collect.ImmutableList; import fr.ird.observe.client.datasource.editor.api.navigation.tree.root.RootNavigationTreeNodeProvider; import fr.ird.observe.spi.module.ObserveBusinessProject; import fr.ird.observe.spi.module.common.BusinessModule; @@ -36,8 +35,7 @@ import fr.ird.observe.spi.module.common.BusinessModule; public class CommonRootNavigationTreeNodeProvider extends RootNavigationTreeNodeProvider<BusinessModule> { public CommonRootNavigationTreeNodeProvider() { - super(ObserveBusinessProject.get(), ObserveBusinessProject.get().getCommonBusinessModule(), - ImmutableList.of(fr.ird.observe.client.datasource.editor.common.referential.common.ReferentialHomeUINavigationNode.class), null); + super(ObserveBusinessProject.get(), ObserveBusinessProject.get().getCommonBusinessModule()); } } ===================================== client/datasource/editor/common/src/main/java/fr/ird/observe/client/datasource/editor/common/CommonRootSelectionTreeNodeProvider.java ===================================== @@ -23,16 +23,9 @@ package fr.ird.observe.client.datasource.editor.common; */ import com.google.auto.service.AutoService; -import fr.ird.observe.client.configuration.NavigationTreeConfig; import fr.ird.observe.client.datasource.editor.api.content.selection.RootSelectionTreeNodeProvider; -import fr.ird.observe.client.datasource.editor.api.content.selection.nodes.RootSelectionTreeNode; -import fr.ird.observe.client.datasource.editor.api.content.selection.nodes.ref.ReferentialListSelectionTreeNode; -import fr.ird.observe.dto.decoration.DecoratorService; -import fr.ird.observe.services.service.data.SelectionResult; import fr.ird.observe.spi.module.ObserveBusinessProject; -import java.util.Locale; - /** * Created on 06/10/2020. * @@ -45,13 +38,4 @@ public class CommonRootSelectionTreeNodeProvider extends RootSelectionTreeNodePr public CommonRootSelectionTreeNodeProvider() { super(ObserveBusinessProject.get(), ObserveBusinessProject.get().getCommonBusinessModule()); } - - @Override - public void initRootDataNode(DecoratorService decoratorService, NavigationTreeConfig config, SelectionResult navigationResult, RootSelectionTreeNode rootNode) { - } - - @Override - public void initRootReferentialNode(Locale locale, NavigationTreeConfig config, SelectionResult navigationResult, RootSelectionTreeNode rootNode) { - rootNode.add(new ReferentialListSelectionTreeNode(fr.ird.observe.client.datasource.editor.common.referential.common.ReferentialHomeUINavigationNode.create(navigationResult.getReferentialCountMap()))); - } -} +} \ No newline at end of file ===================================== client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/LlRootNavigationTreeNodeProvider.java ===================================== @@ -23,7 +23,6 @@ package fr.ird.observe.client.datasource.editor.ll; */ import com.google.auto.service.AutoService; -import com.google.common.collect.ImmutableList; import fr.ird.observe.client.datasource.editor.api.navigation.tree.root.RootNavigationNode; import fr.ird.observe.client.datasource.editor.api.navigation.tree.root.RootNavigationTreeNodeProvider; import fr.ird.observe.client.datasource.editor.ll.data.common.TripListUINavigationNode; @@ -40,10 +39,11 @@ public class LlRootNavigationTreeNodeProvider extends RootNavigationTreeNodeProv public LlRootNavigationTreeNodeProvider() { super(ObserveBusinessProject.get(), ObserveBusinessProject.get().getLlBusinessModule(), - ImmutableList.of(TripListUINavigationNode.class, - fr.ird.observe.client.datasource.editor.ll.referential.common.ReferentialHomeUINavigationNode.class, - fr.ird.observe.client.datasource.editor.ll.referential.landing.ReferentialHomeUINavigationNode.class, - fr.ird.observe.client.datasource.editor.ll.referential.observation.ReferentialHomeUINavigationNode.class), +// ImmutableList.of( + TripListUINavigationNode.class, +// fr.ird.observe.client.datasource.editor.ll.referential.common.ReferentialHomeUINavigationNode.class, +// fr.ird.observe.client.datasource.editor.ll.referential.landing.ReferentialHomeUINavigationNode.class, +// fr.ird.observe.client.datasource.editor.ll.referential.observation.ReferentialHomeUINavigationNode.class), ProgramReference.class); } ===================================== client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/LlRootSelectionTreeNodeProvider.java ===================================== @@ -29,7 +29,6 @@ import fr.ird.observe.client.configuration.NavigationTreeConfig; import fr.ird.observe.client.datasource.editor.api.content.selection.RootSelectionTreeNodeProvider; import fr.ird.observe.client.datasource.editor.api.content.selection.nodes.ProgramSelectionTreeNode; import fr.ird.observe.client.datasource.editor.api.content.selection.nodes.RootSelectionTreeNode; -import fr.ird.observe.client.datasource.editor.api.content.selection.nodes.ref.ReferentialListSelectionTreeNode; import fr.ird.observe.client.datasource.editor.ll.data.common.TripListUINavigationNode; import fr.ird.observe.client.datasource.editor.ll.data.common.TripSelectionTreeNode; import fr.ird.observe.client.datasource.editor.ll.data.common.TripUINavigationNode; @@ -43,7 +42,6 @@ import fr.ird.observe.spi.module.ObserveBusinessProject; import javax.swing.Icon; import java.util.Collection; import java.util.Collections; -import java.util.Locale; import java.util.Map; /** @@ -80,11 +78,4 @@ public class LlRootSelectionTreeNodeProvider extends RootSelectionTreeNodeProvid } } } - - @Override - public void initRootReferentialNode(Locale locale, NavigationTreeConfig config, SelectionResult navigationResult, RootSelectionTreeNode rootNode) { - rootNode.add(new ReferentialListSelectionTreeNode(fr.ird.observe.client.datasource.editor.ll.referential.common.ReferentialHomeUINavigationNode.create(navigationResult.getReferentialCountMap()))); - rootNode.add(new ReferentialListSelectionTreeNode(fr.ird.observe.client.datasource.editor.ll.referential.landing.ReferentialHomeUINavigationNode.create(navigationResult.getReferentialCountMap()))); - rootNode.add(new ReferentialListSelectionTreeNode(fr.ird.observe.client.datasource.editor.ll.referential.observation.ReferentialHomeUINavigationNode.create(navigationResult.getReferentialCountMap()))); - } } ===================================== client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/PsRootNavigationTreeNodeProvider.java ===================================== @@ -23,7 +23,6 @@ package fr.ird.observe.client.datasource.editor.ps; */ import com.google.auto.service.AutoService; -import com.google.common.collect.ImmutableList; import fr.ird.observe.client.datasource.editor.api.navigation.tree.root.RootNavigationNode; import fr.ird.observe.client.datasource.editor.api.navigation.tree.root.RootNavigationTreeNodeProvider; import fr.ird.observe.client.datasource.editor.ps.data.common.TripListUINavigationNode; @@ -40,9 +39,10 @@ public class PsRootNavigationTreeNodeProvider extends RootNavigationTreeNodeProv public PsRootNavigationTreeNodeProvider() { super(ObserveBusinessProject.get(), ObserveBusinessProject.get().getPsBusinessModule(), - ImmutableList.of(TripListUINavigationNode.class, - fr.ird.observe.client.datasource.editor.ps.referential.common.ReferentialHomeUINavigationNode.class, - fr.ird.observe.client.datasource.editor.ps.referential.observation.ReferentialHomeUINavigationNode.class), +// ImmutableList.of( + TripListUINavigationNode.class, +// fr.ird.observe.client.datasource.editor.ps.referential.common.ReferentialHomeUINavigationNode.class, +// fr.ird.observe.client.datasource.editor.ps.referential.observation.ReferentialHomeUINavigationNode.class), ProgramReference.class); } ===================================== client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/PsRootSelectionTreeNodeProvider.java ===================================== @@ -29,7 +29,6 @@ import fr.ird.observe.client.configuration.NavigationTreeConfig; import fr.ird.observe.client.datasource.editor.api.content.selection.RootSelectionTreeNodeProvider; import fr.ird.observe.client.datasource.editor.api.content.selection.nodes.ProgramSelectionTreeNode; import fr.ird.observe.client.datasource.editor.api.content.selection.nodes.RootSelectionTreeNode; -import fr.ird.observe.client.datasource.editor.api.content.selection.nodes.ref.ReferentialListSelectionTreeNode; import fr.ird.observe.client.datasource.editor.ps.data.common.TripListUINavigationNode; import fr.ird.observe.client.datasource.editor.ps.data.common.TripSelectionTreeNode; import fr.ird.observe.client.datasource.editor.ps.data.common.TripUINavigationNode; @@ -43,7 +42,6 @@ import fr.ird.observe.spi.module.ObserveBusinessProject; import javax.swing.Icon; import java.util.Collection; import java.util.Collections; -import java.util.Locale; import java.util.Map; /** @@ -80,10 +78,4 @@ public class PsRootSelectionTreeNodeProvider extends RootSelectionTreeNodeProvid } } } - - @Override - public void initRootReferentialNode(Locale locale, NavigationTreeConfig config, SelectionResult navigationResult, RootSelectionTreeNode rootNode) { - rootNode.add(new ReferentialListSelectionTreeNode(fr.ird.observe.client.datasource.editor.ps.referential.common.ReferentialHomeUINavigationNode.create(navigationResult.getReferentialCountMap()))); - rootNode.add(new ReferentialListSelectionTreeNode(fr.ird.observe.client.datasource.editor.ps.referential.observation.ReferentialHomeUINavigationNode.create(navigationResult.getReferentialCountMap()))); - } } ===================================== pom.xml ===================================== @@ -151,7 +151,7 @@ <maven.build.timestamp.format>dd/MM/yyyy HH:mm z</maven.build.timestamp.format> <buildDate>${maven.build.timestamp}</buildDate> - <toolkit.version>5.0.13</toolkit.version> + <toolkit.version>5.0.14</toolkit.version> <lib.version.ognl>3.1.28</lib.version.ognl> <!--can't use 1.4.197 (date has changed + blob also)--> ===================================== services/local-impl/src/main/java/fr/ird/observe/services/local/service/data/EditableDataServiceLocalSupport.java ===================================== @@ -50,18 +50,25 @@ public abstract class EditableDataServiceLocalSupport<PE extends Entity, D exten protected final DataDtoEntityContext<D, R, E, T> spi; protected final DtoEntityContext<?, ?, PE, ?> parentSpi; protected final String propertyName; + protected final boolean multiple; protected EditableDataServiceLocalSupport(DtoEntityContext<?, ?, PE, ?> parentSpi, DataDtoEntityContext<D, R, E, T> spi, String propertyName) { this.parentSpi = parentSpi; this.spi = spi; this.propertyName = propertyName; + this.multiple = parentSpi.isMultipleProperty(propertyName); } protected abstract void onPreCreate(PE parent, E preCreated); + @SuppressWarnings({"unchecked", "rawtypes"}) protected SaveResultDto onSave(PE parent, E entity, D dto) { if (dto.isNotPersisted()) { - parent.set(propertyName, entity); + if (multiple) { + ((Collection)parent.get(propertyName)).add( entity); + }else { + parent.set(propertyName, entity); + } } return saveEntity(spi, entity); } @@ -81,7 +88,11 @@ public abstract class EditableDataServiceLocalSupport<PE extends Entity, D exten @Override public boolean delete(String id) { - deleteSingleAssociation(id, spi, parentSpi, propertyName); + if (multiple) { + deleteMultipleAssociation(parentSpi, propertyName, spi, id); + } else { + deleteSingleAssociation(id, spi, parentSpi, propertyName); + } return false; } @@ -155,8 +166,15 @@ public abstract class EditableDataServiceLocalSupport<PE extends Entity, D exten return spi.loadEntity(getApplicationLocale(), getTopiaPersistenceContext(), id); } - protected PE getParent(String id) { - return getSingleAssociationParent(parentSpi, propertyName, id); + protected final PE getParent(String id) { + if (multiple) { + return getParent(parentSpi, propertyName, id); + } else { + return getSingleAssociationParent(parentSpi, propertyName, id); + } } + public boolean isMultiple() { + return multiple; + } } ===================================== services/local-impl/src/main/java/fr/ird/observe/services/local/service/data/ps/observation/FloatingObjectServiceLocalSupport.java ===================================== @@ -46,10 +46,10 @@ import fr.ird.observe.entities.referential.common.Country; import fr.ird.observe.entities.referential.common.Vessel; import fr.ird.observe.entities.referential.ps.common.ObjectMaterial; import fr.ird.observe.entities.referential.ps.common.ObjectOperation; +import fr.ird.observe.entities.referential.ps.common.ObservedSystem; import fr.ird.observe.entities.referential.ps.common.TransmittingBuoyOperation; import fr.ird.observe.entities.referential.ps.common.TransmittingBuoyOwnership; import fr.ird.observe.entities.referential.ps.common.TransmittingBuoyType; -import fr.ird.observe.entities.referential.ps.common.ObservedSystem; import fr.ird.observe.services.local.service.data.EditableDataServiceLocalSupport; import fr.ird.observe.services.service.data.ps.observation.FloatingObjectService; import org.apache.logging.log4j.LogManager; @@ -129,11 +129,6 @@ class FloatingObjectServiceLocalSupport extends EditableDataServiceLocalSupport< return entityToForm(entity); } - @Override - protected Activity getParent(String id) { - return getParent(parentSpi, propertyName, id); - } - @Override protected void onPreCreate(Activity parent, FloatingObject preCreated) { @@ -142,9 +137,6 @@ class FloatingObjectServiceLocalSupport extends EditableDataServiceLocalSupport< @Override protected SaveResultDto onSave(Activity parent, FloatingObject entity, FloatingObjectDto dto) { log.info(String.format("Will persist %d part(s).", entity.getFloatingObjectPartSize())); - if (dto.isNotPersisted()) { - parent.addFloatingObject(entity); - } boolean addFobObservedSystem = !ProtectedIdsPs.PS_OBSERVATION_FOB_OBSERVED_SYSTEM_EXCLUDE_OPERATIONS.contains(dto.getObjectOperation().getId()) && !parent.getObservedSystemTopiaIds().contains(ProtectedIdsPs.PS_OBSERVATION_FOB_OBSERVED_SYSTEM); if (addFobObservedSystem) { @@ -152,13 +144,7 @@ class FloatingObjectServiceLocalSupport extends EditableDataServiceLocalSupport< ObservedSystem observedSystem = ObservedSystem.loadEntity(getApplicationLocale(), getTopiaPersistenceContext(), ProtectedIdsPs.PS_OBSERVATION_FOB_OBSERVED_SYSTEM); parent.addObservedSystem(observedSystem); } - return saveEntity(spi, entity); - } - - @Override - public boolean delete(String floatingObjectId) { - deleteMultipleAssociation(Activity.SPI, Activity.PROPERTY_FLOATING_OBJECT, FloatingObject.SPI, floatingObjectId); - return false; + return super.onSave(parent, entity, dto); } private List<ObjectMaterialHierarchyDto> getObjectMaterialHierarchyDtos(List<ObjectMaterial> objectMaterials) { View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/f4bdfee4dd142bb86f7ae2e55... -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/f4bdfee4dd142bb86f7ae2e55... You're receiving this email because of your account on gitlab.com.
participants (1)
-
Tony CHEMIT