Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe

Commits:

6 changed files:

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 {
    141 141
                 loadReferential = false;
    
    142 142
                 selectAllData = false;
    
    143 143
             }
    
    144
    -        ObserveSwingDataSource dataSource = uiModel.getConfigModel().getLeftSourceModel().getSafeSource(true);
    
    145
    -        SelectionTreeModel selectionDataModel = getSelectionDataModel();
    
    146
    -        SelectionTreeConfig config = getTreeConfig();
    
    147
    -        if (init) {
    
    148
    -            SelectionTreeConfig newConfig = dataSource.newSelectionTreeConfig();
    
    149
    -            newConfig.setLoadData(loadData);
    
    150
    -            newConfig.setLoadReferential(loadReferential);
    
    151
    -            newConfig.setUseOpenData(useOpenData);
    
    152
    -            // do not show empty group by
    
    153
    -            newConfig.setLoadEmptyGroupBy(false);
    
    154
    -            // need to see all data
    
    155
    -            newConfig.setLoadNullGroupBy(true);
    
    156
    -            // need to see all data
    
    157
    -            newConfig.setLoadDisabledGroupBy(true);
    
    158
    -
    
    159
    -            config.init(newConfig);
    
    160
    -            Project navigationEditModel = getClientConfig().getNavigationEditModel();
    
    161
    -            if (navigationEditModel!=null) {
    
    162
    -                List<String> openIds = navigationEditModel.getIds();
    
    163
    -                selectionDataModel.setEditIds(openIds);
    
    144
    +        try (ObserveSwingDataSource dataSource = uiModel.getConfigModel().getLeftSourceModel().getSafeSource(true)) {
    
    145
    +            SelectionTreeModel selectionDataModel = getSelectionDataModel();
    
    146
    +            SelectionTreeConfig config = getTreeConfig();
    
    147
    +            if (init) {
    
    148
    +                SelectionTreeConfig newConfig = dataSource.newSelectionTreeConfig();
    
    149
    +                newConfig.setLoadData(loadData);
    
    150
    +                newConfig.setLoadReferential(loadReferential);
    
    151
    +                newConfig.setUseOpenData(useOpenData);
    
    152
    +                // do not show empty group by
    
    153
    +                newConfig.setLoadEmptyGroupBy(false);
    
    154
    +                // need to see all data
    
    155
    +                newConfig.setLoadNullGroupBy(true);
    
    156
    +                // need to see all data
    
    157
    +                newConfig.setLoadDisabledGroupBy(true);
    
    158
    +
    
    159
    +                config.init(newConfig);
    
    160
    +                Project navigationEditModel = getClientConfig().getNavigationEditModel();
    
    161
    +                if (navigationEditModel != null) {
    
    162
    +                    List<String> openIds = navigationEditModel.getIds();
    
    163
    +                    selectionDataModel.setEditIds(openIds);
    
    164
    +                }
    
    165
    +            } else {
    
    166
    +                config.setLoadData(loadData);
    
    167
    +                config.setLoadReferential(loadReferential);
    
    168
    +                config.setUseOpenData(useOpenData);
    
    164 169
                 }
    
    165
    -        } else {
    
    166
    -            config.setLoadData(loadData);
    
    167
    -            config.setLoadReferential(loadReferential);
    
    168
    -            config.setUseOpenData(useOpenData);
    
    169
    -        }
    
    170
    -        SelectionTreePaneHandler.initDataSource(selectTreePane, dataSource);
    
    171
    -        selectionDataModel.populate(dataSource.getNavigationService()::loadSelectionRoot);
    
    172
    -        if (uiModel.containsOperation(AdminStep.EXPORT_DATA)) {
    
    173
    -            ObserveSwingDataSource safeCentralSource = uiModel.getConfigModel().getRightSourceModel().getSafeSource(true);
    
    174
    -            List<String> existingTrip;
    
    175
    -            String modelType = config.getModuleName();
    
    176
    -            switch (modelType) {
    
    177
    -                case "ps":
    
    178
    -                    existingTrip = new ArrayList<>(safeCentralSource.getPsCommonTripService().getAllTripIds());
    
    179
    -                    break;
    
    180
    -                case "ll":
    
    181
    -                    existingTrip = new ArrayList<>(safeCentralSource.getLlCommonTripService().getAllTripIds());
    
    182
    -                    break;
    
    183
    -                default:
    
    184
    -                    throw new IllegalStateException(String.format("ModelType %s not managed", modelType));
    
    170
    +            SelectionTreePaneHandler.initDataSource(selectTreePane, dataSource);
    
    171
    +            selectionDataModel.populate(dataSource.getNavigationService()::loadSelectionRoot);
    
    172
    +            if (uiModel.containsOperation(AdminStep.EXPORT_DATA)) {
    
    173
    +                try (ObserveSwingDataSource safeCentralSource = uiModel.getConfigModel().getRightSourceModel().getSafeSource(true)) {
    
    174
    +                    String modelType = config.getModuleName();
    
    175
    +                    List<String> existingTrip;
    
    176
    +                    switch (modelType) {
    
    177
    +                        case "ps":
    
    178
    +                            existingTrip = new ArrayList<>(safeCentralSource.getPsCommonTripService().getAllTripIds());
    
    179
    +                            break;
    
    180
    +                        case "ll":
    
    181
    +                            existingTrip = new ArrayList<>(safeCentralSource.getLlCommonTripService().getAllTripIds());
    
    182
    +                            break;
    
    183
    +                        default:
    
    184
    +                            throw new IllegalStateException(String.format("ModelType %s not managed", modelType));
    
    185
    +                    }
    
    186
    +                    selectionDataModel.augmentsExistIds(existingTrip);
    
    187
    +                }
    
    185 188
                 }
    
    186
    -            selectionDataModel.augmentsExistIds(existingTrip);
    
    187
    -        }
    
    188
    -        boolean local = dataSource.isLocal();
    
    189
    -        if (local && selectAllData) {
    
    190
    -            selectionDataModel.selectAll();
    
    189
    +            boolean local = dataSource.isLocal();
    
    190
    +            if (local && selectAllData) {
    
    191
    +                selectionDataModel.selectAll();
    
    192
    +            }
    
    193
    +            return local;
    
    191 194
             }
    
    192
    -        return local;
    
    193 195
         }
    
    194 196
     
    
    195 197
     }

  • 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 {
    79 79
             stepModel.setData(data);
    
    80 80
             stepModel.setCentralSource(targetSource);
    
    81 81
             stepModel.setSource(incomingSource);
    
    82
    -
    
    83
    -        openSource(targetSource);
    
    84
    -
    
    85
    -        openSource(incomingSource);
    
    86
    -
    
    87 82
             sendMessage(t("observe.ui.datasource.editor.actions.exportData.message.prepare.data"));
    
    88
    -
    
    89 83
             sendMessage(t("observe.ui.datasource.editor.actions.exportData.message.operation.needFix", new Date()));
    
    90 84
             ui.getModel().setWasDone(true);
    
    91 85
             // 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 {
    70 70
         public WizardState doAction() throws Exception {
    
    71 71
             log.debug(this);
    
    72 72
     
    
    73
    -        ObserveSwingDataSource source = ui.getModel().getConfigModel().getLeftSourceModel().getSafeSource(false);
    
    74
    -
    
    75 73
             SaveLocalModel stepModel = ui.getModel().getSaveLocalModel();
    
    76 74
             if (!stepModel.isLocalSourceNeedSave()) {
    
    77 75
                 sendMessage("Aucune modification sur la base locale, opération non requise.");
    
    ... ... @@ -79,28 +77,27 @@ public class Start extends SaveLocalUIActionSupport {
    79 77
                 return WizardState.SUCCESSED;
    
    80 78
             }
    
    81 79
     
    
    82
    -        openSource(source);
    
    83
    -        long t00 = TimeLog.getTime();
    
    84
    -        if (stepModel.isDoBackup() && source.isLocal()) {
    
    85
    -
    
    86
    -            sendMessage("Sauvegarde de la base locale vers " + stepModel.getBackupFile());
    
    80
    +        try (ObserveSwingDataSource source = ui.getModel().getConfigModel().getLeftSourceModel().getSafeSource(true)) {
    
    81
    +            long t00 = TimeLog.getTime();
    
    82
    +            if (stepModel.isDoBackup() && source.isLocal()) {
    
    87 83
     
    
    88
    -            File backupFile = stepModel.getBackupFile();
    
    84
    +                sendMessage("Sauvegarde de la base locale vers " + stepModel.getBackupFile());
    
    89 85
     
    
    90
    -            DataSourceService dumpService = source.getDataSourceService();
    
    91
    -            CreateDatabaseRequest request = CreateDatabaseRequest.builder(false, source.getVersion()).addGeneratedSchema().addVersionTable().addStandaloneTables().addAllData().build();
    
    92
    -            SqlScript dump = dumpService.produceCreateSqlScript(request);
    
    93
    -            dump.copyAndCompress(backupFile.toPath());
    
    86
    +                File backupFile = stepModel.getBackupFile();
    
    94 87
     
    
    95
    -            stepModel.getClientConfig().updateBackupDirectory(backupFile);
    
    96
    -        }
    
    88
    +                DataSourceService dumpService = source.getDataSourceService();
    
    89
    +                CreateDatabaseRequest request = CreateDatabaseRequest.builder(false, source.getVersion()).addGeneratedSchema().addVersionTable().addStandaloneTables().addAllData().build();
    
    90
    +                SqlScript dump = dumpService.produceCreateSqlScript(request);
    
    91
    +                dump.copyAndCompress(backupFile.toPath());
    
    97 92
     
    
    98
    -        if (stepModel.containsStepForSave(AdminStep.SYNCHRONIZE)) {
    
    99
    -            saveUnidirectionalSynchronizeReferential();
    
    93
    +                stepModel.getClientConfig().updateBackupDirectory(backupFile);
    
    94
    +            }
    
    95
    +            if (stepModel.containsStepForSave(AdminStep.SYNCHRONIZE)) {
    
    96
    +                saveUnidirectionalSynchronizeReferential();
    
    97
    +            }
    
    98
    +            sendMessage(t("observe.ui.datasource.editor.actions.operation.message.done", new Date(), Strings.convertTime(TimeLog.getTime() - t00)));
    
    100 99
             }
    
    101 100
     
    
    102
    -        sendMessage(t("observe.ui.datasource.editor.actions.operation.message.done", new Date(), Strings.convertTime(TimeLog.getTime() - t00)));
    
    103
    -
    
    104 101
             return WizardState.SUCCESSED;
    
    105 102
         }
    
    106 103
     
    

  • 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 {
    56 56
     
    
    57 57
             ConfigModel configModel = ui.getModel().getConfigModel();
    
    58 58
     
    
    59
    -        ObserveSwingDataSource leftSource = configModel.getLeftSourceModel().getSafeSource(true);
    
    60
    -        DataSelectionTreePaneModel leftModel = stepModel.getModel(true);
    
    61
    -        leftModel.setSource(leftSource);
    
    62
    -
    
    63
    -        ObserveSwingDataSource rightSource = configModel.getRightSourceModel().getSafeSource(true);
    
    64
    -        DataSelectionTreePaneModel rightModel = stepModel.getModel(false);
    
    65
    -        rightModel.setSource(rightSource);
    
    66
    -
    
    67
    -        DataSelectionTreePane leftTreePane = tabUI.getLeftTreePane();
    
    68
    -        DataSelectionTreePaneHandler.initDatasource(configModel.getLeftSourceModel(), rightSource.getDataSourceInformation().canWriteData(), leftTreePane, leftModel.getIdStates());
    
    69
    -        sendMessage(t("observe.ui.datasource.editor.actions.synchro.data.message.data.loaded", leftSourceLabel));
    
    70
    -
    
    71
    -        DataSelectionTreePane rightTreePane = tabUI.getRightTreePane();
    
    72
    -        DataSelectionTreePaneHandler.initDatasource(configModel.getRightSourceModel(), leftSource.getDataSourceInformation().canWriteData(), rightTreePane, rightModel.getIdStates());
    
    73
    -        sendMessage(t("observe.ui.datasource.editor.actions.synchro.data.message.data.loaded", rightSourceLabel));
    
    74
    -
    
    75
    -        stepModel.buildFirstSelectionModels();
    
    76
    -
    
    77
    -        DataSelectionTreePaneHandler.finalizeTree(leftTreePane);
    
    78
    -        DataSelectionTreePaneHandler.finalizeTree(rightTreePane);
    
    59
    +        try (ObserveSwingDataSource leftSource = configModel.getLeftSourceModel().getSafeSource(true)) {
    
    60
    +            DataSelectionTreePaneModel leftModel = stepModel.getModel(true);
    
    61
    +            leftModel.setSource(leftSource);
    
    62
    +
    
    63
    +            try (ObserveSwingDataSource rightSource = configModel.getRightSourceModel().getSafeSource(true)) {
    
    64
    +                DataSelectionTreePaneModel rightModel = stepModel.getModel(false);
    
    65
    +                rightModel.setSource(rightSource);
    
    66
    +
    
    67
    +                DataSelectionTreePane leftTreePane = tabUI.getLeftTreePane();
    
    68
    +                DataSelectionTreePaneHandler.initDatasource(configModel.getLeftSourceModel(), rightSource.getDataSourceInformation().canWriteData(), leftTreePane, leftModel.getIdStates());
    
    69
    +                sendMessage(t("observe.ui.datasource.editor.actions.synchro.data.message.data.loaded", leftSourceLabel));
    
    70
    +
    
    71
    +                DataSelectionTreePane rightTreePane = tabUI.getRightTreePane();
    
    72
    +                DataSelectionTreePaneHandler.initDatasource(configModel.getRightSourceModel(), leftSource.getDataSourceInformation().canWriteData(), rightTreePane, rightModel.getIdStates());
    
    73
    +                sendMessage(t("observe.ui.datasource.editor.actions.synchro.data.message.data.loaded", rightSourceLabel));
    
    74
    +                stepModel.buildFirstSelectionModels();
    
    75
    +                DataSelectionTreePaneHandler.finalizeTree(leftTreePane);
    
    76
    +                DataSelectionTreePaneHandler.finalizeTree(rightTreePane);
    
    77
    +            }
    
    78
    +        }
    
    79 79
             ui.getModel().setWasDone(true);
    
    80 80
             return WizardState.NEED_FIX;
    
    81 81
         }
    

  • 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 {
    77 77
     
    
    78 78
             // on cree les sources de données
    
    79 79
     
    
    80
    -        ObserveSwingDataSource source = ui.getModel().getConfigModel().getLeftSourceModel().getSafeSourceNotOpened();
    
    81
    -        stepModel.setSource(source);
    
    82
    -
    
    83
    -        ObserveSwingDataSource centralSource = ui.getModel().getConfigModel().getRightSourceModel().getSafeSourceNotOpened();
    
    84
    -        stepModel.setCentralSource(centralSource);
    
    85
    -
    
    86
    -        openSource(source);
    
    87
    -        openSource(centralSource);
    
    88
    -
    
    89
    -        // construction du différentiel
    
    90
    -        sendMessage(t("observe.ui.datasource.editor.actions.synchro.referential.message.build.diff", centralSource.getLabel()));
    
    91
    -
    
    92
    -        DifferentialModelBuilder diffsEngine = stepModel.newDifferentialModelBuilder(source, centralSource);
    
    93
    -        SynchronizeEngine synchronizeEngine = stepModel.newReferentialSynchronizeEngine(source, centralSource);
    
    94
    -        UnidirectionalSynchronizeEngine engine = new UnidirectionalSynchronizeEngine(diffsEngine, synchronizeEngine);
    
    95
    -        stepModel.setEngine(engine);
    
    96
    -
    
    97
    -        ProgressionModel progressionModel = stepModel.getProgressModel();
    
    98
    -        UnidirectionalSynchronizeContext context = engine.prepareContext(progressionModel);
    
    99
    -        stepModel.setReferentialSynchronizeContext(context);
    
    100
    -        boolean needCallback = context.isNeedCallback();
    
    101
    -        if (needCallback) {
    
    102
    -            // il existe des références obsolètes à traiter
    
    103
    -            sendMessage(t("observe.ui.datasource.editor.actions.operation.message.needFix"));
    
    104
    -            stepModel.setReferentialSynchronizeCallbackResults(new UnidirectionalCallbackResults());
    
    105
    -
    
    106
    -            // des références obsolètes ont été détectées, on prépare les interfaces graphiques avec les données à corriger
    
    107
    -            List<ObsoleteReferentialReference<?>> obsoleteReferentialReferences = new LinkedList<>();
    
    108
    -            UnidirectionalCallbackRequests callbackRequests = stepModel.getReferentialSynchronizeContext().getCallbackRequests();
    
    109
    -
    
    110
    -            DecoratorService decoratorService = getDecoratorService();
    
    111
    -            for (UnidirectionalCallbackRequest<?> callbackRequest : callbackRequests) {
    
    112
    -                Class<? extends ReferentialDto> dtoType = callbackRequest.getDtoType();
    
    113
    -                List<ObsoleteReferentialReference<?>> obsoleteReferences = callbackRequest.getReferentialToReplace().stream()
    
    114
    -                        .map(d -> ObsoleteReferentialReference.create(dtoType, decoratorService, d))
    
    115
    -                        .collect(Collectors.toList());
    
    116
    -                obsoleteReferentialReferences.addAll(obsoleteReferences);
    
    80
    +        try (ObserveSwingDataSource source = ui.getModel().getConfigModel().getLeftSourceModel().getSafeSource(true)) {
    
    81
    +            stepModel.setSource(source);
    
    82
    +
    
    83
    +            try (ObserveSwingDataSource centralSource = ui.getModel().getConfigModel().getRightSourceModel().getSafeSource(true)) {
    
    84
    +                stepModel.setCentralSource(centralSource);
    
    85
    +
    
    86
    +//                openSource(source);
    
    87
    +//                openSource(centralSource);
    
    88
    +
    
    89
    +                // construction du différentiel
    
    90
    +                sendMessage(t("observe.ui.datasource.editor.actions.synchro.referential.message.build.diff", centralSource.getLabel()));
    
    91
    +
    
    92
    +                DifferentialModelBuilder diffsEngine = stepModel.newDifferentialModelBuilder(source, centralSource);
    
    93
    +                SynchronizeEngine synchronizeEngine = stepModel.newReferentialSynchronizeEngine(source, centralSource);
    
    94
    +
    
    95
    +                UnidirectionalSynchronizeEngine engine = new UnidirectionalSynchronizeEngine(diffsEngine, synchronizeEngine);
    
    96
    +                stepModel.setEngine(engine);
    
    97
    +
    
    98
    +                ProgressionModel progressionModel = stepModel.getProgressModel();
    
    99
    +                UnidirectionalSynchronizeContext context = engine.prepareContext(progressionModel);
    
    100
    +                stepModel.setReferentialSynchronizeContext(context);
    
    101
    +                boolean needCallback = context.isNeedCallback();
    
    102
    +                if (needCallback) {
    
    103
    +                    // il existe des références obsolètes à traiter
    
    104
    +                    sendMessage(t("observe.ui.datasource.editor.actions.operation.message.needFix"));
    
    105
    +                    stepModel.setReferentialSynchronizeCallbackResults(new UnidirectionalCallbackResults());
    
    106
    +
    
    107
    +                    // des références obsolètes ont été détectées, on prépare les interfaces graphiques avec les données à corriger
    
    108
    +                    List<ObsoleteReferentialReference<?>> obsoleteReferentialReferences = new LinkedList<>();
    
    109
    +                    UnidirectionalCallbackRequests callbackRequests = stepModel.getReferentialSynchronizeContext().getCallbackRequests();
    
    110
    +
    
    111
    +                    DecoratorService decoratorService = getDecoratorService();
    
    112
    +                    for (UnidirectionalCallbackRequest<?> callbackRequest : callbackRequests) {
    
    113
    +                        Class<? extends ReferentialDto> dtoType = callbackRequest.getDtoType();
    
    114
    +                        List<ObsoleteReferentialReference<?>> obsoleteReferences = callbackRequest.getReferentialToReplace().stream()
    
    115
    +                                                                                                  .map(d -> ObsoleteReferentialReference.create(dtoType, decoratorService, d))
    
    116
    +                                                                                                  .collect(Collectors.toList());
    
    117
    +                        obsoleteReferentialReferences.addAll(obsoleteReferences);
    
    118
    +                    }
    
    119
    +                    stepModel.setObsoleteReferences(obsoleteReferentialReferences);
    
    120
    +                    // need user fix on obsolete references
    
    121
    +                    return WizardState.NEED_FIX;
    
    122
    +                }
    
    123
    +                // pas de reference obsolete à traiter
    
    124
    +                // on termine le traitement
    
    125
    +                beforeSuccess();
    
    117 126
                 }
    
    118
    -            stepModel.setObsoleteReferences(obsoleteReferentialReferences);
    
    119
    -            // need user fix on obsolete references
    
    120
    -            return WizardState.NEED_FIX;
    
    121 127
             }
    
    122
    -        // pas de reference obsolete à traiter
    
    123
    -        // on termine le traitement
    
    124
    -        beforeSuccess();
    
    125 128
             return WizardState.SUCCESSED;
    
    126 129
         }
    
    127 130
     
    

  • 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 {
    60 60
     
    
    61 61
             ReferentialSynchroModel stepModel = ui.getStepModel();
    
    62 62
     
    
    63
    -        ObserveSwingDataSource leftSource = ui.getModel().getConfigModel().getLeftSourceModel().getSafeSource(true);
    
    64
    -        stepModel.setLeftSource(leftSource);
    
    65
    -
    
    66
    -        ObserveSwingDataSource rightSource = ui.getModel().getConfigModel().getRightSourceModel().getSafeSource(true);
    
    67
    -        stepModel.setRightSource(rightSource);
    
    68
    -        DifferentialModelBuilder engine = stepModel.newDifferentialModelBuilder(leftSource, rightSource);
    
    69
    -        stepModel.setEngine(engine);
    
    70
    -
    
    71
    -        ReferentialSynchronizeMode synchronizeMode = stepModel.getSynchronizeMode();
    
    72
    -        ProgressionModel progressionModel = stepModel.getProgressModel();
    
    73
    -        ReferentialSynchronizeTreeModelsBuilder treeModelsBuilder = new ReferentialSynchronizeTreeModelsBuilder(synchronizeMode, stepModel.isShowProperties(), engine, progressionModel);
    
    74
    -        Pair<ReferentialSynchronizeTreeModel, ReferentialSynchronizeTreeModel> treePair = treeModelsBuilder.build();
    
    75
    -        stepModel.setLeftTreeModel(treePair.getLeft());
    
    76
    -        stepModel.setRightTreeModel(treePair.getRight());
    
    63
    +        try (ObserveSwingDataSource leftSource = ui.getModel().getConfigModel().getLeftSourceModel().getSafeSource(true)) {
    
    64
    +            stepModel.setLeftSource(leftSource);
    
    65
    +
    
    66
    +            try (ObserveSwingDataSource rightSource = ui.getModel().getConfigModel().getRightSourceModel().getSafeSource(true)) {
    
    67
    +                stepModel.setRightSource(rightSource);
    
    68
    +                DifferentialModelBuilder engine = stepModel.newDifferentialModelBuilder(leftSource, rightSource);
    
    69
    +                stepModel.setEngine(engine);
    
    70
    +                ReferentialSynchronizeMode synchronizeMode = stepModel.getSynchronizeMode();
    
    71
    +                ProgressionModel progressionModel = stepModel.getProgressModel();
    
    72
    +                ReferentialSynchronizeTreeModelsBuilder treeModelsBuilder = new ReferentialSynchronizeTreeModelsBuilder(synchronizeMode, stepModel.isShowProperties(), engine, progressionModel);
    
    73
    +                Pair<ReferentialSynchronizeTreeModel, ReferentialSynchronizeTreeModel> treePair = treeModelsBuilder.build();
    
    74
    +                stepModel.setLeftTreeModel(treePair.getLeft());
    
    75
    +                stepModel.setRightTreeModel(treePair.getRight());
    
    76
    +            }
    
    77
    +        }
    
    78
    +
    
    77 79
             stepModel.getTasks().removeAllElements();
    
    78 80
     
    
    79 81
             AdminUIModel model = ui.getModel();