From 7ac95d27390fb2160bd7819105a7eaec3f26dab7 Mon Sep 17 00:00:00 2001 From: xarczuz Date: Tue, 14 May 2019 14:38:19 +0200 Subject: [PATCH] update --- .~lock.new.xlsx# | 1 + .~lock.temp.xlsx# | 1 - new.db | Bin 0 -> 36864 bytes new.xlsx | Bin 0 -> 4270 bytes .../DataBase/CreateDataBase.java | 4 +- .../DataBase/DataBaseConnection.java | 106 +++++++----------- .../HazardAnalysis/Steps/Views/ViewStep7.java | 70 ++++++------ src/main/java/hazard/HazardClasses/Cause.java | 10 ++ .../java/hazard/HazardClasses/Hazard.java | 12 +- temp.xlsx | Bin 5549 -> 7319 bytes 10 files changed, 92 insertions(+), 112 deletions(-) create mode 100644 .~lock.new.xlsx# delete mode 100644 .~lock.temp.xlsx# create mode 100644 new.db create mode 100644 new.xlsx diff --git a/.~lock.new.xlsx# b/.~lock.new.xlsx# new file mode 100644 index 0000000..609dada --- /dev/null +++ b/.~lock.new.xlsx# @@ -0,0 +1 @@ +,chjunchi,chjunchi-U45JC,14.05.2019 14:34,file:///home/chjunchi/snap/libreoffice/117/.config/libreoffice/4; \ No newline at end of file diff --git a/.~lock.temp.xlsx# b/.~lock.temp.xlsx# deleted file mode 100644 index 13262c9..0000000 --- a/.~lock.temp.xlsx# +++ /dev/null @@ -1 +0,0 @@ -,chjunchi,chjunchi-U45JC,14.05.2019 13:15,file:///home/chjunchi/snap/libreoffice/117/.config/libreoffice/4; \ No newline at end of file diff --git a/new.db b/new.db new file mode 100644 index 0000000000000000000000000000000000000000..86fcdf0098bd5a4c844cfecf599d9d280663160a GIT binary patch literal 36864 zcmeI*O>Y}T7zgl~wc}kkO|~UiCdz@SB9yqY5D+0mRJA0*pr|1YsVnLW(%PQJBd>R( z^*9i2&WC^lXTC={aNvdzm)=^CP!C*?IB;ZUXV>w%v4m6(B>AuGeVN(a=b7Kyhnd|t z_dneclCwu))bk`;Bi9I}|7bXYT4ydiJr`klGSPEUPy3iYQ}ydTwi*TWKEH| zeuF@Y9-k=fcLuT@ei3AfRa$gBE!|Z8wlZnODEixh|9kt?m^y1fbWq1`#*?|0l%# z!+ioP2tWV=5P$##AOHafKmY;|fB*!}nZR{@*PoV(=B~e``}(iwTmQupO>X_`p#V$w z|Ec>oQ7=pofB*y_009U<00Izz00bZa0SH_$fdb8ug-zZz_y3>izyE)B!J3HXKmY;| zfB*y_009U<00Izz00b_Nz`S}6U_ssVSABhR!(TlFptg%@`}Fz$UE+S{?p_`gv=jmm zfB*y_009U<00Izz00bcLG6D~*Jn7w2UF%idw_Z2T-d9$2$NN_D)IB@kl63}=yuF^3 zR3>X!leg4A>0sd_){cL(uR-&q+t8=gXBr(B2f1Z}#Ha16+S_T=iE<{RV-XxM8L|%d ze0G@p{-66b$+;eJe{?siA=mkJ90Ue*hQJ B9LZnC!UFlK;l-{LRl_E_*q!&S| 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 void selectAll(String table, ObservableList list) { String sql = "SELECT * FROM " + table; @@ -428,13 +397,14 @@ public static void sql(String sql, String table, ObservableList list) { rs.getString(5))); } else if (table.contentEquals("hazard")) { Hazard hz = new Hazard(rs.getInt("id"), rs.getString("hazard"), rs.getString("harm")); + list.add((E) hz); + } else if (table.contentEquals("cause")) { + Cause c = new Cause(rs.getInt("id"), rs.getString("cause"), rs.getInt("hazardid")); Double d = rs.getDouble("riskevaluation"); if (d != 0) { - hz.setRisk(String.valueOf(rs.getBoolean("risk"))); + c.setRisk(String.valueOf(rs.getBoolean("risk"))); } - list.add((E) hz); - } else if (table.contentEquals("cause")) { - list.add((E) new Cause(rs.getInt("id"), rs.getString("cause"), rs.getInt("hazardid"))); + list.add((E) c); } else if (table.contentEquals("mitigation")) { list.add((E) new Mitigation(rs.getInt("id"), rs.getString("mitigation"), rs.getInt("hazardid"))); } diff --git a/src/main/java/hazard/HazardAnalysis/Steps/Views/ViewStep7.java b/src/main/java/hazard/HazardAnalysis/Steps/Views/ViewStep7.java index 160bc06..234649a 100644 --- a/src/main/java/hazard/HazardAnalysis/Steps/Views/ViewStep7.java +++ b/src/main/java/hazard/HazardAnalysis/Steps/Views/ViewStep7.java @@ -37,11 +37,7 @@ private void addClickEventToTbHazard(TableView tbHazard, ObservableList< EventHandler eventHandler = new EventHandler() { @Override public void handle(MouseEvent e) { - int index = tbHazard.getSelectionModel().selectedIndexProperty().get(); - if (index > -1) { - int id = tbHazard.getItems().get(index).getId(); - DataBaseConnection.sql("SELECT * FROM cause WHERE cause.hazardid=" + id + ";", "cause", list); - } + updateCauseList(tbHazard,list); } }; tbHazard.addEventHandler(MouseEvent.MOUSE_CLICKED, eventHandler); @@ -66,12 +62,29 @@ public GridPane addGridPane() { id.setCellValueFactory(new PropertyValueFactory("id")); hazard.setCellValueFactory(new PropertyValueFactory("hazard")); hazardDescription.setCellValueFactory(new PropertyValueFactory("hazardDescription")); - tbHazard.setRowFactory(new Callback, TableRow>() { + + tbHazard.getColumns().addAll(id, hazard, hazardDescription); + addClickEventToTbHazard(tbHazard, causeList); + updateHazardList(); + tbHazard.setItems(hazardList); + grid.add(tbHazard, 0, 1); + Text category2 = new Text("Pre-initiating events that might lead to the hazard"); + category2.getStyleClass().add("heading"); + grid.add(category2, 0, 3); + final TableView tbCause = new TableView(); + tbCause.setMinWidth(800); + tbCause.setMaxHeight(200); + TableColumn cause = new TableColumn("Pre-initiating event for hazard"); + cause.setMinWidth(400); + cause.setCellValueFactory(new PropertyValueFactory("cause")); + tbCause.getColumns().addAll(cause); + tbCause.setItems(causeList); + tbCause.setRowFactory(new Callback, TableRow>() { @Override - public TableRow call(TableView param) { - final TableRow row = new TableRow() { + public TableRow call(TableView param) { + final TableRow row = new TableRow() { @Override - protected void updateItem(Hazard item, boolean empty) { + protected void updateItem(Cause item, boolean empty) { super.updateItem(item, empty); if (!hazardList.isEmpty() && !empty) { if (!item.getRisk().isEmpty()) { @@ -87,43 +100,27 @@ protected void updateItem(Hazard item, boolean empty) { return row; } }); - tbHazard.getColumns().addAll(id, hazard, hazardDescription); - addClickEventToTbHazard(tbHazard, causeList); - updateHazardList(); - tbHazard.setItems(hazardList); - grid.add(tbHazard, 0, 1); - Text category2 = new Text("Pre-initiating events that might lead to the hazard"); - category2.getStyleClass().add("heading"); - grid.add(category2, 0, 3); - final TableView tbCause = new TableView(); - tbCause.setMinWidth(800); - tbCause.setMaxHeight(200); - TableColumn cause = new TableColumn("Pre-initiating event for hazard"); - cause.setMinWidth(400); - cause.setCellValueFactory(new PropertyValueFactory("cause")); - tbCause.getColumns().addAll(cause); - tbCause.setItems(causeList); grid.add(tbCause, 0, 4); Button btnAdd = new Button("Add Severity And Probability"); - addSeverityAndProbabilityEvent(btnAdd, tbHazard); + addSeverityAndProbabilityEvent(btnAdd, tbCause,tbHazard); GridPane gridBtn1 = new GridPane(); gridBtn1.add(btnAdd, 0, 0); grid.add(gridBtn1, 0, 2); return grid; } - private void addSeverityAndProbabilityEvent(Button btnAdd, TableView tbHazard) { + private void addSeverityAndProbabilityEvent(Button btnAdd, TableView tbCause, TableView tbHazard) { EventHandler eventHandler = new EventHandler() { @Override public void handle(MouseEvent e) { - int index = tbHazard.getSelectionModel().getSelectedIndex(); + int index = tbCause.getSelectionModel().getSelectedIndex(); if (index < 0) { return; } - int id = tbHazard.getItems().get(index).getId(); + int id = tbCause.getItems().get(index).getId(); TextInputDialog dialog = new TextInputDialog(""); dialog.setTitle("Add Severity And Probability"); - dialog.setHeaderText("Enter the Severity of the Hazard And the Probability of it happening."); + dialog.setHeaderText("Enter the Severity of the Cause And the Probability of it happening."); ObservableList options = FXCollections.observableArrayList("High-75%", "Medium-50%", "Low-25%"); final ComboBox comboBox = new ComboBox(options); ObservableList options2 = FXCollections.observableArrayList("High-75%", "Medium-50%", @@ -166,12 +163,12 @@ public void changed(ObservableValue ov, String t, String t1) { }); Optional op = dialog.showAndWait(); if (op.isPresent() && !riskEvaluationNr.getText().contentEquals("")) { - DataBaseConnection.sqlUpdate("UPDATE hazard SET severity=" + returnRiskValue(comboBox.getValue()) + DataBaseConnection.sqlUpdate("UPDATE cause SET severity=" + returnRiskValue(comboBox.getValue()) + ", probability=" + returnRiskValue(comboBox2.getValue()) + ", riskevaluation=" + (returnRiskValue(comboBox2.getValue()) * returnRiskValue(comboBox.getValue())) + ", risk=" - + ch.isSelected() + " where hazard.id=" + id + ";"); + + ch.isSelected() + " where cause.id=" + id + ";"); } - updateHazardList(); + updateCauseList(tbHazard, causeList); } }; btnAdd.addEventHandler(MouseEvent.MOUSE_CLICKED, eventHandler); @@ -206,4 +203,11 @@ private Double returnRiskValue(String s) { public void updateHazardList() { DataBaseConnection.sql("SELECT * FROM hazard;", "hazard", hazardList); } + public void updateCauseList(TableView tbHazard, ObservableList list) { + int index = tbHazard.getSelectionModel().selectedIndexProperty().get(); + if (index > -1) { + int id = tbHazard.getItems().get(index).getId(); + DataBaseConnection.sql("SELECT * FROM cause WHERE cause.hazardid=" + id + ";", "cause", list); + } + } } diff --git a/src/main/java/hazard/HazardClasses/Cause.java b/src/main/java/hazard/HazardClasses/Cause.java index 39af454..766c994 100644 --- a/src/main/java/hazard/HazardClasses/Cause.java +++ b/src/main/java/hazard/HazardClasses/Cause.java @@ -3,11 +3,21 @@ public class Cause extends Play { private String cause; private int hazardID; + String risk; public Cause(int id, String cause, int hazardID) { super(id); this.cause = cause; this.hazardID = hazardID; + this.risk = ""; + } + + public String getRisk() { + return risk; + } + + public void setRisk(String risk) { + this.risk = risk; } public String getCause() { diff --git a/src/main/java/hazard/HazardClasses/Hazard.java b/src/main/java/hazard/HazardClasses/Hazard.java index 8a91456..0a10cfe 100644 --- a/src/main/java/hazard/HazardClasses/Hazard.java +++ b/src/main/java/hazard/HazardClasses/Hazard.java @@ -3,13 +3,13 @@ public class Hazard extends Play { String hazard; String hazardDescription; - String risk; + public Hazard(int id, String hazard, String hazardDescription) { super(id); this.hazard = hazard; this.hazardDescription = hazardDescription; - this.risk = ""; + } public String getHazard() { @@ -20,9 +20,7 @@ public String getHazardDescription() { return hazardDescription; } - public String getRisk() { - return risk; - } + public void setHazard(String hazard) { this.hazard = hazard; @@ -32,7 +30,5 @@ public void setHazardDescription(String hazardDescription) { this.hazardDescription = hazardDescription; } - public void setRisk(String risk) { - this.risk = risk; - } + } diff --git a/temp.xlsx b/temp.xlsx index eecc44e83e384c5bbddf8cbf5eaaff4eb0d12224..2ad24efabaa4aadfe5294e5e112f432239771392 100644 GIT binary patch literal 7319 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%0D#aV1z`k*P>{lO=WP;9 zcK0YM95`92Z`oBV5VIY^S;*`0cCCvvjAS|C2{}-_`~uc9B--hDu|M|s@C1Uj`SX`> zR1%v5EWt)YbECgv3g{SQXup-U>!Q+?vi5)Nn$C9J@k(>LE{9xcPQQ%~)p`Gm0`+Hr z>jK1;YVzCCP`&9-4dqYo>qGaINb%e3Q7rv$@Bfu7{&c@i=dUL7-&Tu~cmCU){%3^i z^y`ZD|28DB@UZ2{`XuM?6#ov%0WD;D$H