Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe Commits: 5e5a84e2 by Tony Chemit at 2022-06-06T17:49:46+02:00 Lors de création d'une marée PS, les forms de saisie ne sont pas rendus accessibles même si les status de saisie ont été correctement initialisés - See ultreiaio/ird-observe#2384 - - - - - 6 changed files: - client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/ropen/ContentRootOpenableUINavigationNode.java - client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/ropen/actions/SaveContentRootOpenableUIAdapter.java - client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/navigation/tree/NavigationNode.java - client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/common/TripUIModelStates.java - + core/persistence/java/src/main/java/fr/ird/observe/entities/data/ps/localmarket/SampleSampleSpeciesSpi.java - core/persistence/java/src/main/java/fr/ird/observe/entities/data/ps/localmarket/SurveySpi.java Changes: ===================================== client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/ropen/ContentRootOpenableUINavigationNode.java ===================================== @@ -24,11 +24,8 @@ package fr.ird.observe.client.datasource.editor.api.content.data.ropen; import fr.ird.observe.client.datasource.editor.api.content.data.rlist.ContentRootListUINavigationNode; import fr.ird.observe.client.datasource.editor.api.navigation.tree.NavigationNode; -import fr.ird.observe.client.datasource.editor.api.navigation.tree.capability.ReferenceContainerCapability; import fr.ird.observe.dto.data.DataGroupByDto; import fr.ird.observe.dto.reference.DataDtoReference; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; import java.awt.Font; import java.util.function.Supplier; @@ -40,7 +37,6 @@ import java.util.function.Supplier; * @since 8.0.1 */ public abstract class ContentRootOpenableUINavigationNode extends NavigationNode { - private static final Logger log = LogManager.getLogger(ContentRootOpenableUINavigationNode.class); public static <N extends ContentRootOpenableUINavigationNode> N init(N node, Supplier<? extends DataGroupByDto<?>> parentReference, DataDtoReference reference) { ContentRootOpenableUINavigationInitializer initializer = new ContentRootOpenableUINavigationInitializer(node.getScope(), parentReference, reference); @@ -81,37 +77,6 @@ public abstract class ContentRootOpenableUINavigationNode extends NavigationNode return getInitializer().getParentReference(); } - public void updateReference(String id) { - boolean notPersisted = getInitializer().isNotPersisted(); - NavigationNode parent = getParent(); - int oldPosition = parent.getIndex(this); - DataDtoReference reference = getInitializer().updateReference(getContext(), id); - if (notPersisted) { - getInitializer().updateEditNodeId(id); - getInitializer().updateSelectNodeId(id); - } - // reload node data - reloadNodeData(); - - if (notPersisted) { - dirty(); - populateChildrenIfNotLoaded(); - } - - ReferenceContainerCapability<?> capability = (ReferenceContainerCapability<?>) parent.getCapability(); - int newPosition = capability.getNodePosition(reference); - if (oldPosition != newPosition) { - log.info(String.format("Move node from: %d to %d", oldPosition, newPosition)); - parent.moveNode(this, newPosition); - } - - // repaint selected node and his children - nodeChangedDeep(); - - // reload from parent to root - parent.reloadNodeDataToRoot(); - } - @Override public Font getNodeFont(Font defaultFont) { if (getInitializer().isOpen()) { ===================================== client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/ropen/actions/SaveContentRootOpenableUIAdapter.java ===================================== @@ -29,7 +29,12 @@ import fr.ird.observe.client.datasource.editor.api.content.data.ropen.ContentRoo import fr.ird.observe.client.datasource.editor.api.content.data.ropen.ContentRootOpenableUINavigationNode; import fr.ird.observe.client.datasource.editor.api.navigation.NavigationTree; import fr.ird.observe.client.datasource.editor.api.navigation.NavigationUIHandler; +import fr.ird.observe.client.datasource.editor.api.navigation.tree.NavigationNode; +import fr.ird.observe.client.datasource.editor.api.navigation.tree.capability.ReferenceContainerCapability; import fr.ird.observe.dto.data.RootOpenableDto; +import fr.ird.observe.dto.reference.DataDtoReference; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; /** * Created on 16/10/2020. @@ -39,6 +44,8 @@ import fr.ird.observe.dto.data.RootOpenableDto; */ public class SaveContentRootOpenableUIAdapter<D extends RootOpenableDto, U extends ContentRootOpenableUI<D, U>> implements SaveUIAdapter<D, U> { + private static final Logger log = LogManager.getLogger(SaveContentRootOpenableUIAdapter.class); + @Override public final void adaptUi(DataSourceEditor dataSourceEditor, U ui, boolean notPersisted, D bean) { @@ -48,7 +55,7 @@ public class SaveContentRootOpenableUIAdapter<D extends RootOpenableDto, U exten ContentRootOpenableUINavigationNode node = model.getSource(); // We need to inject ot node the new reference (it could does not know the id if not persisted) // As I prefer to use a unique code (for persisted or not, keep it like this) - node.updateReference(bean.getId()); + updateReference(node, bean.getId()); NavigationTree tree = dataSourceEditor.getNavigationUI().getTree(); tree.reSelectSafeNode(node); @@ -63,4 +70,36 @@ public class SaveContentRootOpenableUIAdapter<D extends RootOpenableDto, U exten } NavigationUIHandler.updateStatistics(dataSourceEditor.getNavigationUI(), 0, 1); } + + + public void updateReference(ContentRootOpenableUINavigationNode node , String id) { + boolean notPersisted = node.getInitializer().isNotPersisted(); + NavigationNode parent = node.getParent(); + int oldPosition = parent.getIndex(node); + DataDtoReference reference = node.getInitializer().updateReference(node.getContext(), id); + if (notPersisted) { + node.getInitializer().updateEditNodeId(id); + node.getInitializer().updateSelectNodeId(id); + } + // reload node data + node.reloadNodeDataAndChildren(); + + if (notPersisted) { + node.dirty(); + node.populateChildrenIfNotLoaded(); + } + + ReferenceContainerCapability<?> capability = (ReferenceContainerCapability<?>) parent.getCapability(); + int newPosition = capability.getNodePosition(reference); + if (oldPosition != newPosition) { + log.info(String.format("Move node from: %d to %d", oldPosition, newPosition)); + parent.moveNode(node, newPosition); + } + + // repaint selected node and his children + node.nodeChangedDeep(); + + // reload from parent to root + parent.reloadNodeDataToRoot(); + } } ===================================== client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/navigation/tree/NavigationNode.java ===================================== @@ -358,6 +358,23 @@ public abstract class NavigationNode extends DefaultMutableTreeNode implements W } } + public void reloadNodeDataAndChildren() { + dirty(); + Object userObject = getContext().reload(); + setUserObject(userObject); + loaded(); + Enumeration<?> children = children(); + while (children.hasMoreElements()) { + NavigationNode childNode = (NavigationNode) children.nextElement(); + if (childNode.isLoaded()) { + childNode.updateNode(); + } else { + Object childrenUserObject = childNode.getContext().reload(); + childNode.setUserObject(childrenUserObject); + } + } + } + public void updateSelectNodeId() { if (getScope().isSelectNode()) { ReferenceCapability<?> capability = (ReferenceCapability<?>) getCapability(); ===================================== client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/common/TripUIModelStates.java ===================================== @@ -229,9 +229,6 @@ public class TripUIModelStates extends GeneratedTripUIModelStates { } private void onLandingHarbourChanged(PropertyChangeEvent event) { - if (!isOpened() || isReadingMode()) { - return; - } HarbourReference newValue = (HarbourReference) event.getNewValue(); boolean localMarketPossible = newValue != null && harbourWithPackaging.contains(newValue); setLocalmarketPossible(localMarketPossible); ===================================== core/persistence/java/src/main/java/fr/ird/observe/entities/data/ps/localmarket/SampleSampleSpeciesSpi.java ===================================== @@ -0,0 +1,33 @@ +package fr.ird.observe.entities.data.ps.localmarket; + +/*- + * #%L + * ObServe Core :: Persistence :: Java + * %% + * Copyright (C) 2008 - 2022 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 fr.ird.observe.spi.result.AddEntityToUpdateStep; + +public class SampleSampleSpeciesSpi extends GeneratedSampleSampleSpeciesSpi { + @Override + public void saveCallback(AddEntityToUpdateStep saveHelper, Sample entity) { + super.saveCallback(saveHelper, entity); + entity.getSampleSpecies().forEach(c -> saveHelper.updateCollection(SampleSpeciesMeasure.SPI, c.getSampleSpeciesMeasure(), false)); + } +} ===================================== core/persistence/java/src/main/java/fr/ird/observe/entities/data/ps/localmarket/SurveySpi.java ===================================== @@ -28,6 +28,7 @@ import fr.ird.observe.dto.data.ps.localmarket.SurveyDto; import fr.ird.observe.dto.form.Form; import fr.ird.observe.dto.referential.ReferentialLocale; import fr.ird.observe.entities.data.ps.common.Trip; +import fr.ird.observe.spi.result.AddEntityToUpdateStep; import fr.ird.observe.spi.service.ServiceContext; import java.util.Collection; @@ -92,6 +93,12 @@ public class SurveySpi extends GeneratedSurveySpi { // //FIXME Copy missing meta-data to new parent? // } + + @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<>(); Collection<Batch> selectedBatches = new LinkedList<>(); View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/5e5a84e217cd123ea2223012b3... -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/5e5a84e217cd123ea2223012b3... You're receiving this email because of your account on gitlab.com.