mailman.cloud.codelutin.com
Sign In Sign Up
Manage this list Sign In Sign Up

Keyboard Shortcuts

Thread View

  • j: Next unread message
  • k: Previous unread message
  • j a: Jump to all threads
  • j l: Jump to MailingList overview

Observe-commits

Thread Start a new thread
Download
Threads by month
  • ----- 2026 -----
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2025 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2024 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2023 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2022 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2021 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2020 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2019 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2018 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2017 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2016 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2015 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2014 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2013 -----
  • December
  • November
  • October
  • September
observe-commits@list.forge.codelutin.com

February 2020

  • 1 participants
  • 22 discussions
[Git][ultreiaio/ird-observe][develop] 5 commits: Possibilité de décider, lors de la mise à jour d'une référence, des champs que...
by Tony CHEMIT 18 Feb '20

18 Feb '20
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe Commits: 911f9573 by tchemit at 2020-02-17T10:10:31+01:00 Possibilité de décider, lors de la mise à jour d'une référence, des champs que l'on veut voir pris en compte dans la synchronisation - Closes #1329 - - - - - a653b87d by tchemit at 2020-02-17T10:21:23+01:00 clean code - - - - - 4dc0124b by tchemit at 2020-02-17T15:15:58+01:00 clean code - - - - - 04ec05db by tchemit at 2020-02-17T17:23:49+01:00 add validation tag value and model then generate validators - - - - - f8e27c38 by tchemit at 2020-02-18T02:57:45+01:00 S'assurer de la compatibilité de ObServe 8 avec Java 10 - Closes #1152 - - - - - 30 changed files: - .gitlab-ci.yml - client-datasource-actions/src/main/java/fr/ird/observe/client/datasource/actions/synchronize/referential/ng/actions/ReferentialSynchroUIActionSupport.java - client-datasource-actions/src/main/java/fr/ird/observe/client/datasource/actions/synchronize/referential/ng/actions/RegisterTasksActionSupport.java - client-datasource-actions/src/main/java/fr/ird/observe/client/datasource/actions/synchronize/referential/ng/actions/Start.java - client-datasource-actions/src/main/java/fr/ird/observe/client/datasource/actions/synchronize/referential/ng/tree/ReferentialSynchronizeTreeModelsBuilder.java - client-datasource-editor-api/src/main/java/fr/ird/observe/client/datasource/editor/tree/navigation/NavigationTree.java - client-datasource-editor-api/src/main/java/fr/ird/observe/client/datasource/editor/tree/selection/SelectionTreeModel.java - client-datasource-editor-api/src/main/java/fr/ird/observe/client/datasource/editor/tree/selection/nodes/ProgramSelectionTreeNode.java - client-datasource-editor-api/src/main/java/fr/ird/observe/client/datasource/editor/tree/selection/nodes/ReferenceSelectionTreeNodeSupport.java - client-datasource-editor-api/src/main/java/fr/ird/observe/client/datasource/editor/tree/selection/nodes/RootSelectionTreeNode.java - client-datasource-editor-api/src/main/java/fr/ird/observe/client/datasource/editor/tree/selection/nodes/SelectionTreeNodeSupport.java - client-datasource-editor-ll/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ll/observation/SetDetailCompositionUIHandler.java - client-datasource-editor-ll/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ll/observation/SetDetailCompositionUIValidationHelper.java - client-datasource-editor-ll/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ll/observation/SetDetailCompositionValidationContext.java - client-datasource-editor-ll/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ll/observation/SetDetailCompositionValidatorService.java - client-runner/src/test/java/fr/ird/observe/client/longline/SetDetailCompositionValidatorServiceTest.java - dto/src/main/models/Observe-01-referential-common.model - dto/src/main/models/Observe-03-referential-ps-observation.model - dto/src/main/models/Observe-11-referential-ll-observation.model - dto/src/main/models/Observe-20-data-ps-observation.model - dto/src/main/models/Observe-25-data-ps.model - dto/src/main/models/Observe-30-data-ll-observation.model - dto/src/main/models/Observe-31-data-ll-logbook.model - dto/src/main/models/Observe-32-data-ll-landing.model - dto/src/main/models/Observe-35-data-ll.model - persistence/pom.xml - pom.xml - server-core/pom.xml - services-local/pom.xml - services-local/src/test/java/fr/ird/observe/services/local/service/actions/validate/ValidateServiceLocalTest.java The diff was not included because it is too large. View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/3d6870bcda119f4c554e825b… -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/3d6870bcda119f4c554e825b… You're receiving this email because of your account on gitlab.com.
1 0
0 0
[Git][ultreiaio/ird-observe][develop-7.x] add validation tag value and model then generate validators
by Tony CHEMIT 17 Feb '20

17 Feb '20
Tony CHEMIT pushed to branch develop-7.x at ultreiaio / ird-observe Commits: ec7af112 by tchemit at 2020-02-17T17:37:29+01:00 add validation tag value and model then generate validators - - - - - 30 changed files: - dto/src/main/models/Observe.model - observe-i18n/src/main/i18n/translations/observe_en_GB.properties - observe-i18n/src/main/i18n/translations/observe_es_ES.properties - observe-i18n/src/main/i18n/translations/observe_fr_FR.properties - pom.xml - services-local/src/test/java/fr/ird/observe/services/local/service/actions/validate/ValidateServiceLocalTest.java - test/src/main/java/fr/ird/observe/test/ObserveFixtures.java - validation/src/main/i18n/getters/validation-fields.getter - validation/src/main/i18n/getters/validation-messages.getter - validation/src/main/resources/fr/ird/observe/dto/data/longline/ActivityLonglineDto-create-error-validation.xml - − validation/src/main/resources/fr/ird/observe/dto/data/longline/ActivityLonglineDto-create-warning-validation.xml - validation/src/main/resources/fr/ird/observe/dto/data/longline/ActivityLonglineDto-update-error-validation.xml - − validation/src/main/resources/fr/ird/observe/dto/data/longline/ActivityLonglineDto-update-warning-validation.xml - validation/src/main/resources/fr/ird/observe/dto/data/longline/BaitsCompositionDto-update-error-validation.xml - − validation/src/main/resources/fr/ird/observe/dto/data/longline/BranchlineDto-update-warning-validation.xml - validation/src/main/resources/fr/ird/observe/dto/data/longline/BranchlinesCompositionDto-update-error-validation.xml - validation/src/main/resources/fr/ird/observe/dto/data/longline/CatchLonglineDto-update-error-validation.xml - − validation/src/main/resources/fr/ird/observe/dto/data/longline/EncounterDto-update-error-validation.xml - − validation/src/main/resources/fr/ird/observe/dto/data/longline/EncounterDto-update-warning-validation.xml - validation/src/main/resources/fr/ird/observe/dto/data/longline/FloatlinesCompositionDto-update-error-validation.xml - − validation/src/main/resources/fr/ird/observe/dto/data/longline/GearUseFeaturesLonglineDto-update-error-validation.xml - validation/src/main/resources/fr/ird/observe/dto/data/longline/HooksCompositionDto-update-error-validation.xml - − validation/src/main/resources/fr/ird/observe/dto/data/longline/SensorUsedDto-update-error-validation.xml - − validation/src/main/resources/fr/ird/observe/dto/data/longline/SensorUsedDto-update-warning-validation.xml - validation/src/main/resources/fr/ird/observe/dto/data/longline/SetLonglineDto-create-error-validation.xml - − validation/src/main/resources/fr/ird/observe/dto/data/longline/SetLonglineDto-create-warning-validation.xml - validation/src/main/resources/fr/ird/observe/dto/data/longline/SetLonglineDto-update-error-validation.xml - − validation/src/main/resources/fr/ird/observe/dto/data/longline/SetLonglineDto-update-warning-validation.xml - validation/src/main/resources/fr/ird/observe/dto/data/longline/TripLonglineDto-create-error-validation.xml - − validation/src/main/resources/fr/ird/observe/dto/data/longline/TripLonglineDto-create-warning-validation.xml The diff was not included because it is too large. View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/ec7af112eda9d89493e8ccb33… -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/ec7af112eda9d89493e8ccb33… You're receiving this email because of your account on gitlab.com.
1 0
0 0
[Git][ultreiaio/ird-observe][develop-7.x] 5 commits: always copy config files to user resources directory if using snapshot version
by Tony CHEMIT 16 Feb '20

16 Feb '20
Tony CHEMIT pushed to branch develop-7.x at ultreiaio / ird-observe Commits: df67be05 by tchemit at 2020-02-13T17:30:29+01:00 always copy config files to user resources directory if using snapshot version - - - - - 19a17531 by tchemit at 2020-02-14T13:06:15+01:00 Possibilité de décider, lors de la mise à jour d'une référence, des champs que l'on veut voir pris en compte dans la synchronisation - Closes #1329 - - - - - 2a5be643 by tchemit at 2020-02-14T14:07:10+01:00 rename templates module in toolkit project - - - - - 2a7ac485 by tchemit at 2020-02-16T21:57:46+01:00 clean code - - - - - bec96a2a by tchemit at 2020-02-16T21:58:24+01:00 add validation tag value and model then generate validators - - - - - 30 changed files: - client-core/src/main/java/fr/ird/observe/client/ObserveRunner.java - client-core/src/main/java/fr/ird/observe/client/ui/admin/synchronize/referential/ng/action/RegisterTasksActionSupport.java - client-core/src/main/java/fr/ird/observe/client/ui/admin/synchronize/referential/ng/tree/ReferentialSynchronizeTreeModelsBuilder.java - client-core/src/main/java/fr/ird/observe/client/ui/content/data/longline/LonglineDetailCompositionUIHandler.java - client-core/src/main/java/fr/ird/observe/client/ui/content/data/longline/LonglineDetailCompositionUIValidationHelper.java - client-core/src/main/java/fr/ird/observe/client/ui/content/data/longline/LonglineDetailCompositionValidatorService.java - client-runner/src/test/java/fr/ird/observe/client/simple/longline/LonglineDetailCompositionValidatorServiceTest.java - dto/pom.xml - dto/src/main/models/Observe.model - observe-i18n/src/main/i18n/translations/observe_en_GB.properties - observe-i18n/src/main/i18n/translations/observe_es_ES.properties - observe-i18n/src/main/i18n/translations/observe_fr_FR.properties - persistence/pom.xml - pom.xml - services-local/src/test/java/fr/ird/observe/services/local/service/actions/validate/ValidateServiceLocalTest.java - services/src/main/java/fr/ird/observe/services/service/actions/synchro/referential/diff/ReferentialSynchronizeDiffState.java - test/src/main/java/fr/ird/observe/test/ObserveFixtures.java - validation/pom.xml - validation/src/main/i18n/getters/validation-fields.getter - validation/src/main/i18n/getters/validation-messages.getter - validation/src/main/resources/fr/ird/observe/dto/data/longline/ActivityLonglineDto-create-error-validation.xml - − validation/src/main/resources/fr/ird/observe/dto/data/longline/ActivityLonglineDto-create-warning-validation.xml - validation/src/main/resources/fr/ird/observe/dto/data/longline/ActivityLonglineDto-update-error-validation.xml - − validation/src/main/resources/fr/ird/observe/dto/data/longline/ActivityLonglineDto-update-warning-validation.xml - validation/src/main/resources/fr/ird/observe/dto/data/longline/BaitsCompositionDto-update-error-validation.xml - − validation/src/main/resources/fr/ird/observe/dto/data/longline/BranchlineDto-update-warning-validation.xml - validation/src/main/resources/fr/ird/observe/dto/data/longline/BranchlinesCompositionDto-update-error-validation.xml - validation/src/main/resources/fr/ird/observe/dto/data/longline/CatchLonglineDto-update-error-validation.xml - − validation/src/main/resources/fr/ird/observe/dto/data/longline/EncounterDto-update-error-validation.xml - − validation/src/main/resources/fr/ird/observe/dto/data/longline/EncounterDto-update-warning-validation.xml The diff was not included because it is too large. View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/26c6cb5ee9da5ddaca49ac19… -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/26c6cb5ee9da5ddaca49ac19… You're receiving this email because of your account on gitlab.com.
1 0
0 0
[Git][ultreiaio/ird-observe][develop-7.x] Petit problème sur déplacement d'activité - Closes #1435
by Tony CHEMIT 13 Feb '20

13 Feb '20
Tony CHEMIT pushed to branch develop-7.x at ultreiaio / ird-observe Commits: 26c6cb5e by tchemit at 2020-02-13T16:20:50+01:00 Petit problème sur déplacement d&#39;activité - Closes #1435 - - - - - 14 changed files: - client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveActivityLonglineUIAction.java - client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveActivityLonglinesUIAction.java - client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveActivitySeineUIAction.java - client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveActivitySeinesUIAction.java - client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveMultipleDataUIActionSupport.java - client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveRouteUIAction.java - client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveRoutesUIAction.java - client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveSingleDataUIActionSupport.java - client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveTripSeinesUIAction.java - client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveTripUIAction.java - client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveTripsUIAction.java - client-core/src/main/java/fr/ird/observe/client/ui/tree/navigation/NavigationTree.java - client-core/src/main/java/fr/ird/observe/client/ui/tree/navigation/NavigationTreeModel.java - client-core/src/main/java/fr/ird/observe/client/ui/tree/navigation/nodes/NavigationTreeNodeSupport.java Changes: ===================================== client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveActivityLonglineUIAction.java ===================================== @@ -25,14 +25,10 @@ import fr.ird.observe.client.ObserveSwingApplicationContext; import fr.ird.observe.client.ui.ObserveMainUI; import fr.ird.observe.client.ui.tree.navigation.NavigationTree; import fr.ird.observe.client.ui.tree.navigation.nodes.NavigationTreeNodeSupport; -import fr.ird.observe.client.ui.tree.navigation.nodes.longline.TripLonglineNavigationTreeNode; -import fr.ird.observe.client.ui.util.DecoratedNodeEntity; import fr.ird.observe.dto.data.longline.ActivityLonglineDto; import fr.ird.observe.dto.data.longline.TripLonglineReference; -import fr.ird.observe.dto.decoration.ObserveI18nDecoratorHelper; import fr.ird.observe.dto.decoration.decorators.DataReferenceDecorator; -import javax.swing.JOptionPane; import java.util.Optional; import static io.ultreia.java4all.i18n.I18n.n; @@ -60,7 +56,7 @@ public class MoveActivityLonglineUIAction extends MoveSingleDataUIActionSupport } @Override - Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport oldParentNode) { + Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport<?> oldParentNode) { return chooseNewTripLongline(mainUI, oldParentNode); } @@ -76,44 +72,21 @@ public class MoveActivityLonglineUIAction extends MoveSingleDataUIActionSupport } @Override - NavigationTreeNodeSupport getNewParentNode(NavigationTree treeHelper, NavigationTreeNodeSupport grandParentNode, String newParentId) { - NavigationTreeNodeSupport tripLonglineNode = treeHelper.getChild(grandParentNode, newParentId); - String activitiesNodeId = ObserveI18nDecoratorHelper.getTypePluralI18nKey(ActivityLonglineDto.class); - return treeHelper.getChild(tripLonglineNode, activitiesNodeId); + NavigationTreeNodeSupport<?> getNewParentNode(NavigationTree treeHelper, NavigationTreeNodeSupport<?> grandParentNode, String newParentId) { + NavigationTreeNodeSupport<?> parentNode = grandParentNode.findChildById(newParentId); + return parentNode.findChildByClass(ActivityLonglineDto.class); } - static Optional<String> chooseNewTripLongline(ObserveMainUI ui, NavigationTreeNodeSupport oldParentNode) { + static Optional<String> chooseNewTripLongline(ObserveMainUI mainUI, NavigationTreeNodeSupport<?> oldParentNode) { - NavigationTreeNodeSupport programNode = oldParentNode.getParent(); - String oldTripLonglineId = oldParentNode.getId(); - int tripLonglineNb = programNode.getChildCount(); + NavigationTreeNodeSupport<?> grandParentNode = oldParentNode.getParent(); + String oldId = oldParentNode.getId(); ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); DataReferenceDecorator<TripLonglineReference> decorator = applicationContext.getDecoratorService().getDataReferenceDecorator(TripLonglineReference.class); - //on crée un tableau avec une marée en moins car on ne propose pas la marée actuelle - DecoratedNodeEntity[] decoratedTripLonglines = new DecoratedNodeEntity[tripLonglineNb - 1]; - - int j = 0; - for (int i = 0; i < tripLonglineNb; i++) { - - TripLonglineNavigationTreeNode tripLonglineNode = (TripLonglineNavigationTreeNode) programNode.getChildAt(i); - - String tripLonglineId = tripLonglineNode.getId(); - - if (!oldTripLonglineId.equals(tripLonglineId)) { - decoratedTripLonglines[j++] = DecoratedNodeEntity.newDecoratedNodeEntity(tripLonglineNode, decorator); - } - } - - Object decoratedTripLongline = JOptionPane.showInputDialog(ui, - t("observe.action.choose.tripLongline.message"), - t("observe.action.choose.tripLongline.title"), - JOptionPane.QUESTION_MESSAGE, - null, - decoratedTripLonglines, - null); - return Optional.ofNullable(decoratedTripLongline != null ? ((DecoratedNodeEntity) decoratedTripLongline).getId() : null); + return chooseCandidate(mainUI, grandParentNode, oldId, decorator, t("observe.action.choose.tripLongline.message"), + t("observe.action.choose.tripLongline.title")); } } ===================================== client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveActivityLonglinesUIAction.java ===================================== @@ -29,9 +29,9 @@ import fr.ird.observe.client.ui.content.data.longline.ActivityLonglinesUI; import fr.ird.observe.client.ui.tree.navigation.NavigationTree; import fr.ird.observe.client.ui.tree.navigation.nodes.NavigationTreeNodeSupport; import fr.ird.observe.dto.data.longline.ActivityLonglineDto; -import fr.ird.observe.dto.decoration.ObserveI18nDecoratorHelper; import java.util.List; +import java.util.Objects; import java.util.Optional; import static io.ultreia.java4all.i18n.I18n.n; @@ -64,22 +64,21 @@ public class MoveActivityLonglinesUIAction extends MoveMultipleDataUIActionSuppo } @Override - Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport oldParentNode) { + Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport<?> oldParentNode) { return MoveActivityLonglineUIAction.chooseNewTripLongline(getMainUI(), oldParentNode); } @Override - void updateUI(ActivityLonglinesUI ui, NavigationTreeNodeSupport oldActivitiesNode, String tripLonglineId, ImmutableSet<String> activityIds, List<Integer> positions) { + void updateUI(ActivityLonglinesUI ui, NavigationTreeNodeSupport<?> oldActivitiesNode, String tripLonglineId, ImmutableSet<String> activityIds, List<Integer> positions) { ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); ObserveOpenDataManager openDataManager = applicationContext.getOpenDataManager(); NavigationTree treeHelper = getMainUI().getNavigationUI().getTree(); - NavigationTreeNodeSupport oldTripLonglineNode = oldActivitiesNode.getParent(); - NavigationTreeNodeSupport programNode = oldTripLonglineNode.getParent(); - NavigationTreeNodeSupport newTripLonglineNode = treeHelper.getChild(programNode, tripLonglineId); - String activitiesNodeId = ObserveI18nDecoratorHelper.getTypePluralI18nKey(ActivityLonglineDto.class); - NavigationTreeNodeSupport newActivitiesNode = treeHelper.getChild(newTripLonglineNode, activitiesNodeId); + NavigationTreeNodeSupport<?> oldTripLonglineNode = Objects.requireNonNull(oldActivitiesNode.getParent()); + NavigationTreeNodeSupport<?> programNode = Objects.requireNonNull(oldTripLonglineNode.getParent()); + NavigationTreeNodeSupport<?> newTripLonglineNode = Objects.requireNonNull(programNode.findChildById(tripLonglineId)); + NavigationTreeNodeSupport<?> newActivitiesNode = Objects.requireNonNull(newTripLonglineNode.findChildByClass(ActivityLonglineDto.class)); // Let's check if we're moving an open activity Optional<String> openActivity = activityIds @@ -93,7 +92,7 @@ public class MoveActivityLonglinesUIAction extends MoveMultipleDataUIActionSuppo // Let's reload the sub tree of each activities node. // As the change have already be done in database, we just call the child loaders to regenerate the activities nodes sub trees treeHelper.reloadNodeSubTree(oldActivitiesNode); - treeHelper.reloadNodeSubTree(newActivitiesNode); + treeHelper.reloadNodeSubTree(newActivitiesNode, true); // Let's put the focus on the activities node which received the activities treeHelper.selectSafeNode(newActivitiesNode); ===================================== client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveActivitySeineUIAction.java ===================================== @@ -25,14 +25,10 @@ import fr.ird.observe.client.ObserveSwingApplicationContext; import fr.ird.observe.client.ui.ObserveMainUI; import fr.ird.observe.client.ui.tree.navigation.NavigationTree; import fr.ird.observe.client.ui.tree.navigation.nodes.NavigationTreeNodeSupport; -import fr.ird.observe.client.ui.tree.navigation.nodes.seine.RouteSeineNavigationTreeNode; -import fr.ird.observe.client.ui.util.DecoratedNodeEntity; import fr.ird.observe.dto.data.seine.ActivitySeineDto; import fr.ird.observe.dto.data.seine.RouteReference; -import fr.ird.observe.dto.decoration.ObserveI18nDecoratorHelper; import fr.ird.observe.dto.decoration.decorators.DataReferenceDecorator; -import javax.swing.JOptionPane; import java.util.Optional; import static io.ultreia.java4all.i18n.I18n.n; @@ -60,7 +56,7 @@ public class MoveActivitySeineUIAction extends MoveSingleDataUIActionSupport { } @Override - Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport oldParentNode) { + Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport<?> oldParentNode) { return chooseNewRoute(mainUI, oldParentNode); } @@ -75,45 +71,21 @@ public class MoveActivitySeineUIAction extends MoveSingleDataUIActionSupport { } @Override - NavigationTreeNodeSupport getNewParentNode(NavigationTree treeHelper, NavigationTreeNodeSupport grandParentNode, String newParentId) { - NavigationTreeNodeSupport routeNode = treeHelper.getChild(grandParentNode, newParentId); - String activitiesNodeId = ObserveI18nDecoratorHelper.getTypePluralI18nKey(ActivitySeineDto.class); - return treeHelper.getChild(routeNode, activitiesNodeId); + NavigationTreeNodeSupport<?> getNewParentNode(NavigationTree treeHelper, NavigationTreeNodeSupport<?> grandParentNode, String newParentId) { + NavigationTreeNodeSupport<?> parentNode = grandParentNode.findChildById(newParentId); + return parentNode.findChildByClass( ActivitySeineDto.class); } - static Optional<String> chooseNewRoute(ObserveMainUI mainUI, NavigationTreeNodeSupport oldParentNode) { + static Optional<String> chooseNewRoute(ObserveMainUI mainUI, NavigationTreeNodeSupport<?> oldParentNode) { - NavigationTreeNodeSupport routesNode = oldParentNode.getParent(); - String oldRouteId = oldParentNode.getId(); - int routeNb = routesNode.getChildCount(); + NavigationTreeNodeSupport<?> grandParentNode = oldParentNode.getParent(); + String oldId = oldParentNode.getId(); ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); DataReferenceDecorator<RouteReference> decorator = applicationContext.getDecoratorService().getDataReferenceDecorator(RouteReference.class); - //on crée un tableau avec une route en moins car on ne propose pas la route actuel - DecoratedNodeEntity[] decoratedRoutes = new DecoratedNodeEntity[routeNb - 1]; - - int j = 0; - for (int i = 0; i < routeNb; i++) { - - RouteSeineNavigationTreeNode routeNode = (RouteSeineNavigationTreeNode) routesNode.getChildAt(i); - - String routeId = routeNode.getId(); - - if (!oldRouteId.equals(routeId)) { - decoratedRoutes[j++] = DecoratedNodeEntity.newDecoratedNodeEntity(routeNode, decorator); - } - } - - Object decoratedRoute = JOptionPane.showInputDialog(mainUI, - t("observe.action.choose.route.message"), - t("observe.action.choose.route.title"), - JOptionPane.QUESTION_MESSAGE, - null, - decoratedRoutes, - null); - - return Optional.ofNullable(decoratedRoute != null ? ((DecoratedNodeEntity) decoratedRoute).getId() : null); + return chooseCandidate(mainUI, grandParentNode, oldId, decorator, t("observe.action.choose.route.message"), + t("observe.action.choose.route.title")); } } ===================================== client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveActivitySeinesUIAction.java ===================================== @@ -29,9 +29,9 @@ import fr.ird.observe.client.ui.content.data.seine.ActivitySeinesUI; import fr.ird.observe.client.ui.tree.navigation.NavigationTree; import fr.ird.observe.client.ui.tree.navigation.nodes.NavigationTreeNodeSupport; import fr.ird.observe.dto.data.seine.ActivitySeineDto; -import fr.ird.observe.dto.decoration.ObserveI18nDecoratorHelper; import java.util.List; +import java.util.Objects; import java.util.Optional; import static io.ultreia.java4all.i18n.I18n.n; @@ -59,7 +59,7 @@ public class MoveActivitySeinesUIAction extends MoveMultipleDataUIActionSupport< } @Override - Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport oldParentNode) { + Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport<?> oldParentNode) { return MoveActivitySeineUIAction.chooseNewRoute(getMainUI(), oldParentNode); } @@ -69,17 +69,16 @@ public class MoveActivitySeinesUIAction extends MoveMultipleDataUIActionSupport< } @Override - void updateUI(ActivitySeinesUI ui, NavigationTreeNodeSupport oldParentNode, String newParentId, ImmutableSet<String> dataIds, List<Integer> positions) { + void updateUI(ActivitySeinesUI ui, NavigationTreeNodeSupport<?> oldParentNode, String newParentId, ImmutableSet<String> dataIds, List<Integer> positions) { ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); ObserveOpenDataManager openDataManager = applicationContext.getOpenDataManager(); NavigationTree treeHelper = getMainUI().getNavigationUI().getTree(); - NavigationTreeNodeSupport oldRouteNode = oldParentNode.getParent(); - NavigationTreeNodeSupport routesNode = oldRouteNode.getParent(); - NavigationTreeNodeSupport newRouteNode = treeHelper.getChild(routesNode, newParentId); - String activitiesNodeId = ObserveI18nDecoratorHelper.getTypePluralI18nKey(ActivitySeineDto.class); - NavigationTreeNodeSupport newActivitiesNode = treeHelper.getChild(newRouteNode, activitiesNodeId); + NavigationTreeNodeSupport<?> oldRouteNode = Objects.requireNonNull(oldParentNode.getParent()); + NavigationTreeNodeSupport<?> routesNode = Objects.requireNonNull(oldRouteNode.getParent()); + NavigationTreeNodeSupport<?> newRouteNode = Objects.requireNonNull(routesNode.findChildById(newParentId)); + NavigationTreeNodeSupport<?> newActivitiesNode = Objects.requireNonNull(newRouteNode.findChildByClass(ActivitySeineDto.class)); // Let's check if we're moving an open activity Optional<String> openActivity = dataIds @@ -93,7 +92,7 @@ public class MoveActivitySeinesUIAction extends MoveMultipleDataUIActionSupport< // Let's reload the sub tree of each activities node. // As the change have already be done in database, we just call the child loaders to regenerate the activities nodes sub trees treeHelper.reloadNodeSubTree(oldParentNode); - treeHelper.reloadNodeSubTree(newActivitiesNode); + treeHelper.reloadNodeSubTree(newActivitiesNode, true); // Let's put the focus on the activities node which received the activities treeHelper.selectSafeNode(newActivitiesNode); ===================================== client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveMultipleDataUIActionSupport.java ===================================== @@ -73,9 +73,9 @@ public abstract class MoveMultipleDataUIActionSupport<U extends ContentListUI<?, @SuppressWarnings("unchecked") U ui = (U) ui1; NavigationTree treeHelper = getMainUI().getNavigationUI().getTree(); - NavigationTreeNodeSupport node = treeHelper.getSelectedNode(); + NavigationTreeNodeSupport<?> node = treeHelper.getSelectedNode(); - NavigationTreeNodeSupport oldParentNode = node.getParent().isRoot() ? node : node.getParent(); + NavigationTreeNodeSupport<?> oldParentNode = node.getParent().isRoot() ? node : node.getParent(); Optional<String> optionalNewParentId = getNewParentId(getMainUI(), oldParentNode); @@ -90,10 +90,10 @@ public abstract class MoveMultipleDataUIActionSupport<U extends ContentListUI<?, } - abstract Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport oldParentNode); + abstract Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport<?> oldParentNode); abstract List<Integer> moveData(ImmutableSet<String> dataIds, String newParentId); - abstract void updateUI(U ui, NavigationTreeNodeSupport oldParentNode, String newParentId, ImmutableSet<String> dataIds, List<Integer> positions); + abstract void updateUI(U ui, NavigationTreeNodeSupport<?> oldParentNode, String newParentId, ImmutableSet<String> dataIds, List<Integer> positions); } ===================================== client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveRouteUIAction.java ===================================== @@ -25,14 +25,10 @@ import fr.ird.observe.client.ObserveSwingApplicationContext; import fr.ird.observe.client.ui.ObserveMainUI; import fr.ird.observe.client.ui.tree.navigation.NavigationTree; import fr.ird.observe.client.ui.tree.navigation.nodes.NavigationTreeNodeSupport; -import fr.ird.observe.client.ui.tree.navigation.nodes.seine.TripSeineNavigationTreeNode; -import fr.ird.observe.client.ui.util.DecoratedNodeEntity; import fr.ird.observe.dto.data.seine.RouteDto; import fr.ird.observe.dto.data.seine.TripSeineReference; -import fr.ird.observe.dto.decoration.ObserveI18nDecoratorHelper; import fr.ird.observe.dto.decoration.decorators.DataReferenceDecorator; -import javax.swing.JOptionPane; import java.util.Optional; import static io.ultreia.java4all.i18n.I18n.n; @@ -60,7 +56,7 @@ public class MoveRouteUIAction extends MoveSingleDataUIActionSupport { } @Override - Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport oldParentNode) { + Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport<?> oldParentNode) { return chooseNewTripSeine(mainUI, oldParentNode); } @@ -75,43 +71,20 @@ public class MoveRouteUIAction extends MoveSingleDataUIActionSupport { } @Override - NavigationTreeNodeSupport getNewParentNode(NavigationTree treeHelper, NavigationTreeNodeSupport grandParentNode, String newParentId) { - NavigationTreeNodeSupport tripNode = treeHelper.getChild(grandParentNode, newParentId); - String routesNodeId = ObserveI18nDecoratorHelper.getTypePluralI18nKey(RouteDto.class); - return treeHelper.getChild(tripNode, routesNodeId); + NavigationTreeNodeSupport<?> getNewParentNode(NavigationTree treeHelper, NavigationTreeNodeSupport<?> grandParentNode, String newParentId) { + NavigationTreeNodeSupport<?> parentNode = grandParentNode.findChildById(newParentId); + return parentNode.findChildByClass(RouteDto.class); } - static Optional<String> chooseNewTripSeine(ObserveMainUI mainUI, NavigationTreeNodeSupport oldTripSeineNode) { - NavigationTreeNodeSupport programNode = oldTripSeineNode.getParent(); - String oldTripSeineId = oldTripSeineNode.getId(); - int tripSeineNb = programNode.getChildCount(); + static Optional<String> chooseNewTripSeine(ObserveMainUI mainUI, NavigationTreeNodeSupport<?> oldParentNode) { + NavigationTreeNodeSupport<?> grandParentNode = oldParentNode.getParent(); + String oldId = oldParentNode.getId(); ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); DataReferenceDecorator<TripSeineReference> decorator = applicationContext.getDecoratorService().getDataReferenceDecorator(TripSeineReference.class); - //on crée un tableau avec une marée en moins car on ne propose pas la marée actuel - DecoratedNodeEntity[] decoratedTripSeines = new DecoratedNodeEntity[tripSeineNb - 1]; - - int j = 0; - for (int i = 0; i < tripSeineNb; i++) { - - TripSeineNavigationTreeNode tripSeineNode = (TripSeineNavigationTreeNode) programNode.getChildAt(i); - - String tripSeineId = tripSeineNode.getId(); - - if (!oldTripSeineId.equals(tripSeineId)) { - decoratedTripSeines[j++] = DecoratedNodeEntity.newDecoratedNodeEntity(tripSeineNode, decorator); - } - } - - Object decoratedTripSeine = JOptionPane.showInputDialog(mainUI, - t("observe.action.choose.tripSeine.message"), - t("observe.action.choose.tripSeine.title"), - JOptionPane.QUESTION_MESSAGE, - null, - decoratedTripSeines, - null); - return Optional.ofNullable(decoratedTripSeine != null ? ((DecoratedNodeEntity) decoratedTripSeine).getId() : null); + return chooseCandidate(mainUI, grandParentNode, oldId, decorator, t("observe.action.choose.tripSeine.message"), + t("observe.action.choose.tripSeine.title")); } } ===================================== client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveRoutesUIAction.java ===================================== @@ -28,9 +28,9 @@ import fr.ird.observe.client.ui.content.data.seine.RoutesUI; import fr.ird.observe.client.ui.tree.navigation.NavigationTree; import fr.ird.observe.client.ui.tree.navigation.nodes.NavigationTreeNodeSupport; import fr.ird.observe.dto.data.seine.RouteDto; -import fr.ird.observe.dto.decoration.ObserveI18nDecoratorHelper; import java.util.List; +import java.util.Objects; import java.util.Optional; import static io.ultreia.java4all.i18n.I18n.n; @@ -58,7 +58,7 @@ public class MoveRoutesUIAction extends MoveMultipleDataUIActionSupport<RoutesUI } @Override - Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport oldParentNode) { + Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport<?> oldParentNode) { return MoveRouteUIAction.chooseNewTripSeine(getMainUI(), oldParentNode); } @@ -69,16 +69,15 @@ public class MoveRoutesUIAction extends MoveMultipleDataUIActionSupport<RoutesUI @Override - void updateUI(RoutesUI ui, NavigationTreeNodeSupport oldRoutesNode, String tripSeineId, ImmutableSet<String> routeIds, List<Integer> positions) { + void updateUI(RoutesUI ui, NavigationTreeNodeSupport<?> oldRoutesNode, String tripSeineId, ImmutableSet<String> routeIds, List<Integer> positions) { ObserveOpenDataManager openDataManager = getOpenDataManager(); NavigationTree treeHelper = getMainUI().getNavigationUI().getTree(); - NavigationTreeNodeSupport oldTripSeineNode = oldRoutesNode.getParent(); - NavigationTreeNodeSupport programNode = oldTripSeineNode.getParent(); - NavigationTreeNodeSupport newTripSeineNode = treeHelper.getChild(programNode, tripSeineId); - String routesNodeId = ObserveI18nDecoratorHelper.getTypePluralI18nKey(RouteDto.class); - NavigationTreeNodeSupport newRoutesNode = treeHelper.getChild(newTripSeineNode, routesNodeId); + NavigationTreeNodeSupport<?> oldTripSeineNode = Objects.requireNonNull(oldRoutesNode.getParent()); + NavigationTreeNodeSupport<?> programNode = Objects.requireNonNull(oldTripSeineNode.getParent()); + NavigationTreeNodeSupport<?> newTripSeineNode = Objects.requireNonNull(programNode.findChildById(tripSeineId)); + NavigationTreeNodeSupport<?> newRoutesNode = Objects.requireNonNull(newTripSeineNode.findChildByClass(RouteDto.class)); // Let's check if we're moving an open route Optional<String> openRoute = routeIds @@ -92,7 +91,7 @@ public class MoveRoutesUIAction extends MoveMultipleDataUIActionSupport<RoutesUI // Let's reload the sub tree of each routes node. // As the change have already be done in database, we just call the child loaders to regenerate the routes nodes sub trees treeHelper.reloadNodeSubTree(oldRoutesNode); - treeHelper.reloadNodeSubTree(newRoutesNode); + treeHelper.reloadNodeSubTree(newRoutesNode, true); // 1. Select the newRoutesNode : // only a selected node can be reloaded (@see fr.ird.observe.client.ui.tree.ObserveTreeBridge.canLoadChild). ===================================== client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveSingleDataUIActionSupport.java ===================================== @@ -28,10 +28,18 @@ import fr.ird.observe.client.ui.ObserveMainUI; import fr.ird.observe.client.ui.actions.UIActionSupport; import fr.ird.observe.client.ui.tree.navigation.NavigationTree; import fr.ird.observe.client.ui.tree.navigation.nodes.NavigationTreeNodeSupport; +import fr.ird.observe.client.ui.tree.navigation.nodes.ReferenceNavigationTreeNodeSupport; +import fr.ird.observe.client.ui.util.DecoratedNodeEntity; +import fr.ird.observe.dto.decoration.decorators.ObserveDecorator; +import javax.swing.JOptionPane; import javax.swing.SwingUtilities; import java.awt.event.ActionEvent; +import java.util.ArrayList; +import java.util.Enumeration; +import java.util.List; import java.util.Optional; +import java.util.function.Predicate; /** * Created by tchemit on 12/06/17. @@ -52,22 +60,22 @@ public abstract class MoveSingleDataUIActionSupport extends UIActionSupport { public final void actionPerformed(ActionEvent e) { NavigationTree treeHelper = getMainUI().getNavigationUI().getTree(); - NavigationTreeNodeSupport node = treeHelper.getSelectedNode(); - NavigationTreeNodeSupport oldParentNode = node.getParent().getParent().equals(node.getRoot()) ? node.getParent() : node.getParent().getParent(); + NavigationTreeNodeSupport<?> node = treeHelper.getSelectedNode(); + NavigationTreeNodeSupport<?> oldParentNode = node.getParent().getParent().equals(node.getRoot()) ? node.getParent() : node.getParent().getParent(); Optional<String> optionalNewParentId = getNewParentId(getMainUI(), oldParentNode); optionalNewParentId.ifPresent(newParentId -> SwingUtilities.invokeLater(() -> apply(oldParentNode, node.getId(), newParentId))); } - abstract Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport oldParentNode); + abstract Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport<?> oldParentNode); - private void apply(NavigationTreeNodeSupport oldParentNode, String dataId, String newParentId) { + private void apply(NavigationTreeNodeSupport<?> oldParentNode, String dataId, String newParentId) { NavigationTree treeHelper = getMainUI().getNavigationUI().getTree(); - NavigationTreeNodeSupport node = treeHelper.getSelectedNode(); - NavigationTreeNodeSupport grandParentNode = oldParentNode.getParent(); - NavigationTreeNodeSupport newParentNode = getNewParentNode(treeHelper, grandParentNode, newParentId); + NavigationTreeNodeSupport<?> node = treeHelper.getSelectedNode(); + NavigationTreeNodeSupport<?> grandParentNode = oldParentNode.getParent(); + NavigationTreeNodeSupport<?> newParentNode = getNewParentNode(treeHelper, grandParentNode, newParentId); closeNode(node.getId()); @@ -77,7 +85,7 @@ public abstract class MoveSingleDataUIActionSupport extends UIActionSupport { treeHelper.removeNode(node); - NavigationTreeNodeSupport newNode = treeHelper.getChild(newParentNode, dataId); + NavigationTreeNodeSupport<?> newNode = treeHelper.getChild(newParentNode, dataId); if (newNode == null) { @@ -95,5 +103,38 @@ public abstract class MoveSingleDataUIActionSupport extends UIActionSupport { abstract void closeNode(String dataId); - abstract NavigationTreeNodeSupport getNewParentNode(NavigationTree treeHelper, NavigationTreeNodeSupport grandParentNode, String newParentId); + abstract NavigationTreeNodeSupport<?> getNewParentNode(NavigationTree treeHelper, NavigationTreeNodeSupport<?> grandParentNode, String newParentId); + + static Optional<String> chooseCandidate(ObserveMainUI mainUI, + NavigationTreeNodeSupport<?> grandParentNode, + String oldId, + ObserveDecorator<?> decorator, + String title, + String message) { + return chooseCandidate(mainUI, grandParentNode, decorator, title, message, n -> n instanceof ReferenceNavigationTreeNodeSupport<?, ?> && !oldId.equals(n.getId())); + } + + static Optional<String> chooseCandidate(ObserveMainUI mainUI, + NavigationTreeNodeSupport<?> grandParentNode, + ObserveDecorator<?> decorator, + String title, + String message, + Predicate<NavigationTreeNodeSupport<?>> filter) { + List<DecoratedNodeEntity> candidateList = new ArrayList<>(); + Enumeration<?> children = grandParentNode.children(); + while (children.hasMoreElements()) { + NavigationTreeNodeSupport<?> candidateNode = (NavigationTreeNodeSupport<?>) children.nextElement(); + if (filter.test(candidateNode)) { + candidateList.add(DecoratedNodeEntity.newDecoratedNodeEntity((ReferenceNavigationTreeNodeSupport<?, ?>) candidateNode, decorator)); + } + } + DecoratedNodeEntity selectedEntity = (DecoratedNodeEntity) JOptionPane.showInputDialog(mainUI, + title, + message, + JOptionPane.QUESTION_MESSAGE, + null, + candidateList.toArray(new DecoratedNodeEntity[0]), + null); + return Optional.ofNullable(selectedEntity).map(DecoratedNodeEntity::getId); + } } ===================================== client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveTripSeinesUIAction.java ===================================== @@ -54,7 +54,7 @@ public class MoveTripSeinesUIAction extends MoveTripsUIAction<TripSeinesUI> { @Override protected void updateModelData(TripSeinesUI ui) { TripSeinesUIModel model = ui.getModel(); - List<TripSeineReference> data = new ArrayList(model.getData()); + List<TripSeineReference> data = new ArrayList<>(model.getData()); data.removeAll(model.getSelectedDatas()); model.setData(data); } ===================================== client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveTripUIAction.java ===================================== @@ -25,17 +25,14 @@ import fr.ird.observe.client.ObserveSwingApplicationContext; import fr.ird.observe.client.ui.ObserveMainUI; import fr.ird.observe.client.ui.tree.navigation.NavigationTree; import fr.ird.observe.client.ui.tree.navigation.nodes.NavigationTreeNodeSupport; +import fr.ird.observe.client.ui.tree.navigation.nodes.ReferenceNavigationTreeNodeSupport; import fr.ird.observe.client.ui.tree.navigation.nodes.longline.ProgramLonglineNavigationTreeNode; import fr.ird.observe.client.ui.tree.navigation.nodes.seine.ProgramSeineNavigationTreeNode; -import fr.ird.observe.client.ui.util.DecoratedNodeEntity; import fr.ird.observe.dto.IdHelper; import fr.ird.observe.dto.decoration.decorators.ReferentialReferenceDecorator; import fr.ird.observe.dto.referential.GearType; import fr.ird.observe.dto.referential.ProgramReference; -import javax.swing.JOptionPane; -import java.util.ArrayList; -import java.util.List; import java.util.Optional; import static io.ultreia.java4all.i18n.I18n.t; @@ -65,7 +62,7 @@ public abstract class MoveTripUIAction extends MoveSingleDataUIActionSupport { } @Override - Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport oldParentNode) { + Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport<?> oldParentNode) { return chooseNewProgram(mainUI, gearType, oldParentNode.getId()); } @@ -88,58 +85,31 @@ public abstract class MoveTripUIAction extends MoveSingleDataUIActionSupport { } @Override - NavigationTreeNodeSupport getNewParentNode(NavigationTree treeHelper, NavigationTreeNodeSupport grandParentNode, String newParentId) { - return treeHelper.getChild(grandParentNode, newParentId); + NavigationTreeNodeSupport<?> getNewParentNode(NavigationTree treeHelper, NavigationTreeNodeSupport<?> grandParentNode, String newParentId) { + return grandParentNode.findChildById(newParentId); } - static Optional<String> chooseNewProgram(ObserveMainUI mainUI, GearType gearType, String oldProgramId) { + static Optional<String> chooseNewProgram(ObserveMainUI mainUI, GearType gearType, String oldId) { NavigationTree treeHelper = mainUI.getNavigationUI().getTree(); // racine - NavigationTreeNodeSupport rootNode = treeHelper.getRootNode(); - - //on crée un tableau avec un programme en moins car on ne propose pas le programme actuel - List<DecoratedNodeEntity> decoratedProgramList = new ArrayList<>(); - - ReferentialReferenceDecorator<ProgramReference> programDecorator = ObserveSwingApplicationContext.get().getDecoratorService().getReferentialReferenceDecorator(ProgramReference.class); - - for (int i = 0, n = rootNode.getChildCount(); i < n; i++) { - - NavigationTreeNodeSupport programNode = (NavigationTreeNodeSupport) rootNode.getChildAt(i); - String programId = programNode.getId(); - - // si le noeud programme n'est pas le même que le parent actuel - // si le noeud est bien un noeud de programme - if (programId != null && IdHelper.isProgramId(programId) && !oldProgramId.equals(programId)) { - - if (programNode instanceof ProgramSeineNavigationTreeNode && GearType.seine == gearType) { - - ProgramSeineNavigationTreeNode node = (ProgramSeineNavigationTreeNode) programNode; - decoratedProgramList.add(DecoratedNodeEntity.newDecoratedNodeEntity(node, programDecorator)); - - } else if (programNode instanceof ProgramLonglineNavigationTreeNode && GearType.longline == gearType) { - - ProgramLonglineNavigationTreeNode node = (ProgramLonglineNavigationTreeNode) programNode; - decoratedProgramList.add(DecoratedNodeEntity.newDecoratedNodeEntity(node, programDecorator)); - - } - - } - } - - DecoratedNodeEntity[] decoratedPrograms = - decoratedProgramList.toArray(new DecoratedNodeEntity[0]); - - DecoratedNodeEntity decoratedProgram = (DecoratedNodeEntity) JOptionPane.showInputDialog(mainUI, - t("observe.action.choose.program.message"), - t("observe.action.choose.program.title"), - JOptionPane.QUESTION_MESSAGE, - null, - decoratedPrograms, - null); - - return Optional.ofNullable(decoratedProgram == null ? null : decoratedProgram.getId()); + NavigationTreeNodeSupport<?> grandParentNode = treeHelper.getRootNode(); + + ReferentialReferenceDecorator<ProgramReference> decorator = ObserveSwingApplicationContext.get().getDecoratorService().getReferentialReferenceDecorator(ProgramReference.class); + + return chooseCandidate(mainUI, grandParentNode, decorator, t("observe.action.choose.program.message"), + t("observe.action.choose.program.title"), + node -> { + if (!(node instanceof ReferenceNavigationTreeNodeSupport<?, ?>)) { + return false; + } + ReferenceNavigationTreeNodeSupport<?, ?> candidateNode = (ReferenceNavigationTreeNodeSupport<?, ?>) node; + String candidateId = candidateNode.getId(); + return (candidateId != null && IdHelper.isProgramId(candidateId) && !oldId.equals(candidateId)) + && ((candidateNode instanceof ProgramSeineNavigationTreeNode && GearType.seine == gearType) + || (candidateNode instanceof ProgramLonglineNavigationTreeNode && GearType.longline == gearType)); + }); } } ===================================== client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveTripsUIAction.java ===================================== @@ -66,12 +66,12 @@ public abstract class MoveTripsUIAction<U extends ContentListUI<?, ?, ?, ?>> ext } @Override - Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport oldParentNode) { + Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport<?> oldParentNode) { return MoveTripUIAction.chooseNewProgram(getMainUI(), gearType, oldParentNode.getId()); } @Override - void updateUI(U ui, NavigationTreeNodeSupport oldParentNode, String newParentId, ImmutableSet<String> dataIds, List<Integer> positions) { + void updateUI(U ui, NavigationTreeNodeSupport<?> oldParentNode, String newParentId, ImmutableSet<String> dataIds, List<Integer> positions) { String oldProgramId = oldParentNode.getId(); @@ -79,14 +79,14 @@ public abstract class MoveTripsUIAction<U extends ContentListUI<?, ?, ?, ?>> ext ObserveOpenDataManager openDataManager = applicationContext.getOpenDataManager(); NavigationTree treeHelper = getMainUI().getNavigationUI().getTree(); - NavigationTreeNodeSupport rootNode = treeHelper.getRootNode(); - NavigationTreeNodeSupport newProgramNode = treeHelper.getChild(rootNode, newParentId); + NavigationTreeNodeSupport<?> rootNode = treeHelper.getRootNode(); + NavigationTreeNodeSupport<?> newProgramNode = rootNode.findChildById(newParentId); UnmodifiableIterator<String> iterator = dataIds.iterator(); for (Integer position : positions) { String tripId = iterator.next(); - NavigationTreeNodeSupport tripNode = treeHelper.getChild(oldParentNode, tripId); + NavigationTreeNodeSupport<?> tripNode = oldParentNode.findChildById(tripId); boolean wasOpen = tripNode.isOpen(); treeHelper.removeNode(tripNode); @@ -95,7 +95,7 @@ public abstract class MoveTripsUIAction<U extends ContentListUI<?, ?, ?, ?>> ext openDataManager.openProgram(newParentId); } - NavigationTreeNodeSupport newTripNode = treeHelper.getChild(newProgramNode, tripId); + NavigationTreeNodeSupport<?> newTripNode = treeHelper.getChild(newProgramNode, tripId); if (newTripNode == null) { ===================================== client-core/src/main/java/fr/ird/observe/client/ui/tree/navigation/NavigationTree.java ===================================== @@ -407,20 +407,17 @@ public class NavigationTree extends JXTree { SwingUtilities.invokeLater(this::grabFocus); } - public void reloadNodeSubTree(NavigationTreeNodeSupport node) { - Objects.requireNonNull(node, "node is null, we can not reload its structure"); + public void reloadNodeSubTree(NavigationTreeNodeSupport<?> node) { + reloadNodeSubTree(node, false); + } - // 1. Let's clear node structure - while (node.getChildCount() > 0) { - removeNode((NavigationTreeNodeSupport) node.getFirstChild()); + public void reloadNodeSubTree(NavigationTreeNodeSupport<?> node, boolean expand) { + Objects.requireNonNull(node, "node is null, we can not reload its structure"); + getTreeModel().update(node); + if (expand) { + // Fix bug (if no child in parent node, it will not expand...) + fireTreeExpanded(new TreePath(node.getPath())); } - - // 3. Let's re-generate node's children by populating the node : this will call the child loaders. - node.updateNode(); - - // Fix bug (if no child in parent node, it will not expand...) - fireTreeExpanded(new TreePath(node.getPath())); - } public void reloadNode(NavigationTreeNodeSupport<?> node, boolean deep) { ===================================== client-core/src/main/java/fr/ird/observe/client/ui/tree/navigation/NavigationTreeModel.java ===================================== @@ -79,6 +79,11 @@ public class NavigationTreeModel extends DefaultTreeModel { super.reload(node); } + public <N extends NavigationTreeNodeSupport> void update(N node) { + node.updateNode(); + super.reload(node); + } + public <N extends NavigationTreeNodeSupport> void open(N node) { if (node instanceof WithChildsToReload) { boolean updated = node.populateChilds(); ===================================== client-core/src/main/java/fr/ird/observe/client/ui/tree/navigation/nodes/NavigationTreeNodeSupport.java ===================================== @@ -25,8 +25,8 @@ package fr.ird.observe.client.ui.tree.navigation.nodes; import fr.ird.observe.client.ui.actions.content.SelectNodeUIAction; import fr.ird.observe.client.ui.content.ContentUI; import fr.ird.observe.client.ui.tree.ObserveTreeNodeSupport; -import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.nuiton.jaxx.runtime.JAXXObject; import javax.swing.AbstractAction; @@ -163,9 +163,9 @@ public abstract class NavigationTreeNodeSupport<O> extends ObserveTreeNodeSuppor // au final le noeud est une feuille, donc ne convient pas return null; } - Enumeration<NavigationTreeNodeSupport> children = children(); + Enumeration<NavigationTreeNodeSupport<?>> children = children(); while (children.hasMoreElements()) { - NavigationTreeNodeSupport node = children.nextElement(); + NavigationTreeNodeSupport<?> node = children.nextElement(); if (childType.isAssignableFrom(node.getClass())) { return node; } @@ -187,10 +187,10 @@ public abstract class NavigationTreeNodeSupport<O> extends ObserveTreeNodeSuppor // au final le noeud est une feuille, donc ne convient pas return null; } - Enumeration<NavigationTreeNodeSupport> children = children(); + Enumeration<NavigationTreeNodeSupport<?>> children = children(); while (children.hasMoreElements()) { - NavigationTreeNodeSupport node = children.nextElement(); - if (childType.isAssignableFrom((Class) node.getUserObject())) { + NavigationTreeNodeSupport<?> node = children.nextElement(); + if (childType.isAssignableFrom(node.getDataType())) { return node; } } View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/26c6cb5ee9da5ddaca49ac19d… -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/26c6cb5ee9da5ddaca49ac19d… You're receiving this email because of your account on gitlab.com.
1 0
0 0
[Git][ultreiaio/ird-observe][develop-7.x] 2 commits: Si on ne peut pas ouvrir un nœud on ne bloque pas l'ui
by Tony CHEMIT 13 Feb '20

13 Feb '20
Tony CHEMIT pushed to branch develop-7.x at ultreiaio / ird-observe Commits: be42fca0 by tchemit at 2020-02-13T16:17:00+01:00 Si on ne peut pas ouvrir un nœud on ne bloque pas l&#39;ui - - - - - 27451db1 by tchemit at 2020-02-13T16:17:04+01:00 Petit problème sur déplacement d&#39;activité - Closes #1435 - - - - - 15 changed files: - client-core/src/main/java/fr/ird/observe/client/ui/ObserveMainUIInitializer.java - client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveActivityLonglineUIAction.java - client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveActivityLonglinesUIAction.java - client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveActivitySeineUIAction.java - client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveActivitySeinesUIAction.java - client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveMultipleDataUIActionSupport.java - client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveRouteUIAction.java - client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveRoutesUIAction.java - client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveSingleDataUIActionSupport.java - client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveTripSeinesUIAction.java - client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveTripUIAction.java - client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveTripsUIAction.java - client-core/src/main/java/fr/ird/observe/client/ui/tree/navigation/NavigationTree.java - client-core/src/main/java/fr/ird/observe/client/ui/tree/navigation/NavigationTreeModel.java - client-core/src/main/java/fr/ird/observe/client/ui/tree/navigation/nodes/NavigationTreeNodeSupport.java Changes: ===================================== client-core/src/main/java/fr/ird/observe/client/ui/ObserveMainUIInitializer.java ===================================== @@ -545,7 +545,12 @@ public class ObserveMainUIInitializer { progressModel.incrementsCurrentStep(); // select initial node - tree.selectInitialNode(); + try { + tree.selectInitialNode(); + } catch (Exception e) { + UIHelper.handlingError(e); + } + progressModel.incrementsCurrentStep(); tree.setVisible(true); ===================================== client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveActivityLonglineUIAction.java ===================================== @@ -25,14 +25,10 @@ import fr.ird.observe.client.ObserveSwingApplicationContext; import fr.ird.observe.client.ui.ObserveMainUI; import fr.ird.observe.client.ui.tree.navigation.NavigationTree; import fr.ird.observe.client.ui.tree.navigation.nodes.NavigationTreeNodeSupport; -import fr.ird.observe.client.ui.tree.navigation.nodes.longline.TripLonglineNavigationTreeNode; -import fr.ird.observe.client.ui.util.DecoratedNodeEntity; import fr.ird.observe.dto.data.longline.ActivityLonglineDto; import fr.ird.observe.dto.data.longline.TripLonglineReference; -import fr.ird.observe.dto.decoration.ObserveI18nDecoratorHelper; import fr.ird.observe.dto.decoration.decorators.DataReferenceDecorator; -import javax.swing.JOptionPane; import java.util.Optional; import static io.ultreia.java4all.i18n.I18n.n; @@ -60,7 +56,7 @@ public class MoveActivityLonglineUIAction extends MoveSingleDataUIActionSupport } @Override - Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport oldParentNode) { + Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport<?> oldParentNode) { return chooseNewTripLongline(mainUI, oldParentNode); } @@ -76,44 +72,21 @@ public class MoveActivityLonglineUIAction extends MoveSingleDataUIActionSupport } @Override - NavigationTreeNodeSupport getNewParentNode(NavigationTree treeHelper, NavigationTreeNodeSupport grandParentNode, String newParentId) { - NavigationTreeNodeSupport tripLonglineNode = treeHelper.getChild(grandParentNode, newParentId); - String activitiesNodeId = ObserveI18nDecoratorHelper.getTypePluralI18nKey(ActivityLonglineDto.class); - return treeHelper.getChild(tripLonglineNode, activitiesNodeId); + NavigationTreeNodeSupport<?> getNewParentNode(NavigationTree treeHelper, NavigationTreeNodeSupport<?> grandParentNode, String newParentId) { + NavigationTreeNodeSupport<?> parentNode = grandParentNode.findChildById(newParentId); + return parentNode.findChildByClass(ActivityLonglineDto.class); } - static Optional<String> chooseNewTripLongline(ObserveMainUI ui, NavigationTreeNodeSupport oldParentNode) { + static Optional<String> chooseNewTripLongline(ObserveMainUI mainUI, NavigationTreeNodeSupport<?> oldParentNode) { - NavigationTreeNodeSupport programNode = oldParentNode.getParent(); - String oldTripLonglineId = oldParentNode.getId(); - int tripLonglineNb = programNode.getChildCount(); + NavigationTreeNodeSupport<?> grandParentNode = oldParentNode.getParent(); + String oldId = oldParentNode.getId(); ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); DataReferenceDecorator<TripLonglineReference> decorator = applicationContext.getDecoratorService().getDataReferenceDecorator(TripLonglineReference.class); - //on crée un tableau avec une marée en moins car on ne propose pas la marée actuelle - DecoratedNodeEntity[] decoratedTripLonglines = new DecoratedNodeEntity[tripLonglineNb - 1]; - - int j = 0; - for (int i = 0; i < tripLonglineNb; i++) { - - TripLonglineNavigationTreeNode tripLonglineNode = (TripLonglineNavigationTreeNode) programNode.getChildAt(i); - - String tripLonglineId = tripLonglineNode.getId(); - - if (!oldTripLonglineId.equals(tripLonglineId)) { - decoratedTripLonglines[j++] = DecoratedNodeEntity.newDecoratedNodeEntity(tripLonglineNode, decorator); - } - } - - Object decoratedTripLongline = JOptionPane.showInputDialog(ui, - t("observe.action.choose.tripLongline.message"), - t("observe.action.choose.tripLongline.title"), - JOptionPane.QUESTION_MESSAGE, - null, - decoratedTripLonglines, - null); - return Optional.ofNullable(decoratedTripLongline != null ? ((DecoratedNodeEntity) decoratedTripLongline).getId() : null); + return chooseCandidate(mainUI, grandParentNode, oldId, decorator, t("observe.action.choose.tripLongline.message"), + t("observe.action.choose.tripLongline.title")); } } ===================================== client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveActivityLonglinesUIAction.java ===================================== @@ -29,9 +29,9 @@ import fr.ird.observe.client.ui.content.data.longline.ActivityLonglinesUI; import fr.ird.observe.client.ui.tree.navigation.NavigationTree; import fr.ird.observe.client.ui.tree.navigation.nodes.NavigationTreeNodeSupport; import fr.ird.observe.dto.data.longline.ActivityLonglineDto; -import fr.ird.observe.dto.decoration.ObserveI18nDecoratorHelper; import java.util.List; +import java.util.Objects; import java.util.Optional; import static io.ultreia.java4all.i18n.I18n.n; @@ -64,22 +64,21 @@ public class MoveActivityLonglinesUIAction extends MoveMultipleDataUIActionSuppo } @Override - Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport oldParentNode) { + Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport<?> oldParentNode) { return MoveActivityLonglineUIAction.chooseNewTripLongline(getMainUI(), oldParentNode); } @Override - void updateUI(ActivityLonglinesUI ui, NavigationTreeNodeSupport oldActivitiesNode, String tripLonglineId, ImmutableSet<String> activityIds, List<Integer> positions) { + void updateUI(ActivityLonglinesUI ui, NavigationTreeNodeSupport<?> oldActivitiesNode, String tripLonglineId, ImmutableSet<String> activityIds, List<Integer> positions) { ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); ObserveOpenDataManager openDataManager = applicationContext.getOpenDataManager(); NavigationTree treeHelper = getMainUI().getNavigationUI().getTree(); - NavigationTreeNodeSupport oldTripLonglineNode = oldActivitiesNode.getParent(); - NavigationTreeNodeSupport programNode = oldTripLonglineNode.getParent(); - NavigationTreeNodeSupport newTripLonglineNode = treeHelper.getChild(programNode, tripLonglineId); - String activitiesNodeId = ObserveI18nDecoratorHelper.getTypePluralI18nKey(ActivityLonglineDto.class); - NavigationTreeNodeSupport newActivitiesNode = treeHelper.getChild(newTripLonglineNode, activitiesNodeId); + NavigationTreeNodeSupport<?> oldTripLonglineNode = Objects.requireNonNull(oldActivitiesNode.getParent()); + NavigationTreeNodeSupport<?> programNode = Objects.requireNonNull(oldTripLonglineNode.getParent()); + NavigationTreeNodeSupport<?> newTripLonglineNode = Objects.requireNonNull(programNode.findChildById(tripLonglineId)); + NavigationTreeNodeSupport<?> newActivitiesNode = Objects.requireNonNull(newTripLonglineNode.findChildByClass(ActivityLonglineDto.class)); // Let's check if we're moving an open activity Optional<String> openActivity = activityIds @@ -93,7 +92,7 @@ public class MoveActivityLonglinesUIAction extends MoveMultipleDataUIActionSuppo // Let's reload the sub tree of each activities node. // As the change have already be done in database, we just call the child loaders to regenerate the activities nodes sub trees treeHelper.reloadNodeSubTree(oldActivitiesNode); - treeHelper.reloadNodeSubTree(newActivitiesNode); + treeHelper.reloadNodeSubTree(newActivitiesNode, true); // Let's put the focus on the activities node which received the activities treeHelper.selectSafeNode(newActivitiesNode); ===================================== client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveActivitySeineUIAction.java ===================================== @@ -25,14 +25,10 @@ import fr.ird.observe.client.ObserveSwingApplicationContext; import fr.ird.observe.client.ui.ObserveMainUI; import fr.ird.observe.client.ui.tree.navigation.NavigationTree; import fr.ird.observe.client.ui.tree.navigation.nodes.NavigationTreeNodeSupport; -import fr.ird.observe.client.ui.tree.navigation.nodes.seine.RouteSeineNavigationTreeNode; -import fr.ird.observe.client.ui.util.DecoratedNodeEntity; import fr.ird.observe.dto.data.seine.ActivitySeineDto; import fr.ird.observe.dto.data.seine.RouteReference; -import fr.ird.observe.dto.decoration.ObserveI18nDecoratorHelper; import fr.ird.observe.dto.decoration.decorators.DataReferenceDecorator; -import javax.swing.JOptionPane; import java.util.Optional; import static io.ultreia.java4all.i18n.I18n.n; @@ -60,7 +56,7 @@ public class MoveActivitySeineUIAction extends MoveSingleDataUIActionSupport { } @Override - Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport oldParentNode) { + Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport<?> oldParentNode) { return chooseNewRoute(mainUI, oldParentNode); } @@ -75,45 +71,21 @@ public class MoveActivitySeineUIAction extends MoveSingleDataUIActionSupport { } @Override - NavigationTreeNodeSupport getNewParentNode(NavigationTree treeHelper, NavigationTreeNodeSupport grandParentNode, String newParentId) { - NavigationTreeNodeSupport routeNode = treeHelper.getChild(grandParentNode, newParentId); - String activitiesNodeId = ObserveI18nDecoratorHelper.getTypePluralI18nKey(ActivitySeineDto.class); - return treeHelper.getChild(routeNode, activitiesNodeId); + NavigationTreeNodeSupport<?> getNewParentNode(NavigationTree treeHelper, NavigationTreeNodeSupport<?> grandParentNode, String newParentId) { + NavigationTreeNodeSupport<?> parentNode = grandParentNode.findChildById(newParentId); + return parentNode.findChildByClass( ActivitySeineDto.class); } - static Optional<String> chooseNewRoute(ObserveMainUI mainUI, NavigationTreeNodeSupport oldParentNode) { + static Optional<String> chooseNewRoute(ObserveMainUI mainUI, NavigationTreeNodeSupport<?> oldParentNode) { - NavigationTreeNodeSupport routesNode = oldParentNode.getParent(); - String oldRouteId = oldParentNode.getId(); - int routeNb = routesNode.getChildCount(); + NavigationTreeNodeSupport<?> grandParentNode = oldParentNode.getParent(); + String oldId = oldParentNode.getId(); ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); DataReferenceDecorator<RouteReference> decorator = applicationContext.getDecoratorService().getDataReferenceDecorator(RouteReference.class); - //on crée un tableau avec une route en moins car on ne propose pas la route actuel - DecoratedNodeEntity[] decoratedRoutes = new DecoratedNodeEntity[routeNb - 1]; - - int j = 0; - for (int i = 0; i < routeNb; i++) { - - RouteSeineNavigationTreeNode routeNode = (RouteSeineNavigationTreeNode) routesNode.getChildAt(i); - - String routeId = routeNode.getId(); - - if (!oldRouteId.equals(routeId)) { - decoratedRoutes[j++] = DecoratedNodeEntity.newDecoratedNodeEntity(routeNode, decorator); - } - } - - Object decoratedRoute = JOptionPane.showInputDialog(mainUI, - t("observe.action.choose.route.message"), - t("observe.action.choose.route.title"), - JOptionPane.QUESTION_MESSAGE, - null, - decoratedRoutes, - null); - - return Optional.ofNullable(decoratedRoute != null ? ((DecoratedNodeEntity) decoratedRoute).getId() : null); + return chooseCandidate(mainUI, grandParentNode, oldId, decorator, t("observe.action.choose.route.message"), + t("observe.action.choose.route.title")); } } ===================================== client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveActivitySeinesUIAction.java ===================================== @@ -29,9 +29,9 @@ import fr.ird.observe.client.ui.content.data.seine.ActivitySeinesUI; import fr.ird.observe.client.ui.tree.navigation.NavigationTree; import fr.ird.observe.client.ui.tree.navigation.nodes.NavigationTreeNodeSupport; import fr.ird.observe.dto.data.seine.ActivitySeineDto; -import fr.ird.observe.dto.decoration.ObserveI18nDecoratorHelper; import java.util.List; +import java.util.Objects; import java.util.Optional; import static io.ultreia.java4all.i18n.I18n.n; @@ -59,7 +59,7 @@ public class MoveActivitySeinesUIAction extends MoveMultipleDataUIActionSupport< } @Override - Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport oldParentNode) { + Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport<?> oldParentNode) { return MoveActivitySeineUIAction.chooseNewRoute(getMainUI(), oldParentNode); } @@ -69,17 +69,16 @@ public class MoveActivitySeinesUIAction extends MoveMultipleDataUIActionSupport< } @Override - void updateUI(ActivitySeinesUI ui, NavigationTreeNodeSupport oldParentNode, String newParentId, ImmutableSet<String> dataIds, List<Integer> positions) { + void updateUI(ActivitySeinesUI ui, NavigationTreeNodeSupport<?> oldParentNode, String newParentId, ImmutableSet<String> dataIds, List<Integer> positions) { ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); ObserveOpenDataManager openDataManager = applicationContext.getOpenDataManager(); NavigationTree treeHelper = getMainUI().getNavigationUI().getTree(); - NavigationTreeNodeSupport oldRouteNode = oldParentNode.getParent(); - NavigationTreeNodeSupport routesNode = oldRouteNode.getParent(); - NavigationTreeNodeSupport newRouteNode = treeHelper.getChild(routesNode, newParentId); - String activitiesNodeId = ObserveI18nDecoratorHelper.getTypePluralI18nKey(ActivitySeineDto.class); - NavigationTreeNodeSupport newActivitiesNode = treeHelper.getChild(newRouteNode, activitiesNodeId); + NavigationTreeNodeSupport<?> oldRouteNode = Objects.requireNonNull(oldParentNode.getParent()); + NavigationTreeNodeSupport<?> routesNode = Objects.requireNonNull(oldRouteNode.getParent()); + NavigationTreeNodeSupport<?> newRouteNode = Objects.requireNonNull(routesNode.findChildById(newParentId)); + NavigationTreeNodeSupport<?> newActivitiesNode = Objects.requireNonNull(newRouteNode.findChildByClass(ActivitySeineDto.class)); // Let's check if we're moving an open activity Optional<String> openActivity = dataIds @@ -93,7 +92,7 @@ public class MoveActivitySeinesUIAction extends MoveMultipleDataUIActionSupport< // Let's reload the sub tree of each activities node. // As the change have already be done in database, we just call the child loaders to regenerate the activities nodes sub trees treeHelper.reloadNodeSubTree(oldParentNode); - treeHelper.reloadNodeSubTree(newActivitiesNode); + treeHelper.reloadNodeSubTree(newActivitiesNode, true); // Let's put the focus on the activities node which received the activities treeHelper.selectSafeNode(newActivitiesNode); ===================================== client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveMultipleDataUIActionSupport.java ===================================== @@ -73,9 +73,9 @@ public abstract class MoveMultipleDataUIActionSupport<U extends ContentListUI<?, @SuppressWarnings("unchecked") U ui = (U) ui1; NavigationTree treeHelper = getMainUI().getNavigationUI().getTree(); - NavigationTreeNodeSupport node = treeHelper.getSelectedNode(); + NavigationTreeNodeSupport<?> node = treeHelper.getSelectedNode(); - NavigationTreeNodeSupport oldParentNode = node.getParent().isRoot() ? node : node.getParent(); + NavigationTreeNodeSupport<?> oldParentNode = node.getParent().isRoot() ? node : node.getParent(); Optional<String> optionalNewParentId = getNewParentId(getMainUI(), oldParentNode); @@ -90,10 +90,10 @@ public abstract class MoveMultipleDataUIActionSupport<U extends ContentListUI<?, } - abstract Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport oldParentNode); + abstract Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport<?> oldParentNode); abstract List<Integer> moveData(ImmutableSet<String> dataIds, String newParentId); - abstract void updateUI(U ui, NavigationTreeNodeSupport oldParentNode, String newParentId, ImmutableSet<String> dataIds, List<Integer> positions); + abstract void updateUI(U ui, NavigationTreeNodeSupport<?> oldParentNode, String newParentId, ImmutableSet<String> dataIds, List<Integer> positions); } ===================================== client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveRouteUIAction.java ===================================== @@ -25,14 +25,10 @@ import fr.ird.observe.client.ObserveSwingApplicationContext; import fr.ird.observe.client.ui.ObserveMainUI; import fr.ird.observe.client.ui.tree.navigation.NavigationTree; import fr.ird.observe.client.ui.tree.navigation.nodes.NavigationTreeNodeSupport; -import fr.ird.observe.client.ui.tree.navigation.nodes.seine.TripSeineNavigationTreeNode; -import fr.ird.observe.client.ui.util.DecoratedNodeEntity; import fr.ird.observe.dto.data.seine.RouteDto; import fr.ird.observe.dto.data.seine.TripSeineReference; -import fr.ird.observe.dto.decoration.ObserveI18nDecoratorHelper; import fr.ird.observe.dto.decoration.decorators.DataReferenceDecorator; -import javax.swing.JOptionPane; import java.util.Optional; import static io.ultreia.java4all.i18n.I18n.n; @@ -60,7 +56,7 @@ public class MoveRouteUIAction extends MoveSingleDataUIActionSupport { } @Override - Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport oldParentNode) { + Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport<?> oldParentNode) { return chooseNewTripSeine(mainUI, oldParentNode); } @@ -75,43 +71,20 @@ public class MoveRouteUIAction extends MoveSingleDataUIActionSupport { } @Override - NavigationTreeNodeSupport getNewParentNode(NavigationTree treeHelper, NavigationTreeNodeSupport grandParentNode, String newParentId) { - NavigationTreeNodeSupport tripNode = treeHelper.getChild(grandParentNode, newParentId); - String routesNodeId = ObserveI18nDecoratorHelper.getTypePluralI18nKey(RouteDto.class); - return treeHelper.getChild(tripNode, routesNodeId); + NavigationTreeNodeSupport<?> getNewParentNode(NavigationTree treeHelper, NavigationTreeNodeSupport<?> grandParentNode, String newParentId) { + NavigationTreeNodeSupport<?> parentNode = grandParentNode.findChildById(newParentId); + return parentNode.findChildByClass(RouteDto.class); } - static Optional<String> chooseNewTripSeine(ObserveMainUI mainUI, NavigationTreeNodeSupport oldTripSeineNode) { - NavigationTreeNodeSupport programNode = oldTripSeineNode.getParent(); - String oldTripSeineId = oldTripSeineNode.getId(); - int tripSeineNb = programNode.getChildCount(); + static Optional<String> chooseNewTripSeine(ObserveMainUI mainUI, NavigationTreeNodeSupport<?> oldParentNode) { + NavigationTreeNodeSupport<?> grandParentNode = oldParentNode.getParent(); + String oldId = oldParentNode.getId(); ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); DataReferenceDecorator<TripSeineReference> decorator = applicationContext.getDecoratorService().getDataReferenceDecorator(TripSeineReference.class); - //on crée un tableau avec une marée en moins car on ne propose pas la marée actuel - DecoratedNodeEntity[] decoratedTripSeines = new DecoratedNodeEntity[tripSeineNb - 1]; - - int j = 0; - for (int i = 0; i < tripSeineNb; i++) { - - TripSeineNavigationTreeNode tripSeineNode = (TripSeineNavigationTreeNode) programNode.getChildAt(i); - - String tripSeineId = tripSeineNode.getId(); - - if (!oldTripSeineId.equals(tripSeineId)) { - decoratedTripSeines[j++] = DecoratedNodeEntity.newDecoratedNodeEntity(tripSeineNode, decorator); - } - } - - Object decoratedTripSeine = JOptionPane.showInputDialog(mainUI, - t("observe.action.choose.tripSeine.message"), - t("observe.action.choose.tripSeine.title"), - JOptionPane.QUESTION_MESSAGE, - null, - decoratedTripSeines, - null); - return Optional.ofNullable(decoratedTripSeine != null ? ((DecoratedNodeEntity) decoratedTripSeine).getId() : null); + return chooseCandidate(mainUI, grandParentNode, oldId, decorator, t("observe.action.choose.tripSeine.message"), + t("observe.action.choose.tripSeine.title")); } } ===================================== client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveRoutesUIAction.java ===================================== @@ -28,9 +28,9 @@ import fr.ird.observe.client.ui.content.data.seine.RoutesUI; import fr.ird.observe.client.ui.tree.navigation.NavigationTree; import fr.ird.observe.client.ui.tree.navigation.nodes.NavigationTreeNodeSupport; import fr.ird.observe.dto.data.seine.RouteDto; -import fr.ird.observe.dto.decoration.ObserveI18nDecoratorHelper; import java.util.List; +import java.util.Objects; import java.util.Optional; import static io.ultreia.java4all.i18n.I18n.n; @@ -58,7 +58,7 @@ public class MoveRoutesUIAction extends MoveMultipleDataUIActionSupport<RoutesUI } @Override - Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport oldParentNode) { + Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport<?> oldParentNode) { return MoveRouteUIAction.chooseNewTripSeine(getMainUI(), oldParentNode); } @@ -69,16 +69,15 @@ public class MoveRoutesUIAction extends MoveMultipleDataUIActionSupport<RoutesUI @Override - void updateUI(RoutesUI ui, NavigationTreeNodeSupport oldRoutesNode, String tripSeineId, ImmutableSet<String> routeIds, List<Integer> positions) { + void updateUI(RoutesUI ui, NavigationTreeNodeSupport<?> oldRoutesNode, String tripSeineId, ImmutableSet<String> routeIds, List<Integer> positions) { ObserveOpenDataManager openDataManager = getOpenDataManager(); NavigationTree treeHelper = getMainUI().getNavigationUI().getTree(); - NavigationTreeNodeSupport oldTripSeineNode = oldRoutesNode.getParent(); - NavigationTreeNodeSupport programNode = oldTripSeineNode.getParent(); - NavigationTreeNodeSupport newTripSeineNode = treeHelper.getChild(programNode, tripSeineId); - String routesNodeId = ObserveI18nDecoratorHelper.getTypePluralI18nKey(RouteDto.class); - NavigationTreeNodeSupport newRoutesNode = treeHelper.getChild(newTripSeineNode, routesNodeId); + NavigationTreeNodeSupport<?> oldTripSeineNode = Objects.requireNonNull(oldRoutesNode.getParent()); + NavigationTreeNodeSupport<?> programNode = Objects.requireNonNull(oldTripSeineNode.getParent()); + NavigationTreeNodeSupport<?> newTripSeineNode = Objects.requireNonNull(programNode.findChildById(tripSeineId)); + NavigationTreeNodeSupport<?> newRoutesNode = Objects.requireNonNull(newTripSeineNode.findChildByClass(RouteDto.class)); // Let's check if we're moving an open route Optional<String> openRoute = routeIds @@ -92,7 +91,7 @@ public class MoveRoutesUIAction extends MoveMultipleDataUIActionSupport<RoutesUI // Let's reload the sub tree of each routes node. // As the change have already be done in database, we just call the child loaders to regenerate the routes nodes sub trees treeHelper.reloadNodeSubTree(oldRoutesNode); - treeHelper.reloadNodeSubTree(newRoutesNode); + treeHelper.reloadNodeSubTree(newRoutesNode, true); // 1. Select the newRoutesNode : // only a selected node can be reloaded (@see fr.ird.observe.client.ui.tree.ObserveTreeBridge.canLoadChild). ===================================== client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveSingleDataUIActionSupport.java ===================================== @@ -28,10 +28,18 @@ import fr.ird.observe.client.ui.ObserveMainUI; import fr.ird.observe.client.ui.actions.UIActionSupport; import fr.ird.observe.client.ui.tree.navigation.NavigationTree; import fr.ird.observe.client.ui.tree.navigation.nodes.NavigationTreeNodeSupport; +import fr.ird.observe.client.ui.tree.navigation.nodes.ReferenceNavigationTreeNodeSupport; +import fr.ird.observe.client.ui.util.DecoratedNodeEntity; +import fr.ird.observe.dto.decoration.decorators.ObserveDecorator; +import javax.swing.JOptionPane; import javax.swing.SwingUtilities; import java.awt.event.ActionEvent; +import java.util.ArrayList; +import java.util.Enumeration; +import java.util.List; import java.util.Optional; +import java.util.function.Predicate; /** * Created by tchemit on 12/06/17. @@ -52,22 +60,22 @@ public abstract class MoveSingleDataUIActionSupport extends UIActionSupport { public final void actionPerformed(ActionEvent e) { NavigationTree treeHelper = getMainUI().getNavigationUI().getTree(); - NavigationTreeNodeSupport node = treeHelper.getSelectedNode(); - NavigationTreeNodeSupport oldParentNode = node.getParent().getParent().equals(node.getRoot()) ? node.getParent() : node.getParent().getParent(); + NavigationTreeNodeSupport<?> node = treeHelper.getSelectedNode(); + NavigationTreeNodeSupport<?> oldParentNode = node.getParent().getParent().equals(node.getRoot()) ? node.getParent() : node.getParent().getParent(); Optional<String> optionalNewParentId = getNewParentId(getMainUI(), oldParentNode); optionalNewParentId.ifPresent(newParentId -> SwingUtilities.invokeLater(() -> apply(oldParentNode, node.getId(), newParentId))); } - abstract Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport oldParentNode); + abstract Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport<?> oldParentNode); - private void apply(NavigationTreeNodeSupport oldParentNode, String dataId, String newParentId) { + private void apply(NavigationTreeNodeSupport<?> oldParentNode, String dataId, String newParentId) { NavigationTree treeHelper = getMainUI().getNavigationUI().getTree(); - NavigationTreeNodeSupport node = treeHelper.getSelectedNode(); - NavigationTreeNodeSupport grandParentNode = oldParentNode.getParent(); - NavigationTreeNodeSupport newParentNode = getNewParentNode(treeHelper, grandParentNode, newParentId); + NavigationTreeNodeSupport<?> node = treeHelper.getSelectedNode(); + NavigationTreeNodeSupport<?> grandParentNode = oldParentNode.getParent(); + NavigationTreeNodeSupport<?> newParentNode = getNewParentNode(treeHelper, grandParentNode, newParentId); closeNode(node.getId()); @@ -77,7 +85,7 @@ public abstract class MoveSingleDataUIActionSupport extends UIActionSupport { treeHelper.removeNode(node); - NavigationTreeNodeSupport newNode = treeHelper.getChild(newParentNode, dataId); + NavigationTreeNodeSupport<?> newNode = treeHelper.getChild(newParentNode, dataId); if (newNode == null) { @@ -95,5 +103,38 @@ public abstract class MoveSingleDataUIActionSupport extends UIActionSupport { abstract void closeNode(String dataId); - abstract NavigationTreeNodeSupport getNewParentNode(NavigationTree treeHelper, NavigationTreeNodeSupport grandParentNode, String newParentId); + abstract NavigationTreeNodeSupport<?> getNewParentNode(NavigationTree treeHelper, NavigationTreeNodeSupport<?> grandParentNode, String newParentId); + + static Optional<String> chooseCandidate(ObserveMainUI mainUI, + NavigationTreeNodeSupport<?> grandParentNode, + String oldId, + ObserveDecorator<?> decorator, + String title, + String message) { + return chooseCandidate(mainUI, grandParentNode, decorator, title, message, n -> n instanceof ReferenceNavigationTreeNodeSupport<?, ?> && !oldId.equals(n.getId())); + } + + static Optional<String> chooseCandidate(ObserveMainUI mainUI, + NavigationTreeNodeSupport<?> grandParentNode, + ObserveDecorator<?> decorator, + String title, + String message, + Predicate<NavigationTreeNodeSupport<?>> filter) { + List<DecoratedNodeEntity> candidateList = new ArrayList<>(); + Enumeration<?> children = grandParentNode.children(); + while (children.hasMoreElements()) { + NavigationTreeNodeSupport<?> candidateNode = (NavigationTreeNodeSupport<?>) children.nextElement(); + if (filter.test(candidateNode)) { + candidateList.add(DecoratedNodeEntity.newDecoratedNodeEntity((ReferenceNavigationTreeNodeSupport<?, ?>) candidateNode, decorator)); + } + } + DecoratedNodeEntity selectedEntity = (DecoratedNodeEntity) JOptionPane.showInputDialog(mainUI, + title, + message, + JOptionPane.QUESTION_MESSAGE, + null, + candidateList.toArray(new DecoratedNodeEntity[0]), + null); + return Optional.ofNullable(selectedEntity).map(DecoratedNodeEntity::getId); + } } ===================================== client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveTripSeinesUIAction.java ===================================== @@ -54,7 +54,7 @@ public class MoveTripSeinesUIAction extends MoveTripsUIAction<TripSeinesUI> { @Override protected void updateModelData(TripSeinesUI ui) { TripSeinesUIModel model = ui.getModel(); - List<TripSeineReference> data = new ArrayList(model.getData()); + List<TripSeineReference> data = new ArrayList<>(model.getData()); data.removeAll(model.getSelectedDatas()); model.setData(data); } ===================================== client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveTripUIAction.java ===================================== @@ -25,17 +25,14 @@ import fr.ird.observe.client.ObserveSwingApplicationContext; import fr.ird.observe.client.ui.ObserveMainUI; import fr.ird.observe.client.ui.tree.navigation.NavigationTree; import fr.ird.observe.client.ui.tree.navigation.nodes.NavigationTreeNodeSupport; +import fr.ird.observe.client.ui.tree.navigation.nodes.ReferenceNavigationTreeNodeSupport; import fr.ird.observe.client.ui.tree.navigation.nodes.longline.ProgramLonglineNavigationTreeNode; import fr.ird.observe.client.ui.tree.navigation.nodes.seine.ProgramSeineNavigationTreeNode; -import fr.ird.observe.client.ui.util.DecoratedNodeEntity; import fr.ird.observe.dto.IdHelper; import fr.ird.observe.dto.decoration.decorators.ReferentialReferenceDecorator; import fr.ird.observe.dto.referential.GearType; import fr.ird.observe.dto.referential.ProgramReference; -import javax.swing.JOptionPane; -import java.util.ArrayList; -import java.util.List; import java.util.Optional; import static io.ultreia.java4all.i18n.I18n.t; @@ -65,7 +62,7 @@ public abstract class MoveTripUIAction extends MoveSingleDataUIActionSupport { } @Override - Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport oldParentNode) { + Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport<?> oldParentNode) { return chooseNewProgram(mainUI, gearType, oldParentNode.getId()); } @@ -88,58 +85,63 @@ public abstract class MoveTripUIAction extends MoveSingleDataUIActionSupport { } @Override - NavigationTreeNodeSupport getNewParentNode(NavigationTree treeHelper, NavigationTreeNodeSupport grandParentNode, String newParentId) { - return treeHelper.getChild(grandParentNode, newParentId); + NavigationTreeNodeSupport<?> getNewParentNode(NavigationTree treeHelper, NavigationTreeNodeSupport<?> grandParentNode, String newParentId) { + return grandParentNode.findChildById(newParentId); } - static Optional<String> chooseNewProgram(ObserveMainUI mainUI, GearType gearType, String oldProgramId) { + static Optional<String> chooseNewProgram(ObserveMainUI mainUI, GearType gearType, String oldId) { NavigationTree treeHelper = mainUI.getNavigationUI().getTree(); // racine - NavigationTreeNodeSupport rootNode = treeHelper.getRootNode(); - - //on crée un tableau avec un programme en moins car on ne propose pas le programme actuel - List<DecoratedNodeEntity> decoratedProgramList = new ArrayList<>(); - - ReferentialReferenceDecorator<ProgramReference> programDecorator = ObserveSwingApplicationContext.get().getDecoratorService().getReferentialReferenceDecorator(ProgramReference.class); - - for (int i = 0, n = rootNode.getChildCount(); i < n; i++) { - - NavigationTreeNodeSupport programNode = (NavigationTreeNodeSupport) rootNode.getChildAt(i); - String programId = programNode.getId(); - - // si le noeud programme n'est pas le même que le parent actuel - // si le noeud est bien un noeud de programme - if (programId != null && IdHelper.isProgramId(programId) && !oldProgramId.equals(programId)) { - - if (programNode instanceof ProgramSeineNavigationTreeNode && GearType.seine == gearType) { - - ProgramSeineNavigationTreeNode node = (ProgramSeineNavigationTreeNode) programNode; - decoratedProgramList.add(DecoratedNodeEntity.newDecoratedNodeEntity(node, programDecorator)); - - } else if (programNode instanceof ProgramLonglineNavigationTreeNode && GearType.longline == gearType) { - - ProgramLonglineNavigationTreeNode node = (ProgramLonglineNavigationTreeNode) programNode; - decoratedProgramList.add(DecoratedNodeEntity.newDecoratedNodeEntity(node, programDecorator)); - - } - - } - } - - DecoratedNodeEntity[] decoratedPrograms = - decoratedProgramList.toArray(new DecoratedNodeEntity[0]); - - DecoratedNodeEntity decoratedProgram = (DecoratedNodeEntity) JOptionPane.showInputDialog(mainUI, - t("observe.action.choose.program.message"), - t("observe.action.choose.program.title"), - JOptionPane.QUESTION_MESSAGE, - null, - decoratedPrograms, - null); - - return Optional.ofNullable(decoratedProgram == null ? null : decoratedProgram.getId()); + NavigationTreeNodeSupport<?> grandParentNode = treeHelper.getRootNode(); + + ReferentialReferenceDecorator<ProgramReference> decorator = ObserveSwingApplicationContext.get().getDecoratorService().getReferentialReferenceDecorator(ProgramReference.class); + + return chooseCandidate(mainUI, grandParentNode, decorator, t("observe.action.choose.program.message"), + t("observe.action.choose.program.title"), + node -> { + if (!(node instanceof ReferenceNavigationTreeNodeSupport<?, ?>)) { + return false; + } + ReferenceNavigationTreeNodeSupport<?, ?> candidateNode = (ReferenceNavigationTreeNodeSupport<?, ?>) node; + String candidateId = candidateNode.getId(); + return (candidateId != null && IdHelper.isProgramId(candidateId) && !oldId.equals(candidateId)) + && ((candidateNode instanceof ProgramSeineNavigationTreeNode && GearType.seine == gearType) + || (candidateNode instanceof ProgramLonglineNavigationTreeNode && GearType.longline == gearType)); + }); +// +// //on crée un tableau avec un programme en moins car on ne propose pas le programme actuel +// List<DecoratedNodeEntity> candidateList = new ArrayList<>(); +// +// +// Enumeration<?> children = grandParentNode.children(); +// while (children.hasMoreElements()) { +// NavigationTreeNodeSupport<?> node = (NavigationTreeNodeSupport<?>) children.nextElement(); +// if (!(node instanceof ReferenceNavigationTreeNodeSupport<?, ?>)) { +// continue; +// } +// ReferenceNavigationTreeNodeSupport<?, ?> candidateNode = (ReferenceNavigationTreeNodeSupport<?, ?>) node; +// String candidateId = candidateNode.getId(); +// // si le noeud programme n'est pas le même que le parent actuel +// // si le noeud est bien un noeud de programme +// if (candidateId != null && IdHelper.isProgramId(candidateId) && !oldId.equals(candidateId)) { +// if ((candidateNode instanceof ProgramSeineNavigationTreeNode && GearType.seine == gearType) +// || (candidateNode instanceof ProgramLonglineNavigationTreeNode && GearType.longline == gearType)) { +// candidateList.add(DecoratedNodeEntity.newDecoratedNodeEntity(candidateNode, decorator)); +// } +// } +// } +// +// DecoratedNodeEntity selectedEntity = (DecoratedNodeEntity) JOptionPane.showInputDialog(mainUI, +// t("observe.action.choose.program.message"), +// t("observe.action.choose.program.title"), +// JOptionPane.QUESTION_MESSAGE, +// null, +// candidateList.toArray(new DecoratedNodeEntity[0]), +// null); +// +// return Optional.ofNullable(selectedEntity).map(DecoratedNodeEntity::getId); } } ===================================== client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveTripsUIAction.java ===================================== @@ -66,12 +66,12 @@ public abstract class MoveTripsUIAction<U extends ContentListUI<?, ?, ?, ?>> ext } @Override - Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport oldParentNode) { + Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport<?> oldParentNode) { return MoveTripUIAction.chooseNewProgram(getMainUI(), gearType, oldParentNode.getId()); } @Override - void updateUI(U ui, NavigationTreeNodeSupport oldParentNode, String newParentId, ImmutableSet<String> dataIds, List<Integer> positions) { + void updateUI(U ui, NavigationTreeNodeSupport<?> oldParentNode, String newParentId, ImmutableSet<String> dataIds, List<Integer> positions) { String oldProgramId = oldParentNode.getId(); @@ -79,14 +79,14 @@ public abstract class MoveTripsUIAction<U extends ContentListUI<?, ?, ?, ?>> ext ObserveOpenDataManager openDataManager = applicationContext.getOpenDataManager(); NavigationTree treeHelper = getMainUI().getNavigationUI().getTree(); - NavigationTreeNodeSupport rootNode = treeHelper.getRootNode(); - NavigationTreeNodeSupport newProgramNode = treeHelper.getChild(rootNode, newParentId); + NavigationTreeNodeSupport<?> rootNode = treeHelper.getRootNode(); + NavigationTreeNodeSupport<?> newProgramNode = rootNode.findChildById(newParentId); UnmodifiableIterator<String> iterator = dataIds.iterator(); for (Integer position : positions) { String tripId = iterator.next(); - NavigationTreeNodeSupport tripNode = treeHelper.getChild(oldParentNode, tripId); + NavigationTreeNodeSupport<?> tripNode = oldParentNode.findChildById(tripId); boolean wasOpen = tripNode.isOpen(); treeHelper.removeNode(tripNode); @@ -95,7 +95,7 @@ public abstract class MoveTripsUIAction<U extends ContentListUI<?, ?, ?, ?>> ext openDataManager.openProgram(newParentId); } - NavigationTreeNodeSupport newTripNode = treeHelper.getChild(newProgramNode, tripId); + NavigationTreeNodeSupport<?> newTripNode = treeHelper.getChild(newProgramNode, tripId); if (newTripNode == null) { ===================================== client-core/src/main/java/fr/ird/observe/client/ui/tree/navigation/NavigationTree.java ===================================== @@ -407,20 +407,17 @@ public class NavigationTree extends JXTree { SwingUtilities.invokeLater(this::grabFocus); } - public void reloadNodeSubTree(NavigationTreeNodeSupport node) { - Objects.requireNonNull(node, "node is null, we can not reload its structure"); + public void reloadNodeSubTree(NavigationTreeNodeSupport<?> node) { + reloadNodeSubTree(node, false); + } - // 1. Let's clear node structure - while (node.getChildCount() > 0) { - removeNode((NavigationTreeNodeSupport) node.getFirstChild()); + public void reloadNodeSubTree(NavigationTreeNodeSupport<?> node, boolean expand) { + Objects.requireNonNull(node, "node is null, we can not reload its structure"); + getTreeModel().update(node); + if (expand) { + // Fix bug (if no child in parent node, it will not expand...) + fireTreeExpanded(new TreePath(node.getPath())); } - - // 3. Let's re-generate node's children by populating the node : this will call the child loaders. - node.updateNode(); - - // Fix bug (if no child in parent node, it will not expand...) - fireTreeExpanded(new TreePath(node.getPath())); - } public void reloadNode(NavigationTreeNodeSupport<?> node, boolean deep) { ===================================== client-core/src/main/java/fr/ird/observe/client/ui/tree/navigation/NavigationTreeModel.java ===================================== @@ -79,6 +79,11 @@ public class NavigationTreeModel extends DefaultTreeModel { super.reload(node); } + public <N extends NavigationTreeNodeSupport> void update(N node) { + node.updateNode(); + super.reload(node); + } + public <N extends NavigationTreeNodeSupport> void open(N node) { if (node instanceof WithChildsToReload) { boolean updated = node.populateChilds(); ===================================== client-core/src/main/java/fr/ird/observe/client/ui/tree/navigation/nodes/NavigationTreeNodeSupport.java ===================================== @@ -25,8 +25,8 @@ package fr.ird.observe.client.ui.tree.navigation.nodes; import fr.ird.observe.client.ui.actions.content.SelectNodeUIAction; import fr.ird.observe.client.ui.content.ContentUI; import fr.ird.observe.client.ui.tree.ObserveTreeNodeSupport; -import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.nuiton.jaxx.runtime.JAXXObject; import javax.swing.AbstractAction; @@ -163,9 +163,9 @@ public abstract class NavigationTreeNodeSupport<O> extends ObserveTreeNodeSuppor // au final le noeud est une feuille, donc ne convient pas return null; } - Enumeration<NavigationTreeNodeSupport> children = children(); + Enumeration<NavigationTreeNodeSupport<?>> children = children(); while (children.hasMoreElements()) { - NavigationTreeNodeSupport node = children.nextElement(); + NavigationTreeNodeSupport<?> node = children.nextElement(); if (childType.isAssignableFrom(node.getClass())) { return node; } @@ -187,10 +187,10 @@ public abstract class NavigationTreeNodeSupport<O> extends ObserveTreeNodeSuppor // au final le noeud est une feuille, donc ne convient pas return null; } - Enumeration<NavigationTreeNodeSupport> children = children(); + Enumeration<NavigationTreeNodeSupport<?>> children = children(); while (children.hasMoreElements()) { - NavigationTreeNodeSupport node = children.nextElement(); - if (childType.isAssignableFrom((Class) node.getUserObject())) { + NavigationTreeNodeSupport<?> node = children.nextElement(); + if (childType.isAssignableFrom(node.getDataType())) { return node; } } View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/195e34fb951a533cb69328d7… -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/195e34fb951a533cb69328d7… You're receiving this email because of your account on gitlab.com.
1 0
0 0
[Git][ultreiaio/ird-observe][develop-7.x] Petit problème sur déplacement d'activité - Closes #1435
by Tony CHEMIT 13 Feb '20

13 Feb '20
Tony CHEMIT pushed to branch develop-7.x at ultreiaio / ird-observe Commits: 195e34fb by tchemit at 2020-02-13T14:51:58+01:00 Petit problème sur déplacement d&#39;activité - Closes #1435 - - - - - 14 changed files: - client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveActivityLonglineUIAction.java - client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveActivityLonglinesUIAction.java - client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveActivitySeineUIAction.java - client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveActivitySeinesUIAction.java - client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveMultipleDataUIActionSupport.java - client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveRouteUIAction.java - client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveRoutesUIAction.java - client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveSingleDataUIActionSupport.java - client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveTripSeinesUIAction.java - client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveTripUIAction.java - client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveTripsUIAction.java - client-core/src/main/java/fr/ird/observe/client/ui/tree/navigation/NavigationTree.java - client-core/src/main/java/fr/ird/observe/client/ui/tree/navigation/NavigationTreeModel.java - client-core/src/main/java/fr/ird/observe/client/ui/tree/navigation/nodes/NavigationTreeNodeSupport.java Changes: ===================================== client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveActivityLonglineUIAction.java ===================================== @@ -29,7 +29,6 @@ import fr.ird.observe.client.ui.tree.navigation.nodes.longline.TripLonglineNavig import fr.ird.observe.client.ui.util.DecoratedNodeEntity; import fr.ird.observe.dto.data.longline.ActivityLonglineDto; import fr.ird.observe.dto.data.longline.TripLonglineReference; -import fr.ird.observe.dto.decoration.ObserveI18nDecoratorHelper; import fr.ird.observe.dto.decoration.decorators.DataReferenceDecorator; import javax.swing.JOptionPane; @@ -60,7 +59,7 @@ public class MoveActivityLonglineUIAction extends MoveSingleDataUIActionSupport } @Override - Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport oldParentNode) { + Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport<?> oldParentNode) { return chooseNewTripLongline(mainUI, oldParentNode); } @@ -76,15 +75,14 @@ public class MoveActivityLonglineUIAction extends MoveSingleDataUIActionSupport } @Override - NavigationTreeNodeSupport getNewParentNode(NavigationTree treeHelper, NavigationTreeNodeSupport grandParentNode, String newParentId) { - NavigationTreeNodeSupport tripLonglineNode = treeHelper.getChild(grandParentNode, newParentId); - String activitiesNodeId = ObserveI18nDecoratorHelper.getTypePluralI18nKey(ActivityLonglineDto.class); - return treeHelper.getChild(tripLonglineNode, activitiesNodeId); + NavigationTreeNodeSupport<?> getNewParentNode(NavigationTree treeHelper, NavigationTreeNodeSupport<?> grandParentNode, String newParentId) { + NavigationTreeNodeSupport<?> parentNode = grandParentNode.findChildById(newParentId); + return parentNode.findChildByClass(ActivityLonglineDto.class); } - static Optional<String> chooseNewTripLongline(ObserveMainUI ui, NavigationTreeNodeSupport oldParentNode) { + static Optional<String> chooseNewTripLongline(ObserveMainUI ui, NavigationTreeNodeSupport<?> oldParentNode) { - NavigationTreeNodeSupport programNode = oldParentNode.getParent(); + NavigationTreeNodeSupport<?> programNode = oldParentNode.getParent(); String oldTripLonglineId = oldParentNode.getId(); int tripLonglineNb = programNode.getChildCount(); ===================================== client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveActivityLonglinesUIAction.java ===================================== @@ -29,9 +29,9 @@ import fr.ird.observe.client.ui.content.data.longline.ActivityLonglinesUI; import fr.ird.observe.client.ui.tree.navigation.NavigationTree; import fr.ird.observe.client.ui.tree.navigation.nodes.NavigationTreeNodeSupport; import fr.ird.observe.dto.data.longline.ActivityLonglineDto; -import fr.ird.observe.dto.decoration.ObserveI18nDecoratorHelper; import java.util.List; +import java.util.Objects; import java.util.Optional; import static io.ultreia.java4all.i18n.I18n.n; @@ -64,22 +64,21 @@ public class MoveActivityLonglinesUIAction extends MoveMultipleDataUIActionSuppo } @Override - Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport oldParentNode) { + Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport<?> oldParentNode) { return MoveActivityLonglineUIAction.chooseNewTripLongline(getMainUI(), oldParentNode); } @Override - void updateUI(ActivityLonglinesUI ui, NavigationTreeNodeSupport oldActivitiesNode, String tripLonglineId, ImmutableSet<String> activityIds, List<Integer> positions) { + void updateUI(ActivityLonglinesUI ui, NavigationTreeNodeSupport<?> oldActivitiesNode, String tripLonglineId, ImmutableSet<String> activityIds, List<Integer> positions) { ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); ObserveOpenDataManager openDataManager = applicationContext.getOpenDataManager(); NavigationTree treeHelper = getMainUI().getNavigationUI().getTree(); - NavigationTreeNodeSupport oldTripLonglineNode = oldActivitiesNode.getParent(); - NavigationTreeNodeSupport programNode = oldTripLonglineNode.getParent(); - NavigationTreeNodeSupport newTripLonglineNode = treeHelper.getChild(programNode, tripLonglineId); - String activitiesNodeId = ObserveI18nDecoratorHelper.getTypePluralI18nKey(ActivityLonglineDto.class); - NavigationTreeNodeSupport newActivitiesNode = treeHelper.getChild(newTripLonglineNode, activitiesNodeId); + NavigationTreeNodeSupport<?> oldTripLonglineNode = Objects.requireNonNull(oldActivitiesNode.getParent()); + NavigationTreeNodeSupport<?> programNode = Objects.requireNonNull(oldTripLonglineNode.getParent()); + NavigationTreeNodeSupport<?> newTripLonglineNode = Objects.requireNonNull(programNode.findChildById(tripLonglineId)); + NavigationTreeNodeSupport<?> newActivitiesNode = Objects.requireNonNull(newTripLonglineNode.findChildByClass(ActivityLonglineDto.class)); // Let's check if we're moving an open activity Optional<String> openActivity = activityIds @@ -93,7 +92,7 @@ public class MoveActivityLonglinesUIAction extends MoveMultipleDataUIActionSuppo // Let's reload the sub tree of each activities node. // As the change have already be done in database, we just call the child loaders to regenerate the activities nodes sub trees treeHelper.reloadNodeSubTree(oldActivitiesNode); - treeHelper.reloadNodeSubTree(newActivitiesNode); + treeHelper.reloadNodeSubTree(newActivitiesNode, true); // Let's put the focus on the activities node which received the activities treeHelper.selectSafeNode(newActivitiesNode); ===================================== client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveActivitySeineUIAction.java ===================================== @@ -29,7 +29,6 @@ import fr.ird.observe.client.ui.tree.navigation.nodes.seine.RouteSeineNavigation import fr.ird.observe.client.ui.util.DecoratedNodeEntity; import fr.ird.observe.dto.data.seine.ActivitySeineDto; import fr.ird.observe.dto.data.seine.RouteReference; -import fr.ird.observe.dto.decoration.ObserveI18nDecoratorHelper; import fr.ird.observe.dto.decoration.decorators.DataReferenceDecorator; import javax.swing.JOptionPane; @@ -60,7 +59,7 @@ public class MoveActivitySeineUIAction extends MoveSingleDataUIActionSupport { } @Override - Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport oldParentNode) { + Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport<?> oldParentNode) { return chooseNewRoute(mainUI, oldParentNode); } @@ -75,15 +74,14 @@ public class MoveActivitySeineUIAction extends MoveSingleDataUIActionSupport { } @Override - NavigationTreeNodeSupport getNewParentNode(NavigationTree treeHelper, NavigationTreeNodeSupport grandParentNode, String newParentId) { - NavigationTreeNodeSupport routeNode = treeHelper.getChild(grandParentNode, newParentId); - String activitiesNodeId = ObserveI18nDecoratorHelper.getTypePluralI18nKey(ActivitySeineDto.class); - return treeHelper.getChild(routeNode, activitiesNodeId); + NavigationTreeNodeSupport<?> getNewParentNode(NavigationTree treeHelper, NavigationTreeNodeSupport<?> grandParentNode, String newParentId) { + NavigationTreeNodeSupport<?> parentNode = grandParentNode.findChildById(newParentId); + return parentNode.findChildByClass( ActivitySeineDto.class); } - static Optional<String> chooseNewRoute(ObserveMainUI mainUI, NavigationTreeNodeSupport oldParentNode) { + static Optional<String> chooseNewRoute(ObserveMainUI mainUI, NavigationTreeNodeSupport<?> oldParentNode) { - NavigationTreeNodeSupport routesNode = oldParentNode.getParent(); + NavigationTreeNodeSupport<?> routesNode = oldParentNode.getParent(); String oldRouteId = oldParentNode.getId(); int routeNb = routesNode.getChildCount(); ===================================== client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveActivitySeinesUIAction.java ===================================== @@ -29,9 +29,9 @@ import fr.ird.observe.client.ui.content.data.seine.ActivitySeinesUI; import fr.ird.observe.client.ui.tree.navigation.NavigationTree; import fr.ird.observe.client.ui.tree.navigation.nodes.NavigationTreeNodeSupport; import fr.ird.observe.dto.data.seine.ActivitySeineDto; -import fr.ird.observe.dto.decoration.ObserveI18nDecoratorHelper; import java.util.List; +import java.util.Objects; import java.util.Optional; import static io.ultreia.java4all.i18n.I18n.n; @@ -59,7 +59,7 @@ public class MoveActivitySeinesUIAction extends MoveMultipleDataUIActionSupport< } @Override - Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport oldParentNode) { + Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport<?> oldParentNode) { return MoveActivitySeineUIAction.chooseNewRoute(getMainUI(), oldParentNode); } @@ -69,17 +69,16 @@ public class MoveActivitySeinesUIAction extends MoveMultipleDataUIActionSupport< } @Override - void updateUI(ActivitySeinesUI ui, NavigationTreeNodeSupport oldParentNode, String newParentId, ImmutableSet<String> dataIds, List<Integer> positions) { + void updateUI(ActivitySeinesUI ui, NavigationTreeNodeSupport<?> oldParentNode, String newParentId, ImmutableSet<String> dataIds, List<Integer> positions) { ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); ObserveOpenDataManager openDataManager = applicationContext.getOpenDataManager(); NavigationTree treeHelper = getMainUI().getNavigationUI().getTree(); - NavigationTreeNodeSupport oldRouteNode = oldParentNode.getParent(); - NavigationTreeNodeSupport routesNode = oldRouteNode.getParent(); - NavigationTreeNodeSupport newRouteNode = treeHelper.getChild(routesNode, newParentId); - String activitiesNodeId = ObserveI18nDecoratorHelper.getTypePluralI18nKey(ActivitySeineDto.class); - NavigationTreeNodeSupport newActivitiesNode = treeHelper.getChild(newRouteNode, activitiesNodeId); + NavigationTreeNodeSupport<?> oldRouteNode = Objects.requireNonNull(oldParentNode.getParent()); + NavigationTreeNodeSupport<?> routesNode = Objects.requireNonNull(oldRouteNode.getParent()); + NavigationTreeNodeSupport<?> newRouteNode = Objects.requireNonNull(routesNode.findChildById(newParentId)); + NavigationTreeNodeSupport<?> newActivitiesNode = Objects.requireNonNull(newRouteNode.findChildByClass(ActivitySeineDto.class)); // Let's check if we're moving an open activity Optional<String> openActivity = dataIds @@ -93,7 +92,7 @@ public class MoveActivitySeinesUIAction extends MoveMultipleDataUIActionSupport< // Let's reload the sub tree of each activities node. // As the change have already be done in database, we just call the child loaders to regenerate the activities nodes sub trees treeHelper.reloadNodeSubTree(oldParentNode); - treeHelper.reloadNodeSubTree(newActivitiesNode); + treeHelper.reloadNodeSubTree(newActivitiesNode, true); // Let's put the focus on the activities node which received the activities treeHelper.selectSafeNode(newActivitiesNode); ===================================== client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveMultipleDataUIActionSupport.java ===================================== @@ -73,9 +73,9 @@ public abstract class MoveMultipleDataUIActionSupport<U extends ContentListUI<?, @SuppressWarnings("unchecked") U ui = (U) ui1; NavigationTree treeHelper = getMainUI().getNavigationUI().getTree(); - NavigationTreeNodeSupport node = treeHelper.getSelectedNode(); + NavigationTreeNodeSupport<?> node = treeHelper.getSelectedNode(); - NavigationTreeNodeSupport oldParentNode = node.getParent().isRoot() ? node : node.getParent(); + NavigationTreeNodeSupport<?> oldParentNode = node.getParent().isRoot() ? node : node.getParent(); Optional<String> optionalNewParentId = getNewParentId(getMainUI(), oldParentNode); @@ -90,10 +90,10 @@ public abstract class MoveMultipleDataUIActionSupport<U extends ContentListUI<?, } - abstract Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport oldParentNode); + abstract Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport<?> oldParentNode); abstract List<Integer> moveData(ImmutableSet<String> dataIds, String newParentId); - abstract void updateUI(U ui, NavigationTreeNodeSupport oldParentNode, String newParentId, ImmutableSet<String> dataIds, List<Integer> positions); + abstract void updateUI(U ui, NavigationTreeNodeSupport<?> oldParentNode, String newParentId, ImmutableSet<String> dataIds, List<Integer> positions); } ===================================== client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveRouteUIAction.java ===================================== @@ -29,7 +29,6 @@ import fr.ird.observe.client.ui.tree.navigation.nodes.seine.TripSeineNavigationT import fr.ird.observe.client.ui.util.DecoratedNodeEntity; import fr.ird.observe.dto.data.seine.RouteDto; import fr.ird.observe.dto.data.seine.TripSeineReference; -import fr.ird.observe.dto.decoration.ObserveI18nDecoratorHelper; import fr.ird.observe.dto.decoration.decorators.DataReferenceDecorator; import javax.swing.JOptionPane; @@ -60,7 +59,7 @@ public class MoveRouteUIAction extends MoveSingleDataUIActionSupport { } @Override - Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport oldParentNode) { + Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport<?> oldParentNode) { return chooseNewTripSeine(mainUI, oldParentNode); } @@ -75,14 +74,13 @@ public class MoveRouteUIAction extends MoveSingleDataUIActionSupport { } @Override - NavigationTreeNodeSupport getNewParentNode(NavigationTree treeHelper, NavigationTreeNodeSupport grandParentNode, String newParentId) { - NavigationTreeNodeSupport tripNode = treeHelper.getChild(grandParentNode, newParentId); - String routesNodeId = ObserveI18nDecoratorHelper.getTypePluralI18nKey(RouteDto.class); - return treeHelper.getChild(tripNode, routesNodeId); + NavigationTreeNodeSupport<?> getNewParentNode(NavigationTree treeHelper, NavigationTreeNodeSupport<?> grandParentNode, String newParentId) { + NavigationTreeNodeSupport<?> parentNode = grandParentNode.findChildById(newParentId); + return parentNode.findChildByClass(RouteDto.class); } - static Optional<String> chooseNewTripSeine(ObserveMainUI mainUI, NavigationTreeNodeSupport oldTripSeineNode) { - NavigationTreeNodeSupport programNode = oldTripSeineNode.getParent(); + static Optional<String> chooseNewTripSeine(ObserveMainUI mainUI, NavigationTreeNodeSupport<?> oldTripSeineNode) { + NavigationTreeNodeSupport<?> programNode = oldTripSeineNode.getParent(); String oldTripSeineId = oldTripSeineNode.getId(); int tripSeineNb = programNode.getChildCount(); ===================================== client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveRoutesUIAction.java ===================================== @@ -28,9 +28,9 @@ import fr.ird.observe.client.ui.content.data.seine.RoutesUI; import fr.ird.observe.client.ui.tree.navigation.NavigationTree; import fr.ird.observe.client.ui.tree.navigation.nodes.NavigationTreeNodeSupport; import fr.ird.observe.dto.data.seine.RouteDto; -import fr.ird.observe.dto.decoration.ObserveI18nDecoratorHelper; import java.util.List; +import java.util.Objects; import java.util.Optional; import static io.ultreia.java4all.i18n.I18n.n; @@ -58,7 +58,7 @@ public class MoveRoutesUIAction extends MoveMultipleDataUIActionSupport<RoutesUI } @Override - Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport oldParentNode) { + Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport<?> oldParentNode) { return MoveRouteUIAction.chooseNewTripSeine(getMainUI(), oldParentNode); } @@ -69,16 +69,15 @@ public class MoveRoutesUIAction extends MoveMultipleDataUIActionSupport<RoutesUI @Override - void updateUI(RoutesUI ui, NavigationTreeNodeSupport oldRoutesNode, String tripSeineId, ImmutableSet<String> routeIds, List<Integer> positions) { + void updateUI(RoutesUI ui, NavigationTreeNodeSupport<?> oldRoutesNode, String tripSeineId, ImmutableSet<String> routeIds, List<Integer> positions) { ObserveOpenDataManager openDataManager = getOpenDataManager(); NavigationTree treeHelper = getMainUI().getNavigationUI().getTree(); - NavigationTreeNodeSupport oldTripSeineNode = oldRoutesNode.getParent(); - NavigationTreeNodeSupport programNode = oldTripSeineNode.getParent(); - NavigationTreeNodeSupport newTripSeineNode = treeHelper.getChild(programNode, tripSeineId); - String routesNodeId = ObserveI18nDecoratorHelper.getTypePluralI18nKey(RouteDto.class); - NavigationTreeNodeSupport newRoutesNode = treeHelper.getChild(newTripSeineNode, routesNodeId); + NavigationTreeNodeSupport<?> oldTripSeineNode = Objects.requireNonNull(oldRoutesNode.getParent()); + NavigationTreeNodeSupport<?> programNode = Objects.requireNonNull(oldTripSeineNode.getParent()); + NavigationTreeNodeSupport<?> newTripSeineNode = Objects.requireNonNull(programNode.findChildById(tripSeineId)); + NavigationTreeNodeSupport<?> newRoutesNode = Objects.requireNonNull(newTripSeineNode.findChildByClass(RouteDto.class)); // Let's check if we're moving an open route Optional<String> openRoute = routeIds @@ -92,7 +91,7 @@ public class MoveRoutesUIAction extends MoveMultipleDataUIActionSupport<RoutesUI // Let's reload the sub tree of each routes node. // As the change have already be done in database, we just call the child loaders to regenerate the routes nodes sub trees treeHelper.reloadNodeSubTree(oldRoutesNode); - treeHelper.reloadNodeSubTree(newRoutesNode); + treeHelper.reloadNodeSubTree(newRoutesNode, true); // 1. Select the newRoutesNode : // only a selected node can be reloaded (@see fr.ird.observe.client.ui.tree.ObserveTreeBridge.canLoadChild). ===================================== client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveSingleDataUIActionSupport.java ===================================== @@ -52,22 +52,22 @@ public abstract class MoveSingleDataUIActionSupport extends UIActionSupport { public final void actionPerformed(ActionEvent e) { NavigationTree treeHelper = getMainUI().getNavigationUI().getTree(); - NavigationTreeNodeSupport node = treeHelper.getSelectedNode(); - NavigationTreeNodeSupport oldParentNode = node.getParent().getParent().equals(node.getRoot()) ? node.getParent() : node.getParent().getParent(); + NavigationTreeNodeSupport<?> node = treeHelper.getSelectedNode(); + NavigationTreeNodeSupport<?> oldParentNode = node.getParent().getParent().equals(node.getRoot()) ? node.getParent() : node.getParent().getParent(); Optional<String> optionalNewParentId = getNewParentId(getMainUI(), oldParentNode); optionalNewParentId.ifPresent(newParentId -> SwingUtilities.invokeLater(() -> apply(oldParentNode, node.getId(), newParentId))); } - abstract Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport oldParentNode); + abstract Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport<?> oldParentNode); - private void apply(NavigationTreeNodeSupport oldParentNode, String dataId, String newParentId) { + private void apply(NavigationTreeNodeSupport<?> oldParentNode, String dataId, String newParentId) { NavigationTree treeHelper = getMainUI().getNavigationUI().getTree(); - NavigationTreeNodeSupport node = treeHelper.getSelectedNode(); - NavigationTreeNodeSupport grandParentNode = oldParentNode.getParent(); - NavigationTreeNodeSupport newParentNode = getNewParentNode(treeHelper, grandParentNode, newParentId); + NavigationTreeNodeSupport<?> node = treeHelper.getSelectedNode(); + NavigationTreeNodeSupport<?> grandParentNode = oldParentNode.getParent(); + NavigationTreeNodeSupport<?> newParentNode = getNewParentNode(treeHelper, grandParentNode, newParentId); closeNode(node.getId()); @@ -77,7 +77,7 @@ public abstract class MoveSingleDataUIActionSupport extends UIActionSupport { treeHelper.removeNode(node); - NavigationTreeNodeSupport newNode = treeHelper.getChild(newParentNode, dataId); + NavigationTreeNodeSupport<?> newNode = treeHelper.getChild(newParentNode, dataId); if (newNode == null) { @@ -95,5 +95,5 @@ public abstract class MoveSingleDataUIActionSupport extends UIActionSupport { abstract void closeNode(String dataId); - abstract NavigationTreeNodeSupport getNewParentNode(NavigationTree treeHelper, NavigationTreeNodeSupport grandParentNode, String newParentId); + abstract NavigationTreeNodeSupport<?> getNewParentNode(NavigationTree treeHelper, NavigationTreeNodeSupport<?> grandParentNode, String newParentId); } ===================================== client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveTripSeinesUIAction.java ===================================== @@ -54,7 +54,7 @@ public class MoveTripSeinesUIAction extends MoveTripsUIAction<TripSeinesUI> { @Override protected void updateModelData(TripSeinesUI ui) { TripSeinesUIModel model = ui.getModel(); - List<TripSeineReference> data = new ArrayList(model.getData()); + List<TripSeineReference> data = new ArrayList<>(model.getData()); data.removeAll(model.getSelectedDatas()); model.setData(data); } ===================================== client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveTripUIAction.java ===================================== @@ -65,7 +65,7 @@ public abstract class MoveTripUIAction extends MoveSingleDataUIActionSupport { } @Override - Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport oldParentNode) { + Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport<?> oldParentNode) { return chooseNewProgram(mainUI, gearType, oldParentNode.getId()); } @@ -88,8 +88,8 @@ public abstract class MoveTripUIAction extends MoveSingleDataUIActionSupport { } @Override - NavigationTreeNodeSupport getNewParentNode(NavigationTree treeHelper, NavigationTreeNodeSupport grandParentNode, String newParentId) { - return treeHelper.getChild(grandParentNode, newParentId); + NavigationTreeNodeSupport<?> getNewParentNode(NavigationTree treeHelper, NavigationTreeNodeSupport<?> grandParentNode, String newParentId) { + return grandParentNode.findChildById(newParentId); } static Optional<String> chooseNewProgram(ObserveMainUI mainUI, GearType gearType, String oldProgramId) { @@ -97,7 +97,7 @@ public abstract class MoveTripUIAction extends MoveSingleDataUIActionSupport { NavigationTree treeHelper = mainUI.getNavigationUI().getTree(); // racine - NavigationTreeNodeSupport rootNode = treeHelper.getRootNode(); + NavigationTreeNodeSupport<?> rootNode = treeHelper.getRootNode(); //on crée un tableau avec un programme en moins car on ne propose pas le programme actuel List<DecoratedNodeEntity> decoratedProgramList = new ArrayList<>(); @@ -106,7 +106,7 @@ public abstract class MoveTripUIAction extends MoveSingleDataUIActionSupport { for (int i = 0, n = rootNode.getChildCount(); i < n; i++) { - NavigationTreeNodeSupport programNode = (NavigationTreeNodeSupport) rootNode.getChildAt(i); + NavigationTreeNodeSupport<?> programNode = (NavigationTreeNodeSupport<?>) rootNode.getChildAt(i); String programId = programNode.getId(); // si le noeud programme n'est pas le même que le parent actuel ===================================== client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveTripsUIAction.java ===================================== @@ -66,12 +66,12 @@ public abstract class MoveTripsUIAction<U extends ContentListUI<?, ?, ?, ?>> ext } @Override - Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport oldParentNode) { + Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport<?> oldParentNode) { return MoveTripUIAction.chooseNewProgram(getMainUI(), gearType, oldParentNode.getId()); } @Override - void updateUI(U ui, NavigationTreeNodeSupport oldParentNode, String newParentId, ImmutableSet<String> dataIds, List<Integer> positions) { + void updateUI(U ui, NavigationTreeNodeSupport<?> oldParentNode, String newParentId, ImmutableSet<String> dataIds, List<Integer> positions) { String oldProgramId = oldParentNode.getId(); @@ -79,14 +79,14 @@ public abstract class MoveTripsUIAction<U extends ContentListUI<?, ?, ?, ?>> ext ObserveOpenDataManager openDataManager = applicationContext.getOpenDataManager(); NavigationTree treeHelper = getMainUI().getNavigationUI().getTree(); - NavigationTreeNodeSupport rootNode = treeHelper.getRootNode(); - NavigationTreeNodeSupport newProgramNode = treeHelper.getChild(rootNode, newParentId); + NavigationTreeNodeSupport<?> rootNode = treeHelper.getRootNode(); + NavigationTreeNodeSupport<?> newProgramNode = rootNode.findChildById(newParentId); UnmodifiableIterator<String> iterator = dataIds.iterator(); for (Integer position : positions) { String tripId = iterator.next(); - NavigationTreeNodeSupport tripNode = treeHelper.getChild(oldParentNode, tripId); + NavigationTreeNodeSupport<?> tripNode = oldParentNode.findChildById(tripId); boolean wasOpen = tripNode.isOpen(); treeHelper.removeNode(tripNode); @@ -95,7 +95,7 @@ public abstract class MoveTripsUIAction<U extends ContentListUI<?, ?, ?, ?>> ext openDataManager.openProgram(newParentId); } - NavigationTreeNodeSupport newTripNode = treeHelper.getChild(newProgramNode, tripId); + NavigationTreeNodeSupport<?> newTripNode = treeHelper.getChild(newProgramNode, tripId); if (newTripNode == null) { ===================================== client-core/src/main/java/fr/ird/observe/client/ui/tree/navigation/NavigationTree.java ===================================== @@ -407,20 +407,17 @@ public class NavigationTree extends JXTree { SwingUtilities.invokeLater(this::grabFocus); } - public void reloadNodeSubTree(NavigationTreeNodeSupport node) { - Objects.requireNonNull(node, "node is null, we can not reload its structure"); + public void reloadNodeSubTree(NavigationTreeNodeSupport<?> node) { + reloadNodeSubTree(node, false); + } - // 1. Let's clear node structure - while (node.getChildCount() > 0) { - removeNode((NavigationTreeNodeSupport) node.getFirstChild()); + public void reloadNodeSubTree(NavigationTreeNodeSupport<?> node, boolean expand) { + Objects.requireNonNull(node, "node is null, we can not reload its structure"); + getTreeModel().update(node); + if (expand) { + // Fix bug (if no child in parent node, it will not expand...) + fireTreeExpanded(new TreePath(node.getPath())); } - - // 3. Let's re-generate node's children by populating the node : this will call the child loaders. - node.updateNode(); - - // Fix bug (if no child in parent node, it will not expand...) - fireTreeExpanded(new TreePath(node.getPath())); - } public void reloadNode(NavigationTreeNodeSupport<?> node, boolean deep) { ===================================== client-core/src/main/java/fr/ird/observe/client/ui/tree/navigation/NavigationTreeModel.java ===================================== @@ -79,6 +79,11 @@ public class NavigationTreeModel extends DefaultTreeModel { super.reload(node); } + public <N extends NavigationTreeNodeSupport> void update(N node) { + node.updateNode(); + super.reload(node); + } + public <N extends NavigationTreeNodeSupport> void open(N node) { if (node instanceof WithChildsToReload) { boolean updated = node.populateChilds(); ===================================== client-core/src/main/java/fr/ird/observe/client/ui/tree/navigation/nodes/NavigationTreeNodeSupport.java ===================================== @@ -25,8 +25,8 @@ package fr.ird.observe.client.ui.tree.navigation.nodes; import fr.ird.observe.client.ui.actions.content.SelectNodeUIAction; import fr.ird.observe.client.ui.content.ContentUI; import fr.ird.observe.client.ui.tree.ObserveTreeNodeSupport; -import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.nuiton.jaxx.runtime.JAXXObject; import javax.swing.AbstractAction; @@ -163,9 +163,9 @@ public abstract class NavigationTreeNodeSupport<O> extends ObserveTreeNodeSuppor // au final le noeud est une feuille, donc ne convient pas return null; } - Enumeration<NavigationTreeNodeSupport> children = children(); + Enumeration<NavigationTreeNodeSupport<?>> children = children(); while (children.hasMoreElements()) { - NavigationTreeNodeSupport node = children.nextElement(); + NavigationTreeNodeSupport<?> node = children.nextElement(); if (childType.isAssignableFrom(node.getClass())) { return node; } @@ -187,10 +187,10 @@ public abstract class NavigationTreeNodeSupport<O> extends ObserveTreeNodeSuppor // au final le noeud est une feuille, donc ne convient pas return null; } - Enumeration<NavigationTreeNodeSupport> children = children(); + Enumeration<NavigationTreeNodeSupport<?>> children = children(); while (children.hasMoreElements()) { - NavigationTreeNodeSupport node = children.nextElement(); - if (childType.isAssignableFrom((Class) node.getUserObject())) { + NavigationTreeNodeSupport<?> node = children.nextElement(); + if (childType.isAssignableFrom(node.getDataType())) { return node; } } View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/195e34fb951a533cb69328d7d… -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/195e34fb951a533cb69328d7d… You're receiving this email because of your account on gitlab.com.
1 0
0 0
[Git][ultreiaio/ird-observe][develop] 2 commits: [EXPORT CARTE] Le nom de fichier est généré sans l'extension PNG - Closes #1434
by Tony CHEMIT 13 Feb '20

13 Feb '20
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe Commits: 137b6b48 by tchemit at 2020-02-13T12:55:38+01:00 [EXPORT CARTE] Le nom de fichier est généré sans l&#39;extension PNG - Closes #1434 - - - - - 3d6870bc by tchemit at 2020-02-13T12:59:17+01:00 [LL] Contrôle sur nombre de baskets trop limité - Closes #1433 - - - - - 26 changed files: - client-core/src/main/java/fr/ird/observe/client/util/UIHelper.java - client-datasource-actions/src/main/java/fr/ird/observe/client/datasource/actions/report/actions/ChooseFileReport.java - client-datasource-editor-api/src/main/java/fr/ird/observe/client/datasource/editor/wizard/tabs/actions/ConfigDataUIChooseDumpFileAction.java - client-datasource-editor-api/src/main/java/fr/ird/observe/client/datasource/editor/wizard/tabs/actions/ConfigReferentialUIChooseDumpFileAction.java - client-datasource-editor-api/src/main/java/fr/ird/observe/client/datasource/editor/wizard/tabs/actions/ConfigUIChooseDumpFileAction.java - client-datasource-editor-common/src/main/java/fr/ird/observe/client/datasource/editor/content/data/trip/map/actions/ExportPng.java - client-datasource-editor-ll/pom.xml - client-datasource-editor-ll/src/main/i18n/getters/java.getter - client-datasource-editor-ll/src/main/i18n/getters/jaxx.getter - client-datasource-editor-ll/src/main/java/fr/ird/observe/client/datasource/editor/content/ObserveLLKeyStrokes.java - client-datasource-editor-ll/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ll/observation/SensorUsedUI.jaxx - client-datasource-editor-ll/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ll/observation/SensorUsedUI.jcss - client-datasource-editor-ll/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ll/observation/SensorUsedUIHandler.java - client-datasource-editor-ll/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ll/observation/TdrUI.jaxx - client-datasource-editor-ll/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ll/observation/TdrUI.jcss - client-datasource-editor-ll/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ll/observation/TdrUIHandler.java - + client-datasource-editor-ll/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ll/observation/actions/SensorUsedUIActionSupport.java - + client-datasource-editor-ll/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ll/observation/actions/SensorUsedUIDeleteData.java - + client-datasource-editor-ll/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ll/observation/actions/SensorUsedUIExportData.java - + client-datasource-editor-ll/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ll/observation/actions/SensorUsedUIImportData.java - + client-datasource-editor-ll/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ll/observation/actions/TdrUIActionSupport.java - + client-datasource-editor-ll/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ll/observation/actions/TdrUIDeleteData.java - + client-datasource-editor-ll/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ll/observation/actions/TdrUIExportData.java - + client-datasource-editor-ll/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ll/observation/actions/TdrUIImportData.java - validation/src/main/resources/fr/ird/observe/dto/data/ll/observation/SetDto-create-error-validation.xml - validation/src/main/resources/fr/ird/observe/dto/data/ll/observation/SetDto-update-error-validation.xml Changes: ===================================== client-core/src/main/java/fr/ird/observe/client/util/UIHelper.java ===================================== @@ -173,16 +173,16 @@ public class UIHelper extends SwingUtil { /** * Choisir un fichier via un sélecteur graphique de fichiers. * - * @param parent le component swing appelant le controle - * @param title le titre du dialogue de sélection - * @param buttonLabel le label du boutton d'acceptation - * @param incoming le fichier de base à utilier - * @param filters les filtres + descriptions sur le sélecteur de - * fichiers + * @param parent le component swing appelant le controle + * @param title le titre du dialogue de sélection + * @param buttonLabel le label du boutton d'acceptation + * @param incoming le fichier de base à utilier + * @param mainExtension l'extension principale (à rajouter sur le nom du fichier si besoin) + * @param filters les filtres + descriptions sur le sélecteur de fichiers * @return le fichier choisi ou le fichier incoming si l'opération a été * annulée */ - public static File chooseFile(Component parent, String title, String buttonLabel, File incoming, String... filters) { + public static File chooseFile(Component parent, String title, String buttonLabel, File incoming, String mainExtension, String... filters) { JaxxFileChooser.ToLoadFile toLoadFile = JaxxFileChooser.forLoadingFile() .setParent(parent) @@ -199,7 +199,7 @@ public class UIHelper extends SwingUtil { if (log.isDebugEnabled()) { log.debug(title + " : " + file); } - return file == null ? incoming : file; + return file == null ? incoming : ensureFileExtension(file, mainExtension); } /** @@ -229,6 +229,13 @@ public class UIHelper extends SwingUtil { return file; } + public static File ensureFileExtension(File file, String extension) { + if (extension != null && !file.getName().toLowerCase().endsWith(extension)) { + file = file.toPath().getParent().resolve(file.getName() + extension).toFile(); + } + return file; + } + private static File getParentDirectoryIfExist(File incoming) { if (incoming != null) { File basedir; ===================================== client-datasource-actions/src/main/java/fr/ird/observe/client/datasource/actions/report/actions/ChooseFileReport.java ===================================== @@ -26,6 +26,7 @@ import fr.ird.observe.client.datasource.actions.report.ReportConfigUI; import fr.ird.observe.client.datasource.actions.report.ReportModel; import fr.ird.observe.client.util.ObserveKeyStrokesSupport; import fr.ird.observe.client.util.UIHelper; +import fr.ird.observe.dto.ObserveUtil; import org.nuiton.jaxx.runtime.swing.action.JComponentActionSupport; import java.awt.event.ActionEvent; @@ -42,13 +43,13 @@ public class ChooseFileReport extends JComponentActionSupport<ReportConfigUI> { @Override protected void doActionPerformed(ActionEvent e, ReportConfigUI ui) { ReportModel model = ui.getModel().getReportModel(); - File f = UIHelper.chooseFile( - ui, - t("observe.title.choose.reportFile"), - t("observe.action.choose.reportFile"), - model.getReportFile(), - "^.+\\.properties$", - t("observe.action.choose.reportFile.description")); + File f = UIHelper.chooseFile(ui, + t("observe.title.choose.reportFile"), + t("observe.action.choose.reportFile"), + model.getReportFile(), + ObserveUtil.PROPERTIES_EXTENSION, + ObserveUtil.PROPERTIES_EXTENSION_PATTERN, + t("observe.action.choose.reportFile.description")); if (f != null) { model.setReportFile(f); } ===================================== client-datasource-editor-api/src/main/java/fr/ird/observe/client/datasource/editor/wizard/tabs/actions/ConfigDataUIChooseDumpFileAction.java ===================================== @@ -41,11 +41,12 @@ public class ConfigDataUIChooseDumpFileAction extends StorageTabUIActionSupport< @Override protected void doActionPerformed(ActionEvent e, ConfigDataUI ui) { File f = UIHelper.chooseFile(ui, - t("observe.title.choose.db.dump"), - t("observe.action.choose.db.dump"), - ui.getModel().getDumpFile(), - ObserveUtil.SQL_GZ_EXTENSION_PATTERN, - t("observe.action.choose.db.dump.description")); + t("observe.title.choose.db.dump"), + t("observe.action.choose.db.dump"), + ui.getModel().getDumpFile(), + ObserveUtil.SQL_GZ_EXTENSION, + ObserveUtil.SQL_GZ_EXTENSION_PATTERN, + t("observe.action.choose.db.dump.description")); if (f != null) { ui.getHandler().setDumpFile(f.getAbsolutePath()); } ===================================== client-datasource-editor-api/src/main/java/fr/ird/observe/client/datasource/editor/wizard/tabs/actions/ConfigReferentialUIChooseDumpFileAction.java ===================================== @@ -41,11 +41,12 @@ public class ConfigReferentialUIChooseDumpFileAction extends StorageTabUIActionS @Override protected void doActionPerformed(ActionEvent e, ConfigReferentialUI ui) { File f = UIHelper.chooseFile(ui, - t("observe.title.choose.db.dump"), - t("observe.action.choose.db.dump"), - ui.getModel().getDumpFile(), - ObserveUtil.SQL_GZ_EXTENSION_PATTERN, - t("observe.action.choose.db.dump.description")); + t("observe.title.choose.db.dump"), + t("observe.action.choose.db.dump"), + ui.getModel().getDumpFile(), + ObserveUtil.SQL_GZ_EXTENSION, + ObserveUtil.SQL_GZ_EXTENSION_PATTERN, + t("observe.action.choose.db.dump.description")); if (f != null) { ui.getHandler().setDumpFile(f.getAbsolutePath()); } ===================================== client-datasource-editor-api/src/main/java/fr/ird/observe/client/datasource/editor/wizard/tabs/actions/ConfigUIChooseDumpFileAction.java ===================================== @@ -41,11 +41,12 @@ public class ConfigUIChooseDumpFileAction extends StorageTabUIActionSupport<Conf @Override protected void doActionPerformed(ActionEvent event, ConfigUI ui) { File f = UIHelper.chooseFile(ui, - t("observe.title.choose.db.dump"), - t("observe.action.choose.db.dump"), - ui.getModel().getDumpFile(), - ObserveUtil.SQL_GZ_EXTENSION_PATTERN, - t("observe.action.choose.db.dump.description")); + t("observe.title.choose.db.dump"), + t("observe.action.choose.db.dump"), + ui.getModel().getDumpFile(), + ObserveUtil.SQL_GZ_EXTENSION, + ObserveUtil.SQL_GZ_EXTENSION_PATTERN, + t("observe.action.choose.db.dump.description")); if (f != null) { ui.getHandler().setDumpFile(f.getAbsolutePath()); } ===================================== client-datasource-editor-common/src/main/java/fr/ird/observe/client/datasource/editor/content/data/trip/map/actions/ExportPng.java ===================================== @@ -26,6 +26,7 @@ import fr.ird.observe.client.datasource.editor.content.data.trip.map.TripMapUI; import fr.ird.observe.client.util.ObserveKeyStrokesSupport; import fr.ird.observe.client.util.ObserveSwingTechnicalException; import fr.ird.observe.client.util.UIHelper; +import fr.ird.observe.dto.ObserveUtil; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -57,13 +58,13 @@ public class ExportPng extends TripMapUIActionSupport { @Override protected void doActionPerformed(ActionEvent event, TripMapUI ui) { - File file = UIHelper.chooseFile( - ui, - t("observe.content.map.export.chooseFile.title"), - t("observe.content.map.export.chooseFile.ok"), - null, - "^.+\\.png|.+\\.PNG$", - t("observe.content.map.export.chooseFile.png")); + File file = UIHelper.chooseFile(ui, + t("observe.content.map.export.chooseFile.title"), + t("observe.content.map.export.chooseFile.ok"), + null, + ObserveUtil.PNG_EXTENSION, + ObserveUtil.PNG_EXTENSION_PATTERN, + t("observe.content.map.export.chooseFile.png")); if (file != null && UIHelper.confirmOverwriteFileIfExist(ui, file)) { ===================================== client-datasource-editor-ll/pom.xml ===================================== @@ -137,10 +137,6 @@ <groupId>io.ultreia.java4all.jaxx</groupId> <artifactId>jaxx-widgets-datetime</artifactId> </dependency> - <dependency> - <groupId>io.ultreia.java4all.jaxx</groupId> - <artifactId>jaxx-widgets-status</artifactId> - </dependency> <dependency> <groupId>io.ultreia.java4all.jaxx</groupId> <artifactId>jaxx-widgets-select</artifactId> ===================================== client-datasource-editor-ll/src/main/i18n/getters/java.getter ===================================== @@ -225,7 +225,12 @@ observe.data.ll.observation.SensorUsed.action.importData observe.data.ll.observation.SensorUsed.choose.title.exportData observe.data.ll.observation.SensorUsed.choose.title.importData observe.data.ll.observation.SensorUsed.delete.data.message -observe.data.ll.observation.SensorUsed.message.data.exported +observe.data.ll.observation.SensorUsed.deleteData +observe.data.ll.observation.SensorUsed.deleteData.tip +observe.data.ll.observation.SensorUsed.exportData +observe.data.ll.observation.SensorUsed.exportData.tip +observe.data.ll.observation.SensorUsed.importData +observe.data.ll.observation.SensorUsed.importData.tip observe.data.ll.observation.SensorUsed.replace.data.message observe.data.ll.observation.SensorUsed.table.data observe.data.ll.observation.SensorUsed.table.data.tip @@ -289,7 +294,12 @@ observe.data.ll.observation.Tdr.action.exportData observe.data.ll.observation.Tdr.action.importData observe.data.ll.observation.Tdr.choose.title.exportData observe.data.ll.observation.Tdr.choose.title.importData -observe.data.ll.observation.Tdr.delete.data.message +observe.data.ll.observation.Tdr.deleteData +observe.data.ll.observation.Tdr.deleteData.tip +observe.data.ll.observation.Tdr.exportData +observe.data.ll.observation.Tdr.exportData.tip +observe.data.ll.observation.Tdr.importData +observe.data.ll.observation.Tdr.importData.tip observe.data.ll.observation.Tdr.replace.data.message observe.data.ll.observation.Tdr.table.data observe.data.ll.observation.Tdr.table.data.tip ===================================== client-datasource-editor-ll/src/main/i18n/getters/jaxx.getter ===================================== @@ -319,12 +319,6 @@ observe.data.ll.observation.SensorUsed.action.create.tip observe.data.ll.observation.SensorUsed.data observe.data.ll.observation.SensorUsed.dataLocation observe.data.ll.observation.SensorUsed.dataLocation.tip -observe.data.ll.observation.SensorUsed.deleteData -observe.data.ll.observation.SensorUsed.deleteData.tip -observe.data.ll.observation.SensorUsed.exportData -observe.data.ll.observation.SensorUsed.exportData.tip -observe.data.ll.observation.SensorUsed.importData -observe.data.ll.observation.SensorUsed.importData.tip observe.data.ll.observation.SensorUsed.sensorBrand observe.data.ll.observation.SensorUsed.sensorDataFormat observe.data.ll.observation.SensorUsed.sensorSerialNo @@ -414,22 +408,16 @@ observe.data.ll.observation.Tdr.caracteristicsTab observe.data.ll.observation.Tdr.data observe.data.ll.observation.Tdr.dataLocation observe.data.ll.observation.Tdr.dataLocation.tip -observe.data.ll.observation.Tdr.deleteData -observe.data.ll.observation.Tdr.deleteData.tip observe.data.ll.observation.Tdr.deployementEnd observe.data.ll.observation.Tdr.deployementStart observe.data.ll.observation.Tdr.enableTimestamp observe.data.ll.observation.Tdr.enableTimestamp.tip -observe.data.ll.observation.Tdr.exportData -observe.data.ll.observation.Tdr.exportData.tip observe.data.ll.observation.Tdr.fishingEnd observe.data.ll.observation.Tdr.fishingEndDepth observe.data.ll.observation.Tdr.fishingStart observe.data.ll.observation.Tdr.fishingStartDepth observe.data.ll.observation.Tdr.floatline1Length observe.data.ll.observation.Tdr.floatline2Length -observe.data.ll.observation.Tdr.importData -observe.data.ll.observation.Tdr.importData.tip observe.data.ll.observation.Tdr.itemHorizontalPosition observe.data.ll.observation.Tdr.itemVerticalPosition observe.data.ll.observation.Tdr.keyDataTab ===================================== client-datasource-editor-ll/src/main/java/fr/ird/observe/client/datasource/editor/content/ObserveLLKeyStrokes.java ===================================== @@ -41,4 +41,7 @@ public class ObserveLLKeyStrokes extends ObserveKeyStrokesSupport { public static final KeyStroke KEY_STROKE_ADD_SET_LONGLINE = KeyStroke.getKeyStroke("ctrl pressed L"); public static final KeyStroke KEY_STROKE_ADD_SAMPLE_LONGLINE = KeyStroke.getKeyStroke("ctrl pressed M"); public static final KeyStroke KEY_STROKE_GENERATE_ID = KeyStroke.getKeyStroke("ctrl pressed G"); + public static final KeyStroke KEY_STROKE_IMPORT_DATA = KeyStroke.getKeyStroke("ctrl pressed I"); + public static final KeyStroke KEY_STROKE_DELETE_DATA = KeyStroke.getKeyStroke("shift ctrl pressed D"); + public static final KeyStroke KEY_STROKE_EXPORT_DATA = KeyStroke.getKeyStroke("ctrl pressed E"); } ===================================== client-datasource-editor-ll/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ll/observation/SensorUsedUI.jaxx ===================================== @@ -126,9 +126,9 @@ </cell> <cell weightx='1' anchor='east'> <JPanel layout='{new GridLayout()}'> - <JButton id="importDataButton" onActionPerformed="getHandler().importData()"/> - <JButton id="exportDataButton" onActionPerformed="getHandler().exportData()"/> - <JButton id="deleteDataButton" onActionPerformed="getHandler().deleteData()"/> + <JButton id="importData"/> + <JButton id="exportData"/> + <JButton id="deleteData"/> </JPanel> </cell> </row> ===================================== client-datasource-editor-ll/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ll/observation/SensorUsedUI.jcss ===================================== @@ -24,22 +24,10 @@ toolTipText:"observe.data.ll.observation.SensorUsed.dataLocation.tip"; } -#importDataButton { - actionIcon:data-import; - text:"observe.data.ll.observation.SensorUsed.importData"; - toolTipText:"observe.data.ll.observation.SensorUsed.importData.tip"; -} - -#exportDataButton { - actionIcon:data-export; - text:"observe.data.ll.observation.SensorUsed.exportData"; - toolTipText:"observe.data.ll.observation.SensorUsed.exportData.tip"; +#exportData { enabled:{tableEditBean.isHasData()}; } -#deleteDataButton { - actionIcon:delete; - text:"observe.data.ll.observation.SensorUsed.deleteData"; - toolTipText:"observe.data.ll.observation.SensorUsed.deleteData.tip"; +#deleteData { enabled:{tableEditBean.isHasData()}; } ===================================== client-datasource-editor-ll/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ll/observation/SensorUsedUIHandler.java ===================================== @@ -22,13 +22,9 @@ package fr.ird.observe.client.datasource.editor.content.data.ll.observation; * #L% */ -import fr.ird.observe.client.ClientUIContextApplicationComponent; import fr.ird.observe.client.datasource.editor.content.data.table.ContentTableUIHandler; import fr.ird.observe.client.datasource.editor.content.data.table.ContentTableUILayoutFocusTraversalPolicy; -import fr.ird.observe.client.main.ObserveMainUI; -import fr.ird.observe.client.util.ObserveSwingTechnicalException; import fr.ird.observe.client.util.UIHelper; -import fr.ird.observe.dto.data.DataFileDto; import fr.ird.observe.dto.data.ll.observation.ActivitySensorUsedDto; import fr.ird.observe.dto.data.ll.observation.SensorUsedDto; import fr.ird.observe.dto.form.Form; @@ -39,19 +35,13 @@ import fr.ird.observe.dto.result.SaveResultDto; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.nuiton.jaxx.runtime.spi.UIHandler; -import org.nuiton.jaxx.widgets.file.JaxxFileChooser; -import javax.swing.JOptionPane; import javax.swing.JTable; import javax.swing.table.DefaultTableCellRenderer; import java.awt.Component; import java.awt.Container; -import java.io.File; -import java.io.IOException; -import java.nio.file.Files; import static io.ultreia.java4all.i18n.I18n.n; -import static io.ultreia.java4all.i18n.I18n.t; /** * Created on 8/31/14. @@ -138,78 +128,4 @@ public class SensorUsedUIHandler extends ContentTableUIHandler<ActivitySensorUse saveResult.toDto(bean); } - public void importData() { - SensorUsedDto tableEditBean = getModel().getTableEditBean(); - if (tableEditBean.isHasData()) { - DataFileDto dataFile = tableEditBean.getData(); - if (dataFile == null) { - dataFile = getLlObservationActivitySensorUsedService().getDataFile(tableEditBean.getId()); - } - int response = UIHelper.askUser(ui, - t("observe.title.confirmReplace"), - t("observe.data.ll.observation.SensorUsed.replace.data.message", dataFile.getName()), - JOptionPane.WARNING_MESSAGE, - new Object[]{t("observe.choice.confirm.replace"), - t("observe.choice.cancel")}, - 1); - boolean doReplace = response == 0; - if (!doReplace) { - return; - } - } - File file = UIHelper.chooseFile(ui, - t("observe.data.ll.observation.SensorUsed.choose.title.importData"), - t("observe.data.ll.observation.SensorUsed.action.importData"), - null); - if (file != null) { - log.info(prefix + "Set data from file: " + file); - DataFileDto dataFileDto = UIHelper.fileToDataFileDto(file); - tableEditBean.setData(dataFileDto); - tableEditBean.setHasData(true); - } - } - - public void deleteData() { - int response = UIHelper.askUser(ui, - t("observe.title.delete"), - t("observe.data.ll.observation.SensorUsed.delete.data.message"), - JOptionPane.WARNING_MESSAGE, - new Object[]{t("observe.choice.confirm.delete"), - t("observe.choice.cancel")}, - 1); - boolean doDelete = response == 0; - if (doDelete) { - SensorUsedDto tableEditBean = getModel().getTableEditBean(); - log.info(prefix + "Delete sensorUsed data " + tableEditBean.getData()); - tableEditBean.setData(null); - tableEditBean.setHasData(false); - } - } - - public void exportData() { - SensorUsedDto tableEditBean = getModel().getTableEditBean(); - DataFileDto dataFile = tableEditBean.getData(); - if (dataFile == null) { - dataFile = getLlObservationActivitySensorUsedService().getDataFile(tableEditBean.getId()); - } - File file = JaxxFileChooser - .forSaving() - .setParent(ui) - .setTitle(t("observe.data.ll.observation.SensorUsed.choose.title.exportData")) - .setApprovalText(t("observe.data.ll.observation.SensorUsed.action.exportData")) - .setFilename(dataFile.getName()) - .setUseAcceptAllFileFilter(true) - .choose(); - - if (file != null && UIHelper.confirmOverwriteFileIfExist(ui, file)) { - log.info(prefix + "save sensorUsed data to " + file); - try { - Files.write(file.toPath(), dataFile.getContent()); - ObserveMainUI mainUI = ClientUIContextApplicationComponent.value().getMainUI(); - mainUI.getStatus().setStatus(t("observe.data.ll.observation.SensorUsed.message.data.exported", file)); - } catch (IOException e) { - throw new ObserveSwingTechnicalException("Could not save binary data to " + file, e); - } - } - } } ===================================== client-datasource-editor-ll/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ll/observation/TdrUI.jaxx ===================================== @@ -133,9 +133,9 @@ </cell> <cell weightx='1' anchor='east'> <JPanel layout='{new GridLayout()}'> - <JButton id="importDataButton" onActionPerformed="getHandler().importData()"/> - <JButton id="exportDataButton" onActionPerformed="getHandler().exportData()"/> - <JButton id="deleteDataButton" onActionPerformed="getHandler().deleteData()"/> + <JButton id="importData"/> + <JButton id="exportData"/> + <JButton id="deleteData"/> </JPanel> </cell> </row> ===================================== client-datasource-editor-ll/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ll/observation/TdrUI.jcss ===================================== @@ -28,23 +28,11 @@ toolTipText:"observe.data.ll.observation.Tdr.dataLocation.tip"; } -#importDataButton { - actionIcon:data-import; - text:"observe.data.ll.observation.Tdr.importData"; - toolTipText:"observe.data.ll.observation.Tdr.importData.tip"; -} - -#exportDataButton { - actionIcon:data-export; - text:"observe.data.ll.observation.Tdr.exportData"; - toolTipText:"observe.data.ll.observation.Tdr.exportData.tip"; +#exportData { enabled:{tableEditBean.isHasData()}; } -#deleteDataButton { - actionIcon:delete; - text:"observe.data.ll.observation.Tdr.deleteData"; - toolTipText:"observe.data.ll.observation.Tdr.deleteData.tip"; +#deleteData { enabled:{tableEditBean.isHasData()}; } ===================================== client-datasource-editor-ll/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ll/observation/TdrUIHandler.java ===================================== @@ -22,16 +22,12 @@ package fr.ird.observe.client.datasource.editor.content.data.ll.observation; * #L% */ -import fr.ird.observe.client.ClientUIContextApplicationComponent; import fr.ird.observe.client.datasource.editor.content.data.table.ContentTableModel; import fr.ird.observe.client.datasource.editor.content.data.table.ContentTableUIHandler; import fr.ird.observe.client.datasource.editor.content.data.table.ContentTableUILayoutFocusTraversalPolicy; import fr.ird.observe.client.datasource.editor.content.data.table.ContentTableUIModel; import fr.ird.observe.client.datasource.editor.content.spi.ContentUIReferenceCache; -import fr.ird.observe.client.main.ObserveMainUI; -import fr.ird.observe.client.util.ObserveSwingTechnicalException; import fr.ird.observe.client.util.UIHelper; -import fr.ird.observe.dto.data.DataFileDto; import fr.ird.observe.dto.data.ll.observation.SetTdrDto; import fr.ird.observe.dto.data.ll.observation.TdrDto; import fr.ird.observe.dto.form.Form; @@ -40,20 +36,14 @@ import fr.ird.observe.dto.result.SaveResultDto; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.nuiton.jaxx.runtime.spi.UIHandler; -import org.nuiton.jaxx.widgets.file.JaxxFileChooser; import javax.swing.JComponent; -import javax.swing.JOptionPane; import javax.swing.JTable; import javax.swing.table.DefaultTableCellRenderer; -import java.io.File; -import java.io.IOException; -import java.nio.file.Files; import java.util.Date; import java.util.List; import static io.ultreia.java4all.i18n.I18n.n; -import static io.ultreia.java4all.i18n.I18n.t; /** * Created on 9/30/14. @@ -214,85 +204,6 @@ public class TdrUIHandler extends ContentTableUIHandler<SetTdrDto, TdrDto, TdrUI setTimestamp(bean, timeStamp); } - public void importData() { - TdrDto tableEditBean = getModel().getTableEditBean(); - if (tableEditBean.isHasData()) { - DataFileDto dataFile = tableEditBean.getData(); - if (dataFile == null) { - dataFile = getLlObservationSetTdrService().getDataFile(tableEditBean.getId()); - } - int response = UIHelper.askUser(ui, - t("observe.title.confirmReplace"), - t("observe.data.ll.observation.Tdr.replace.data.message", dataFile.getName()), - JOptionPane.WARNING_MESSAGE, - new Object[]{t("observe.choice.confirm.replace"), - t("observe.choice.cancel")}, - 1); - boolean doReplace = response == 0; - if (!doReplace) { - return; - } - } - - File file = UIHelper.chooseFile(ui, - t("observe.data.ll.observation.Tdr.choose.title.importData"), - t("observe.data.ll.observation.Tdr.action.importData"), - null); - if (file != null) { - log.info("Set data from file: " + file); - DataFileDto dataFileDto = UIHelper.fileToDataFileDto(file); - tableEditBean.setData(dataFileDto); - tableEditBean.setHasData(true); - } - } - - public void deleteData() { - int response = UIHelper.askUser(ui, - t("observe.title.delete"), - t("observe.data.ll.observation.Tdr.delete.data.message"), - JOptionPane.WARNING_MESSAGE, - new Object[]{t("observe.choice.confirm.delete"), - t("observe.choice.cancel")}, - 1); - boolean doDelete = response == 0; - if (doDelete) { - TdrDto tableEditBean = getModel().getTableEditBean(); - log.info("Delete tdr data " + tableEditBean.getData()); - tableEditBean.setData(null); - tableEditBean.setHasData(false); - } - } - - public void exportData() { - - TdrDto tableEditBean = getModel().getTableEditBean(); - DataFileDto dataFile = tableEditBean.getData(); - - if (dataFile == null) { - dataFile = getLlObservationSetTdrService().getDataFile(tableEditBean.getId()); - } - - File file = JaxxFileChooser - .forSaving() - .setParent(ui) - .setTitle(t("observe.data.ll.observation.Tdr.choose.title.exportData")) - .setApprovalText(t("observe.data.ll.observation.Tdr.action.exportData")) - .setFilename(dataFile.getName()) - .setUseAcceptAllFileFilter(true) - .choose(); - - if (file != null && UIHelper.confirmOverwriteFileIfExist(ui, file)) { - log.info("save tdr data to " + file); - try { - Files.write(file.toPath(), dataFile.getContent()); - ObserveMainUI mainUI = ClientUIContextApplicationComponent.value().getMainUI(); - mainUI.getStatus().setStatus(t("observe.data.ll.observation.SensorUsed.message.data.exported", file)); - } catch (IOException e) { - throw new ObserveSwingTechnicalException("Could not save binary data to " + file, e); - } - } - } - private void setTimestamp(TdrDto bean, Date timestamp) { bean.setDeployementStart(timestamp); bean.setDeployementEnd(timestamp); ===================================== client-datasource-editor-ll/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ll/observation/actions/SensorUsedUIActionSupport.java ===================================== @@ -0,0 +1,41 @@ +package fr.ird.observe.client.datasource.editor.content.data.ll.observation.actions; + +/*- + * #%L + * ObServe :: Client DataSource Editor LL + * %% + * 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 fr.ird.observe.client.datasource.editor.content.actions.ContentUIActionSupport; +import fr.ird.observe.client.datasource.editor.content.data.ll.observation.SensorUsedUI; + +import javax.swing.KeyStroke; + +/** + * @author Tony Chemit - dev(a)tchemit.fr + * @since 8 + */ +public abstract class SensorUsedUIActionSupport extends ContentUIActionSupport<SensorUsedUI> { + + protected SensorUsedUIActionSupport(String label, String shortDescription, String actionIcon, KeyStroke acceleratorKey) { + super(label, shortDescription, actionIcon, acceleratorKey); + } + +} + ===================================== client-datasource-editor-ll/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ll/observation/actions/SensorUsedUIDeleteData.java ===================================== @@ -0,0 +1,68 @@ +package fr.ird.observe.client.datasource.editor.content.data.ll.observation.actions; + +/*- + * #%L + * ObServe :: Client DataSource Editor LL + * %% + * 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 fr.ird.observe.client.datasource.editor.content.ObserveLLKeyStrokes; +import fr.ird.observe.client.datasource.editor.content.data.ll.observation.SensorUsedUI; +import fr.ird.observe.client.util.UIHelper; +import fr.ird.observe.dto.data.ll.observation.SensorUsedDto; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import javax.swing.JOptionPane; +import java.awt.event.ActionEvent; + +import static io.ultreia.java4all.i18n.I18n.n; +import static io.ultreia.java4all.i18n.I18n.t; + +/** + * @author Tony Chemit - dev(a)tchemit.fr + * @since ? + */ +public class SensorUsedUIDeleteData extends SensorUsedUIActionSupport { + + private static final Logger log = LogManager.getLogger(SensorUsedUIDeleteData.class); + + public SensorUsedUIDeleteData() { + super(n("observe.data.ll.observation.SensorUsed.deleteData"), n("observe.data.ll.observation.SensorUsed.deleteData.tip"), "delete", ObserveLLKeyStrokes.KEY_STROKE_DELETE_DATA); + } + + @Override + protected void doActionPerformed(ActionEvent e, SensorUsedUI ui) { + int response = UIHelper.askUser(ui, + t("observe.title.delete"), + t("observe.data.ll.observation.SensorUsed.delete.data.message"), + JOptionPane.WARNING_MESSAGE, + new Object[]{t("observe.choice.confirm.delete"), + t("observe.choice.cancel")}, + 1); + boolean doDelete = response == 0; + if (doDelete) { + SensorUsedDto tableEditBean = ui.getModel().getTableEditBean(); + log.info(String.format("%s Delete sensorUsed data %s", ui.getModel().getPrefix(), tableEditBean.getData())); + tableEditBean.setData(null); + tableEditBean.setHasData(false); + } + + } +} ===================================== client-datasource-editor-ll/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ll/observation/actions/SensorUsedUIExportData.java ===================================== @@ -0,0 +1,81 @@ +package fr.ird.observe.client.datasource.editor.content.data.ll.observation.actions; + +/*- + * #%L + * ObServe :: Client DataSource Editor LL + * %% + * 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 fr.ird.observe.client.datasource.editor.content.ObserveLLKeyStrokes; +import fr.ird.observe.client.datasource.editor.content.data.ll.observation.SensorUsedUI; +import fr.ird.observe.client.util.ObserveSwingTechnicalException; +import fr.ird.observe.client.util.UIHelper; +import fr.ird.observe.dto.data.DataFileDto; +import fr.ird.observe.dto.data.ll.observation.SensorUsedDto; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.nuiton.jaxx.widgets.file.JaxxFileChooser; + +import java.awt.event.ActionEvent; +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; + +import static io.ultreia.java4all.i18n.I18n.n; +import static io.ultreia.java4all.i18n.I18n.t; + +/** + * @author Tony Chemit - dev(a)tchemit.fr + * @since 8 + */ +public class SensorUsedUIExportData extends SensorUsedUIActionSupport { + + private static final Logger log = LogManager.getLogger(SensorUsedUIExportData.class); + + public SensorUsedUIExportData() { + super(n("observe.data.ll.observation.SensorUsed.exportData"), n("observe.data.ll.observation.SensorUsed.exportData.tip"), "data-export", ObserveLLKeyStrokes.KEY_STROKE_EXPORT_DATA); + } + + @Override + protected void doActionPerformed(ActionEvent event, SensorUsedUI ui) { + + SensorUsedDto tableEditBean = ui.getModel().getTableEditBean(); + DataFileDto dataFile = tableEditBean.getData(); + if (dataFile == null) { + dataFile = getDataSource().getLlObservationActivitySensorUsedService().getDataFile(tableEditBean.getId()); + } + File file = JaxxFileChooser + .forSaving() + .setParent(ui) + .setTitle(t("observe.data.ll.observation.SensorUsed.choose.title.exportData")) + .setApprovalText(t("observe.data.ll.observation.SensorUsed.action.exportData")) + .setFilename(dataFile.getName()) + .setUseAcceptAllFileFilter(true) + .choose(); + + if (file != null && UIHelper.confirmOverwriteFileIfExist(ui, file)) { + log.info(String.format("%s save sensorUsed data to %s", ui.getModel().getPrefix(), file)); + try { + Files.write(file.toPath(), dataFile.getContent()); + } catch (IOException e) { + throw new ObserveSwingTechnicalException("Could not save binary data to " + file, e); + } + } + } +} ===================================== client-datasource-editor-ll/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ll/observation/actions/SensorUsedUIImportData.java ===================================== @@ -0,0 +1,85 @@ +package fr.ird.observe.client.datasource.editor.content.data.ll.observation.actions; + +/*- + * #%L + * ObServe :: Client DataSource Editor LL + * %% + * 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 fr.ird.observe.client.datasource.editor.content.ObserveLLKeyStrokes; +import fr.ird.observe.client.datasource.editor.content.data.ll.observation.SensorUsedUI; +import fr.ird.observe.client.util.UIHelper; +import fr.ird.observe.dto.data.DataFileDto; +import fr.ird.observe.dto.data.ll.observation.SensorUsedDto; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import javax.swing.JOptionPane; +import java.awt.event.ActionEvent; +import java.io.File; + +import static io.ultreia.java4all.i18n.I18n.n; +import static io.ultreia.java4all.i18n.I18n.t; + +/** + * @author Tony Chemit - dev(a)tchemit.fr + * @since 8 + */ +public class SensorUsedUIImportData extends SensorUsedUIActionSupport { + + private static final Logger log = LogManager.getLogger(SensorUsedUIImportData.class); + + public SensorUsedUIImportData() { + super(n("observe.data.ll.observation.SensorUsed.importData"), n("observe.data.ll.observation.SensorUsed.importData.tip"), "data-import", ObserveLLKeyStrokes.KEY_STROKE_IMPORT_DATA); + } + + @Override + protected void doActionPerformed(ActionEvent e, SensorUsedUI ui) { + SensorUsedDto tableEditBean = ui.getModel().getTableEditBean(); + if (tableEditBean.isHasData()) { + DataFileDto dataFile = tableEditBean.getData(); + if (dataFile == null) { + dataFile = getDataSource().getLlObservationActivitySensorUsedService().getDataFile(tableEditBean.getId()); + } + int response = UIHelper.askUser(ui, + t("observe.title.confirmReplace"), + t("observe.data.ll.observation.SensorUsed.replace.data.message", dataFile.getName()), + JOptionPane.WARNING_MESSAGE, + new Object[]{t("observe.choice.confirm.replace"), + t("observe.choice.cancel")}, + 1); + boolean doReplace = response == 0; + if (!doReplace) { + return; + } + } + + File file = UIHelper.chooseFile(ui, + t("observe.data.ll.observation.SensorUsed.choose.title.importData"), + t("observe.data.ll.observation.SensorUsed.action.importData"), + null, + null); + if (file != null) { + log.info(String.format("%s Import sensorUsed data from file: %s", ui.getModel().getPrefix(), file)); + DataFileDto dataFileDto = UIHelper.fileToDataFileDto(file); + tableEditBean.setData(dataFileDto); + tableEditBean.setHasData(true); + } + } +} ===================================== client-datasource-editor-ll/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ll/observation/actions/TdrUIActionSupport.java ===================================== @@ -0,0 +1,52 @@ +package fr.ird.observe.client.datasource.editor.content.data.ll.observation.actions; + +/*- + * #%L + * ObServe :: Client DataSource Editor LL + * %% + * 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 fr.ird.observe.client.datasource.editor.content.actions.ContentUIActionSupport; +import fr.ird.observe.client.datasource.editor.content.data.ll.observation.TdrUI; + +import javax.swing.KeyStroke; + +/** + * @author Tony Chemit - dev(a)tchemit.fr + * @since 8 + */ +public abstract class TdrUIActionSupport extends ContentUIActionSupport<TdrUI> { + + protected TdrUIActionSupport(String label, String shortDescription, String actionIcon, KeyStroke acceleratorKey) { + super(label, shortDescription, actionIcon, acceleratorKey); + } + + protected TdrUIActionSupport(String actionCommandKey, String label, String shortDescription, String actionIcon, KeyStroke acceleratorKey) { + super(actionCommandKey, label, shortDescription, actionIcon, acceleratorKey); + } + + protected TdrUIActionSupport(String label, String shortDescription, String actionIcon, char acceleratorKey) { + super(label, shortDescription, actionIcon, acceleratorKey); + } + + protected TdrUIActionSupport(String actionCommandKey, String label, String shortDescription, String actionIcon, char acceleratorKey) { + super(actionCommandKey, label, shortDescription, actionIcon, acceleratorKey); + } +} + ===================================== client-datasource-editor-ll/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ll/observation/actions/TdrUIDeleteData.java ===================================== @@ -0,0 +1,67 @@ +package fr.ird.observe.client.datasource.editor.content.data.ll.observation.actions; + +/*- + * #%L + * ObServe :: Client DataSource Editor LL + * %% + * 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 fr.ird.observe.client.datasource.editor.content.ObserveLLKeyStrokes; +import fr.ird.observe.client.datasource.editor.content.data.ll.observation.TdrUI; +import fr.ird.observe.client.util.UIHelper; +import fr.ird.observe.dto.data.ll.observation.TdrDto; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import javax.swing.JOptionPane; +import java.awt.event.ActionEvent; + +import static io.ultreia.java4all.i18n.I18n.n; +import static io.ultreia.java4all.i18n.I18n.t; + +/** + * @author Tony Chemit - dev(a)tchemit.fr + * @since 8 + */ +public class TdrUIDeleteData extends TdrUIActionSupport { + + private static final Logger log = LogManager.getLogger(TdrUIDeleteData.class); + + public TdrUIDeleteData() { + super(n("observe.data.ll.observation.Tdr.deleteData"), n("observe.data.ll.observation.Tdr.deleteData.tip"), "delete", ObserveLLKeyStrokes.KEY_STROKE_DELETE_DATA); + } + + @Override + protected void doActionPerformed(ActionEvent e, TdrUI ui) { + int response = UIHelper.askUser(ui, + t("observe.title.delete"), + t("observe.data.ll.observation.SensorUsed.delete.data.message"), + JOptionPane.WARNING_MESSAGE, + new Object[]{t("observe.choice.confirm.delete"), + t("observe.choice.cancel")}, + 1); + boolean doDelete = response == 0; + if (doDelete) { + TdrDto tableEditBean = ui.getModel().getTableEditBean(); + log.info(String.format("%s Delete tdr data %s", ui.getModel().getPrefix(), tableEditBean.getData())); + tableEditBean.setData(null); + tableEditBean.setHasData(false); + } + } +} ===================================== client-datasource-editor-ll/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ll/observation/actions/TdrUIExportData.java ===================================== @@ -0,0 +1,83 @@ +package fr.ird.observe.client.datasource.editor.content.data.ll.observation.actions; + +/*- + * #%L + * ObServe :: Client DataSource Editor LL + * %% + * 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 fr.ird.observe.client.datasource.editor.content.ObserveLLKeyStrokes; +import fr.ird.observe.client.datasource.editor.content.data.ll.observation.TdrUI; +import fr.ird.observe.client.util.ObserveSwingTechnicalException; +import fr.ird.observe.client.util.UIHelper; +import fr.ird.observe.dto.data.DataFileDto; +import fr.ird.observe.dto.data.ll.observation.TdrDto; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.nuiton.jaxx.widgets.file.JaxxFileChooser; + +import java.awt.event.ActionEvent; +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; + +import static io.ultreia.java4all.i18n.I18n.n; +import static io.ultreia.java4all.i18n.I18n.t; + +/** + * @author Tony Chemit - dev(a)tchemit.fr + * @since 8 + */ +public class TdrUIExportData extends TdrUIActionSupport { + + private static final Logger log = LogManager.getLogger(TdrUIExportData.class); + + public TdrUIExportData() { + super(n("observe.data.ll.observation.Tdr.exportData"), n("observe.data.ll.observation.Tdr.exportData.tip"), "data-export", ObserveLLKeyStrokes.KEY_STROKE_EXPORT_DATA); + } + + @Override + protected void doActionPerformed(ActionEvent event, TdrUI ui) { + + TdrDto tableEditBean = ui.getModel().getTableEditBean(); + DataFileDto dataFile = tableEditBean.getData(); + + if (dataFile == null) { + dataFile = getDataSource().getLlObservationSetTdrService().getDataFile(tableEditBean.getId()); + } + + File file = JaxxFileChooser + .forSaving() + .setParent(ui) + .setTitle(t("observe.data.ll.observation.Tdr.choose.title.exportData")) + .setApprovalText(t("observe.data.ll.observation.Tdr.action.exportData")) + .setFilename(dataFile.getName()) + .setUseAcceptAllFileFilter(true) + .choose(); + + if (file != null && UIHelper.confirmOverwriteFileIfExist(ui, file)) { + try { + log.info(String.format("%s save tdr data to %s", ui.getModel().getPrefix(), file)); + Files.write(file.toPath(), dataFile.getContent()); + } catch (IOException e) { + throw new ObserveSwingTechnicalException("Could not save binary data to " + file, e); + } + } + } +} ===================================== client-datasource-editor-ll/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ll/observation/actions/TdrUIImportData.java ===================================== @@ -0,0 +1,85 @@ +package fr.ird.observe.client.datasource.editor.content.data.ll.observation.actions; + +/*- + * #%L + * ObServe :: Client DataSource Editor LL + * %% + * 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 fr.ird.observe.client.datasource.editor.content.ObserveLLKeyStrokes; +import fr.ird.observe.client.datasource.editor.content.data.ll.observation.TdrUI; +import fr.ird.observe.client.util.UIHelper; +import fr.ird.observe.dto.data.DataFileDto; +import fr.ird.observe.dto.data.ll.observation.TdrDto; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import javax.swing.JOptionPane; +import java.awt.event.ActionEvent; +import java.io.File; + +import static io.ultreia.java4all.i18n.I18n.n; +import static io.ultreia.java4all.i18n.I18n.t; + +/** + * @author Tony Chemit - dev(a)tchemit.fr + * @since 8 + */ +public class TdrUIImportData extends TdrUIActionSupport { + + private static final Logger log = LogManager.getLogger(TdrUIImportData.class); + + public TdrUIImportData() { + super(n("observe.data.ll.observation.Tdr.importData"), n("observe.data.ll.observation.Tdr.importData.tip"), "data-import", ObserveLLKeyStrokes.KEY_STROKE_IMPORT_DATA); + } + + @Override + protected void doActionPerformed(ActionEvent e, TdrUI ui) { + TdrDto tableEditBean = ui.getModel().getTableEditBean(); + if (tableEditBean.isHasData()) { + DataFileDto dataFile = tableEditBean.getData(); + if (dataFile == null) { + dataFile = getDataSource().getLlObservationSetTdrService().getDataFile(tableEditBean.getId()); + } + int response = UIHelper.askUser(ui, + t("observe.title.confirmReplace"), + t("observe.data.ll.observation.Tdr.replace.data.message", dataFile.getName()), + JOptionPane.WARNING_MESSAGE, + new Object[]{t("observe.choice.confirm.replace"), + t("observe.choice.cancel")}, + 1); + boolean doReplace = response == 0; + if (!doReplace) { + return; + } + } + + File file = UIHelper.chooseFile(ui, + t("observe.data.ll.observation.Tdr.choose.title.importData"), + t("observe.data.ll.observation.Tdr.action.importData"), + null, + null); + if (file != null) { + log.info(String.format("%s Import tdr data from file: %s", ui.getModel().getPrefix(), file)); + DataFileDto dataFileDto = UIHelper.fileToDataFileDto(file); + tableEditBean.setData(dataFileDto); + tableEditBean.setHasData(true); + } + } +} ===================================== validation/src/main/resources/fr/ird/observe/dto/data/ll/observation/SetDto-create-error-validation.xml ===================================== @@ -100,41 +100,6 @@ <message/> </field-validator> </field> - <field name="haulingStartTimeStamp"> - <field-validator type="mandatory" short-circuit="true"> - <message/> - </field-validator> - - <!-- settingEndTimeStamp < haulingStartTimeStamp --> - <field-validator type="fieldexpression" short-circuit="true"> - <param name="expression"> - <![CDATA[ settingEndTimeStamp == null || settingEndTimeStamp.time < haulingStartTimeStamp.time ]]> - </param> - <message>observe.validation.setLongline.settingEndTimeStamp.before.haulingStartTimeStamp</message> - </field-validator> - </field> - <field name="haulingEndTimeStamp"> - <field-validator type="mandatory" short-circuit="true"> - <message/> - </field-validator> - - <!-- haulingStartTimeStamp < haulingEndTimeStamp --> - <field-validator type="fieldexpression" short-circuit="true"> - <param name="expression"> - <![CDATA[ haulingStartTimeStamp == null || haulingStartTimeStamp.time < haulingEndTimeStamp.time ]]> - </param> - <message>observe.validation.setLongline.haulingStartTimeStamp.before.haulingEndTimeStamp</message> - </field-validator> - </field> - <field name="settingStartQuadrant"> - <field-validator type="mandatory" short-circuit="true"> - <message/> - </field-validator> - <field-validator type="quadrantDto" short-circuit="true"> - <param name="ocean">currentLlCommonTrip.ocean</param> - <message/> - </field-validator> - </field> <field name="settingStartLatitude"> <field-validator type="mandatory" short-circuit="true"> <message/> @@ -153,7 +118,7 @@ <message/> </field-validator> </field> - <field name="settingEndQuadrant"> + <field name="settingStartQuadrant"> <field-validator type="mandatory" short-circuit="true"> <message/> </field-validator> @@ -180,7 +145,7 @@ <message/> </field-validator> </field> - <field name="haulingStartQuadrant"> + <field name="settingEndQuadrant"> <field-validator type="mandatory" short-circuit="true"> <message/> </field-validator> @@ -207,7 +172,7 @@ <message/> </field-validator> </field> - <field name="haulingEndQuadrant"> + <field name="haulingStartQuadrant"> <field-validator type="mandatory" short-circuit="true"> <message/> </field-validator> @@ -234,6 +199,15 @@ <message/> </field-validator> </field> + <field name="haulingEndQuadrant"> + <field-validator type="mandatory" short-circuit="true"> + <message/> + </field-validator> + <field-validator type="quadrantDto" short-circuit="true"> + <param name="ocean">currentLlCommonTrip.ocean</param> + <message/> + </field-validator> + </field> <field name="totalSectionsCount"> <field-validator type="mandatory" short-circuit="true"> <message/> @@ -267,7 +241,7 @@ <field name="totalBasketsCount"> <field-validator type="boundNumber" short-circuit="true"> <param name="min">0.0</param> - <param name="max">1000.0</param> + <param name="max">400.0</param> <message/> </field-validator> </field> ===================================== validation/src/main/resources/fr/ird/observe/dto/data/ll/observation/SetDto-update-error-validation.xml ===================================== @@ -49,6 +49,7 @@ <field-validator type="mandatory" short-circuit="true"> <message/> </field-validator> + <!-- settingStartTimeStamp < settingEndTimeStamp --> <field-validator type="fieldexpression" short-circuit="true"> <param name="expression"> @@ -57,30 +58,6 @@ <message>observe.validation.setLongline.settingStartTimeStamp.before.settingEndTimeStamp</message> </field-validator> </field> - <field name="haulingStartTimeStamp"> - <field-validator type="mandatory" short-circuit="true"> - <message/> - </field-validator> - <!-- settingEndTimeStamp < haulingStartTimeStamp --> - <field-validator type="fieldexpression" short-circuit="true"> - <param name="expression"> - <![CDATA[ settingEndTimeStamp == null || settingEndTimeStamp.time < haulingStartTimeStamp.time ]]> - </param> - <message>observe.validation.setLongline.settingEndTimeStamp.before.haulingStartTimeStamp</message> - </field-validator> - </field> - <field name="haulingEndTimeStamp"> - <field-validator type="mandatory" short-circuit="true"> - <message/> - </field-validator> - <!-- haulingStartTimeStamp < haulingEndTimeStamp --> - <field-validator type="fieldexpression" short-circuit="true"> - <param name="expression"> - <![CDATA[ haulingStartTimeStamp == null || haulingStartTimeStamp.time < haulingEndTimeStamp.time ]]> - </param> - <message>observe.validation.setLongline.haulingStartTimeStamp.before.haulingEndTimeStamp</message> - </field-validator> - </field> <field name="settingVesselSpeed"> <field-validator type="boundNumber" short-circuit="true"> <param name="min">0.0</param> @@ -264,7 +241,7 @@ <field name="totalBasketsCount"> <field-validator type="boundNumber" short-circuit="true"> <param name="min">0.0</param> - <param name="max">1000.0</param> + <param name="max">400.0</param> <message/> </field-validator> </field> View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/c6c83b3b5bb3b974e310a2b2… -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/c6c83b3b5bb3b974e310a2b2… You're receiving this email because of your account on gitlab.com.
1 0
0 0
[Git][ultreiaio/ird-observe][develop-7.x] [LL] Contrôle sur nombre de baskets trop limité - Closes #1433
by Tony CHEMIT 13 Feb '20

13 Feb '20
Tony CHEMIT pushed to branch develop-7.x at ultreiaio / ird-observe Commits: fe8162d9 by tchemit at 2020-02-13T12:12:37+01:00 [LL] Contrôle sur nombre de baskets trop limité - Closes #1433 - - - - - 2 changed files: - validation/src/main/resources/fr/ird/observe/dto/data/longline/SetLonglineDto-create-error-validation.xml - validation/src/main/resources/fr/ird/observe/dto/data/longline/SetLonglineDto-update-error-validation.xml Changes: ===================================== validation/src/main/resources/fr/ird/observe/dto/data/longline/SetLonglineDto-create-error-validation.xml ===================================== @@ -58,6 +58,30 @@ <message>observe.validation.setLongline.settingStartTimeStamp.before.settingEndTimeStamp</message> </field-validator> </field> + <field name="haulingStartTimeStamp"> + <field-validator type="mandatory" short-circuit="true"> + <message/> + </field-validator> + <!-- settingEndTimeStamp < haulingStartTimeStamp --> + <field-validator type="fieldexpression" short-circuit="true"> + <param name="expression"> + <![CDATA[ settingEndTimeStamp == null || settingEndTimeStamp.time < haulingStartTimeStamp.time ]]> + </param> + <message>observe.validation.setLongline.settingEndTimeStamp.before.haulingStartTimeStamp</message> + </field-validator> + </field> + <field name="haulingEndTimeStamp"> + <field-validator type="mandatory" short-circuit="true"> + <message/> + </field-validator> + <!-- haulingStartTimeStamp < haulingEndTimeStamp --> + <field-validator type="fieldexpression" short-circuit="true"> + <param name="expression"> + <![CDATA[ haulingStartTimeStamp == null || haulingStartTimeStamp.time < haulingEndTimeStamp.time ]]> + </param> + <message>observe.validation.setLongline.haulingStartTimeStamp.before.haulingEndTimeStamp</message> + </field-validator> + </field> <field name="settingVesselSpeed"> <field-validator type="boundNumber" short-circuit="true"> <param name="min">0.0</param> @@ -100,41 +124,6 @@ <message/> </field-validator> </field> - <field name="haulingStartTimeStamp"> - <field-validator type="mandatory" short-circuit="true"> - <message/> - </field-validator> - - <!-- settingEndTimeStamp < haulingStartTimeStamp --> - <field-validator type="fieldexpression" short-circuit="true"> - <param name="expression"> - <![CDATA[ settingEndTimeStamp == null || settingEndTimeStamp.time < haulingStartTimeStamp.time ]]> - </param> - <message>observe.validation.setLongline.settingEndTimeStamp.before.haulingStartTimeStamp</message> - </field-validator> - </field> - <field name="haulingEndTimeStamp"> - <field-validator type="mandatory" short-circuit="true"> - <message/> - </field-validator> - - <!-- haulingStartTimeStamp < haulingEndTimeStamp --> - <field-validator type="fieldexpression" short-circuit="true"> - <param name="expression"> - <![CDATA[ haulingStartTimeStamp == null || haulingStartTimeStamp.time < haulingEndTimeStamp.time ]]> - </param> - <message>observe.validation.setLongline.haulingStartTimeStamp.before.haulingEndTimeStamp</message> - </field-validator> - </field> - <field name="settingStartQuadrant"> - <field-validator type="mandatory" short-circuit="true"> - <message/> - </field-validator> - <field-validator type="quadrantDto" short-circuit="true"> - <param name="ocean">currentTripLongline.ocean</param> - <message/> - </field-validator> - </field> <field name="settingStartLatitude"> <field-validator type="mandatory" short-circuit="true"> <message/> @@ -153,7 +142,7 @@ <message/> </field-validator> </field> - <field name="settingEndQuadrant"> + <field name="settingStartQuadrant"> <field-validator type="mandatory" short-circuit="true"> <message/> </field-validator> @@ -180,7 +169,7 @@ <message/> </field-validator> </field> - <field name="haulingStartQuadrant"> + <field name="settingEndQuadrant"> <field-validator type="mandatory" short-circuit="true"> <message/> </field-validator> @@ -207,7 +196,7 @@ <message/> </field-validator> </field> - <field name="haulingEndQuadrant"> + <field name="haulingStartQuadrant"> <field-validator type="mandatory" short-circuit="true"> <message/> </field-validator> @@ -234,6 +223,15 @@ <message/> </field-validator> </field> + <field name="haulingEndQuadrant"> + <field-validator type="mandatory" short-circuit="true"> + <message/> + </field-validator> + <field-validator type="quadrantDto" short-circuit="true"> + <param name="ocean">currentTripLongline.ocean</param> + <message/> + </field-validator> + </field> <field name="totalSectionsCount"> <field-validator type="mandatory" short-circuit="true"> <message/> @@ -267,7 +265,7 @@ <field name="totalBasketsCount"> <field-validator type="boundNumber" short-circuit="true"> <param name="min">0.0</param> - <param name="max">100.0</param> + <param name="max">400.0</param> <message/> </field-validator> </field> ===================================== validation/src/main/resources/fr/ird/observe/dto/data/longline/SetLonglineDto-update-error-validation.xml ===================================== @@ -49,6 +49,7 @@ <field-validator type="mandatory" short-circuit="true"> <message/> </field-validator> + <!-- settingStartTimeStamp < settingEndTimeStamp --> <field-validator type="fieldexpression" short-circuit="true"> <param name="expression"> @@ -264,7 +265,7 @@ <field name="totalBasketsCount"> <field-validator type="boundNumber" short-circuit="true"> <param name="min">0.0</param> - <param name="max">1000.0</param> + <param name="max">400.0</param> <message/> </field-validator> </field> View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/fe8162d94548348ffddf21f80… -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/fe8162d94548348ffddf21f80… You're receiving this email because of your account on gitlab.com.
1 0
0 0
[Git][ultreiaio/ird-observe][develop-7.x] move to version 7.3.1-SNAPSHOT
by Tony CHEMIT 13 Feb '20

13 Feb '20
Tony CHEMIT pushed to branch develop-7.x at ultreiaio / ird-observe Commits: ba28c9d7 by tchemit at 2020-02-13T12:00:19+01:00 move to version 7.3.1-SNAPSHOT - - - - - 16 changed files: - client-configuration/pom.xml - client-core/pom.xml - client-runner/pom.xml - dto/pom.xml - observe-i18n/pom.xml - observe/pom.xml - persistence/pom.xml - pom.xml - server-configuration/pom.xml - server-core/pom.xml - server-runner/pom.xml - services-client/pom.xml - services-local/pom.xml - services/pom.xml - test/pom.xml - validation/pom.xml Changes: ===================================== client-configuration/pom.xml ===================================== @@ -26,7 +26,7 @@ <parent> <groupId>fr.ird.observe</groupId> <artifactId>ird-observe</artifactId> - <version>7.4.0-SNAPSHOT</version> + <version>7.3.1-SNAPSHOT</version> </parent> <artifactId>client-configuration</artifactId> ===================================== client-core/pom.xml ===================================== @@ -26,7 +26,7 @@ <parent> <groupId>fr.ird.observe</groupId> <artifactId>ird-observe</artifactId> - <version>7.4.0-SNAPSHOT</version> + <version>7.3.1-SNAPSHOT</version> </parent> <artifactId>client-core</artifactId> ===================================== client-runner/pom.xml ===================================== @@ -26,7 +26,7 @@ <parent> <groupId>fr.ird.observe</groupId> <artifactId>ird-observe</artifactId> - <version>7.4.0-SNAPSHOT</version> + <version>7.3.1-SNAPSHOT</version> </parent> <artifactId>client-runner</artifactId> ===================================== dto/pom.xml ===================================== @@ -27,7 +27,7 @@ <parent> <groupId>fr.ird.observe</groupId> <artifactId>ird-observe</artifactId> - <version>7.4.0-SNAPSHOT</version> + <version>7.3.1-SNAPSHOT</version> </parent> <artifactId>dto</artifactId> ===================================== observe-i18n/pom.xml ===================================== @@ -26,7 +26,7 @@ <parent> <groupId>fr.ird.observe</groupId> <artifactId>ird-observe</artifactId> - <version>7.4.0-SNAPSHOT</version> + <version>7.3.1-SNAPSHOT</version> </parent> <artifactId>observe-i18n</artifactId> ===================================== observe/pom.xml ===================================== @@ -26,7 +26,7 @@ <parent> <groupId>fr.ird.observe</groupId> <artifactId>ird-observe</artifactId> - <version>7.4.0-SNAPSHOT</version> + <version>7.3.1-SNAPSHOT</version> </parent> <artifactId>observe</artifactId> ===================================== persistence/pom.xml ===================================== @@ -26,7 +26,7 @@ <parent> <groupId>fr.ird.observe</groupId> <artifactId>ird-observe</artifactId> - <version>7.4.0-SNAPSHOT</version> + <version>7.3.1-SNAPSHOT</version> </parent> <artifactId>persistence</artifactId> ===================================== pom.xml ===================================== @@ -31,7 +31,7 @@ <groupId>fr.ird.observe</groupId> <artifactId>ird-observe</artifactId> - <version>7.4.0-SNAPSHOT</version> + <version>7.3.1-SNAPSHOT</version> <packaging>pom</packaging> <name>ObServe :: Pom</name> ===================================== server-configuration/pom.xml ===================================== @@ -26,7 +26,7 @@ <parent> <groupId>fr.ird.observe</groupId> <artifactId>ird-observe</artifactId> - <version>7.4.0-SNAPSHOT</version> + <version>7.3.1-SNAPSHOT</version> </parent> <artifactId>server-configuration</artifactId> ===================================== server-core/pom.xml ===================================== @@ -27,7 +27,7 @@ <parent> <groupId>fr.ird.observe</groupId> <artifactId>ird-observe</artifactId> - <version>7.4.0-SNAPSHOT</version> + <version>7.3.1-SNAPSHOT</version> </parent> <artifactId>server-core</artifactId> ===================================== server-runner/pom.xml ===================================== @@ -27,7 +27,7 @@ <parent> <groupId>fr.ird.observe</groupId> <artifactId>ird-observe</artifactId> - <version>7.4.0-SNAPSHOT</version> + <version>7.3.1-SNAPSHOT</version> </parent> <artifactId>server-runner</artifactId> ===================================== services-client/pom.xml ===================================== @@ -27,7 +27,7 @@ <parent> <groupId>fr.ird.observe</groupId> <artifactId>ird-observe</artifactId> - <version>7.4.0-SNAPSHOT</version> + <version>7.3.1-SNAPSHOT</version> </parent> <artifactId>services-client</artifactId> ===================================== services-local/pom.xml ===================================== @@ -27,7 +27,7 @@ <parent> <groupId>fr.ird.observe</groupId> <artifactId>ird-observe</artifactId> - <version>7.4.0-SNAPSHOT</version> + <version>7.3.1-SNAPSHOT</version> </parent> <artifactId>services-local</artifactId> ===================================== services/pom.xml ===================================== @@ -27,7 +27,7 @@ <parent> <groupId>fr.ird.observe</groupId> <artifactId>ird-observe</artifactId> - <version>7.4.0-SNAPSHOT</version> + <version>7.3.1-SNAPSHOT</version> </parent> <artifactId>services</artifactId> ===================================== test/pom.xml ===================================== @@ -26,7 +26,7 @@ <parent> <groupId>fr.ird.observe</groupId> <artifactId>ird-observe</artifactId> - <version>7.4.0-SNAPSHOT</version> + <version>7.3.1-SNAPSHOT</version> </parent> <artifactId>test</artifactId> ===================================== validation/pom.xml ===================================== @@ -26,7 +26,7 @@ <parent> <groupId>fr.ird.observe</groupId> <artifactId>ird-observe</artifactId> - <version>7.4.0-SNAPSHOT</version> + <version>7.3.1-SNAPSHOT</version> </parent> <artifactId>validation</artifactId> View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/ba28c9d7c1b8d577c3ab36ec6… -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/ba28c9d7c1b8d577c3ab36ec6… You're receiving this email because of your account on gitlab.com.
1 0
0 0
[Git][ultreiaio/ird-observe][develop-7.x] [EXPORT CARTE] Le nom de fichier est généré sans l'extension PNG - Closes #1434
by Tony CHEMIT 13 Feb '20

13 Feb '20
Tony CHEMIT pushed to branch develop-7.x at ultreiaio / ird-observe Commits: fac65120 by tchemit at 2020-02-13T11:59:41+01:00 [EXPORT CARTE] Le nom de fichier est généré sans l&#39;extension PNG - Closes #1434 - - - - - 8 changed files: - client-core/src/main/java/fr/ird/observe/client/ui/actions/tripMap/ExportPngUIAction.java - client-core/src/main/java/fr/ird/observe/client/ui/admin/report/ReportUIHandler.java - client-core/src/main/java/fr/ird/observe/client/ui/content/data/longline/SensorUsedUIHandler.java - client-core/src/main/java/fr/ird/observe/client/ui/content/data/longline/TdrUIHandler.java - client-core/src/main/java/fr/ird/observe/client/ui/storage/tabs/ConfigDataUIHandler.java - client-core/src/main/java/fr/ird/observe/client/ui/storage/tabs/ConfigReferentielUIHandler.java - client-core/src/main/java/fr/ird/observe/client/ui/storage/tabs/ConfigUIHandler.java - client-core/src/main/java/fr/ird/observe/client/ui/util/UIHelper.java Changes: ===================================== client-core/src/main/java/fr/ird/observe/client/ui/actions/tripMap/ExportPngUIAction.java ===================================== @@ -61,6 +61,7 @@ public class ExportPngUIAction extends TripMapActionSupport { t("observe.content.map.export.chooseFile.title"), t("observe.content.map.export.chooseFile.ok"), null, + ".png", "^.+\\.png|.+\\.PNG$", t("observe.content.map.export.chooseFile.png")); ===================================== client-core/src/main/java/fr/ird/observe/client/ui/admin/report/ReportUIHandler.java ===================================== @@ -245,6 +245,7 @@ public class ReportUIHandler extends AdminTabUIHandler<ReportUI> implements UIHa t("observe.title.choose.reportFile"), t("observe.action.choose.reportFile"), model.getReportFile(), + ".properties", "^.+\\.properties$", t("observe.action.choose.reportFile.description")); model.setReportFile(f); ===================================== client-core/src/main/java/fr/ird/observe/client/ui/content/data/longline/SensorUsedUIHandler.java ===================================== @@ -137,6 +137,7 @@ public class SensorUsedUIHandler extends ContentTableUIHandler<ActivityLonglineS File file = UIHelper.chooseFile(ui, t("observe.common.SensorUsedDto.choose.title.importData"), t("observe.common.SensorUsedDto.action.importData"), + null, null); if (file != null) { ===================================== client-core/src/main/java/fr/ird/observe/client/ui/content/data/longline/TdrUIHandler.java ===================================== @@ -301,6 +301,7 @@ public class TdrUIHandler extends ContentTableUIHandler<SetLonglineTdrDto, TdrDt File file = UIHelper.chooseFile(ui, t("observe.common.TdrDto.choose.title.importData"), t("observe.common.TdrDto.action.importData"), + null, null); if (file != null) { ===================================== client-core/src/main/java/fr/ird/observe/client/ui/storage/tabs/ConfigDataUIHandler.java ===================================== @@ -86,6 +86,7 @@ public class ConfigDataUIHandler extends StorageTabUIHandler<ConfigDataUI> imple t("observe.title.choose.db.dump"), t("observe.action.choose.db.dump"), ui.getModel().getDumpFile(), + ".sql.gz", "^.+\\.sql\\.gz$", t("observe.action.choose.db.dump.description")); ui.getCentralSourceModel().setDumpFile(f); ===================================== client-core/src/main/java/fr/ird/observe/client/ui/storage/tabs/ConfigReferentielUIHandler.java ===================================== @@ -111,6 +111,7 @@ public class ConfigReferentielUIHandler extends StorageTabUIHandler<ConfigRefere t("observe.title.choose.db.dump"), t("observe.action.choose.db.dump"), ui.getModel().getDumpFile(), + ".sql.gz", "^.+\\.sql\\.gz$", t("observe.action.choose.db.dump.description")); ui.getCentralSourceModel().setDumpFile(f); ===================================== client-core/src/main/java/fr/ird/observe/client/ui/storage/tabs/ConfigUIHandler.java ===================================== @@ -204,6 +204,7 @@ public class ConfigUIHandler extends StorageTabUIHandler<ConfigUI> implements UI t("observe.title.choose.db.dump"), t("observe.action.choose.db.dump"), ui.getModel().getDumpFile(), + ".sql.gz", "^.+\\.sql\\.gz$", t("observe.action.choose.db.dump.description")); ui.getModel().setDumpFile(f); ===================================== client-core/src/main/java/fr/ird/observe/client/ui/util/UIHelper.java ===================================== @@ -255,12 +255,12 @@ public class UIHelper extends SwingUtil { * @param title le titre du dialogue de sélection * @param buttonLabel le label du boutton d'acceptation * @param incoming le fichier de base à utilier - * @param filters les filtres + descriptions sur le sélecteur de - * fichiers + * @param mainExtension l'extension principale (à rajouter sur le nom du fichier si besoin) + * @param filters les filtres + descriptions sur le sélecteur de fichiers * @return le fichier choisi ou le fichier incoming si l'opération a été * annulée */ - public static File chooseFile(Component parent, String title, String buttonLabel, File incoming, String... filters) { + public static File chooseFile(Component parent, String title, String buttonLabel, File incoming,String mainExtension, String... filters) { JaxxFileChooser.ToLoadFile toLoadFile = JaxxFileChooser.forLoadingFile() .setParent(parent) @@ -277,7 +277,7 @@ public class UIHelper extends SwingUtil { if (log.isDebugEnabled()) { log.debug(title + " : " + file); } - return file == null ? incoming : file; + return file == null ? incoming : ensureFileExtension(file, mainExtension); } /** @@ -307,6 +307,13 @@ public class UIHelper extends SwingUtil { return file; } + public static File ensureFileExtension(File file, String extension) { + if (extension!=null && !file.getName().toLowerCase().endsWith(extension)) { + file = file.toPath().getParent().resolve(file.getName() + extension).toFile(); + } + return file; + } + private static File getParentDirectoryIfExist(File incoming) { if (incoming != null) { File basedir; View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/fac65120f5e9a85b5d22f6328… -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/fac65120f5e9a85b5d22f6328… You're receiving this email because of your account on gitlab.com.
1 0
0 0
  • ← Newer
  • 1
  • 2
  • 3
  • Older →

HyperKitty Powered by HyperKitty version 1.3.12.