From 860c862ebac286d9d6ccfef1571714db84b73565 Mon Sep 17 00:00:00 2001 From: Aljoscha Niazi-Shahabi Date: Sun, 5 Jun 2016 17:14:53 +0200 Subject: [PATCH] =?UTF-8?q?Kommentare=20hinzugef=C3=BCgt=20und=20infofenst?= =?UTF-8?q?er,=20damit=20der=20user=20wei=C3=9F=20dass=20er=20auf=20diagno?= =?UTF-8?q?sen=20klicken=20muss=20um=20weitere=20infos=20zu=20erhalten?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/uebung7/fin/gui/Uebung7GUI1.java | 127 ++++++++++++++---- 1 file changed, 103 insertions(+), 24 deletions(-) diff --git a/Sandbox/TWI.gruppe2/src/main/java/uebung7/fin/gui/Uebung7GUI1.java b/Sandbox/TWI.gruppe2/src/main/java/uebung7/fin/gui/Uebung7GUI1.java index 52888d6..100922d 100644 --- a/Sandbox/TWI.gruppe2/src/main/java/uebung7/fin/gui/Uebung7GUI1.java +++ b/Sandbox/TWI.gruppe2/src/main/java/uebung7/fin/gui/Uebung7GUI1.java @@ -61,6 +61,7 @@ public class Uebung7GUI1 extends Application { public static final String HOCHGELADEN = " wurde hochgeladen."; public static final String FENSTER_TITEL = "Uebungsblatt 7 + 8"; public static final String GEFUNDENE_DIAGNOSE = "Gefundene Diagnose(n): "; + //public static final String DIAGNOSE_ANKLICKEN = "Klicken sie "; private static String arztBriefName = ""; private static HBox topHBoxForUploadingArztBrief = null; public static boolean diagnoseIsAnalyzed = false; @@ -126,6 +127,9 @@ public class Uebung7GUI1 extends Application { borderPane.setRight(rightVBox); // display box primaryStage.show(); + + + } public static void analayzeArztbrief(Button buttonAnalyzeBrief) { @@ -145,8 +149,8 @@ public class Uebung7GUI1 extends Application { alert.showAndWait(); } else { try { - // clear diagnoses from previous brief before analysing - // the next one + // Vor der Analyse eines Briefes muss ein vorher eventuell bereits bestehender + // Baum aus der TreeView gelöscht werden removeTreeItemsFromCurrentTree(); removeTreeItemsFromSecondTree(); // Arztbrief ans Backend übergeben, wenn Auswahl @@ -155,10 +159,6 @@ public class Uebung7GUI1 extends Application { System.out.println("BDG Uebung7" + arztBriefName); MedReportSplitter reportSplit = new MedReportSplitter(arztBriefName); - // For FINAL VER - // MedReportSplitter reportSplit = new - // MedReportSplitter(arztbrief); - DBSearch search = new DBSearch(reportSplit.getDiagnosen()); for (String diagnose : reportSplit.getDiagnosen()) { List diagnoseList = search.getDiagnose(diagnose); @@ -230,13 +230,25 @@ public class Uebung7GUI1 extends Application { } // Arztbrief wurde analysiert, boolean wird auf true gesetzt diagnoseIsAnalyzed = true; + + if(diagnoseIsAnalyzed) { + Alert alert = new Alert(AlertType.INFORMATION); + alert.setTitle("Analyse erfolgreich"); + alert.setHeaderText(null); + alert.setContentText("Der Arztbrief wurde erfolgreich analysiert.\n" + + "Klicken sie auf eine Diagnose um weitere Informationen zu erhalten."); + Button okButton = (Button) alert.getDialogPane().lookupButton(ButtonType.OK ); + okButton.setDefaultButton(false); + alert.showAndWait(); + } + selectTreeItem(); } }); } /** - * Methode benutzt zum Hochladen eines Arztbriefes. + * Methode die zum Hochladen eines Arztbriefes benutzt wird. * * @param buttonUploadBrief * @param fileChooser @@ -259,8 +271,10 @@ public class Uebung7GUI1 extends Application { }); } - /* - * Method benutzt zum Exportieren der diagnosen als JSON + /** + * Methode, die zum Exportieren der Diagnosen als JSON benutzt wird + * @param buttonExportDiagnosenAsJson + * @param primaryStage * */ public static void exportDiagnoseAsJSONFile(Button buttonExportDiagnosenAsJson, Stage primaryStage) { @@ -293,7 +307,7 @@ public class Uebung7GUI1 extends Application { alert.setTitle("Achtung"); alert.setHeaderText(null); alert.setContentText( - "Arztbriefanalyse muss erst stattfinden, bevor das Exportieren der Diagnosen!"); + "Arztbriefanalyse muss erst stattfinden, bevor die Diagnosen exportiert werden können"); alert.showAndWait(); } @@ -305,7 +319,7 @@ public class Uebung7GUI1 extends Application { } /** - * Creates a VBox for the upload & analyze button + * Erstellt eine VBOX für den Upload und Analyze Button * * @return vBox */ @@ -338,7 +352,7 @@ public class Uebung7GUI1 extends Application { } /** - * Creates a HBox for the export button + * Erstellt eine HBOX für den Export Button * * @return hBox */ @@ -352,8 +366,8 @@ public class Uebung7GUI1 extends Application { } /** - * Create left VBox where the found diagnoses will be displayed in tree - * form. + * Erstellt die link VBOX in der die aus dem Arztbrief identifizierten Diagnosen in einer + * TreeView dargestellt werden * * @return */ @@ -366,6 +380,12 @@ public class Uebung7GUI1 extends Application { return leftVBox; } + /** + * Erstellt die rechte VBOX in der die zusätzlichen Infos aus Wikidata zu einer Diagnose in einer + * zweiten TreeView dargestellt werden + * + * @return + */ public static VBox createRightVBox() { VBox rightVBox1 = new VBox(); rightVBox1.setPadding(standardDimensions); @@ -383,7 +403,7 @@ public class Uebung7GUI1 extends Application { } /** - * Helper method used in order to successfully open a file + * Diese Helper-Methode ist für das erfolgreiche Öffnen eines Arztbriefes zuständig * * @param fileChooser */ @@ -394,7 +414,7 @@ public class Uebung7GUI1 extends Application { } /** - * Helper method used in order to create the tree view + * Diese Helper-Methode hilt beim Erstellen der TreeView * */ public static void treeViewUtils() { @@ -407,6 +427,10 @@ public class Uebung7GUI1 extends Application { }); } + /** + * Diese Helper-Methode hilt beim Erstellen der TreeView für den zweiten Baum + * + */ public static void treeViewDetailsUtils() { rootSecondTree.setExpanded(true); tree1 = new TreeView<>(rootSecondTree); @@ -417,12 +441,16 @@ public class Uebung7GUI1 extends Application { }); } + /** + * Diese Methode schreibt den String, welcher die Diagnosen im JSON Format enthält in eine JSON-Datei + * @param file + */ public static void saveFile(File file) { try { FileWriter fileWriter = new FileWriter(file); - // TEST STRING! + // Dieser String ist der Inhalt des JSON-Files String content = getJsonString(); fileWriter.write(content); @@ -451,14 +479,21 @@ public class Uebung7GUI1 extends Application { tmpTreeItem = item; } + + /** + * Methode, welche die Entity-Keys zum "root" Element hinzufügt + * + * @param title + * @param parent + */ public static void createSecondTree(String title, TreeItem parent) { TreeItem item = new TreeItem<>(title); item.setExpanded(false); parent.getChildren().add(item); - // tmpTreeItem speichert die aktuelle Diagnose, - // damit zu dieser die alphaId und der icdCode hinzugefügt werden können + // tmpTreeItem speichert das aktuelle Item, + // damit diesemm als (Parent)Item weitere (Child)Items hinzugefügt werden können tmpSecondTreeItem = item; } @@ -477,6 +512,12 @@ public class Uebung7GUI1 extends Application { } + /** + * Methode, welche die Diagnosen zum "root" Element hinzufügt + * + * @param title + * @param parent + */ public static TreeItem makeBranchForSecondTree(String title) { TreeItem item = new TreeItem<>(title); @@ -503,6 +544,12 @@ public class Uebung7GUI1 extends Application { } + /** + * Die zusätzlichen Informationen zu einer Diagnose aus Wikidata werden dem zweiten Baum hinzugefügt. + * + * @param itemKey + * @param properties + */ public static void populateTreeWithDiagnosesDetails(String itemKey, Map> properties) { createSecondTree(itemKey, rootSecondTree); @@ -512,14 +559,21 @@ public class Uebung7GUI1 extends Application { for(int i = 0; i < property.getValue().size(); i++) { - // Das erste Element (Element 0) wird immer als Parent genommen, der Rest als Kinder + /* Das erste Element (Element 0) wird immer als Parent genommen, der Rest als Kinder .. + * hierbei kommt es zu einer nicht homogenen Darstellung im Baum da zum einen + * das "PropertyLabel" dem "ValueType uri Value" untergeordnet sein kann und zum anderen + * eben das "ValueType uri Value" dem "PropertyLabel". + * Dies ist bedingt durch die nicht homogene Ordnung innerhalb des "Property" + */ if(i == 0) tmpItem = makeBranchForSecondTree(property.getValue().get(i)); + else { if(property.getValue().size() >= i) { - + + // Erstellt die Blätter im zweiten Baum TreeItem item = new TreeItem<>(property.getValue().get(i)); item.setExpanded(false); tmpItem.getChildren().add(item); @@ -535,6 +589,9 @@ public class Uebung7GUI1 extends Application { } + /** + *Diese Methode erstellt einen JSON-Konformen String aus den dargestellten Items der TreeView + */ private static String getJsonString() { String s = "{\"Diagnosen\":[\n"; @@ -562,7 +619,7 @@ public class Uebung7GUI1 extends Application { /** * Methode welche alle Elemente des Trees loescht Dient als "reset" (z.b. - * bevor das Analysieren eines zweiten Briefes) + * vor dem Analysieren eines zweiten Briefes) */ public static void removeTreeItemsFromCurrentTree() { if (tree != null ) { @@ -573,6 +630,12 @@ public class Uebung7GUI1 extends Application { } } + /** + * Analog zu der Methode "removeTreeItemsFromCurrentTree" loescht diese Methode alle Items des zweiten Baums, + * welche die Ergebnisse der WikiData-Suche darstellt. + * Dies ist notwendig wenn der User z.B. auf eine andere Diagnose klickt und somit ein anderer Baum angezeigt + * werden soll. + */ public static void removeTreeItemsFromSecondTree() { if (tree1 != null ) { ObservableList> treeItems = tree1.getRoot().getChildren(); @@ -582,6 +645,15 @@ public class Uebung7GUI1 extends Application { } } + /** + * Die Methode "beobachtet" ob ein Item im ersten Baum mit den Diagnosen angeklickt wird. + * Ist dies der Fall wird die Methode auf Basis des ICD-Codes der angeklickten Diagnose die + * Methode "printResult" aufgerufen und das Ergebnise der damit einhergehenden Wikidata Suche in der + * "resultOutputMap" gespeichert. + * Konnten keine Ergebnisse zu der angeklickten Diagnose in Wikidata gefunden werden wird in einem + * "alert Window" darauf hingewiesen. + * + */ public static void selectTreeItem() { tree.getSelectionModel().selectedItemProperty().addListener(new ChangeListener>() { @@ -593,10 +665,12 @@ public class Uebung7GUI1 extends Application { TreeItem selectedItem = (TreeItem) newValue; String icdCodeInTree = selectedItem.getChildren().get(1).getValue(); String[] icdCode1 = icdCodeInTree.split(" "); - System.out.println("------------------------"); + System.out.println("-----------test-------------"); String icdCode = icdCode1[1]; Map>> resultOutputMap = printResult(icdCode, selectedItem.getValue().toString()); + + // Wenn keine Informationen aus Wikidata gefunden werden konnten hat die Map die Größe 0 if(resultOutputMap.size() == 0) { Alert alert = new Alert(AlertType.INFORMATION); @@ -604,9 +678,10 @@ public class Uebung7GUI1 extends Application { alert.setHeaderText(null); alert.setContentText("Zu der ausgewählten Diagnose \"" + selectedItem.getValue() + "\" konnten keine " + "zusätzlichen Informationen aus Wiki-Data gefunden werden. Probieren sie es mit einer anderen Diagnose."); - Button okButton = (Button) alert.getDialogPane().lookupButton(ButtonType.OK ); + Button okButton = (Button) alert.getDialogPane().lookupButton(ButtonType.OK); okButton.setDefaultButton(false); alert.showAndWait(); + } for(Entry>> currentEntry: resultOutputMap.entrySet()) { @@ -625,6 +700,10 @@ public class Uebung7GUI1 extends Application { }); } + /** + * Diese Methode führt eine Wikidatasearch auf Basis des ICD-Codes der angeklickten Diagnose durch und + * gibt das Ergebenis in einer "resultMap" zurück + */ public static Map>> printResult(String icdCode, String itemName) { Map>> resultMap = new HashMap>>(); -- GitLab