From f745edf7717cbefa690a0e326f4c3fc44f67eefa Mon Sep 17 00:00:00 2001
From: Alrick Oudot <alrick.oudot@supagro.fr>
Date: Thu, 11 Jan 2024 10:50:50 +0100
Subject: [PATCH 01/10] stepImport method extraction in DataTreeCell

---
 .../po2vocabmanager/utils/DataTreeCell.java   | 261 +++++++++---------
 1 file changed, 136 insertions(+), 125 deletions(-)

diff --git a/src/main/java/fr/inra/po2vocabmanager/utils/DataTreeCell.java b/src/main/java/fr/inra/po2vocabmanager/utils/DataTreeCell.java
index a81920b0..18c73d9f 100644
--- a/src/main/java/fr/inra/po2vocabmanager/utils/DataTreeCell.java
+++ b/src/main/java/fr/inra/po2vocabmanager/utils/DataTreeCell.java
@@ -1026,131 +1026,7 @@ public class DataTreeCell extends TextFieldTreeCell<DataNode> {
                     MenuItem importStep = new MenuItem("Import Step");
                     importStep.setGraphic(new ImageView(UITools.getImage("resources/images/file-import-16.png")));
                     importStep.disableProperty().bind(Bindings.not(mainApp.getEditProperty()));
-                    importStep.setOnAction(event -> {
-                        StepFile file = (StepFile) item.getFile();
-                        FileChooser fileChooser = new FileChooser();
-                        fileChooser.setTitle("Import file");
-                        fileChooser.getExtensionFilters().add(new FileChooser.ExtensionFilter("Xlsx files (*.xlsx)","*.xlsx"));
-                        File fileImport = fileChooser.showOpenDialog(MainApp.primaryStage);
-                        if (fileImport != null) {
-                            MainApp.logger.info("start importing file " + fileImport.getName());
-                            ImportReport importReport = file.realPreConst(fileImport);
-                            if(importReport.success()) {
-
-                                // validation de l'import par l'utilisateur
-                                Dialog<ButtonType> validateImport = new Dialog();
-                                validateImport.setTitle("import validation");
-                                validateImport.initOwner(MainApp.primaryStage);
-                                validateImport.initModality(Modality.WINDOW_MODAL);
-                                ButtonType importButtonType = new ButtonType("Import", ButtonBar.ButtonData.OK_DONE);
-                                validateImport.getDialogPane().getButtonTypes().addAll(importButtonType, ButtonType.CANCEL);
-
-                                GridPane paneImport = new GridPane();
-                                paneImport.setHgap(20);
-                                paneImport.setVgap(20);
-
-                                Integer comptLine = 0;
-                                Text stepText = new Text(file.getNameProperty().getValue());
-                                Text sepa = new Text(" : ");
-                                paneImport.add(new ImageView(UITools.getImage("resources/images/treeview/step.png")), 0, comptLine);
-                                paneImport.add(stepText, 1, comptLine);
-                                paneImport.add(sepa, 2, comptLine);
-                                paneImport.add(new ImageView(UITools.getImage("resources/images/update_30.png")), 3, comptLine);
-
-                                comptLine++;
-
-
-                                for (ObservationFile obsF : file.getObservationFiles()) {
-                                    Text obsText = new Text(obsF.getCID().getValue().get());
-                                    Text sepa2 = new Text(" : ");
-                                    paneImport.add(new ImageView(UITools.getImage("resources/images/treeview/observation.png")), 0, comptLine);
-                                    paneImport.add(obsText, 1, comptLine);
-                                    paneImport.add(sepa2, 2, comptLine);
-                                    if (importReport.getObsMapping().containsValue(obsF)) {
-                                        paneImport.add(new ImageView(UITools.getImage("resources/images/update_30.png")), 3, comptLine);
-                                    } else {
-                                        paneImport.add(new ImageView(UITools.getImage("resources/images/del_30.png")), 3, comptLine);
-                                    }
-                                    comptLine++;
-                                }
-
-                                for(XSSFSheet oo : importReport.getObsMapping().keySet()) {
-                                    if(importReport.getObsMapping().get(oo) == null) { // new obs
-                                        Text obsText = new Text(oo.getSheetName());
-                                        Text sepa2 = new Text(" : ");
-                                        paneImport.add(new ImageView(UITools.getImage("resources/images/treeview/observation.png")), 0, comptLine);
-                                        paneImport.add(obsText, 1, comptLine);
-                                        paneImport.add(sepa2, 2, comptLine);
-                                        paneImport.add(new ImageView(UITools.getImage("resources/images/add_30.png")), 3, comptLine);
-                                        comptLine++;
-                                    }
-                                }
-
-                                for (CompositionFile compoF : file.getCompositionFile().keySet()) {
-                                    Text compoText = new Text(compoF.getCompositionID().getValue().get());
-                                    Text sepa2 = new Text(" : ");
-                                    paneImport.add(new ImageView(UITools.getImage("resources/images/treeview/composition.png")), 0, comptLine);
-                                    paneImport.add(compoText, 1, comptLine);
-                                    paneImport.add(sepa2, 2, comptLine);
-                                    if(importReport.getCompoMapping().values().stream().map(org.apache.commons.lang3.tuple.Pair::getLeft).noneMatch(c -> c.equals(compoF))) {
-                                        paneImport.add(new ImageView(UITools.getImage("resources/images/del_30.png")), 3, comptLine);
-                                    } else {
-                                        paneImport.add(new ImageView(UITools.getImage("resources/images/update_30.png")), 3, comptLine);
-                                    }
-                                    comptLine++;
-                                }
-
-                                for(XSSFSheet oo : importReport.getCompoMapping().keySet()) {
-                                    if(importReport.getCompoMapping().get(oo).getLeft() == null) { // new Compo
-                                        Text compoText = new Text(oo.getSheetName());
-                                        Text sepa2 = new Text(" : ");
-                                        paneImport.add(new ImageView(UITools.getImage("resources/images/treeview/composition.png")), 0, comptLine);
-                                        paneImport.add(compoText, 1, comptLine);
-                                        paneImport.add(sepa2, 2, comptLine);
-                                        paneImport.add(new ImageView(UITools.getImage("resources/images/add_30.png")), 3, comptLine);
-                                        comptLine++;
-                                    }
-                                }
-
-                                validateImport.getDialogPane().setContent(paneImport);
-                                Optional<ButtonType> result = validateImport.showAndWait();
-                                if (result.isPresent() && result.get() == importButtonType) {
-                                    // l'utilisateru valide la la mise à jour
-                                    Report report = file.constructDataFromImport(fileImport);
-                                    if(report.success()) {
-                                        file.getData().setModified(true);
-
-                                        MainApp.getDataControler().buildProcessTree(file.getGeneralFile());
-                                        MainApp.getDataControler().selectNode(file);
-                                        Alert okImport = new Alert(Alert.AlertType.INFORMATION);
-                                        okImport.setGraphic(new ImageView(UITools.getImage("resources/images/valid.png")));
-                                        okImport.setHeaderText(null);
-                                        okImport.setTitle("Successful import");
-                                        okImport.setContentText("Successful import");
-                                        okImport.initModality(Modality.APPLICATION_MODAL);
-                                        okImport.initOwner(MainApp.primaryStage);
-                                        okImport.showAndWait();
-                                    } else {
-                                        file.getData().setModified(true);
-                                        Alert errorImport = new Alert(Alert.AlertType.ERROR);
-                                        errorImport.setTitle("Import error");
-                                        errorImport.setContentText(report.toString());
-                                        errorImport.initModality(Modality.APPLICATION_MODAL);
-                                        errorImport.initOwner(MainApp.primaryStage);
-                                        errorImport.showAndWait();
-                                    }
-                                }
-
-                            } else {
-                                Alert errorImport = new Alert(Alert.AlertType.ERROR);
-                                errorImport.setTitle("Import error");
-                                errorImport.setContentText(importReport.toString());
-                                errorImport.initModality(Modality.APPLICATION_MODAL);
-                                errorImport.initOwner(MainApp.primaryStage);
-                                errorImport.showAndWait();
-                            }
-                        }
-                    });
+                    importStep.setOnAction(event -> stepImport(item));
                     menu.getItems().add(importStep);
 
                     MenuItem deleteStep = new MenuItem("Delete Step");
@@ -1229,6 +1105,14 @@ public class DataTreeCell extends TextFieldTreeCell<DataNode> {
                         addStep(iti, null);
                     });
 
+                    MenuItem addProcessStepFromCSV = new MenuItem("Create New Step From CSV");
+                    addProcessStepFromCSV.setGraphic(new ImageView(UITools.getImage("resources/images/treeview/step_csv.png")));
+                    addProcessStepFromCSV.disableProperty().bind(Bindings.not(mainApp.getEditProperty()));
+                    addProcessStepFromCSV.setOnAction(event -> {
+                        ItineraryFile iti = (ItineraryFile) item.getFile();
+                        addStep(iti, null);
+                    });
+
                     MenuItem addProcessExistingStep = new MenuItem("Add Existing Step");
                     addProcessExistingStep.setGraphic(new ImageView(UITools.getImage("resources/images/treeview/step.png")));
                     addProcessExistingStep.disableProperty().bind(Bindings.not(mainApp.getEditProperty()));
@@ -1251,6 +1135,7 @@ public class DataTreeCell extends TextFieldTreeCell<DataNode> {
                     });
 
                     menu.getItems().add(addProcessStep);
+                    menu.getItems().add(addProcessStepFromCSV);
                     menu.getItems().add(addProcessExistingStep);
                     menu.getItems().add(newObsIti);
                     menu.getItems().add(new SeparatorMenuItem());
@@ -1264,4 +1149,130 @@ public class DataTreeCell extends TextFieldTreeCell<DataNode> {
         }
     }
 
+    private static void stepImport(DataNode item) {
+        StepFile file = (StepFile) item.getFile();
+        FileChooser fileChooser = new FileChooser();
+        fileChooser.setTitle("Import file");
+        fileChooser.getExtensionFilters().add(new FileChooser.ExtensionFilter("Xlsx files (*.xlsx)","*.xlsx"));
+        File fileImport = fileChooser.showOpenDialog(MainApp.primaryStage);
+        if (fileImport != null) {
+            MainApp.logger.info("start importing file " + fileImport.getName());
+            ImportReport importReport = file.realPreConst(fileImport);
+            if(importReport.success()) {
+
+                // validation de l'import par l'utilisateur
+                Dialog<ButtonType> validateImport = new Dialog();
+                validateImport.setTitle("import validation");
+                validateImport.initOwner(MainApp.primaryStage);
+                validateImport.initModality(Modality.WINDOW_MODAL);
+                ButtonType importButtonType = new ButtonType("Import", ButtonBar.ButtonData.OK_DONE);
+                validateImport.getDialogPane().getButtonTypes().addAll(importButtonType, ButtonType.CANCEL);
+
+                GridPane paneImport = new GridPane();
+                paneImport.setHgap(20);
+                paneImport.setVgap(20);
+
+                Integer comptLine = 0;
+                Text stepText = new Text(file.getNameProperty().getValue());
+                Text sepa = new Text(" : ");
+                paneImport.add(new ImageView(UITools.getImage("resources/images/treeview/step.png")), 0, comptLine);
+                paneImport.add(stepText, 1, comptLine);
+                paneImport.add(sepa, 2, comptLine);
+                paneImport.add(new ImageView(UITools.getImage("resources/images/update_30.png")), 3, comptLine);
+
+                comptLine++;
+
+
+                for (ObservationFile obsF : file.getObservationFiles()) {
+                    Text obsText = new Text(obsF.getCID().getValue().get());
+                    Text sepa2 = new Text(" : ");
+                    paneImport.add(new ImageView(UITools.getImage("resources/images/treeview/observation.png")), 0, comptLine);
+                    paneImport.add(obsText, 1, comptLine);
+                    paneImport.add(sepa2, 2, comptLine);
+                    if (importReport.getObsMapping().containsValue(obsF)) {
+                        paneImport.add(new ImageView(UITools.getImage("resources/images/update_30.png")), 3, comptLine);
+                    } else {
+                        paneImport.add(new ImageView(UITools.getImage("resources/images/del_30.png")), 3, comptLine);
+                    }
+                    comptLine++;
+                }
+
+                for(XSSFSheet oo : importReport.getObsMapping().keySet()) {
+                    if(importReport.getObsMapping().get(oo) == null) { // new obs
+                        Text obsText = new Text(oo.getSheetName());
+                        Text sepa2 = new Text(" : ");
+                        paneImport.add(new ImageView(UITools.getImage("resources/images/treeview/observation.png")), 0, comptLine);
+                        paneImport.add(obsText, 1, comptLine);
+                        paneImport.add(sepa2, 2, comptLine);
+                        paneImport.add(new ImageView(UITools.getImage("resources/images/add_30.png")), 3, comptLine);
+                        comptLine++;
+                    }
+                }
+
+                for (CompositionFile compoF : file.getCompositionFile().keySet()) {
+                    Text compoText = new Text(compoF.getCompositionID().getValue().get());
+                    Text sepa2 = new Text(" : ");
+                    paneImport.add(new ImageView(UITools.getImage("resources/images/treeview/composition.png")), 0, comptLine);
+                    paneImport.add(compoText, 1, comptLine);
+                    paneImport.add(sepa2, 2, comptLine);
+                    if(importReport.getCompoMapping().values().stream().map(org.apache.commons.lang3.tuple.Pair::getLeft).noneMatch(c -> c.equals(compoF))) {
+                        paneImport.add(new ImageView(UITools.getImage("resources/images/del_30.png")), 3, comptLine);
+                    } else {
+                        paneImport.add(new ImageView(UITools.getImage("resources/images/update_30.png")), 3, comptLine);
+                    }
+                    comptLine++;
+                }
+
+                for(XSSFSheet oo : importReport.getCompoMapping().keySet()) {
+                    if(importReport.getCompoMapping().get(oo).getLeft() == null) { // new Compo
+                        Text compoText = new Text(oo.getSheetName());
+                        Text sepa2 = new Text(" : ");
+                        paneImport.add(new ImageView(UITools.getImage("resources/images/treeview/composition.png")), 0, comptLine);
+                        paneImport.add(compoText, 1, comptLine);
+                        paneImport.add(sepa2, 2, comptLine);
+                        paneImport.add(new ImageView(UITools.getImage("resources/images/add_30.png")), 3, comptLine);
+                        comptLine++;
+                    }
+                }
+
+                validateImport.getDialogPane().setContent(paneImport);
+                Optional<ButtonType> result = validateImport.showAndWait();
+                if (result.isPresent() && result.get() == importButtonType) {
+                    // l'utilisateru valide la la mise à jour
+                    Report report = file.constructDataFromImport(fileImport);
+                    if(report.success()) {
+                        file.getData().setModified(true);
+
+                        MainApp.getDataControler().buildProcessTree(file.getGeneralFile());
+                        MainApp.getDataControler().selectNode(file);
+                        Alert okImport = new Alert(Alert.AlertType.INFORMATION);
+                        okImport.setGraphic(new ImageView(UITools.getImage("resources/images/valid.png")));
+                        okImport.setHeaderText(null);
+                        okImport.setTitle("Successful import");
+                        okImport.setContentText("Successful import");
+                        okImport.initModality(Modality.APPLICATION_MODAL);
+                        okImport.initOwner(MainApp.primaryStage);
+                        okImport.showAndWait();
+                    } else {
+                        file.getData().setModified(true);
+                        Alert errorImport = new Alert(Alert.AlertType.ERROR);
+                        errorImport.setTitle("Import error");
+                        errorImport.setContentText(report.toString());
+                        errorImport.initModality(Modality.APPLICATION_MODAL);
+                        errorImport.initOwner(MainApp.primaryStage);
+                        errorImport.showAndWait();
+                    }
+                }
+
+            } else {
+                Alert errorImport = new Alert(Alert.AlertType.ERROR);
+                errorImport.setTitle("Import error");
+                errorImport.setContentText(importReport.toString());
+                errorImport.initModality(Modality.APPLICATION_MODAL);
+                errorImport.initOwner(MainApp.primaryStage);
+                errorImport.showAndWait();
+            }
+        }
+    }
+
 }
-- 
GitLab


From 7923004c45a202bce66705c631de02401435d39b Mon Sep 17 00:00:00 2001
From: Alrick Oudot <alrick.oudot@supagro.fr>
Date: Thu, 11 Jan 2024 10:51:17 +0100
Subject: [PATCH 02/10] csv step import icon

---
 .../resources/images/treeview/step_csv.png        | Bin 0 -> 335 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 src/main/resources/resources/images/treeview/step_csv.png

diff --git a/src/main/resources/resources/images/treeview/step_csv.png b/src/main/resources/resources/images/treeview/step_csv.png
new file mode 100644
index 0000000000000000000000000000000000000000..de79cfe12b4a6a1645b23cd96cf1e274a6ab17e7
GIT binary patch
literal 335
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl
z_H+M9WCij$3p^r=fts&^Fr)3Yh>t+QC!Q{jAr}5eCpmT<au9Icy{eaQk;1wo!e{R7
zK6A&RVEvAu!k3I8$CN7+=34h`7A#a=wq|~b_u{5bu6+R|fA9Zv<w}a{WMR#FIl<*}
zmcie|XWyRhNUn4L{Ddv#;;dK$!R>R)S>v1-TWa68E1niQZYy~6fz$c=_}340R$lnN
z*V_DqP>b>%!GBA?9k9<{HGNg@+r<BC^CWg~tA#B3bjjf3{BIo3^->~dFJCZg-3IG7
z`wfivm-wsxim>`=5wa!lyT)<5Usq1`L~IhiWbc`Da<@ZQTCeU6r(l&lOMT-XF=zFH
dzS{LzGBPcxP=9wIXdckN44$rjF6*2UngE4Ui=qGk

literal 0
HcmV?d00001

-- 
GitLab


From 8ace53080a4068e4a796d95f74c995096bfa6031 Mon Sep 17 00:00:00 2001
From: Alrick Oudot <alrick.oudot@supagro.fr>
Date: Thu, 11 Jan 2024 11:19:53 +0100
Subject: [PATCH 03/10] isNewImport boolean added to stepImport()

---
 .../java/fr/inra/po2vocabmanager/utils/DataTreeCell.java   | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/src/main/java/fr/inra/po2vocabmanager/utils/DataTreeCell.java b/src/main/java/fr/inra/po2vocabmanager/utils/DataTreeCell.java
index 18c73d9f..9522d025 100644
--- a/src/main/java/fr/inra/po2vocabmanager/utils/DataTreeCell.java
+++ b/src/main/java/fr/inra/po2vocabmanager/utils/DataTreeCell.java
@@ -1026,7 +1026,7 @@ public class DataTreeCell extends TextFieldTreeCell<DataNode> {
                     MenuItem importStep = new MenuItem("Import Step");
                     importStep.setGraphic(new ImageView(UITools.getImage("resources/images/file-import-16.png")));
                     importStep.disableProperty().bind(Bindings.not(mainApp.getEditProperty()));
-                    importStep.setOnAction(event -> stepImport(item));
+                    importStep.setOnAction(event -> stepImport(item, false));
                     menu.getItems().add(importStep);
 
                     MenuItem deleteStep = new MenuItem("Delete Step");
@@ -1111,6 +1111,7 @@ public class DataTreeCell extends TextFieldTreeCell<DataNode> {
                     addProcessStepFromCSV.setOnAction(event -> {
                         ItineraryFile iti = (ItineraryFile) item.getFile();
                         addStep(iti, null);
+                        stepImport(item, true);
                     });
 
                     MenuItem addProcessExistingStep = new MenuItem("Add Existing Step");
@@ -1149,7 +1150,7 @@ public class DataTreeCell extends TextFieldTreeCell<DataNode> {
         }
     }
 
-    private static void stepImport(DataNode item) {
+    private static void stepImport(DataNode item, boolean isNewImport) {
         StepFile file = (StepFile) item.getFile();
         FileChooser fileChooser = new FileChooser();
         fileChooser.setTitle("Import file");
@@ -1157,7 +1158,7 @@ public class DataTreeCell extends TextFieldTreeCell<DataNode> {
         File fileImport = fileChooser.showOpenDialog(MainApp.primaryStage);
         if (fileImport != null) {
             MainApp.logger.info("start importing file " + fileImport.getName());
-            ImportReport importReport = file.realPreConst(fileImport);
+            ImportReport importReport = file.realPreConst(fileImport, isNewImport);
             if(importReport.success()) {
 
                 // validation de l'import par l'utilisateur
-- 
GitLab


From 947fc0c1e49eb541d129f97084e191130f836c7e Mon Sep 17 00:00:00 2001
From: Alrick Oudot <alrick.oudot@supagro.fr>
Date: Wed, 17 Jan 2024 09:14:34 +0100
Subject: [PATCH 04/10] addStepData() extracted from addStep()

---
 .../po2vocabmanager/utils/DataTreeCell.java   | 29 +++++++++++--------
 1 file changed, 17 insertions(+), 12 deletions(-)

diff --git a/src/main/java/fr/inra/po2vocabmanager/utils/DataTreeCell.java b/src/main/java/fr/inra/po2vocabmanager/utils/DataTreeCell.java
index 9522d025..e57e0015 100644
--- a/src/main/java/fr/inra/po2vocabmanager/utils/DataTreeCell.java
+++ b/src/main/java/fr/inra/po2vocabmanager/utils/DataTreeCell.java
@@ -248,34 +248,39 @@ public class DataTreeCell extends TextFieldTreeCell<DataNode> {
         Button bok = (Button) diagNewStep.getDialogPane().lookupButton(ButtonType.OK);
         bok.disableProperty().bind(Bindings.or(nextStepName.textProperty().isEmpty(), Bindings.and(rbCopy.selectedProperty(), comboStep.valueProperty().isNull())));
         bok.setOnAction(actionEvent -> {
+            addStepData(itineraryFile, parentStep, current, nextStepName.getText(), rbCopy.isSelected(), comboStep);
+        });
+        diagNewStep.showAndWait();
+
+    }
+
+    private static StepFile addStepData(ItineraryFile itiFile, StepFile parentStep, GeneralFile current, String stepName, boolean rbCopy, ComboBox<StepFile> comboStep) {
             StepFile s = new StepFile("new step", current);
-            s.setId(nextStepName.getText());
-            if(rbCopy.isSelected()) {
+        s.setId(stepName);
+        if(rbCopy && comboStep != null) {
                 StepFile initial = comboStep.getSelectionModel().getSelectedItem();
-                s.cloneFrom(initial, itineraryFile, new HashMap<>(), itineraryFile, null);
+            s.cloneFrom(initial, itiFile, new HashMap<>(), itiFile, null);
             }
 
             if(parentStep != null) {
                 parentStep.addSubStep(s);
             }
 
-            itineraryFile.addLinkItinerary(s, null);
+        itiFile.addLinkItinerary(s, null);
             DataNode stepNode = new DataNode(DataNodeType.STEP);
-            stepNode.setItineraryFile(itineraryFile);
+        stepNode.setItineraryFile(itiFile);
             if(parentStep != null) {
-                MainApp.getDataControler().addNode(s,stepNode, MainApp.getDataControler().getDataNode(parentStep, itineraryFile));
+            MainApp.getDataControler().addNode(s,stepNode, MainApp.getDataControler().getDataNode(parentStep, itiFile));
             } else {
-                MainApp.getDataControler().addNode(s,stepNode, MainApp.getDataControler().getDataNode(itineraryFile) );
+            MainApp.getDataControler().addNode(s,stepNode, MainApp.getDataControler().getDataNode(itiFile) );
             }
 
-            if(rbCopy.isSelected()) {
-                MainApp.getDataControler().buildItineraryTree(itineraryFile);
+        if(rbCopy) {
+            MainApp.getDataControler().buildItineraryTree(itiFile);
             }
             MainApp.getDataControler().selectNode(s);
             current.getData().setModified(true);
-        });
-        diagNewStep.showAndWait();
-
+        return s;
     }
 
 
-- 
GitLab


From 3129852b8553b5d91f5e8eaf2d5551bc9578b5b6 Mon Sep 17 00:00:00 2001
From: Alrick Oudot <alrick.oudot@supagro.fr>
Date: Wed, 17 Jan 2024 09:18:56 +0100
Subject: [PATCH 05/10] =?UTF-8?q?Suppression=20de=20la=20blank=20step=20ut?=
 =?UTF-8?q?ilis=C3=A9=20pour=20l'import=20si=20celui=20ci=20est=20interrom?=
 =?UTF-8?q?pu?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../fr/inra/po2vocabmanager/utils/DataTreeCell.java | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/src/main/java/fr/inra/po2vocabmanager/utils/DataTreeCell.java b/src/main/java/fr/inra/po2vocabmanager/utils/DataTreeCell.java
index e57e0015..d918d86e 100644
--- a/src/main/java/fr/inra/po2vocabmanager/utils/DataTreeCell.java
+++ b/src/main/java/fr/inra/po2vocabmanager/utils/DataTreeCell.java
@@ -1260,6 +1260,7 @@ public class DataTreeCell extends TextFieldTreeCell<DataNode> {
                         okImport.initOwner(MainApp.primaryStage);
                         okImport.showAndWait();
                     } else {
+                        deleteBlankStepBeingImported(file, isNewStep);
                         file.getData().setModified(true);
                         Alert errorImport = new Alert(Alert.AlertType.ERROR);
                         errorImport.setTitle("Import error");
@@ -1268,9 +1269,12 @@ public class DataTreeCell extends TextFieldTreeCell<DataNode> {
                         errorImport.initOwner(MainApp.primaryStage);
                         errorImport.showAndWait();
                     }
+                } else {
+                    deleteBlankStepBeingImported(file, isNewStep);
                 }
 
             } else {
+                deleteBlankStepBeingImported(file, isNewStep);
                 Alert errorImport = new Alert(Alert.AlertType.ERROR);
                 errorImport.setTitle("Import error");
                 errorImport.setContentText(importReport.toString());
@@ -1278,6 +1282,15 @@ public class DataTreeCell extends TextFieldTreeCell<DataNode> {
                 errorImport.initOwner(MainApp.primaryStage);
                 errorImport.showAndWait();
             }
+        } else {
+            deleteBlankStepBeingImported(file, isNewStep);
+        }
+    }
+
+    private static void deleteBlankStepBeingImported(StepFile file, boolean isNewStep) {
+        if (isNewStep)  {
+            file.removeFile();
+            MainApp.getDataControler().deleteDataNode(file);
         }
     }
 
-- 
GitLab


From e318dabdc6444dd11125d52b648ffd964498f90c Mon Sep 17 00:00:00 2001
From: Alrick Oudot <alrick.oudot@supagro.fr>
Date: Wed, 17 Jan 2024 09:19:24 +0100
Subject: [PATCH 06/10] Mise en service de la fonction d'import d'une nouvelle
 Step par fichier CSV

---
 .../po2vocabmanager/utils/DataTreeCell.java   | 51 +++++++++----------
 1 file changed, 25 insertions(+), 26 deletions(-)

diff --git a/src/main/java/fr/inra/po2vocabmanager/utils/DataTreeCell.java b/src/main/java/fr/inra/po2vocabmanager/utils/DataTreeCell.java
index d918d86e..c2097b16 100644
--- a/src/main/java/fr/inra/po2vocabmanager/utils/DataTreeCell.java
+++ b/src/main/java/fr/inra/po2vocabmanager/utils/DataTreeCell.java
@@ -255,31 +255,31 @@ public class DataTreeCell extends TextFieldTreeCell<DataNode> {
     }
 
     private static StepFile addStepData(ItineraryFile itiFile, StepFile parentStep, GeneralFile current, String stepName, boolean rbCopy, ComboBox<StepFile> comboStep) {
-            StepFile s = new StepFile("new step", current);
+        StepFile s = new StepFile("new step", current);
         s.setId(stepName);
         if(rbCopy && comboStep != null) {
-                StepFile initial = comboStep.getSelectionModel().getSelectedItem();
+            StepFile initial = comboStep.getSelectionModel().getSelectedItem();
             s.cloneFrom(initial, itiFile, new HashMap<>(), itiFile, null);
-            }
+        }
 
-            if(parentStep != null) {
-                parentStep.addSubStep(s);
-            }
+        if(parentStep != null) {
+            parentStep.addSubStep(s);
+        }
 
         itiFile.addLinkItinerary(s, null);
-            DataNode stepNode = new DataNode(DataNodeType.STEP);
+        DataNode stepNode = new DataNode(DataNodeType.STEP);
         stepNode.setItineraryFile(itiFile);
-            if(parentStep != null) {
+        if(parentStep != null) {
             MainApp.getDataControler().addNode(s,stepNode, MainApp.getDataControler().getDataNode(parentStep, itiFile));
-            } else {
+        } else {
             MainApp.getDataControler().addNode(s,stepNode, MainApp.getDataControler().getDataNode(itiFile) );
-            }
+        }
 
         if(rbCopy) {
             MainApp.getDataControler().buildItineraryTree(itiFile);
-            }
-            MainApp.getDataControler().selectNode(s);
-            current.getData().setModified(true);
+        }
+        MainApp.getDataControler().selectNode(s);
+        current.getData().setModified(true);
         return s;
     }
 
@@ -1031,13 +1031,13 @@ public class DataTreeCell extends TextFieldTreeCell<DataNode> {
                     MenuItem importStep = new MenuItem("Import Step");
                     importStep.setGraphic(new ImageView(UITools.getImage("resources/images/file-import-16.png")));
                     importStep.disableProperty().bind(Bindings.not(mainApp.getEditProperty()));
-                    importStep.setOnAction(event -> stepImport(item, false));
+                    importStep.setOnAction(event -> stepImport((StepFile) item.getFile(), false));
                     menu.getItems().add(importStep);
 
-                    MenuItem deleteStep = new MenuItem("Delete Step");
-                    deleteStep.setGraphic(new ImageView(UITools.getImage("resources/images/del_16.png")));
-                    deleteStep.disableProperty().bind(Bindings.not(mainApp.getEditProperty()));
-                    deleteStep.setOnAction(event -> {
+                    MenuItem deleteStepButton = new MenuItem("Delete Step");
+                    deleteStepButton.setGraphic(new ImageView(UITools.getImage("resources/images/del_16.png")));
+                    deleteStepButton.disableProperty().bind(Bindings.not(mainApp.getEditProperty()));
+                    deleteStepButton.setOnAction(event -> {
                         StepFile stepFile = (StepFile) item.getFile();
                         Alert a = new Alert(Alert.AlertType.CONFIRMATION);
                         a.setTitle("Delete Step");
@@ -1068,7 +1068,7 @@ public class DataTreeCell extends TextFieldTreeCell<DataNode> {
 
                     menu.getItems().add(new SeparatorMenuItem());
                     menu.getItems().add(removeStepIti);
-                    menu.getItems().add(deleteStep);
+                    menu.getItems().add(deleteStepButton);
                     break;
                 case ITINERARY:
                     MenuItem delItinerary = new MenuItem("Delete Itinerary");
@@ -1115,8 +1115,8 @@ public class DataTreeCell extends TextFieldTreeCell<DataNode> {
                     addProcessStepFromCSV.disableProperty().bind(Bindings.not(mainApp.getEditProperty()));
                     addProcessStepFromCSV.setOnAction(event -> {
                         ItineraryFile iti = (ItineraryFile) item.getFile();
-                        addStep(iti, null);
-                        stepImport(item, true);
+                        StepFile step = addStepData(iti, null, iti.getProcessFile(), "emptyTemplateForImportingNewStep", false, null);
+                        stepImport(step, true);
                     });
 
                     MenuItem addProcessExistingStep = new MenuItem("Add Existing Step");
@@ -1155,15 +1155,14 @@ public class DataTreeCell extends TextFieldTreeCell<DataNode> {
         }
     }
 
-    private static void stepImport(DataNode item, boolean isNewImport) {
-        StepFile file = (StepFile) item.getFile();
+    private static void stepImport(StepFile file, boolean isNewStep) {
         FileChooser fileChooser = new FileChooser();
         fileChooser.setTitle("Import file");
         fileChooser.getExtensionFilters().add(new FileChooser.ExtensionFilter("Xlsx files (*.xlsx)","*.xlsx"));
         File fileImport = fileChooser.showOpenDialog(MainApp.primaryStage);
         if (fileImport != null) {
             MainApp.logger.info("start importing file " + fileImport.getName());
-            ImportReport importReport = file.realPreConst(fileImport, isNewImport);
+            ImportReport importReport = file.realPreConst(fileImport, isNewStep);
             if(importReport.success()) {
 
                 // validation de l'import par l'utilisateur
@@ -1244,8 +1243,8 @@ public class DataTreeCell extends TextFieldTreeCell<DataNode> {
                 validateImport.getDialogPane().setContent(paneImport);
                 Optional<ButtonType> result = validateImport.showAndWait();
                 if (result.isPresent() && result.get() == importButtonType) {
-                    // l'utilisateru valide la la mise à jour
-                    Report report = file.constructDataFromImport(fileImport);
+                    // l'utilisateur valide la la mise à jour
+                    Report report = file.constructDataFromImport(fileImport, isNewStep);
                     if(report.success()) {
                         file.getData().setModified(true);
 
-- 
GitLab


From 57780b96f7313cfc557003574eb4ed475a02e4a1 Mon Sep 17 00:00:00 2001
From: Alrick Oudot <alrick.oudot@supagro.fr>
Date: Tue, 30 Jan 2024 15:26:56 +0100
Subject: [PATCH 07/10] =?UTF-8?q?Travail=20au=20d=C3=A9couplage=20front/en?=
 =?UTF-8?q?gine?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../po2vocabmanager/utils/DataTreeCell.java   | 20 ++++++-------------
 1 file changed, 6 insertions(+), 14 deletions(-)

diff --git a/src/main/java/fr/inra/po2vocabmanager/utils/DataTreeCell.java b/src/main/java/fr/inra/po2vocabmanager/utils/DataTreeCell.java
index c2097b16..fa28e597 100644
--- a/src/main/java/fr/inra/po2vocabmanager/utils/DataTreeCell.java
+++ b/src/main/java/fr/inra/po2vocabmanager/utils/DataTreeCell.java
@@ -1115,8 +1115,7 @@ public class DataTreeCell extends TextFieldTreeCell<DataNode> {
                     addProcessStepFromCSV.disableProperty().bind(Bindings.not(mainApp.getEditProperty()));
                     addProcessStepFromCSV.setOnAction(event -> {
                         ItineraryFile iti = (ItineraryFile) item.getFile();
-                        StepFile step = addStepData(iti, null, iti.getProcessFile(), "emptyTemplateForImportingNewStep", false, null);
-                        stepImport(step, true);
+                        stepImport(iti.initBlankStepForExcelImport(), true);
                     });
 
                     MenuItem addProcessExistingStep = new MenuItem("Add Existing Step");
@@ -1241,8 +1240,11 @@ public class DataTreeCell extends TextFieldTreeCell<DataNode> {
                 }
 
                 validateImport.getDialogPane().setContent(paneImport);
-                Optional<ButtonType> result = validateImport.showAndWait();
-                if (result.isPresent() && result.get() == importButtonType) {
+                Optional<ButtonType> result = Optional.empty();
+                if(!isNewStep) {
+                    result = validateImport.showAndWait();
+                }
+                if (isNewStep || result.isPresent() && result.get() == importButtonType) {
                     // l'utilisateur valide la la mise à jour
                     Report report = file.constructDataFromImport(fileImport, isNewStep);
                     if(report.success()) {
@@ -1259,7 +1261,6 @@ public class DataTreeCell extends TextFieldTreeCell<DataNode> {
                         okImport.initOwner(MainApp.primaryStage);
                         okImport.showAndWait();
                     } else {
-                        deleteBlankStepBeingImported(file, isNewStep);
                         file.getData().setModified(true);
                         Alert errorImport = new Alert(Alert.AlertType.ERROR);
                         errorImport.setTitle("Import error");
@@ -1269,11 +1270,9 @@ public class DataTreeCell extends TextFieldTreeCell<DataNode> {
                         errorImport.showAndWait();
                     }
                 } else {
-                    deleteBlankStepBeingImported(file, isNewStep);
                 }
 
             } else {
-                deleteBlankStepBeingImported(file, isNewStep);
                 Alert errorImport = new Alert(Alert.AlertType.ERROR);
                 errorImport.setTitle("Import error");
                 errorImport.setContentText(importReport.toString());
@@ -1282,15 +1281,8 @@ public class DataTreeCell extends TextFieldTreeCell<DataNode> {
                 errorImport.showAndWait();
             }
         } else {
-            deleteBlankStepBeingImported(file, isNewStep);
         }
     }
 
-    private static void deleteBlankStepBeingImported(StepFile file, boolean isNewStep) {
-        if (isNewStep)  {
-            file.removeFile();
-            MainApp.getDataControler().deleteDataNode(file);
-        }
-    }
 
 }
-- 
GitLab


From a6a9bd700ef27e19cafd9d54aff0e54652596eaf Mon Sep 17 00:00:00 2001
From: Alrick Oudot <alrick.oudot@supagro.fr>
Date: Wed, 13 Mar 2024 13:50:39 +0100
Subject: [PATCH 08/10] Extraction handleInterfaceUpdate(),
 updateAndNotifyInterfaceOfModification(), showErrorImportAlert() et
 showOkImportAlert()

---
 .../po2vocabmanager/utils/DataTreeCell.java   | 79 +++++++++----------
 1 file changed, 36 insertions(+), 43 deletions(-)

diff --git a/src/main/java/fr/inra/po2vocabmanager/utils/DataTreeCell.java b/src/main/java/fr/inra/po2vocabmanager/utils/DataTreeCell.java
index fa28e597..1fd77487 100644
--- a/src/main/java/fr/inra/po2vocabmanager/utils/DataTreeCell.java
+++ b/src/main/java/fr/inra/po2vocabmanager/utils/DataTreeCell.java
@@ -386,14 +386,7 @@ public class DataTreeCell extends TextFieldTreeCell<DataNode> {
                                                 });
                                                 MainApp.getDataControler().showNodeDetails(projectFile, projectFile);
                                                 if(report.success()) {
-                                                        Alert okImport = new Alert(Alert.AlertType.INFORMATION);
-                                                        okImport.setGraphic(new ImageView(UITools.getImage("resources/images/valid.png")));
-                                                        okImport.setHeaderText(null);
-                                                        okImport.setTitle("Successful import");
-                                                        okImport.setContentText("Successful import");
-                                                        okImport.initModality(Modality.APPLICATION_MODAL);
-                                                        okImport.initOwner(MainApp.primaryStage);
-                                                        okImport.showAndWait();
+                                                    showOkImportAlert();
                                                 } else {
                                                         Alert errorImport = new Alert(Alert.AlertType.INFORMATION);
                                                         errorImport.setTitle("Import result");
@@ -703,21 +696,11 @@ public class DataTreeCell extends TextFieldTreeCell<DataNode> {
                                     }
                                 } else {
                                     // error lors de l'import
-                                    Alert errorImport = new Alert(Alert.AlertType.ERROR);
-                                    errorImport.setTitle("Import error");
-                                    errorImport.setContentText("Bad UUID file. You are trying to import on a wrong observation file");
-                                    errorImport.initModality(Modality.APPLICATION_MODAL);
-                                    errorImport.initOwner(MainApp.primaryStage);
-                                    errorImport.showAndWait();
+                                    showErrorImportAlert("Bad UUID file. You are trying to import on a wrong observation file");
                                 }
                             } else {
                                 // error lors de l'import
-                                Alert errorImport = new Alert(Alert.AlertType.ERROR);
-                                errorImport.setTitle("Import error");
-                                errorImport.setContentText("An error occured. Please check your import file");
-                                errorImport.initModality(Modality.APPLICATION_MODAL);
-                                errorImport.initOwner(MainApp.primaryStage);
-                                errorImport.showAndWait();
+                                showErrorImportAlert("An error occured. Please check your import file");
                             }
 
                             if(tempF != null) {
@@ -1247,41 +1230,51 @@ public class DataTreeCell extends TextFieldTreeCell<DataNode> {
                 if (isNewStep || result.isPresent() && result.get() == importButtonType) {
                     // l'utilisateur valide la la mise à jour
                     Report report = file.constructDataFromImport(fileImport, isNewStep);
-                    if(report.success()) {
-                        file.getData().setModified(true);
-
-                        MainApp.getDataControler().buildProcessTree(file.getGeneralFile());
-                        MainApp.getDataControler().selectNode(file);
-                        Alert okImport = new Alert(Alert.AlertType.INFORMATION);
-                        okImport.setGraphic(new ImageView(UITools.getImage("resources/images/valid.png")));
-                        okImport.setHeaderText(null);
-                        okImport.setTitle("Successful import");
-                        okImport.setContentText("Successful import");
-                        okImport.initModality(Modality.APPLICATION_MODAL);
-                        okImport.initOwner(MainApp.primaryStage);
-                        okImport.showAndWait();
+                    handleInterfaceUpdate(file, report.success(), report.toString());
+                } else {
+                }
+
                     } else {
-                        file.getData().setModified(true);
-                        Alert errorImport = new Alert(Alert.AlertType.ERROR);
-                        errorImport.setTitle("Import error");
-                        errorImport.setContentText(report.toString());
-                        errorImport.initModality(Modality.APPLICATION_MODAL);
-                        errorImport.initOwner(MainApp.primaryStage);
-                        errorImport.showAndWait();
+                showErrorImportAlert(importReport.toString());
                     }
                 } else {
+        }
                 }
 
+    private static void handleInterfaceUpdate(StepFile file, boolean reportBoolean, String reportString) {
+        if(reportBoolean) {
+            updateAndNotifyInterfaceOfModification(file);
+            showOkImportAlert();
             } else {
+            file.getData().setModified(true);
+            showErrorImportAlert(reportString);
+        }
+    }
+
+    private static void updateAndNotifyInterfaceOfModification(StepFile file) {
+        file.getData().setModified(true);
+        MainApp.getDataControler().buildProcessTree(file.getGeneralFile());
+        MainApp.getDataControler().selectNode(file);
+    }
+
+    private static void showErrorImportAlert(String report) {
                 Alert errorImport = new Alert(Alert.AlertType.ERROR);
                 errorImport.setTitle("Import error");
-                errorImport.setContentText(importReport.toString());
+        errorImport.setContentText(report);
                 errorImport.initModality(Modality.APPLICATION_MODAL);
                 errorImport.initOwner(MainApp.primaryStage);
                 errorImport.showAndWait();
             }
-        } else {
-        }
+
+    private static void showOkImportAlert() {
+        Alert okImport = new Alert(Alert.AlertType.INFORMATION);
+        okImport.setGraphic(new ImageView(UITools.getImage("resources/images/valid.png")));
+        okImport.setHeaderText(null);
+        okImport.setTitle("Successful import");
+        okImport.setContentText("Successful import");
+        okImport.initModality(Modality.APPLICATION_MODAL);
+        okImport.initOwner(MainApp.primaryStage);
+        okImport.showAndWait();
     }
 
 
-- 
GitLab


From 6290db720ba1ca34085990063bcff4ad952b722f Mon Sep 17 00:00:00 2001
From: Alrick Oudot <alrick.oudot@supagro.fr>
Date: Wed, 13 Mar 2024 13:51:08 +0100
Subject: [PATCH 09/10] =?UTF-8?q?Refactoring=20de=20"Create=20New=20Step?=
 =?UTF-8?q?=20From=20CSV"=20avec=20les=20m=C3=A9thodes=20engine=20de=20St?=
 =?UTF-8?q?=C3=A9phane?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../po2vocabmanager/utils/DataTreeCell.java   | 44 +++++++++++++------
 1 file changed, 31 insertions(+), 13 deletions(-)

diff --git a/src/main/java/fr/inra/po2vocabmanager/utils/DataTreeCell.java b/src/main/java/fr/inra/po2vocabmanager/utils/DataTreeCell.java
index 1fd77487..6553646f 100644
--- a/src/main/java/fr/inra/po2vocabmanager/utils/DataTreeCell.java
+++ b/src/main/java/fr/inra/po2vocabmanager/utils/DataTreeCell.java
@@ -1098,7 +1098,7 @@ public class DataTreeCell extends TextFieldTreeCell<DataNode> {
                     addProcessStepFromCSV.disableProperty().bind(Bindings.not(mainApp.getEditProperty()));
                     addProcessStepFromCSV.setOnAction(event -> {
                         ItineraryFile iti = (ItineraryFile) item.getFile();
-                        stepImport(iti.initBlankStepForExcelImport(), true);
+                        newStepImport(iti);
                     });
 
                     MenuItem addProcessExistingStep = new MenuItem("Add Existing Step");
@@ -1137,7 +1137,25 @@ public class DataTreeCell extends TextFieldTreeCell<DataNode> {
         }
     }
 
-    private static void stepImport(StepFile file, boolean isNewStep) {
+    private static void newStepImport(ItineraryFile iti) {
+        FileChooser fileChooser = new FileChooser();
+        fileChooser.setTitle("Import file");
+        fileChooser.getExtensionFilters().add(new FileChooser.ExtensionFilter("Xlsx files (*.xlsx)","*.xlsx"));
+        File fileImport = fileChooser.showOpenDialog(MainApp.primaryStage);
+        if (fileImport == null) {
+            return;
+        }
+        MainApp.logger.info("start importing file " + fileImport.getName());
+        ImportReport importReport = iti.checkImportStepFromXLSX(fileImport);
+        if(importReport.success()) {
+            StepFile step = iti.importStepFromXLSX(fileImport);
+            handleInterfaceUpdate(step, importReport.success(), importReport.toString());
+        }
+
+
+    }
+
+        private static void stepImport(StepFile file, boolean isNewStep) {
         FileChooser fileChooser = new FileChooser();
         fileChooser.setTitle("Import file");
         fileChooser.getExtensionFilters().add(new FileChooser.ExtensionFilter("Xlsx files (*.xlsx)","*.xlsx"));
@@ -1234,18 +1252,18 @@ public class DataTreeCell extends TextFieldTreeCell<DataNode> {
                 } else {
                 }
 
-                    } else {
+            } else {
                 showErrorImportAlert(importReport.toString());
-                    }
-                } else {
+            }
+        } else {
         }
-                }
+    }
 
     private static void handleInterfaceUpdate(StepFile file, boolean reportBoolean, String reportString) {
         if(reportBoolean) {
             updateAndNotifyInterfaceOfModification(file);
             showOkImportAlert();
-            } else {
+        } else {
             file.getData().setModified(true);
             showErrorImportAlert(reportString);
         }
@@ -1258,13 +1276,13 @@ public class DataTreeCell extends TextFieldTreeCell<DataNode> {
     }
 
     private static void showErrorImportAlert(String report) {
-                Alert errorImport = new Alert(Alert.AlertType.ERROR);
-                errorImport.setTitle("Import error");
+        Alert errorImport = new Alert(Alert.AlertType.ERROR);
+        errorImport.setTitle("Import error");
         errorImport.setContentText(report);
-                errorImport.initModality(Modality.APPLICATION_MODAL);
-                errorImport.initOwner(MainApp.primaryStage);
-                errorImport.showAndWait();
-            }
+        errorImport.initModality(Modality.APPLICATION_MODAL);
+        errorImport.initOwner(MainApp.primaryStage);
+        errorImport.showAndWait();
+    }
 
     private static void showOkImportAlert() {
         Alert okImport = new Alert(Alert.AlertType.INFORMATION);
-- 
GitLab


From 7bf2299ac95979da7a78c9834d76c4871448b741 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Dervaux?= <stephane.dervaux@inrae.fr>
Date: Wed, 13 Mar 2024 17:21:31 +0100
Subject: [PATCH 10/10] =?UTF-8?q?remove=20flag=20data=20modified.=20It's?=
 =?UTF-8?q?=20a=20PO=C2=B2Engine=20job?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/main/java/fr/inra/po2vocabmanager/utils/DataTreeCell.java | 2 --
 1 file changed, 2 deletions(-)

diff --git a/src/main/java/fr/inra/po2vocabmanager/utils/DataTreeCell.java b/src/main/java/fr/inra/po2vocabmanager/utils/DataTreeCell.java
index 6553646f..01c59339 100644
--- a/src/main/java/fr/inra/po2vocabmanager/utils/DataTreeCell.java
+++ b/src/main/java/fr/inra/po2vocabmanager/utils/DataTreeCell.java
@@ -1264,13 +1264,11 @@ public class DataTreeCell extends TextFieldTreeCell<DataNode> {
             updateAndNotifyInterfaceOfModification(file);
             showOkImportAlert();
         } else {
-            file.getData().setModified(true);
             showErrorImportAlert(reportString);
         }
     }
 
     private static void updateAndNotifyInterfaceOfModification(StepFile file) {
-        file.getData().setModified(true);
         MainApp.getDataControler().buildProcessTree(file.getGeneralFile());
         MainApp.getDataControler().selectNode(file);
     }
-- 
GitLab