diff --git a/pom.xml b/pom.xml index d4650387dcebff4c0c326e520abfde4ad76b7a48..3693c7d378d67686de80d62e02470bc5fb186f77 100644 --- a/pom.xml +++ b/pom.xml @@ -332,7 +332,7 @@ <dependency> <groupId>fr.inrae.po2engine</groupId> <artifactId>PO2Engine</artifactId> - <version>2.3.0.5</version> + <version>2.3.1.3</version> <exclusions> <exclusion> <groupId>ch.qos.logback</groupId> diff --git a/src/main/java/fr/inra/po2vocabmanager/utils/DataTreeCell.java b/src/main/java/fr/inra/po2vocabmanager/utils/DataTreeCell.java index f363952677127a4132f304900ce794142540b283..6a4704d82ba3fda32250ba688bf6af7d2c5dd538 100644 --- a/src/main/java/fr/inra/po2vocabmanager/utils/DataTreeCell.java +++ b/src/main/java/fr/inra/po2vocabmanager/utils/DataTreeCell.java @@ -154,6 +154,59 @@ public class DataTreeCell extends TextFieldTreeCell<DataNode> { diagNewIti.showAndWait(); } + private static StepFile addStepData(ItineraryFile itiFile, StepFile parentStep, GeneralFile current, boolean rbCopy, StepFile stepToClone) { + StepFile s = new StepFile("new step", current); + s.setId(""); + if(rbCopy && stepToClone != null) { + s.cloneFrom(stepToClone, itiFile, new HashMap<>(), itiFile, null); + } + + if(parentStep != null) { + parentStep.addSubStep(s); + } + + itiFile.addStep(s); + DataNode stepNode = new DataNode(DataNodeType.STEP); + stepNode.setItineraryFile(itiFile); + if(parentStep != null) { + MainApp.getDataControler().addNode(s,stepNode, MainApp.getDataControler().getDataNode(parentStep, itiFile)); + } else { + MainApp.getDataControler().addNode(s,stepNode, MainApp.getDataControler().getDataNode(itiFile) ); + } + + if(rbCopy) { + MainApp.getDataControler().buildItineraryTree(itiFile); + } + MainApp.getDataControler().selectNode(s); + current.getData().setModified(true); + return s; + } + + private static void newStepImport(ItineraryFile iti, StepFile parent) { + File fileImport = getFile(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); + if(parent != null && step != null) { + parent.addSubStep(step); + } + handleInterfaceUpdate(step.getGeneralFile(), importReport.success(), importReport.toString()); + } else { + showErrorImportAlert(importReport.toString()); + } + } + + private static File getFile(Stage primaryStage) { + FileChooser fileChooser = new FileChooser(); + fileChooser.setTitle("Import file"); + fileChooser.getExtensionFilters().add(new FileChooser.ExtensionFilter("Xlsx files (*.xlsx)", "*.xlsx")); + return fileChooser.showOpenDialog(primaryStage); + } + public void addExistingStep(ItineraryFile itineraryFile) { Dialog<ButtonType> addStep = new Dialog<>(); addStep.getDialogPane().setPrefSize(300, 500); @@ -221,49 +274,20 @@ public class DataTreeCell extends TextFieldTreeCell<DataNode> { } - private static StepFile addStepData(ItineraryFile itiFile, StepFile parentStep, GeneralFile current, boolean rbCopy, StepFile stepToClone) { - StepFile s = new StepFile("new step", current); - s.setId(""); - if(rbCopy && stepToClone != null) { - s.cloneFrom(stepToClone, itiFile, new HashMap<>(), itiFile, null); - } - - if(parentStep != null) { - parentStep.addSubStep(s); - } - - itiFile.addStep(s); - DataNode stepNode = new DataNode(DataNodeType.STEP); - stepNode.setItineraryFile(itiFile); - if(parentStep != null) { - MainApp.getDataControler().addNode(s,stepNode, MainApp.getDataControler().getDataNode(parentStep, itiFile)); - } else { - MainApp.getDataControler().addNode(s,stepNode, MainApp.getDataControler().getDataNode(itiFile) ); - } - - if(rbCopy) { - MainApp.getDataControler().buildItineraryTree(itiFile); - } - MainApp.getDataControler().selectNode(s); - current.getData().setModified(true); - return s; - } - - private static void newStepImport(ItineraryFile iti, StepFile parent) { + private static void newItineraryObsImport(ItineraryFile iti) { File fileImport = getFile(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); - if(parent != null && step != null) { - parent.addSubStep(step); - } - handleInterfaceUpdate(step.getGeneralFile(), importReport.success(), importReport.toString()); + MainApp.logger.info("start importing/create file " + fileImport.getName()); + Report r = iti.checkCreateObservationFromXLSX(fileImport); + if(r.success()) { + ObservationFile obs = iti.createObservationFromXLSX(fileImport); + handleInterfaceUpdate(obs.getItineraryFile().getProcessFile(), r.success(), "File import completed"); + MainApp.getDataControler().selectNode(obs); + MainApp.logger.info("import done with sucess"); } else { - showErrorImportAlert(importReport.toString()); + showErrorImportAlert(r.prettyPrintError()); } } @@ -281,24 +305,6 @@ public class DataTreeCell extends TextFieldTreeCell<DataNode> { addStepData(itineraryFile, parentStep, current, false, null); } - - private static void newItineraryObsImport(ItineraryFile iti) { - File fileImport = getFile(MainApp.primaryStage); - if (fileImport == null) { - return; - } - MainApp.logger.info("start importing/create file " + fileImport.getName()); - Report r = iti.checkCreateObservationFromXLSX(fileImport); - if(r.success()) { - ObservationFile obs = iti.createObservationFromXLSX(fileImport); - handleInterfaceUpdate(obs.getItineraryFile().getProcessFile(), r.success(), "File import completed"); - MainApp.getDataControler().selectNode(obs); - MainApp.logger.info("import done with sucess"); - } else { - showErrorImportAlert(r.prettyPrintError()); - } - } - public void copyStep(ItineraryFile itineraryFile, StepFile parentStep) { if(parentStep != null && parentStep.getFather() != null) { Alert notPossible = new Alert(Alert.AlertType.INFORMATION); @@ -339,13 +345,6 @@ public class DataTreeCell extends TextFieldTreeCell<DataNode> { } } - private static File getFile(Stage primaryStage) { - FileChooser fileChooser = new FileChooser(); - fileChooser.setTitle("Import file"); - fileChooser.getExtensionFilters().add(new FileChooser.ExtensionFilter("Xlsx files (*.xlsx)", "*.xlsx")); - return fileChooser.showOpenDialog(primaryStage); - } - @Override public void updateItem(DataNode item, boolean empty) { super.updateItem(item, empty); diff --git a/src/main/java/fr/inra/po2vocabmanager/view/RootLayoutController.java b/src/main/java/fr/inra/po2vocabmanager/view/RootLayoutController.java index 32f5ace9b1b68fc9c557b51bc115d38e64991963..2613c50dcddbc14a54bd64f381a89a8b0a1242ab 100644 --- a/src/main/java/fr/inra/po2vocabmanager/view/RootLayoutController.java +++ b/src/main/java/fr/inra/po2vocabmanager/view/RootLayoutController.java @@ -83,6 +83,8 @@ public class RootLayoutController { @FXML Menu conceptScheme; @FXML + CheckMenuItem showDeprecated; + @FXML MenuItem addConceptScheme; @FXML MenuItem itemNewProject; @@ -110,7 +112,8 @@ public class RootLayoutController { itemNewProject.setDisable(true); itemNewOntology.setVisible(true); itemNewOntology.setDisable(true); - + showDeprecated.setDisable(false); + showDeprecated.setSelected(false); } /** @@ -155,6 +158,13 @@ public class RootLayoutController { mainApp.run(null); } }); + + showDeprecated.setOnAction(event -> { + if(MainApp.getOntologyControler() != null && MainApp.getOntologyControler().getCurrentOntology() != null) { + MainApp.getOntologyControler().getCurrentOntology().setShowDeprecated(showDeprecated.selectedProperty().get()); + MainApp.getOntologyControler().rebuildTree(true); + } + }); } public void exportOnto() { diff --git a/src/main/java/fr/inra/po2vocabmanager/view/ontoView/OntologyOverviewController.java b/src/main/java/fr/inra/po2vocabmanager/view/ontoView/OntologyOverviewController.java index 51804f4d99503ae4459ab0bfce7c197757a08d79..827d62cf315ac5299a768d483788a75ba7f1549b 100644 --- a/src/main/java/fr/inra/po2vocabmanager/view/ontoView/OntologyOverviewController.java +++ b/src/main/java/fr/inra/po2vocabmanager/view/ontoView/OntologyOverviewController.java @@ -176,6 +176,7 @@ TableView<SimpleStringProperty> tableClose; private BooleanProperty canEdit = new SimpleBooleanProperty(false); private BooleanProperty syncCloud = new SimpleBooleanProperty(false); private BooleanProperty isOnMainScheme = new SimpleBooleanProperty(false); + private BooleanProperty showDeprecated = new SimpleBooleanProperty(false); private TreeItem<VocabConcept> rootItem; private StringProperty title = new SimpleStringProperty(); @@ -585,11 +586,7 @@ TableView<SimpleStringProperty> tableClose; public void rebuildTree(boolean rebuildConstraint) { - if(isOnMainScheme().get()) { - rootItem = new RecursiveTreeItem<VocabConcept>(currentOntology.getRootNode(), VocabConcept::getGraphic , VocabConcept::getSubNode, this); - } else { - rootItem = new RecursiveTreeItem<VocabConcept>(currentOntology.getRootNode(), VocabConcept::getGraphic , VocabConcept::getSubNodeInScheme, this); - } + rootItem = new RecursiveTreeItem<>(currentOntology.getRootNode(), VocabConcept::getGraphic, VocabConcept::getSubNodeInScheme, this); setTree(rootItem); if(rebuildConstraint) { currentOntology.rebuildConstraints(); @@ -677,8 +674,8 @@ TableView<SimpleStringProperty> tableClose; minorVersion.bind(onto.getMinorVersion()); currentOntology = onto; + showDeprecated.bind(currentOntology.showDeprecatedProperty()); -// rebuildConstraints(); currentOntology.setCurrentSkosScheme(currentOntology.getMainScheme()); MainApp.getOntologyControler().setIsOnMainScheme(true); diff --git a/src/main/resources/fr/inra/po2vocabmanager/view/RootLayout.fxml b/src/main/resources/fr/inra/po2vocabmanager/view/RootLayout.fxml index efcc17d2b2f65f442c8745e8610c0f839b6e93c3..73754c1296a5a7e4527cc45660fa407c6d86ea53 100644 --- a/src/main/resources/fr/inra/po2vocabmanager/view/RootLayout.fxml +++ b/src/main/resources/fr/inra/po2vocabmanager/view/RootLayout.fxml @@ -49,6 +49,7 @@ <Menu fx:id="view" mnemonicParsing="false" text="View"> <items> <Menu fx:id="conceptScheme" mnemonicParsing="false" text="Concept Scheme" /> + <CheckMenuItem fx:id="showDeprecated" mnemonicParsing="false" text="Show deprecated concepts" /> </items> </Menu> <Menu mnemonicParsing="false" text="Tools"> diff --git a/src/main/resources/resources/changelog.txt b/src/main/resources/resources/changelog.txt index ff6810ba99d8515a029c857df3fe521f649b37c2..d84fcaece57f4f9cd743f01dc7f0e2afa3d8ee56 100644 --- a/src/main/resources/resources/changelog.txt +++ b/src/main/resources/resources/changelog.txt @@ -1,3 +1,6 @@ +------------------ NEXT --------------------- + * Enhancement (PO2-Tools/po2manager#106) : Ajout d'une option pour afficher / masquer les concepts dépréciés. + ------------------ V1.8.5.0 ------------------ * Enhancement (PO2-Tools/po2manager#107) : Ajout d'une option lors de l'ajout d'étape existante à l'itinéraire pour y inclure les liens entre étapes * Enhancement (PO2-Tools/po2manager#95) : uniformiser les fonctionnalités de copies (step / itinerary / ....) diff --git a/src/main/resources/resources/manifest b/src/main/resources/resources/manifest index 3b97eb9debe56e1599dffe4fed8caf3dc12ea845..312a06701fcb52b1a4e2841861edebd719ab1ddd 100644 --- a/src/main/resources/resources/manifest +++ b/src/main/resources/resources/manifest @@ -4,11 +4,11 @@ Created-By: 17.0.2+8-86 (Oracle Corporation) Name: app_info Specification-Title: PO2Manager -Specification-Version: 1.8.5.0 +Specification-Version: 1.8.1.0 Specification-Vendor: fr.inrae -Compilation-DSTAMP: 20241018 -Compilation-TSTAMP: 1741 -Compilation-Date: October 18 2024 +Compilation-DSTAMP: 20240913 +Compilation-TSTAMP: 1357 +Compilation-Date: September 13 2024 Compilation-format: Changelog-URL: https://quantum.mia-ps.inrae.fr/PO2Manager/download/cha ngelog.txt