Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe Commits: 312eba06 by Tony Chemit at 2022-03-01T17:42:55+01:00 Création du programme LL FINSS ? - See ultreiaio/ird-observe#2193 - - - - - 7cfc0e6e by Tony Chemit at 2022-03-02T08:51:34+01:00 Fix NPE (See #2180) - - - - - faffe51b by Tony Chemit at 2022-03-02T09:05:17+01:00 On pourrait empêcher de configurer l'arbre sans référentiels ni marées - Closes #2184 - - - - - 71e82f1c by Tony Chemit at 2022-03-02T10:09:10+01:00 Import AVDTH ne devrait pas être visible en mode serveur - Closes #2188 - - - - - 0508f6fb by Tony Chemit at 2022-03-02T10:09:38+01:00 Souci lors de la configuration de l'arbre 2 - Closes #2180 - - - - - 93eaf835 by Tony Chemit at 2022-03-02T10:36:31+01:00 Souci lors de la configuration de l'arbre 1 avec base vierge - Closes #2178 Soucis lors de la configuration de l'arbre 3 avec base vierge - Closes #2181 - - - - - 4e494512 by Tony Chemit at 2022-03-02T11:15:53+01:00 Exception sur chargement de l'arbre (mode serveur) PS / Par bateaux - Closes #2190 - - - - - 25 changed files: - client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/config/SelectDataModel.java - client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/config/TreeConfigUI.jaxx - client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/config/TreeConfigUI.jcss - client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/config/TreeConfigUIModel.java - client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/config/actions/ApplyConfigurationSupport.java - client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/config/actions/ApplyNavigationConfiguration.java - client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/config/actions/ApplySelectionConfiguration.java - client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/navigation/NavigationUIHandler.java - client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/navigation/tree/root/RootNavigationNode.java - client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/navigation/tree/select/SelectNodesByModelNode.java - client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/navigation/tree/select/SelectNodesByPath.java - client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/wizard/tabs/SelectDataUIHandler.java - client/runner/src/main/i18n/translations/client-runner_en_GB.properties - client/runner/src/main/i18n/translations/client-runner_es_ES.properties - client/runner/src/main/i18n/translations/client-runner_fr_FR.properties - core/api/tree/src/test/resources/navigationTree.json - core/persistence/resources/src/main/java/fr/ird/observe/spi/migration/v8/DataSourceMigrationForVersion_8_0.java - − core/persistence/resources/src/main/resources/db/migration/v8/8.0/30_add_referential_common_Program_50-common.sql - core/persistence/test/src/test/java/fr/ird/observe/persistence/test/SqlServiceTest.java - core/persistence/test/src/test/resources/fixtures/persistence/table_count/referential.properties - core/services/test/src/main/resources/fixtures/fr/ird/observe/services/service/NavigationService.properties - core/services/test/src/main/resources/fixtures/fr/ird/observe/services/service/ReferenceService.properties - core/services/test/src/main/resources/fixtures/fr/ird/observe/services/service/ValidateService-referentialResult.json - core/services/test/src/main/resources/fixtures/fr/ird/observe/services/service/referential/ReferentialService.properties - model/src/main/resources/fixtures/global.properties Changes: ===================================== client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/config/SelectDataModel.java ===================================== @@ -29,6 +29,7 @@ import fr.ird.observe.client.datasource.actions.validate.ValidateModel; import fr.ird.observe.client.datasource.api.ObserveSwingDataSource; import fr.ird.observe.client.datasource.editor.api.selection.SelectionTreePane; import fr.ird.observe.client.datasource.editor.api.selection.SelectionTreePaneHandler; +import fr.ird.observe.navigation.id.Project; import fr.ird.observe.navigation.tree.selection.SelectionTreeConfig; import fr.ird.observe.navigation.tree.selection.SelectionTreeModel; import org.apache.logging.log4j.LogManager; @@ -157,8 +158,11 @@ public class SelectDataModel extends AdminActionModel { newConfig.setLoadDisabledGroupBy(true); config.init(newConfig); - List<String> openIds = getClientConfig().getNavigationEditModel().getIds(); - selectionDataModel.setEditIds(openIds); + Project navigationEditModel = getClientConfig().getNavigationEditModel(); + if (navigationEditModel!=null) { + List<String> openIds = navigationEditModel.getIds(); + selectionDataModel.setEditIds(openIds); + } } else { config.setLoadData(loadData); config.setLoadReferential(loadReferential); ===================================== client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/config/TreeConfigUI.jaxx ===================================== @@ -66,25 +66,12 @@ </JPanel> <JPanel id='actionsPane' layout="{new BoxLayout(actionsPane, BoxLayout.LINE_AXIS)}"> <Component initializer="Box.createHorizontalGlue()"/> - <JButton id="resetConfiguration" styleClass="enabledIfModified"/> + <JButton id="resetConfiguration"/> <Component initializer="Box.createRigidArea(new Dimension(10, 0))"/> - <JButton id="applyConfiguration" styleClass="enabledIfModified"/> + <JButton id="applyConfiguration"/> </JPanel> </JPanel> </cell> </row> </Table> -<!-- <JPanel id='actions' constraints='BorderLayout.SOUTH' layout="{new BoxLayout(actions, BoxLayout.Y_AXIS)}">--> -<!-- <JPanel id="cancelMessagePanel" layout="{new GridLayout(0, 1)}">--> -<!-- <JSeparator constructorParams="JSeparator.HORIZONTAL"/>--> -<!-- <JLabel id="cancelMessage" styleClass="information italic"/>--> -<!-- <Component initializer="Box.createRigidArea(new Dimension(10, 5))"/>--> -<!-- </JPanel>--> -<!-- <JPanel id='actionsPane' layout="{new BoxLayout(actionsPane, BoxLayout.LINE_AXIS)}">--> -<!-- <Component initializer="Box.createHorizontalGlue()"/>--> -<!-- <JButton id="resetConfiguration" styleClass="enabledIfModified"/>--> -<!-- <Component initializer="Box.createRigidArea(new Dimension(10, 0))"/>--> -<!-- <JButton id="applyConfiguration" styleClass="enabledIfModified"/>--> -<!-- </JPanel>--> -<!-- </JPanel>--> </JPanel> ===================================== client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/config/TreeConfigUI.jcss ===================================== @@ -30,28 +30,28 @@ #optionPanel { border:{BorderFactory.createTitledBorder(BorderFactory.createLoweredBevelBorder(), I18n.t("observe.ui.datasource.tree.config.option") + " ")}; - /*border:{BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.BLACK, 1, true), I18n.t("observe.ui.datasource.tree.config.option") + " ")};*/ } #moduleChoose { border:{BorderFactory.createTitledBorder(BorderFactory.createLoweredBevelBorder(), I18n.t("observe.Common.navigation.config.moduleName") + " ")}; - /*border:{BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.BLACK, 1, true), I18n.t("observe.Common.navigation.config.moduleName") + " ")};*/ } #groupByChoose { border:{BorderFactory.createTitledBorder(BorderFactory.createLoweredBevelBorder(), I18n.t("observe.Common.navigation.config.groupByName") + " ")}; - /*border:{BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.BLACK, 1, true), I18n.t("observe.Common.navigation.config.groupByName") + " ")};*/ } #groupByOptionsChoose { border:{BorderFactory.createTitledBorder(BorderFactory.createLoweredBevelBorder(), I18n.t("observe.Common.navigation.config.groupByOption") + " ")}; - /*border:{BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.BLACK, 1, true), I18n.t("observe.Common.navigation.config.groupByOption") + " ")};*/ } -.enabledIfModified { +#resetConfiguration { enabled:{model.isModified()}; } +#applyConfiguration { + enabled:{model.isModified() && !model.isEmpty()}; +} + #actionsPane { border:{BorderFactory.createEmptyBorder(0, 5, 5, 5)}; } ===================================== client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/config/TreeConfigUIModel.java ===================================== @@ -42,8 +42,9 @@ import java.util.List; @GenerateJavaBeanDefinition public class TreeConfigUIModel extends AbstractJavaBean implements PropertyChangeListener { public static final String MODIFIED = "modified"; + public static final String EMPTY = "empty"; /** - * Properties to monitor on application tree config. + * Properties to monitor on application tree config to fire modified property.. */ private static final List<String> MONITORED_PROPERTIES = List.of( TreeConfig.LOAD_DATA, @@ -55,12 +56,27 @@ public class TreeConfigUIModel extends AbstractJavaBean implements PropertyChang TreeConfig.GROUP_BY_NAME, TreeConfig.GROUP_BY_FLAVOR, TreeConfig.MODULE_NAME); - private final TreeConfig originalBean; - private final TreeConfig bean; + /** + * Properties to monitor to fire empty property. + */ + private static final List<String> EMPTY_PROPERTIES = List.of( + TreeConfig.LOAD_DATA, + TreeConfig.LOAD_REFERENTIAL); /** * Monitor to see if there is something modified in application config. */ private final BeanMonitor monitor; + /** + * Original bean (will never modify it). + */ + private final TreeConfig originalBean; + /** + * Then bean used in ui. + */ + private final TreeConfig bean; + /** + * GroupBy helper. + */ private final GroupByHelper groupByHelper; protected TreeConfigUIModel(GroupByHelper groupByHelper, TreeConfig originalBean) { @@ -80,17 +96,21 @@ public class TreeConfigUIModel extends AbstractJavaBean implements PropertyChang @Override public void propertyChange(PropertyChangeEvent evt) { - if (MONITORED_PROPERTIES.contains(evt.getPropertyName())) { + String propertyName = evt.getPropertyName(); + if (MONITORED_PROPERTIES.contains(propertyName)) { fireModified(); + if (EMPTY_PROPERTIES.contains(propertyName)) { + fireEmpty(); + } } } - public List<String> getModifiedProperties() { - return List.of(monitor.getModifiedProperties()); + public boolean isEmpty() { + return !bean.isLoadData() && !bean.isLoadReferential(); } - private void fireModified() { - firePropertyChange(MODIFIED, isModified()); + public boolean isModified() { + return monitor.wasModified(); } public void reset() { @@ -108,6 +128,27 @@ public class TreeConfigUIModel extends AbstractJavaBean implements PropertyChang bean.addPropertyChangeListener(this); } + /** + * @return {@code true} if structure changed, means we won't be able to reselect previous node, {@code false} otherwise. + */ + public boolean isStructureChanged() { + List<String> modifiedProperties = List.of(monitor.getModifiedProperties()); + if( modifiedProperties.contains(TreeConfig.LOAD_DATA)) { + // loadData is now off + return !bean.isLoadData(); + } + if( modifiedProperties.contains(TreeConfig.LOAD_REFERENTIAL)) { + // loadReferential is now off + return !bean.isLoadReferential(); + } + if( modifiedProperties.contains(TreeConfig.MODULE_NAME)) { + // previous module name is off + return true; + } + // changing any other property won't affect structure + return false; + } + public void close(boolean flush) { if (flush) { for (PropertyDiff propertyDiff : monitor.getPropertyDiffs()) { @@ -118,15 +159,15 @@ public class TreeConfigUIModel extends AbstractJavaBean implements PropertyChang bean.removePropertyChangeListener(this); } - public boolean isModified() { - return monitor.wasModified(); + public List<String> getGroupByOptionNames(String groupByName) { + return groupByHelper.getGroupByOptionNames(groupByName); } - public List<String> getGroupByNames(String moduleName) { - return groupByHelper.getGroupByNames(moduleName); + private void fireModified() { + firePropertyChange(MODIFIED, isModified()); } - public List<String> getGroupByOptionNames(String groupByName) { - return groupByHelper.getGroupByOptionNames(groupByName); + private void fireEmpty() { + firePropertyChange(EMPTY, isEmpty()); } } ===================================== client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/config/actions/ApplyConfigurationSupport.java ===================================== @@ -65,11 +65,12 @@ public abstract class ApplyConfigurationSupport extends TreeConfigUIActionSuppor protected final void doActionPerformed(TreeConfigUI ui) { TreeConfigUIModel model = ui.getModel(); + boolean canReselectNode = !model.isStructureChanged(); model.close(true); saveConfiguration(model.getOriginalBean()); addSimpleAction(t("observe.ui.tree.reload"), () -> { long t0 = System.nanoTime(); - applyConsumer(ui); + applyConsumer(ui, canReselectNode); setUiStatus(t("observe.ui.tree.loaded", Strings.convertTime(System.nanoTime() - t0))); }); } @@ -80,7 +81,7 @@ public abstract class ApplyConfigurationSupport extends TreeConfigUIActionSuppor protected abstract void saveConfiguration(TreeConfig originalConfig); - protected abstract void applyConsumer(TreeConfigUI ui); + protected abstract void applyConsumer(TreeConfigUI ui, boolean canReselectNode); private void atTheEnd(TreeConfigUI ui) { ui.getComponentPopupMenu().setVisible(false); ===================================== client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/config/actions/ApplyNavigationConfiguration.java ===================================== @@ -93,7 +93,7 @@ public class ApplyNavigationConfiguration extends ApplyConfigurationSupport { } @Override - protected void applyConsumer(TreeConfigUI ui) { + protected void applyConsumer(TreeConfigUI ui, boolean canReselectNode) { NavigationTree tree = tree(ui); NavigationNode selectedNode = selectedNode(ui); String[] paths = selectedNode == null ? null : selectedNode.toPaths(); @@ -101,7 +101,12 @@ public class ApplyNavigationConfiguration extends ApplyConfigurationSupport { tree.populate(null); NavigationUIHandler.updateStatistics(navigationUI(ui)); } finally { - SwingUtilities.invokeLater(() -> tree.reselectInitialNode(paths)); + if (canReselectNode) { + SwingUtilities.invokeLater(() -> tree.reselectInitialNode(paths)); + } else { + //FIXME We could find out if we can still select something, meanwhile first node is also fair + SwingUtilities.invokeLater(tree::selectFirstNode); + } } } } ===================================== client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/config/actions/ApplySelectionConfiguration.java ===================================== @@ -49,7 +49,7 @@ public class ApplySelectionConfiguration extends ApplyConfigurationSupport { } @Override - protected void applyConsumer(TreeConfigUI ui) { + protected void applyConsumer(TreeConfigUI ui, boolean canReselectNode) { consumer.accept(ui); } ===================================== client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/navigation/NavigationUIHandler.java ===================================== @@ -23,6 +23,7 @@ package fr.ird.observe.client.datasource.editor.api.navigation; */ import fr.ird.observe.client.WithClientUIContextApi; +import fr.ird.observe.client.datasource.api.ObserveSwingDataSource; import fr.ird.observe.client.datasource.editor.api.DataSourceEditorModel; import fr.ird.observe.client.datasource.editor.api.config.TreeConfigUIHandler; import fr.ird.observe.client.datasource.editor.api.menu.DataSourceEditorMenuModel; @@ -80,6 +81,11 @@ public class NavigationUIHandler implements UIHandler<NavigationUI>, WithClientU ui.getLabel().setText(menuModel.getStorageStatusText()); ui.getLabel().setToolTipText(menuModel.getStorageStatusTip()); ui.getLabel().setIcon(menuModel.getStorageStatusIcon()); + ObserveSwingDataSource mainDataSource = getDataSourcesManager().getMainDataSource(); + boolean mainStorageOpened = mainDataSource != null; + boolean mainStorageLocal = mainStorageOpened && mainDataSource.isLocal(); + boolean mainStorageRemote = mainStorageOpened && mainDataSource.isRemote(); + ui.getImportAvdthFile().setEnabled(mainStorageLocal || mainStorageRemote); } public void updateActions(NavigationNode selectedNode) { ===================================== client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/navigation/tree/root/RootNavigationNode.java ===================================== @@ -33,6 +33,7 @@ import org.apache.logging.log4j.Logger; import java.awt.Font; import java.util.Objects; +import java.util.Set; @AutoService(NavigationNode.class) public class RootNavigationNode extends NavigationNode { @@ -107,6 +108,10 @@ public class RootNavigationNode extends NavigationNode { return getDataSourcesManager().getMainDataSource().getRootOpenableService().getGroupByValue(request.getGroupByName(), request.getGroupByFlavor(), dataId); } + public boolean dataExists(String dataId) { + return !getDataSourcesManager().getMainDataSource().getDataSourceService().retainExistingIds(Set.of(dataId)).isEmpty(); + } + public NavigationNode findChildById(String id, boolean createIfEmpty) { NavigationNode result = super.findChildById(id); if (result == null && createIfEmpty) { @@ -142,30 +147,6 @@ public class RootNavigationNode extends NavigationNode { return result; } -// public NavigationNode findNodeFromPreviousSelectedNode(NavigationNode oldSelectedNode) { -// NavigationNode result = this; -// TreeNode[] pathToRoot = oldSelectedNode.getPath(); -// for (TreeNode treeNode : pathToRoot) { -// NavigationNode next; -// NavigationNode oldNode = (NavigationNode) treeNode; -// if (oldNode.getLevel() == 0) { -// next = result; -// } else if (oldNode.getLevel() == 1) { -// // use the method which will not create node -// next = ((RootNavigationNode) result).findChildByTypeWithNoCreate(oldNode.getClass(), oldNode.getInitializer().getSelectNodeId()); -// } else if (oldNode.getScope().isSelectNode()) { -// next = result.findChildByType(oldNode.getClass(), oldNode.getInitializer().getSelectNodeId()); -// } else { -// next = result.findChildByType(oldNode.getClass()); -// } -// if (next == null) { -// break; -// } -// result = next; -// } -// return result; -// } - public void clear() { RootNavigationInitializer initializer = getInitializer(); if (initializer == null) { ===================================== client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/navigation/tree/select/SelectNodesByModelNode.java ===================================== @@ -47,7 +47,12 @@ public class SelectNodesByModelNode implements SelectNodeStrategy { public static NavigationNode findFromRootNode(RootNavigationNode rootNode, IdNode<?> editNode) { // get root edit node IdNode<?> root = editNode.getRoot(); - String groupByValue = rootNode.computeGroupByValue(root.getId()); + String dataId = root.getId(); + // check if data id exists on this source + if (!rootNode.dataExists(dataId)) { + return null; + } + String groupByValue = rootNode.computeGroupByValue(dataId); NavigationNode groupByNode = SelectNodesByPath.findChildByPath(rootNode, groupByValue); if (groupByNode == null || root.equals(editNode)) { return groupByNode; ===================================== client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/navigation/tree/select/SelectNodesByPath.java ===================================== @@ -58,11 +58,18 @@ public class SelectNodesByPath implements SelectNodeStrategy { // just try with given groupBy value return getNavigationNode(result, 0, path); } - + if (!rootNode.getInitializer().getRequest().isLoadData()) { + // asking for a data node, but no data on this tree + return Optional.empty(); + } if (checkGroupBy) { // need at least two entries in path (the groupBy value + data id) // if no data id can no find out new groupBy value... String dataId = path[1]; + // check if data id exists on this source + if (!rootNode.dataExists(dataId)) { + return Optional.empty(); + } String groupByValue = rootNode.computeGroupByValue(dataId); NavigationNode groupByNode = findChildByPath(result, groupByValue); if (groupByNode != null) { ===================================== client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/wizard/tabs/SelectDataUIHandler.java ===================================== @@ -34,6 +34,7 @@ import fr.ird.observe.client.datasource.editor.api.wizard.ObstunaAdminAction; import fr.ird.observe.client.datasource.editor.api.wizard.StorageUIModel; import fr.ird.observe.client.util.ObserveKeyStrokesSupport; import fr.ird.observe.client.util.ObserveSwingTechnicalException; +import fr.ird.observe.navigation.id.Project; import fr.ird.observe.navigation.tree.selection.SelectionTree; import fr.ird.observe.navigation.tree.selection.SelectionTreeConfig; import fr.ird.observe.navigation.tree.selection.SelectionTreeModel; @@ -66,8 +67,11 @@ public class SelectDataUIHandler extends StorageTabUIHandler<SelectDataUI> imple SelectionTree tree = treePane.getTree(); SelectionTreeModel treeModel = tree.getModel(); if (init) { - List<String> openIds = context.getClientConfig().getNavigationEditModel().getIds(); - treeModel.setEditIds(openIds); + Project navigationEditModel = context.getClientConfig().getNavigationEditModel(); + if (navigationEditModel != null) { + List<String> openIds = navigationEditModel.getIds(); + treeModel.setEditIds(openIds); + } } if (createDataSource) { // create temporary data source ===================================== client/runner/src/main/i18n/translations/client-runner_en_GB.properties ===================================== @@ -822,7 +822,7 @@ observe.ui.title.connect.remoteDB=Connect to remove database observe.ui.title.connect.serverDB=Connect to server database observe.ui.title.delete=Confirm a delete observe.ui.title.h2.server.parameters=Configuration of local database in server mode -observe.ui.title.import.avdth=Import avdth file in a local database +observe.ui.title.import.avdth=Import avdth file observe.ui.title.import.localDB=Import a local database from a backup observe.ui.title.need.confirm=Need a confirmation... observe.ui.title.need.confirm.to.disable.referential=Need a confirmation to disable a referentiel data... ===================================== client/runner/src/main/i18n/translations/client-runner_es_ES.properties ===================================== @@ -822,7 +822,7 @@ observe.ui.title.connect.remoteDB=Conexión a una fuente de datos distante observe.ui.title.connect.serverDB=Conexión a un servidor de datos distante observe.ui.title.delete=Confirmación de la eliminación observe.ui.title.h2.server.parameters=Configuración de la base local en modo servidor -observe.ui.title.import.avdth=Import avdth file in a local database \#TODO +observe.ui.title.import.avdth=Import avdth file\#TODO observe.ui.title.import.localDB=Importar una base local gracia a una copia de seguridad observe.ui.title.need.confirm=Una confirmación se necesita... observe.ui.title.need.confirm.to.disable.referential=Una confirmación se necesita para désactivar un referencial... ===================================== client/runner/src/main/i18n/translations/client-runner_fr_FR.properties ===================================== @@ -822,7 +822,7 @@ observe.ui.title.connect.remoteDB=Connexion à une source de données distante observe.ui.title.connect.serverDB=Connexion à un serveur de données distant observe.ui.title.delete=Confirmation de suppression observe.ui.title.h2.server.parameters=Paramétrage de la base locale en mode serveur -observe.ui.title.import.avdth=Importer une base avdth dans la base locale +observe.ui.title.import.avdth=Importer une base avdth observe.ui.title.import.localDB=Importer une base locale depuis une sauvegarde observe.ui.title.need.confirm=Une confirmation de votre part est requise... observe.ui.title.need.confirm.to.disable.referential=Une confirmation de votre part est requise pour désactiver un référentiel.... ===================================== core/api/tree/src/test/resources/navigationTree.json ===================================== @@ -331,14 +331,6 @@ "lastUpdateDate": "2019-01-19T16:56:18.043Z", "text": "15/01/2019 - 17/01/2019 - observe.Common.none - Waliassaoun Ngoudzo" }, - "dataLlCommonTripGroupByObservationsProgram:fr.ird.referential.common.Program#1609292987444#0.2779633795557708": { - "count": 0, - "editable": true, - "enable": true, - "id": "fr.ird.referential.common.Program#1609292987444#0.2779633795557708", - "lastUpdateDate": "2020-12-30T01:49:47.515Z", - "text": "[LL] observe.data.Data.program FINSS" - }, "referentialCommon": { "editable": true, "text": "observe.referential.package.title" ===================================== core/persistence/resources/src/main/java/fr/ird/observe/spi/migration/v8/DataSourceMigrationForVersion_8_0.java ===================================== @@ -74,7 +74,6 @@ public class DataSourceMigrationForVersion_8_0 extends ByMajorMigrationVersionRe if (withIds) { addCommonCountry(executor); addCommonPerson(executor); - addCommonProgram(executor); fillSpeciesLists(executor); } processSchema(executor, withIds, "40", "ps_common"); @@ -166,15 +165,6 @@ public class DataSourceMigrationForVersion_8_0 extends ByMajorMigrationVersionRe }); } - private void addCommonProgram(MigrationVersionResourceExecutor executor) { - Set<String> existingCodes = executor.findMultipleResultAstSet(TopiaSqlQuery.wrap("SELECT code FROM observe_common.Program", resultSet -> resultSet.getString(1))); - Stream.of("50").forEach(code -> { - if (!existingCodes.contains(code)) { - executor.addScript("30", "add_referential_common_Program_" + code); - } - }); - } - private void fillSpeciesLists(MigrationVersionResourceExecutor executor) { List<String> speciesIds = executor.findMultipleResult(new TopiaSqlQuery<>() { @Override ===================================== core/persistence/resources/src/main/resources/db/migration/v8/8.0/30_add_referential_common_Program_50-common.sql deleted ===================================== @@ -1,22 +0,0 @@ ---- --- #%L --- ObServe Core :: Persistence :: Resources --- %% --- Copyright (C) 2008 - 2022 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% ---- -INSERT INTO common.program(topiaid, topiaversion, topiacreatedate, lastupdatedate, code, uri, homeid, needcomment, status, label1, label2, label3, label4, label5, label6, label7, label8, organism, nontargetobservation, targetdiscardsobservation, samplesobservation, objectsobservation, detailedactivitiesobservation, mammalsobservation, birdsobservation, baitobservation, startdate, enddate, comment, geartype)VALUES ('fr.ird.referential.common.Program#1609292987444#0.2779633795557708', 1, '2020-12-30 01:41:23.965', '2020-12-30 01:49:47.515', '50', null, null, FALSE, 1, 'FINSS', 'FINSS', 'FINSS', null, null, null, null, null, 'fr.ird.referential.common.Organism#1267835067241#0.06632537553306939', 1, 1, 1, 0, 0, 0, 0, 0, '2020-05-17 00:00:00', '2021-12-31 00:00:00', null, 1); ===================================== core/persistence/test/src/test/java/fr/ird/observe/persistence/test/SqlServiceTest.java ===================================== @@ -32,6 +32,8 @@ import fr.ird.observe.spi.context.DtoEntityContext; import fr.ird.observe.test.DatabaseName; import fr.ird.observe.test.spi.CopyDatabaseConfiguration; import fr.ird.observe.test.spi.DatabaseNameConfiguration; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; @@ -54,6 +56,8 @@ import java.util.stream.Collectors; @RunWith(Parameterized.class) public class SqlServiceTest extends PersistenceTestSupportWrite { + private static final Logger log = LogManager.getLogger(SqlServiceTest.class); + @Parameterized.Parameter public Class<? extends DataEntity> entityType; @@ -69,6 +73,7 @@ public class SqlServiceTest extends PersistenceTestSupportWrite { DtoEntityContext<BusinessDto, DtoReference, ? extends DataEntity, ?> spi = ObservePersistenceBusinessProject.fromEntity(entityType); String variableName = ObservePersistenceFixtures.getEntityVariableName(entityType); String id = ObservePersistenceFixtures.getVariable(variableName); + log.info(String.format("test delete for: %s", id)); ObserveTopiaApplicationContext applicationContext = localTestMethodResource.getTopiaApplicationContext(); try (ObserveTopiaPersistenceContext persistenceContext = applicationContext.newPersistenceContext()) { boolean exists = spi.getDao(persistenceContext).forTopiaIdEquals(id).exists(); ===================================== core/persistence/test/src/test/resources/fixtures/persistence/table_count/referential.properties ===================================== @@ -35,7 +35,7 @@ common.ocean=3 common.organism=10 common.person=739 ps_common.program=17 -ll_common.program=19 +ll_common.program=18 common.sex=5 common.shipowner=27 common.sizemeasuretype=21 ===================================== core/services/test/src/main/resources/fixtures/fr/ird/observe/services/service/NavigationService.properties ===================================== @@ -28,9 +28,9 @@ count.common.full=1 count.common.loadDisabledRootNodes=0 count.common.loadEmptyRootNodes=0 count.ll.default=2 -count.ll.full=22 -count.ll.loadDisabledRootNodes=19 -count.ll.loadEmptyRootNodes=12 +count.ll.full=21 +count.ll.loadDisabledRootNodes=18 +count.ll.loadEmptyRootNodes=11 count.none.default=0 count.none.full=9 count.none.loadDisabledRootNodes=0 ===================================== core/services/test/src/main/resources/fixtures/fr/ird/observe/services/service/ReferenceService.properties ===================================== @@ -22,7 +22,7 @@ defaultArg1=FIXME defaultId=${REFERENTIAL_PS_COMMON_PROGRAM} loadAllData.count=115 -loadAllReferential.count=36 +loadAllReferential.count=35 loadData.arg1=${defaultArg1} loadData.id=${PS_COMMON_TRIP} loadOrCreateData.arg1=${defaultArg1} ===================================== core/services/test/src/main/resources/fixtures/fr/ird/observe/services/service/ValidateService-referentialResult.json ===================================== @@ -116419,38 +116419,6 @@ } ] }, - { - "reference": { - "type": "fr.ird.observe.dto.referential.ll.common.ProgramReference", - "content": { - "code": "50", - "label": "FINSS", - "tripCount": 0, - "startDate": "2020-05-17T00:00:00.000Z", - "endDate": "2021-12-31T00:00:00.000Z", - "observation": false, - "logbook": false, - "needComment": false, - "enabled": true, - "id": "fr.ird.referential.ll.common.Program#1609292987444#0.2779633795557708", - "lastUpdateDate": "2021-09-17T00:00:00.000Z", - "topiaVersion": 2, - "topiaCreateDate": "2020-12-30T01:41:23.965Z" - } - }, - "messages": [ - { - "fieldName": "label1", - "scope": "WARNING", - "message": "Le libellé anglais n\u0027est pas traduit." - }, - { - "fieldName": "label3", - "scope": "WARNING", - "message": "Le libellé espagnol n\u0027est pas traduit." - } - ] - }, { "reference": { "type": "fr.ird.observe.dto.referential.ll.common.SettingShapeReference", ===================================== core/services/test/src/main/resources/fixtures/fr/ird/observe/services/service/referential/ReferentialService.properties ===================================== @@ -270,7 +270,7 @@ exists.arg1=${defaultArg1} exists.id=${defaultId} getEnabledReferentialLabelSet.count=10 getNaturalIds.count=0 -getReferenceSet.count=36 +getReferenceSet.count=35 getReferentialDtoSet.count=0 getReferentialIds.count=91 getReferentialReferenceSets.count=2 ===================================== model/src/main/resources/fixtures/global.properties ===================================== @@ -25,4 +25,4 @@ REFERENCE_DATA_COUNT=64 ENTITIES_LIMIT_SIZE=100 # fr.ird.observe.services.service.referential.ReferentialService # fr.ird.observe.services.local.service.referential.DifferentialModelTest -REFERENTIAL_COUNT=4061 +REFERENTIAL_COUNT=4060 View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/0eaf8bd49e333b3ae5215a1b1... -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/0eaf8bd49e333b3ae5215a1b1... You're receiving this email because of your account on gitlab.com.
participants (1)
-
Tony CHEMIT (@tchemit)