[Git][ultreiaio/ird-observe][develop] Lors d'exports massifs de données, le token expire rapidement et fait échouer...
Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe Commits: 69061c0d by Tony Chemit at 2024-02-26T08:44:43+01:00 Lors d'exports massifs de données, le token expire rapidement et fait échouer la suite du processus - Closes #2839 - - - - - 6 changed files: - client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/config/SelectDataModel.java - client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/export/actions/Prepare.java - client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/save/actions/Start.java - client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/synchronize/data/actions/Start.java - client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/synchronize/referential/legacy/actions/Start.java - client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/synchronize/referential/ng/actions/Start.java Changes: ===================================== client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/config/SelectDataModel.java ===================================== @@ -141,55 +141,57 @@ public class SelectDataModel extends AdminActionModel { loadReferential = false; selectAllData = false; } - ObserveSwingDataSource dataSource = uiModel.getConfigModel().getLeftSourceModel().getSafeSource(true); - SelectionTreeModel selectionDataModel = getSelectionDataModel(); - SelectionTreeConfig config = getTreeConfig(); - if (init) { - SelectionTreeConfig newConfig = dataSource.newSelectionTreeConfig(); - newConfig.setLoadData(loadData); - newConfig.setLoadReferential(loadReferential); - newConfig.setUseOpenData(useOpenData); - // do not show empty group by - newConfig.setLoadEmptyGroupBy(false); - // need to see all data - newConfig.setLoadNullGroupBy(true); - // need to see all data - newConfig.setLoadDisabledGroupBy(true); - - config.init(newConfig); - Project navigationEditModel = getClientConfig().getNavigationEditModel(); - if (navigationEditModel!=null) { - List<String> openIds = navigationEditModel.getIds(); - selectionDataModel.setEditIds(openIds); + try (ObserveSwingDataSource dataSource = uiModel.getConfigModel().getLeftSourceModel().getSafeSource(true)) { + SelectionTreeModel selectionDataModel = getSelectionDataModel(); + SelectionTreeConfig config = getTreeConfig(); + if (init) { + SelectionTreeConfig newConfig = dataSource.newSelectionTreeConfig(); + newConfig.setLoadData(loadData); + newConfig.setLoadReferential(loadReferential); + newConfig.setUseOpenData(useOpenData); + // do not show empty group by + newConfig.setLoadEmptyGroupBy(false); + // need to see all data + newConfig.setLoadNullGroupBy(true); + // need to see all data + newConfig.setLoadDisabledGroupBy(true); + + config.init(newConfig); + Project navigationEditModel = getClientConfig().getNavigationEditModel(); + if (navigationEditModel != null) { + List<String> openIds = navigationEditModel.getIds(); + selectionDataModel.setEditIds(openIds); + } + } else { + config.setLoadData(loadData); + config.setLoadReferential(loadReferential); + config.setUseOpenData(useOpenData); } - } else { - config.setLoadData(loadData); - config.setLoadReferential(loadReferential); - config.setUseOpenData(useOpenData); - } - SelectionTreePaneHandler.initDataSource(selectTreePane, dataSource); - selectionDataModel.populate(dataSource.getNavigationService()::loadSelectionRoot); - if (uiModel.containsOperation(AdminStep.EXPORT_DATA)) { - ObserveSwingDataSource safeCentralSource = uiModel.getConfigModel().getRightSourceModel().getSafeSource(true); - List<String> existingTrip; - String modelType = config.getModuleName(); - switch (modelType) { - case "ps": - existingTrip = new ArrayList<>(safeCentralSource.getPsCommonTripService().getAllTripIds()); - break; - case "ll": - existingTrip = new ArrayList<>(safeCentralSource.getLlCommonTripService().getAllTripIds()); - break; - default: - throw new IllegalStateException(String.format("ModelType %s not managed", modelType)); + SelectionTreePaneHandler.initDataSource(selectTreePane, dataSource); + selectionDataModel.populate(dataSource.getNavigationService()::loadSelectionRoot); + if (uiModel.containsOperation(AdminStep.EXPORT_DATA)) { + try (ObserveSwingDataSource safeCentralSource = uiModel.getConfigModel().getRightSourceModel().getSafeSource(true)) { + String modelType = config.getModuleName(); + List<String> existingTrip; + switch (modelType) { + case "ps": + existingTrip = new ArrayList<>(safeCentralSource.getPsCommonTripService().getAllTripIds()); + break; + case "ll": + existingTrip = new ArrayList<>(safeCentralSource.getLlCommonTripService().getAllTripIds()); + break; + default: + throw new IllegalStateException(String.format("ModelType %s not managed", modelType)); + } + selectionDataModel.augmentsExistIds(existingTrip); + } } - selectionDataModel.augmentsExistIds(existingTrip); - } - boolean local = dataSource.isLocal(); - if (local && selectAllData) { - selectionDataModel.selectAll(); + boolean local = dataSource.isLocal(); + if (local && selectAllData) { + selectionDataModel.selectAll(); + } + return local; } - return local; } } ===================================== client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/export/actions/Prepare.java ===================================== @@ -79,13 +79,7 @@ public class Prepare extends ExportUIActionSupport { stepModel.setData(data); stepModel.setCentralSource(targetSource); stepModel.setSource(incomingSource); - - openSource(targetSource); - - openSource(incomingSource); - sendMessage(t("observe.ui.datasource.editor.actions.exportData.message.prepare.data")); - sendMessage(t("observe.ui.datasource.editor.actions.exportData.message.operation.needFix", new Date())); ui.getModel().setWasDone(true); // user can now select real data to export ===================================== client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/save/actions/Start.java ===================================== @@ -70,8 +70,6 @@ public class Start extends SaveLocalUIActionSupport { public WizardState doAction() throws Exception { log.debug(this); - ObserveSwingDataSource source = ui.getModel().getConfigModel().getLeftSourceModel().getSafeSource(false); - SaveLocalModel stepModel = ui.getModel().getSaveLocalModel(); if (!stepModel.isLocalSourceNeedSave()) { sendMessage("Aucune modification sur la base locale, opération non requise."); @@ -79,28 +77,27 @@ public class Start extends SaveLocalUIActionSupport { return WizardState.SUCCESSED; } - openSource(source); - long t00 = TimeLog.getTime(); - if (stepModel.isDoBackup() && source.isLocal()) { - - sendMessage("Sauvegarde de la base locale vers " + stepModel.getBackupFile()); + try (ObserveSwingDataSource source = ui.getModel().getConfigModel().getLeftSourceModel().getSafeSource(true)) { + long t00 = TimeLog.getTime(); + if (stepModel.isDoBackup() && source.isLocal()) { - File backupFile = stepModel.getBackupFile(); + sendMessage("Sauvegarde de la base locale vers " + stepModel.getBackupFile()); - DataSourceService dumpService = source.getDataSourceService(); - CreateDatabaseRequest request = CreateDatabaseRequest.builder(false, source.getVersion()).addGeneratedSchema().addVersionTable().addStandaloneTables().addAllData().build(); - SqlScript dump = dumpService.produceCreateSqlScript(request); - dump.copyAndCompress(backupFile.toPath()); + File backupFile = stepModel.getBackupFile(); - stepModel.getClientConfig().updateBackupDirectory(backupFile); - } + DataSourceService dumpService = source.getDataSourceService(); + CreateDatabaseRequest request = CreateDatabaseRequest.builder(false, source.getVersion()).addGeneratedSchema().addVersionTable().addStandaloneTables().addAllData().build(); + SqlScript dump = dumpService.produceCreateSqlScript(request); + dump.copyAndCompress(backupFile.toPath()); - if (stepModel.containsStepForSave(AdminStep.SYNCHRONIZE)) { - saveUnidirectionalSynchronizeReferential(); + stepModel.getClientConfig().updateBackupDirectory(backupFile); + } + if (stepModel.containsStepForSave(AdminStep.SYNCHRONIZE)) { + saveUnidirectionalSynchronizeReferential(); + } + sendMessage(t("observe.ui.datasource.editor.actions.operation.message.done", new Date(), Strings.convertTime(TimeLog.getTime() - t00))); } - sendMessage(t("observe.ui.datasource.editor.actions.operation.message.done", new Date(), Strings.convertTime(TimeLog.getTime() - t00))); - return WizardState.SUCCESSED; } ===================================== client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/synchronize/data/actions/Start.java ===================================== @@ -56,26 +56,26 @@ public class Start extends DataSynchroUIActionSupport { ConfigModel configModel = ui.getModel().getConfigModel(); - ObserveSwingDataSource leftSource = configModel.getLeftSourceModel().getSafeSource(true); - DataSelectionTreePaneModel leftModel = stepModel.getModel(true); - leftModel.setSource(leftSource); - - ObserveSwingDataSource rightSource = configModel.getRightSourceModel().getSafeSource(true); - DataSelectionTreePaneModel rightModel = stepModel.getModel(false); - rightModel.setSource(rightSource); - - DataSelectionTreePane leftTreePane = tabUI.getLeftTreePane(); - DataSelectionTreePaneHandler.initDatasource(configModel.getLeftSourceModel(), rightSource.getDataSourceInformation().canWriteData(), leftTreePane, leftModel.getIdStates()); - sendMessage(t("observe.ui.datasource.editor.actions.synchro.data.message.data.loaded", leftSourceLabel)); - - DataSelectionTreePane rightTreePane = tabUI.getRightTreePane(); - DataSelectionTreePaneHandler.initDatasource(configModel.getRightSourceModel(), leftSource.getDataSourceInformation().canWriteData(), rightTreePane, rightModel.getIdStates()); - sendMessage(t("observe.ui.datasource.editor.actions.synchro.data.message.data.loaded", rightSourceLabel)); - - stepModel.buildFirstSelectionModels(); - - DataSelectionTreePaneHandler.finalizeTree(leftTreePane); - DataSelectionTreePaneHandler.finalizeTree(rightTreePane); + try (ObserveSwingDataSource leftSource = configModel.getLeftSourceModel().getSafeSource(true)) { + DataSelectionTreePaneModel leftModel = stepModel.getModel(true); + leftModel.setSource(leftSource); + + try (ObserveSwingDataSource rightSource = configModel.getRightSourceModel().getSafeSource(true)) { + DataSelectionTreePaneModel rightModel = stepModel.getModel(false); + rightModel.setSource(rightSource); + + DataSelectionTreePane leftTreePane = tabUI.getLeftTreePane(); + DataSelectionTreePaneHandler.initDatasource(configModel.getLeftSourceModel(), rightSource.getDataSourceInformation().canWriteData(), leftTreePane, leftModel.getIdStates()); + sendMessage(t("observe.ui.datasource.editor.actions.synchro.data.message.data.loaded", leftSourceLabel)); + + DataSelectionTreePane rightTreePane = tabUI.getRightTreePane(); + DataSelectionTreePaneHandler.initDatasource(configModel.getRightSourceModel(), leftSource.getDataSourceInformation().canWriteData(), rightTreePane, rightModel.getIdStates()); + sendMessage(t("observe.ui.datasource.editor.actions.synchro.data.message.data.loaded", rightSourceLabel)); + stepModel.buildFirstSelectionModels(); + DataSelectionTreePaneHandler.finalizeTree(leftTreePane); + DataSelectionTreePaneHandler.finalizeTree(rightTreePane); + } + } ui.getModel().setWasDone(true); return WizardState.NEED_FIX; } ===================================== client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/synchronize/referential/legacy/actions/Start.java ===================================== @@ -77,51 +77,54 @@ public class Start extends SynchroUIActionSupport { // on cree les sources de données - ObserveSwingDataSource source = ui.getModel().getConfigModel().getLeftSourceModel().getSafeSourceNotOpened(); - stepModel.setSource(source); - - ObserveSwingDataSource centralSource = ui.getModel().getConfigModel().getRightSourceModel().getSafeSourceNotOpened(); - stepModel.setCentralSource(centralSource); - - openSource(source); - openSource(centralSource); - - // construction du différentiel - sendMessage(t("observe.ui.datasource.editor.actions.synchro.referential.message.build.diff", centralSource.getLabel())); - - DifferentialModelBuilder diffsEngine = stepModel.newDifferentialModelBuilder(source, centralSource); - SynchronizeEngine synchronizeEngine = stepModel.newReferentialSynchronizeEngine(source, centralSource); - UnidirectionalSynchronizeEngine engine = new UnidirectionalSynchronizeEngine(diffsEngine, synchronizeEngine); - stepModel.setEngine(engine); - - ProgressionModel progressionModel = stepModel.getProgressModel(); - UnidirectionalSynchronizeContext context = engine.prepareContext(progressionModel); - stepModel.setReferentialSynchronizeContext(context); - boolean needCallback = context.isNeedCallback(); - if (needCallback) { - // il existe des références obsolètes à traiter - sendMessage(t("observe.ui.datasource.editor.actions.operation.message.needFix")); - stepModel.setReferentialSynchronizeCallbackResults(new UnidirectionalCallbackResults()); - - // des références obsolètes ont été détectées, on prépare les interfaces graphiques avec les données à corriger - List<ObsoleteReferentialReference<?>> obsoleteReferentialReferences = new LinkedList<>(); - UnidirectionalCallbackRequests callbackRequests = stepModel.getReferentialSynchronizeContext().getCallbackRequests(); - - DecoratorService decoratorService = getDecoratorService(); - for (UnidirectionalCallbackRequest<?> callbackRequest : callbackRequests) { - Class<? extends ReferentialDto> dtoType = callbackRequest.getDtoType(); - List<ObsoleteReferentialReference<?>> obsoleteReferences = callbackRequest.getReferentialToReplace().stream() - .map(d -> ObsoleteReferentialReference.create(dtoType, decoratorService, d)) - .collect(Collectors.toList()); - obsoleteReferentialReferences.addAll(obsoleteReferences); + try (ObserveSwingDataSource source = ui.getModel().getConfigModel().getLeftSourceModel().getSafeSource(true)) { + stepModel.setSource(source); + + try (ObserveSwingDataSource centralSource = ui.getModel().getConfigModel().getRightSourceModel().getSafeSource(true)) { + stepModel.setCentralSource(centralSource); + +// openSource(source); +// openSource(centralSource); + + // construction du différentiel + sendMessage(t("observe.ui.datasource.editor.actions.synchro.referential.message.build.diff", centralSource.getLabel())); + + DifferentialModelBuilder diffsEngine = stepModel.newDifferentialModelBuilder(source, centralSource); + SynchronizeEngine synchronizeEngine = stepModel.newReferentialSynchronizeEngine(source, centralSource); + + UnidirectionalSynchronizeEngine engine = new UnidirectionalSynchronizeEngine(diffsEngine, synchronizeEngine); + stepModel.setEngine(engine); + + ProgressionModel progressionModel = stepModel.getProgressModel(); + UnidirectionalSynchronizeContext context = engine.prepareContext(progressionModel); + stepModel.setReferentialSynchronizeContext(context); + boolean needCallback = context.isNeedCallback(); + if (needCallback) { + // il existe des références obsolètes à traiter + sendMessage(t("observe.ui.datasource.editor.actions.operation.message.needFix")); + stepModel.setReferentialSynchronizeCallbackResults(new UnidirectionalCallbackResults()); + + // des références obsolètes ont été détectées, on prépare les interfaces graphiques avec les données à corriger + List<ObsoleteReferentialReference<?>> obsoleteReferentialReferences = new LinkedList<>(); + UnidirectionalCallbackRequests callbackRequests = stepModel.getReferentialSynchronizeContext().getCallbackRequests(); + + DecoratorService decoratorService = getDecoratorService(); + for (UnidirectionalCallbackRequest<?> callbackRequest : callbackRequests) { + Class<? extends ReferentialDto> dtoType = callbackRequest.getDtoType(); + List<ObsoleteReferentialReference<?>> obsoleteReferences = callbackRequest.getReferentialToReplace().stream() + .map(d -> ObsoleteReferentialReference.create(dtoType, decoratorService, d)) + .collect(Collectors.toList()); + obsoleteReferentialReferences.addAll(obsoleteReferences); + } + stepModel.setObsoleteReferences(obsoleteReferentialReferences); + // need user fix on obsolete references + return WizardState.NEED_FIX; + } + // pas de reference obsolete à traiter + // on termine le traitement + beforeSuccess(); } - stepModel.setObsoleteReferences(obsoleteReferentialReferences); - // need user fix on obsolete references - return WizardState.NEED_FIX; } - // pas de reference obsolete à traiter - // on termine le traitement - beforeSuccess(); return WizardState.SUCCESSED; } ===================================== client/datasource/actions/src/main/java/fr/ird/observe/client/datasource/actions/synchronize/referential/ng/actions/Start.java ===================================== @@ -60,20 +60,22 @@ public class Start extends ReferentialSynchroUIActionSupport { ReferentialSynchroModel stepModel = ui.getStepModel(); - ObserveSwingDataSource leftSource = ui.getModel().getConfigModel().getLeftSourceModel().getSafeSource(true); - stepModel.setLeftSource(leftSource); - - ObserveSwingDataSource rightSource = ui.getModel().getConfigModel().getRightSourceModel().getSafeSource(true); - stepModel.setRightSource(rightSource); - DifferentialModelBuilder engine = stepModel.newDifferentialModelBuilder(leftSource, rightSource); - stepModel.setEngine(engine); - - ReferentialSynchronizeMode synchronizeMode = stepModel.getSynchronizeMode(); - ProgressionModel progressionModel = stepModel.getProgressModel(); - ReferentialSynchronizeTreeModelsBuilder treeModelsBuilder = new ReferentialSynchronizeTreeModelsBuilder(synchronizeMode, stepModel.isShowProperties(), engine, progressionModel); - Pair<ReferentialSynchronizeTreeModel, ReferentialSynchronizeTreeModel> treePair = treeModelsBuilder.build(); - stepModel.setLeftTreeModel(treePair.getLeft()); - stepModel.setRightTreeModel(treePair.getRight()); + try (ObserveSwingDataSource leftSource = ui.getModel().getConfigModel().getLeftSourceModel().getSafeSource(true)) { + stepModel.setLeftSource(leftSource); + + try (ObserveSwingDataSource rightSource = ui.getModel().getConfigModel().getRightSourceModel().getSafeSource(true)) { + stepModel.setRightSource(rightSource); + DifferentialModelBuilder engine = stepModel.newDifferentialModelBuilder(leftSource, rightSource); + stepModel.setEngine(engine); + ReferentialSynchronizeMode synchronizeMode = stepModel.getSynchronizeMode(); + ProgressionModel progressionModel = stepModel.getProgressModel(); + ReferentialSynchronizeTreeModelsBuilder treeModelsBuilder = new ReferentialSynchronizeTreeModelsBuilder(synchronizeMode, stepModel.isShowProperties(), engine, progressionModel); + Pair<ReferentialSynchronizeTreeModel, ReferentialSynchronizeTreeModel> treePair = treeModelsBuilder.build(); + stepModel.setLeftTreeModel(treePair.getLeft()); + stepModel.setRightTreeModel(treePair.getRight()); + } + } + stepModel.getTasks().removeAllElements(); AdminUIModel model = ui.getModel(); View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/69061c0d31aff16de9cd5f6cc9... -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/69061c0d31aff16de9cd5f6cc9... You're receiving this email because of your account on gitlab.com.
participants (1)
-
Tony CHEMIT (@tchemit)