Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe Commits: 49f40106 by Tony Chemit at 2022-04-25T19:31:31+02:00 Problème lors des déplacements, changement de programme intempestif de la marée cible - See #2282 - - - - - 29d2d56e by Tony Chemit at 2022-04-25T19:59:30+02:00 Problème lors des déplacements, changement de programme intempestif de la marée cible - See #2282 - - - - - 12 changed files: - client/datasource/editor/api/src/main/i18n/getters/java.getter - client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/actions/move/layout/MoveLayoutRequestBuilder.java - client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/actions/move/layout/MoveLayoutTreeAdapter.java - client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/RouteUIMoveAllTreeAdapter.java - client/datasource/editor/spi/src/main/java/fr/ird/observe/client/datasource/editor/spi/content/data/layout/GenerateContentLayoutUIMoveTreeAdapter.java - client/datasource/editor/spi/src/main/java/fr/ird/observe/client/datasource/editor/spi/content/data/ropen/GenerateContentRootOpenableUIMoveTreeAdapter.java - client/datasource/editor/spi/src/main/java/fr/ird/observe/client/datasource/editor/spi/content/data/table/GenerateContentTableUIMoveTreeAdapter.java - client/runner/src/main/i18n/translations/client-runner_en_GB.properties - client/runner/src/main/i18n/translations/client-runner_es_ES.properties - client/runner/src/main/i18n/translations/client-runner_fr_FR.properties - core/persistence/java/src/main/java/fr/ird/observe/entities/data/ps/common/TripImpl.java - core/persistence/java/src/main/java/fr/ird/observe/entities/data/ps/common/TripSpi.java Changes: ===================================== client/datasource/editor/api/src/main/i18n/getters/java.getter ===================================== @@ -167,6 +167,7 @@ observe.ui.action.info.storage.tip observe.ui.action.load.from.file observe.ui.action.load.from.file.tip observe.ui.action.move.layout.multiple.message +observe.ui.action.move.layout.select.data observe.ui.action.move.layout.single.message observe.ui.action.move.message observe.ui.action.open.screen @@ -293,6 +294,7 @@ observe.ui.title.save.remoteDB observe.ui.title.show.referential.usage observe.ui.title.storage.info observe.ui.title.unique.key +observe.ui.tree.action.all.tip observe.ui.tree.action.collapseAll.tip observe.ui.tree.action.configure.tip observe.ui.tree.action.expandAll.tip ===================================== client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/actions/move/layout/MoveLayoutRequestBuilder.java ===================================== @@ -83,6 +83,7 @@ import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ItemEvent; import java.util.LinkedHashSet; +import java.util.LinkedList; import java.util.List; import java.util.Objects; import java.util.Optional; @@ -444,9 +445,13 @@ public class MoveLayoutRequestBuilder implements WithClientUIContextApi { parentEditor.getModel().addPropertyChangeListener("selectedItem", evt -> jButton.setEnabled(canMove(evt.getNewValue()))); if (!single) { JPanel typesPanel = new JPanel(new GridLayout(0, 1)); + typesPanel.setBorder(BorderFactory.createTitledBorder(/*BorderFactory.createLoweredBevelBorder(),*/t("observe.ui.action.move.layout.select.data") + " ")); + int index = 1; + List<JCheckBox> editors = new LinkedList<>(); for (Class<? extends DataDto> type : availableLayoutTypes) { JCheckBox typeEditor = new JCheckBox(); + editors.add(typeEditor); Action typeAction = new AbstractAction() { @Override public void actionPerformed(ActionEvent e) { @@ -469,6 +474,29 @@ public class MoveLayoutRequestBuilder implements WithClientUIContextApi { typesPanel.add(typeEditor); index++; } + typesPanel.add(new JSeparator(JSeparator.HORIZONTAL)); + JCheckBox typeEditor = new JCheckBox(); + editors.add(typeEditor); + Action typeAction = new AbstractAction() { + @Override + public void actionPerformed(ActionEvent e) { + jButton.setEnabled(updateSelectedAll(editors, parentEditor)); + } + }; + String actionName = "Select-all"; + typeAction.putValue(Action.ACTION_COMMAND_KEY, actionName); + String label = t("observe.ui.tree.action.all.tip"); + KeyStroke keyStroke = ObserveKeyStrokesEditorApi.getFunctionKeyStroke(index + 24); + String text = ObserveKeyStrokesEditorApi.suffixTextWithKeyStroke(label, keyStroke); + typeAction.putValue(Action.SHORT_DESCRIPTION, text); + typeAction.putValue(Action.NAME, text); + typeAction.putValue(Action.ACCELERATOR_KEY, keyStroke); + + typeEditor.setAction(typeAction); + actionMap.put(actionName, typeAction); + inputMap.put(keyStroke, actionName); + typesPanel.add(typeEditor); + panelMessages.add(BorderLayout.CENTER, typesPanel); } panelMessages.add(BorderLayout.SOUTH, new JLabel("")); @@ -573,6 +601,17 @@ public class MoveLayoutRequestBuilder implements WithClientUIContextApi { return canMove(editor.getModel().getSelectedItem()); } + private boolean updateSelectedAll(List<JCheckBox> typeEditor, FilterableComboBox<ToolkitIdLabel> editor) { + if (selectedLayoutTypes.isEmpty()) { + selectedLayoutTypes.addAll(availableLayoutTypes); + typeEditor.forEach(e -> e.setSelected(true)); + } else { + selectedLayoutTypes.clear(); + typeEditor.forEach(e -> e.setSelected(false)); + } + return canMove(editor.getModel().getSelectedItem()); + } + private boolean canMove(Object selectedItem) { return selectedItem != null && !selectedLayoutTypes.isEmpty(); } ===================================== client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/actions/move/layout/MoveLayoutTreeAdapter.java ===================================== @@ -25,6 +25,7 @@ package fr.ird.observe.client.datasource.editor.api.content.actions.move.layout; 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.tree.NavigationNode; +import fr.ird.observe.navigation.tree.navigation.NavigationTreeConfig; import fr.ird.observe.services.service.data.MoveLayoutRequest; import javax.swing.SwingUtilities; @@ -45,14 +46,15 @@ public abstract class MoveLayoutTreeAdapter<ParentNode extends ContentRootOpenab this.oldParentSupplier = Objects.requireNonNull(oldParentSupplier); } - public abstract ParentNode getNewParentNode(ParentNode oldParentNode, String newParentId); - public abstract SourceNode getNodeToSelect(ParentNode parentNode); public final void adaptTree(MoveLayoutRequest request, NavigationTree tree) { boolean selectTarget = request.isSelectTarget(); ParentNode oldParentNode = oldParentSupplier.get(); - ParentNode newParentNode = getNewParentNode(oldParentNode, request.getNewParentId()); + NavigationTreeConfig config = tree.getModel().getConfig(); + String newParentId = request.getNewParentId(); + String groupByValue = oldParentNode.getContext().getServicesProvider().getRootOpenableService().getGroupByValue(config.getGroupByName(), config.getGroupByFlavor(), newParentId); + @SuppressWarnings("unchecked") ParentNode newParentNode = (ParentNode) tree.getModel().getNodeFromPath(new String[]{groupByValue, newParentId}, true); oldParentNode.updateNode(); newParentNode.updateNode(); if (selectTarget) { ===================================== client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/RouteUIMoveAllTreeAdapter.java ===================================== @@ -44,11 +44,6 @@ public class RouteUIMoveAllTreeAdapter extends MoveLayoutTreeAdapter<TripUINavig super(incomingNode::getParent); } - @Override - public final TripUINavigationNode getNewParentNode(TripUINavigationNode oldParentNode, String newParentId) { - return oldParentNode.findSibling(newParentId); - } - @Override public final RouteListUINavigationNode getNodeToSelect(TripUINavigationNode parentNode) { return parentNode.getRouteObsListUINavigationNode(); ===================================== client/datasource/editor/spi/src/main/java/fr/ird/observe/client/datasource/editor/spi/content/data/layout/GenerateContentLayoutUIMoveTreeAdapter.java ===================================== @@ -47,11 +47,6 @@ public class GenerateContentLayoutUIMoveTreeAdapter extends GenerateContentLayou " super(incomingNode::getParent);\n" + " }\n\n" + " @Override\n" + - " public final %2$s getNewParentNode(%2$s oldParentNode, String newParentId) {\n" + - " return oldParentNode.findSibling(newParentId);\n" + - " }\n" + - "\n" + - " @Override\n" + " public final %3$s getNodeToSelect(%2$s parentNode) {\n" + " return parentNode.get%3$s();\n" + " }\n\n" + ===================================== client/datasource/editor/spi/src/main/java/fr/ird/observe/client/datasource/editor/spi/content/data/ropen/GenerateContentRootOpenableUIMoveTreeAdapter.java ===================================== @@ -48,10 +48,6 @@ public class GenerateContentRootOpenableUIMoveTreeAdapter extends GenerateConten " super(() -> incomingNode);\n" + " }\n\n" + " @Override\n" + - " public final %2$s getNewParentNode(%2$s oldParentNode, String newParentId) {\n" + - " return oldParentNode.findSibling(newParentId);\n" + - " }\n\n" + - " @Override\n" + " public final %2$s getNodeToSelect(%2$s parentNode) {\n" + " return parentNode;\n" + " }\n\n" + ===================================== client/datasource/editor/spi/src/main/java/fr/ird/observe/client/datasource/editor/spi/content/data/table/GenerateContentTableUIMoveTreeAdapter.java ===================================== @@ -49,11 +49,6 @@ public class GenerateContentTableUIMoveTreeAdapter extends GenerateContentTableU " super(incomingNode::getParent);\n" + " }\n\n" + " @Override\n" + - " public final %2$s getNewParentNode(%2$s oldParentNode, String newParentId) {\n" + - " return oldParentNode.findSibling(newParentId);\n" + - " }\n" + - "\n" + - " @Override\n" + " public final %3$s getNodeToSelect(%2$s parentNode) {\n" + " return parentNode.get%3$s();\n" + " }\n\n" + ===================================== client/runner/src/main/i18n/translations/client-runner_en_GB.properties ===================================== @@ -374,7 +374,8 @@ observe.ui.action.locale.fr.tip=Change application's language in french observe.ui.action.locale.uk=English observe.ui.action.locale.uk.tip=Change application's language in english observe.ui.action.move.groupBy.configuration=Criteria configuration\: -observe.ui.action.move.layout.multiple.message=Your are about to move some object from type '%s' beyond the following list\: +observe.ui.action.move.layout.multiple.message=Your are about to move some object from type '%s' +observe.ui.action.move.layout.select.data=Data to move observe.ui.action.move.layout.single.message=Your are about to move all object of type '%s'. observe.ui.action.move.message=Your are about to move %d object(s) of type '%s'\: observe.ui.action.open.last.feedback=Feed back @@ -836,6 +837,7 @@ observe.ui.title.show.referential.usage=Show referential usages observe.ui.title.storage.info=Storage details observe.ui.title.unique.key=Unique keys used in a referentiel observe.ui.title.welcome.admin=ObServe +observe.ui.tree.action.all.tip=All observe.ui.tree.action.collapseAll.tip=Collapse all observe.ui.tree.action.configure.tip=Configure observe.ui.tree.action.expandAll.tip=Expand all ===================================== client/runner/src/main/i18n/translations/client-runner_es_ES.properties ===================================== @@ -374,7 +374,8 @@ observe.ui.action.locale.fr.tip=Cambiar el idioma de la applicación al francés observe.ui.action.locale.uk=Inglés observe.ui.action.locale.uk.tip=Cambiar el idioma de la applicación al inglés observe.ui.action.move.groupBy.configuration=Criteria configuration\: -observe.ui.action.move.layout.multiple.message=Your are about to move some object from type '%s' beyond the fowolling list\: +observe.ui.action.move.layout.multiple.message=Your are about to move some object from type '%s' +observe.ui.action.move.layout.select.data=Data to move observe.ui.action.move.layout.single.message=Your are about to move all object of type '%s'. observe.ui.action.move.message=Your are about to move %d object(s) of type '%s'\: \#TODO observe.ui.action.open.last.feedback=Feed back \#TODO @@ -836,6 +837,7 @@ observe.ui.title.show.referential.usage=Listas de las utilizaciones de un refere observe.ui.title.storage.info=Información sobre la fuente de datos observe.ui.title.unique.key=Ids de negocio del referencial %1$s observe.ui.title.welcome.admin=ObServe +observe.ui.tree.action.all.tip=All observe.ui.tree.action.collapseAll.tip=Cerrar los nudos observe.ui.tree.action.configure.tip=Configure \#TODO observe.ui.tree.action.expandAll.tip=Abrir los nudos ===================================== client/runner/src/main/i18n/translations/client-runner_fr_FR.properties ===================================== @@ -374,7 +374,8 @@ observe.ui.action.locale.fr.tip=Changer la langue de l'application en français observe.ui.action.locale.uk=Anglais observe.ui.action.locale.uk.tip=Changer la langue de l'application en anglais observe.ui.action.move.groupBy.configuration=Configuration des critères \: -observe.ui.action.move.layout.multiple.message=Vous êtes sur le point de déplacer un ensemble de données sur le type '%s' à sélectionner dans la liste suivante \: +observe.ui.action.move.layout.multiple.message=Vous êtes sur le point de déplacer un ensemble de données sur le type '%s' +observe.ui.action.move.layout.select.data=Données à déplacer observe.ui.action.move.layout.single.message=Vous êtes sur le point de déplacer toutes les données de type '%s'. observe.ui.action.move.message=Vous êtes sur le point de déplacer %d donnée(s) de type '%s'\: observe.ui.action.open.last.feedback=Retour d'expérience @@ -836,6 +837,7 @@ observe.ui.title.show.referential.usage=Listes des utilisations d'un référenti observe.ui.title.storage.info=Information sur la source de données observe.ui.title.unique.key=Clefs métier du référentiel %1$s observe.ui.title.welcome.admin=ObServe +observe.ui.tree.action.all.tip=Tout observe.ui.tree.action.collapseAll.tip=Tout grouper observe.ui.tree.action.configure.tip=Configurer observe.ui.tree.action.expandAll.tip=Tout déplier ===================================== core/persistence/java/src/main/java/fr/ird/observe/entities/data/ps/common/TripImpl.java ===================================== @@ -34,6 +34,38 @@ public class TripImpl extends TripAbstract { private static final long serialVersionUID = 1L; + public static boolean shouldCopyObservationsMetaData(Trip trip) { + return trip.getObservationsAcquisitionStatus() == null || !trip.getObservationsAcquisitionStatus().isFieldEnabler(); + } + + public static boolean shouldRemoveObservationsMetaData(Trip trip) { + return !trip.isObservationsFilled(); + } + + public static boolean shouldCopyLandingMetaData(Trip trip) { + return trip.getLandingAcquisitionStatus() == null || !trip.getLandingAcquisitionStatus().isFieldEnabler(); + } + + public static boolean shouldRemoveLandingMetaData(Trip trip) { + return !trip.isLandingFilled(); + } + + public static boolean shouldCopyLogbookMetaData(Trip trip) { + return trip.getLogbookAcquisitionStatus() == null || !trip.getLogbookAcquisitionStatus().isFieldEnabler(); + } + + public static boolean shouldRemoveLogbookMetaData(Trip trip) { + return !trip.isLogbookFilled(); + } + + public static boolean shouldCopyLocalmarketMetaData(Trip trip) { + return trip.getLocalMarketAcquisitionStatus() == null || !trip.getLocalMarketAcquisitionStatus().isFieldEnabler(); + } + + public static boolean shouldRemoveLocalmarketMetaData(Trip trip) { + return !trip.isLocalmarketFilled(); + } + @Override public Date getTheoreticalEndDate() { Date lastActivityDate = isRouteObsEmpty() ? null : getRouteObs().stream().map(Route::getDate).max(Date::compareTo).orElse(null); ===================================== core/persistence/java/src/main/java/fr/ird/observe/entities/data/ps/common/TripSpi.java ===================================== @@ -263,10 +263,10 @@ public class TripSpi extends GeneratedTripSpi { public void updateObservationsMetadata(SqlScriptWriter writer, Set<Class<? extends DataEntity>> lastUpdateDates, Trip oldTrip, Trip newTrip) { - if (shouldCopyObservationsMetaData(newTrip)) { + if (TripImpl.shouldCopyObservationsMetaData(newTrip)) { writer.writeSql(copyObservationsMetadata(oldTrip, newTrip.getId())); } - if (shouldRemoveObservationsMetaData(newTrip)) { + if (TripImpl.shouldRemoveObservationsMetaData(oldTrip)) { writer.writeSql(removeObservationsMetadata(oldTrip.getId())); } lastUpdateDates.add(fr.ird.observe.entities.data.ps.observation.Route.class); @@ -284,14 +284,6 @@ public class TripSpi extends GeneratedTripSpi { lastUpdateDates.add(fr.ird.observe.entities.data.ps.observation.ObjectObservedSpecies.class); } - private boolean shouldCopyObservationsMetaData(Trip trip) { - return trip.getObservationsAcquisitionStatus() == null || !trip.getObservationsAcquisitionStatus().isFieldEnabler(); - } - - private boolean shouldRemoveObservationsMetaData(Trip trip) { - return !trip.isObservationsFilled(); - } - private String copyObservationsMetadata(Trip trip, String newId) { Program observationsProgram = trip.getObservationsProgram(); AcquisitionStatus observationsAcquisitionStatus = trip.getObservationsAcquisitionStatus(); @@ -339,24 +331,16 @@ public class TripSpi extends GeneratedTripSpi { public void updateLandingMetadata(SqlScriptWriter writer, Set<Class<? extends DataEntity>> lastUpdateDates, Trip oldTrip, Trip newTrip) { String newTripId = newTrip.getTopiaId(); - if (shouldCopyLandingMetaData(newTrip)) { + if (TripImpl.shouldCopyLandingMetaData(newTrip)) { writer.writeSql(copyLandingMetadata(oldTrip, newTripId)); } updateLogbookCommonMetadata(writer, oldTrip, newTrip); - if (shouldRemoveLandingMetaData(newTrip)) { + if (TripImpl.shouldRemoveLandingMetaData(oldTrip)) { writer.writeSql(removeLandingMetadata(oldTrip.getTopiaId())); } lastUpdateDates.add(Landing.class); } - private boolean shouldCopyLandingMetaData(Trip trip) { - return trip.getLandingAcquisitionStatus() == null || !trip.getLandingAcquisitionStatus().isFieldEnabler(); - } - - private boolean shouldRemoveLandingMetaData(Trip trip) { - return !trip.isLandingFilled(); - } - private String copyLandingMetadata(Trip trip, String newId) { AcquisitionStatus landingAcquisitionStatus = trip.getLandingAcquisitionStatus(); Float landingTotalWeight = trip.getLandingTotalWeight(); @@ -379,7 +363,7 @@ public class TripSpi extends GeneratedTripSpi { } public void updateLogbookMetadata(SqlScriptWriter writer, Set<Class<? extends DataEntity>> lastUpdateDates, Trip oldTrip, Trip newTrip) { - if (shouldCopyLogbookMetaData(newTrip)) { + if (TripImpl.shouldCopyLogbookMetaData(newTrip)) { writer.writeSql(copyLogbookMetadata(oldTrip, newTrip.getId())); } // This avoid in others update to do it again @@ -389,7 +373,7 @@ public class TripSpi extends GeneratedTripSpi { // This avoid in others update to do it again newTrip.setLogbookDataQuality(oldTrip.getLogbookDataQuality()); - if (shouldRemoveLogbookMetaData(newTrip)) { + if (TripImpl.shouldRemoveLogbookMetaData(oldTrip)) { writer.writeSql(removeLogbookMetadata(oldTrip.getId())); } if (lastUpdateDates != null) { @@ -407,14 +391,6 @@ public class TripSpi extends GeneratedTripSpi { } } - private boolean shouldCopyLogbookMetaData(Trip trip) { - return trip.getLogbookAcquisitionStatus() == null || !trip.getLogbookAcquisitionStatus().isFieldEnabler(); - } - - private boolean shouldRemoveLogbookMetaData(Trip trip) { - return !trip.isLogbookFilled(); - } - private String copyLogbookMetadata(Trip trip, String newId) { Program logbookProgram = trip.getLogbookProgram(); AcquisitionStatus logbookAcquisitionStatus = trip.getLogbookAcquisitionStatus(); @@ -506,10 +482,10 @@ public class TripSpi extends GeneratedTripSpi { public void updateLocalmarketMetadata(SqlScriptWriter writer, Set<Class<? extends DataEntity>> lastUpdateDates, Trip oldTrip, Trip newTrip) { String newTripId = newTrip.getId(); - if (shouldCopyLocalmarketMetaData(newTrip)) { + if (TripImpl.shouldCopyLocalmarketMetaData(newTrip)) { writer.writeSql(copyLocalmarketMetadata(oldTrip, newTripId)); } - if (shouldRemoveLocalmarketMetaData(newTrip)) { + if (TripImpl.shouldRemoveLocalmarketMetaData(oldTrip)) { writer.writeSql(removeLocalmarketMetadata(oldTrip.getId())); } updateLogbookCommonMetadata(writer, oldTrip, newTrip); @@ -521,14 +497,6 @@ public class TripSpi extends GeneratedTripSpi { lastUpdateDates.add(fr.ird.observe.entities.data.ps.localmarket.SurveyPart.class); } - private boolean shouldCopyLocalmarketMetaData(Trip trip) { - return trip.getLocalMarketAcquisitionStatus() == null || !trip.getLocalMarketAcquisitionStatus().isFieldEnabler(); - } - - private boolean shouldRemoveLocalmarketMetaData(Trip trip) { - return !trip.isLocalmarketFilled(); - } - private String copyLocalmarketMetadata(Trip trip, String newId) { AcquisitionStatus localMarketAcquisitionStatus = trip.getLocalMarketAcquisitionStatus(); AcquisitionStatus localMarketSurveySamplingAcquisitionStatus = trip.getLocalMarketSurveySamplingAcquisitionStatus(); View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/adfa7553972217e57b47cf46a... -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/adfa7553972217e57b47cf46a... You're receiving this email because of your account on gitlab.com.
participants (1)
-
Tony CHEMIT (@tchemit)