From 2f8d930891d2b9c94cafef0cb4478661e9f0aa03 Mon Sep 17 00:00:00 2001 From: xarczuz Date: Fri, 17 May 2019 14:06:35 +0200 Subject: [PATCH] Update V2.2.0-Beta --- .~lock.test.xlsx# | 1 - graph.png | Bin 3751 -> 14759 bytes pom.xml | 2 +- .../DataBase/DataBaseConnection.java | 127 +++++++++++++++++- .../HazardAnalysis/Steps/Views/MainView.java | 8 +- .../HazardAnalysis/Steps/Views/ViewStep5.java | 8 +- .../HazardAnalysis/Steps/Views/ViewStep6.java | 85 ++++++------ .../HazardAnalysis/Steps/Views/ViewStep7.java | 2 + .../HazardAnalysis/Steps/Views/ViewStep8.java | 48 +++---- .../HazardAnalysis/Steps/Views/ViewStep9.java | 26 ++-- src/main/java/hazard/HazardClasses/Cause.java | 65 ++++----- .../CausesRiskAndMitigation.java | 87 ++++++++++++ .../hazard/HazardClasses/HazardElement.java | 8 +- .../hazard/HazardClasses/MishapVictim.java | 40 +++--- .../hazard/HazardClasses/PossibleVictim.java | 40 +++--- test.db | Bin 36864 -> 36864 bytes test.xlsx | Bin 4442 -> 8329 bytes 17 files changed, 378 insertions(+), 169 deletions(-) delete mode 100644 .~lock.test.xlsx# create mode 100644 src/main/java/hazard/HazardClasses/CausesRiskAndMitigation.java diff --git a/.~lock.test.xlsx# b/.~lock.test.xlsx# deleted file mode 100644 index 2057a2b..0000000 --- a/.~lock.test.xlsx# +++ /dev/null @@ -1 +0,0 @@ -,chjunchi,chjunchi-U45JC,16.05.2019 16:41,file:///home/chjunchi/snap/libreoffice/118/.config/libreoffice/4; \ No newline at end of file diff --git a/graph.png b/graph.png index b6138c6126b26670c2bafbf3620dfd1b9077e48d..7456f43bb14f31282e7524dafe17b3bc5d22000c 100644 GIT binary patch literal 14759 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 literal 3751 zcmZ`+2|QG58?P%%Wh^ljV_eCUF)HhXXpkjKWK2Ys8Io-nW8e3EnTm;|hOD6&Wz9D! z3^Dd~BovV)Bq95Ebo;)0@3)-a^Ekl>+x`}To!E^DCo z?c0A47*BEh2HbTBpS$+$<8sx}P{a7Xn|~CdPhNvIXI6Vx=vARSQEfIyccl{M1Z|Ab z?e#}@sVQ3esk8T8^tE3aUo}uw)1>?R@PLihPh?XLaXb@uKxB)fJ{52*VDgy{z#;gY z7a7bE!2!_=VL=_TPx|D?Rn~qechW}Jb}<94nzO zI#M#NT!@(NEy7`B-%~hVWz5gx>b1M%TRQM>i&OK%daIe0_>!cHf&L%UJr1ASj++We zPz*Txa@YkJ{;tO*&mTxuCII7@A4N)UCzaP8Z@JCjYb=JSqtC293z2X({W5E ziykg-yTpWE?d5w8Q7ZA=YyqA=B#YiF_6cixpo*OP*pyh0L=B0+lTy%R zy`Z3=9jY2y@O0kWi%@Mjhj9;Q=VEL89df14n`m#+=gG-8(P7Eqpn0LHAv_hAm5XIT zI%r{S>7I5Pov0z}2oMd%3Zd?Y_>`suS0jiYixKs8H0ALq80q}6M;Aa4^V_$WUH0fW zVx2{x!{>U^vN}DPd_J}0{z1q|kN4*5JKu&-u?)kYuYP_!rsWsmvvja5#cXNALodbZ zhG%~8wCVUNGfi{n`l(zy!j9Nz4I9!kqi@@L>ES0<$VsKXxqlb z`8l1p5t>(;V<^_1Z{+3X#LU#6P6jL(-kMyeKJLsF#_O4O#CKY7LT*p`*5}{Poi;sM zQKjOZy0PI_w`(m+xqD=FC&cSv3@GT7R~_4EneM8vMS;IX^D$HYvzznP^q9(q=#C-Z z@!Y^O!NboRqe{;@p;#a%uNT@DbG;pPUD|odt4JyTVCN)pNo>+mI=&ZHigV_|D-Up; zt1Jne?rFAFS{P1fHc9gjp}i#2s$El(;cbVT6d#Qe2%*l^Wd+V@H2D+3&f^@na<(w% zj+7=PXD)U0@9jOcbAzHBOl>iMBCGXcHVdomBiSHSwFnS1>kS*e3y7wh5YhpNpByt3 zB#3{_20~&Z_JaH`X~qEor{cJf*}cv`ycbl@J6lft)-3%ik?@)>4`+F%Q>ic7oKPQ5 zL&Wlk=vI31NOy*TyWrIi=6DZ1{n@)W11d9tlxouP>#T1>dBgo7`RuI=%<|{H0e6}6 zp9NU<)U1#jo9r@c$g|f?1#XyBeQh(tqYKP+*>OkGcxb}d1~q%rzr9L zEupv(o5d_$QMgMoI=WrwY#L+6Q%Q(R$W&7%_J+AR#!ULM?nEwG%~n_FcMUOc7iB_0 z6wXu?V}-;5Ub)K;ct{6u-0NRLYGA{EPzVPJX;Z@{H~?P)D@1^D(LhtfE+0Z3_XZRJ z=l&^S6Tn!3gk@>w{iXP)={-fJ2pkB+U*+GX->{KRGG7yandSku0qiUkw5Rkh4OBmH z_4dlPEsc&^`B6?>Mys_qt;`M5r=@M1a`W=~2L`mXv`EkkCX|^kUv4TSW2l1|91hpo z5FZ=~5Qi+O**%V4+H!?CxR8J01iaC{g=MK+N z;L}OkhLt80+EU!(pGd{!?iDoZ}{ zqb!-mMc0P+`F*o8Hvg*qAPcxmA> z{>VOf*<5iVx<=3x-K|w%vbwUe-tY%TZh8uJtNuhj)Xy~izsSb}1YQOK0mCl1r|Mg) zEMGv_E8Avl=R9(r8WuqkY{e3Hik=TMP;2no z?_ea-+$tIbbz)>&3!QCsa&=9nR-VbM@S5RdcA3k_zKQODg&r3_B}+Zg-{-nHY)0(G zUiw`0Z0p0wSYjCHOu5a=ac4(@frEk>D@18 zP{8rx&Ra}^+`wRo|F$Bt>sdUKZr2u)SNNCG|CkpDJ?LAGWuT1{fIz{urIQ53hyR0S7DE+O{}%Jlg+80}~%u?US$wg*ig9tt3aE zH^!3KSs-xUG3d*iipLO%M*LU_RYeNh96jHPf zpv;^bJ&u)R8~prdYr4r_>0Wdxt3tY}@lTY|Hm&88Q8*xv~PuEzSE$E$bQ*g5Yw}`kpIvUy0 zfA(OuBsejU=PpJyfHd(7TYe$Oe#l=@LxBr$;ZJP&2>?>02>}5C8jZ$zQAJNC9Q3Sz zWCRKZ%M-^nc2QE1zda_ANQK4)9U13Ki;E8(7z4YXG#ls$-7*6AXk{5 z-^A?CI#~aL6kiw~}sqN1(VTtQRcjf2i z-p`7aK|#1vuUpU$J9WN4b1 zrN>$4w~SdHm559tPBhKGt4NTZuTvJjtpJBPySqQ1v45CVy_`*>S33{Uz(byDVj(ulN6EpSolNUNlnyDRPtzo ztE;OembE6SUE$&3S!c4b6T7WGc|G3=Yr&RaFc_^tZ)|kCeF`6#5_o?3!4KqPb^yg; z^jtET--x z&;5fj=|7W~c9SmEJj)JII#YJakb=)T!kG8&%s5Y&?JMl@7>`H_)r;rL3AD`oE-NdW zB6Q_p`9W|ETgy@?KtEAX=TY+?0Pnz>0T!tN3;#XnA^LWlpBADN!ILHPz(C z4Tyk%qW72Uep&<{m|$Ke6(C^>*Ru(d3w`>Y7`^I7+O?9qbF}9?WRSWj zTm$A1H}_hSq8|?!tck+0sK~)$A|s~*|9Bax7qfHPHV4=ZCH&$mZ$!bT!1{cpgdAP^ z(e$e#wg$mPoA%cTMQgII6D?2II=w7rqCqUhbs^ZXB?iL%fz!JkcgFU;*^n{us*0lF z&XBeDt_qt~*J|1W5NAggYFQxB0?g>g%;|*~|_~1V_ zKH>X28XXZK+t0}9oyUglLxLwH_PEgfH}-$W`oD0JJ%j&KQ~@T$fz%g!rESS#S+g?( zuu7)XeT9%qEc2tLb``&ef+A)noU2mp9H9HpS;dgoo@M#LLZLwJThWm2mFBU)6q20C{f3T{}V@!A4mWI diff --git a/pom.xml b/pom.xml index b70045d..d7fe038 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ Hazard HazardAnalysis - 2.0-Beta + 2.2.0-Beta jar HazardAnalysis diff --git a/src/main/java/hazard/HazardAnalysis/DataBase/DataBaseConnection.java b/src/main/java/hazard/HazardAnalysis/DataBase/DataBaseConnection.java index 0f5aeaa..911f038 100644 --- a/src/main/java/hazard/HazardAnalysis/DataBase/DataBaseConnection.java +++ b/src/main/java/hazard/HazardAnalysis/DataBase/DataBaseConnection.java @@ -8,6 +8,7 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; +import java.util.ArrayList; import org.apache.poi.ss.usermodel.BorderStyle; import org.apache.poi.ss.usermodel.Cell; @@ -22,6 +23,7 @@ import org.apache.poi.xssf.usermodel.XSSFWorkbook; import hazard.HazardClasses.Cause; +import hazard.HazardClasses.CausesRiskAndMitigation; import hazard.HazardClasses.Hazard; import hazard.HazardClasses.HazardElement; import hazard.HazardClasses.Kind; @@ -91,12 +93,14 @@ public static void exportData(File file) { ResultSet rs = stmt.executeQuery(sql); Workbook workbook = new XSSFWorkbook(); Sheet sheet = workbook.createSheet("Hazards"); + ArrayList causeAndMitList = new ArrayList(); int rowIndex = 0; int index = 1; + CellStyle headerStyle = workbook.createCellStyle(); + CellStyle style = workbook.createCellStyle(); while (rs.next()) { Row header = sheet.createRow(rowIndex); rowIndex++; - CellStyle headerStyle = workbook.createCellStyle(); headerStyle.setFillForegroundColor(IndexedColors.LIGHT_BLUE.getIndex()); headerStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND); headerStyle.setBorderTop(BorderStyle.THIN); @@ -114,7 +118,6 @@ public static void exportData(File file) { headerCell = header.createCell(1); headerCell.setCellValue("HML-Style Hazard Description"); headerCell.setCellStyle(headerStyle); - CellStyle style = workbook.createCellStyle(); style.setWrapText(false); style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex()); style.setFillPattern(FillPatternType.SOLID_FOREGROUND); @@ -183,27 +186,43 @@ public static void exportData(File file) { ResultSet rs2 = stmt2.executeQuery(sql2); int i = 1; while (rs2.next()) { + CausesRiskAndMitigation crm = new CausesRiskAndMitigation(); + crm.setHarm(rs.getString("harm").trim()); + crm.setNr("cause " + i + ", H:" + (index - 1)); + crm.setHml(rs.getString("hazard").trim()); + crm.setCause(rs2.getString("cause").trim()); + crm.setProbability(rs2.getDouble("probability")); + crm.setSeverity(rs2.getDouble("severity")); + crm.setRpn(rs2.getDouble("riskevaluation")); + crm.setRisk(rs2.getBoolean("risk")); + crm.setRq("M:" + i); + crm.setMitigation(rs2.getString("mitigation")); + causeAndMitList.add(crm); Row causes = sheet.createRow(rowIndex); rowIndex++; Cell cellCauses = causes.createCell(0); cellCauses.setCellValue("Cause " + i); cellCauses.setCellStyle(style); cellCauses = causes.createCell(1); - cellCauses.setCellValue(rs2.getString("cause")); + cellCauses.setCellValue(rs2.getString("cause").trim()); cellCauses.setCellStyle(style); cellCauses = causes.createCell(2); - cellCauses.setCellValue(rs2.getString("probability")); + cellCauses.setCellValue(rs2.getDouble("probability")); cellCauses.setCellStyle(style); cellCauses = causes.createCell(3); - cellCauses.setCellValue(rs2.getString("severity")); + cellCauses.setCellValue(rs2.getDouble("severity")); cellCauses.setCellStyle(style); cellCauses = causes.createCell(4); - cellCauses.setCellValue(rs2.getString("riskevaluation")); + cellCauses.setCellValue(rs2.getDouble("riskevaluation")); cellCauses.setCellStyle(style); cellCauses = causes.createCell(5); - String risk = "Denied"; CellStyle styleRisk = workbook.createCellStyle(); styleRisk.setFillPattern(FillPatternType.SOLID_FOREGROUND); + styleRisk.setBorderTop(BorderStyle.THIN); + styleRisk.setBorderRight(BorderStyle.THIN); + styleRisk.setBorderBottom(BorderStyle.THIN); + styleRisk.setBorderLeft(BorderStyle.THIN); + String risk = "Denied"; if (rs2.getBoolean("risk")) { risk = "Accept"; styleRisk.setFillForegroundColor(IndexedColors.GREEN.getIndex()); @@ -230,6 +249,100 @@ public static void exportData(File file) { sheet.autoSizeColumn(5); sheet.autoSizeColumn(6); sheet.autoSizeColumn(7); + // Sheet 2 causes sorted by risk evaluation number + causeAndMitList.sort((c1, c2) -> c1.getRpn() > c2.getRpn() ? -1 : 1); + rowIndex = 0; + index = 1; + Sheet sheetCauses = workbook.createSheet("Causes"); + Row headerCause = sheetCauses.createRow(rowIndex); + rowIndex++; + Cell headerCellCause = headerCause.createCell(0); + headerCellCause.setCellValue("No."); + headerCellCause.setCellStyle(headerStyle); + headerCellCause = headerCause.createCell(1); + headerCellCause.setCellValue("HML-Style Hazard Description"); + headerCellCause.setCellStyle(headerStyle); + headerCellCause = headerCause.createCell(2); + headerCellCause.setCellValue("Natural Language Hazard Description"); + headerCellCause.setCellStyle(headerStyle); + headerCellCause = headerCause.createCell(3); + headerCellCause.setCellValue("Cause"); + headerCellCause.setCellStyle(headerStyle); + headerCellCause = headerCause.createCell(4); + headerCellCause.setCellValue("Probability"); + headerCellCause.setCellStyle(headerStyle); + headerCellCause = headerCause.createCell(5); + headerCellCause.setCellValue("Severity"); + headerCellCause.setCellStyle(headerStyle); + headerCellCause = headerCause.createCell(6); + headerCellCause.setCellValue("RPN"); + headerCellCause.setCellStyle(headerStyle); + headerCellCause = headerCause.createCell(7); + headerCellCause.setCellValue("Risk"); + headerCellCause.setCellStyle(headerStyle); + headerCellCause = headerCause.createCell(8); + headerCellCause.setCellValue("Rq."); + headerCellCause.setCellStyle(headerStyle); + headerCellCause = headerCause.createCell(9); + headerCellCause.setCellValue("Mitigation"); + headerCellCause.setCellStyle(headerStyle); + for (int j = 0; j < causeAndMitList.size(); j++) { + Row causes = sheetCauses.createRow(rowIndex); + rowIndex++; + Cell cellCauses = causes.createCell(0); + cellCauses.setCellValue(causeAndMitList.get(j).getNr()); + cellCauses.setCellStyle(style); + cellCauses = causes.createCell(1); + cellCauses.setCellValue(causeAndMitList.get(j).getHml()); + cellCauses.setCellStyle(style); + cellCauses = causes.createCell(2); + cellCauses.setCellValue(causeAndMitList.get(j).getHarm()); + cellCauses.setCellStyle(style); + cellCauses = causes.createCell(3); + cellCauses.setCellValue(causeAndMitList.get(j).getCause()); + cellCauses.setCellStyle(style); + cellCauses = causes.createCell(4); + cellCauses.setCellValue(causeAndMitList.get(j).getProbability()); + cellCauses.setCellStyle(style); + cellCauses = causes.createCell(5); + cellCauses.setCellValue(causeAndMitList.get(j).getSeverity()); + cellCauses.setCellStyle(style); + cellCauses = causes.createCell(6); + cellCauses.setCellValue(causeAndMitList.get(j).getRpn()); + cellCauses.setCellStyle(style); + cellCauses = causes.createCell(7); + CellStyle styleRisk = workbook.createCellStyle(); + styleRisk.setFillPattern(FillPatternType.SOLID_FOREGROUND); + styleRisk.setBorderTop(BorderStyle.THIN); + styleRisk.setBorderRight(BorderStyle.THIN); + styleRisk.setBorderBottom(BorderStyle.THIN); + styleRisk.setBorderLeft(BorderStyle.THIN); + String risk = "Denied"; + if (causeAndMitList.get(j).isRisk()) { + risk = "Accept"; + styleRisk.setFillForegroundColor(IndexedColors.GREEN.getIndex()); + } else { + styleRisk.setFillForegroundColor(IndexedColors.RED.getIndex()); + } + cellCauses.setCellValue(risk); + cellCauses.setCellStyle(styleRisk); + cellCauses = causes.createCell(8); + cellCauses.setCellValue(causeAndMitList.get(j).getRq()); + cellCauses.setCellStyle(style); + cellCauses = causes.createCell(9); + cellCauses.setCellValue(causeAndMitList.get(j).getMitigation()); + cellCauses.setCellStyle(style); + } + sheetCauses.autoSizeColumn(0); + sheetCauses.autoSizeColumn(1); + sheetCauses.autoSizeColumn(2); + sheetCauses.autoSizeColumn(3); + sheetCauses.autoSizeColumn(4); + sheetCauses.autoSizeColumn(5); + sheetCauses.autoSizeColumn(6); + sheetCauses.autoSizeColumn(7); + sheetCauses.autoSizeColumn(8); + sheetCauses.autoSizeColumn(9); PrintSetup ps = sheet.getPrintSetup(); ps.setFitWidth((short) 1); ps.setFitHeight((short) 1); diff --git a/src/main/java/hazard/HazardAnalysis/Steps/Views/MainView.java b/src/main/java/hazard/HazardAnalysis/Steps/Views/MainView.java index b299990..703d9c2 100644 --- a/src/main/java/hazard/HazardAnalysis/Steps/Views/MainView.java +++ b/src/main/java/hazard/HazardAnalysis/Steps/Views/MainView.java @@ -305,6 +305,10 @@ public ViewStep1 getAv1() { return av1; } + public ViewStep10 getAv10() { + return this.av10; + } + public ViewStep2 getAv2() { return av2; } @@ -337,10 +341,6 @@ public ViewStep9 getAv9() { return this.av9; } - public ViewStep10 getAv10() { - return this.av10; - } - private void loadCenterViews() { this.av2 = new ViewStep2(); this.av3 = new ViewStep3(); diff --git a/src/main/java/hazard/HazardAnalysis/Steps/Views/ViewStep5.java b/src/main/java/hazard/HazardAnalysis/Steps/Views/ViewStep5.java index 60d7180..0ce4fcf 100644 --- a/src/main/java/hazard/HazardAnalysis/Steps/Views/ViewStep5.java +++ b/src/main/java/hazard/HazardAnalysis/Steps/Views/ViewStep5.java @@ -180,13 +180,13 @@ public void handle(MouseEvent e) { btnRemove.addEventHandler(MouseEvent.MOUSE_CLICKED, eventHandler); } - public void updateVictimList() { - DataBaseConnection.sql("Select * from mishapvictim", "mishapvictim", victimList); - } - public void updatePossibleVictimList() { DataBaseConnection.sql( "select roletoplay.role,roletoplay.kind,relatortorole.relator,roletoplay.roleid,roletoplay.kindid,relatortorole.relatorid from roletoplay, relatortorole where relatortorole.roleid = roletoplay.roleid", "possiblevictim", possibleVictimList); } + + public void updateVictimList() { + DataBaseConnection.sql("Select * from mishapvictim", "mishapvictim", victimList); + } } diff --git a/src/main/java/hazard/HazardAnalysis/Steps/Views/ViewStep6.java b/src/main/java/hazard/HazardAnalysis/Steps/Views/ViewStep6.java index a4dc6a2..8328278 100644 --- a/src/main/java/hazard/HazardAnalysis/Steps/Views/ViewStep6.java +++ b/src/main/java/hazard/HazardAnalysis/Steps/Views/ViewStep6.java @@ -19,6 +19,7 @@ import javafx.scene.control.TextArea; import javafx.scene.control.TextField; import javafx.scene.control.TextInputDialog; +import javafx.scene.control.Tooltip; import javafx.scene.control.cell.PropertyValueFactory; import javafx.scene.input.MouseEvent; import javafx.scene.layout.GridPane; @@ -108,38 +109,6 @@ public GridPane addGridPane() { return grid; } - private void clickEventToTbVictim(TableView tbVictim) { - EventHandler eventHandler = new EventHandler() { - @Override - public void handle(MouseEvent event) { - if (event.getClickCount() == 2) { - int index = tbVictim.getSelectionModel().getSelectedIndex(); - if (index >= 0) { - MishapVictim mv = tbVictim.getItems().get(index); - RelatorGraph frame; - try { - frame = new RelatorGraph(mv.getRelator()); - frame.setResizable(true); - frame.setSize(800, 400); - frame.setVisible(true); - } catch (SQLException err) { - err.printStackTrace(); - } - } - } - int index = tbVictim.getSelectionModel().getSelectedIndex(); - if (index > -1) { - MishapVictim mv = tbVictim.getItems().get(index); - DataBaseConnection.sql( - "SELECT roletoplay.role,roletoplay.kind FROM relatortorole, roletoplay WHERE relatortorole.relatorid =" - + mv.getRelatorID() + " AND relatortorole.roleid = roletoplay.roleid;", - "hazardelement", hazardElementList); - } - } - }; - tbVictim.addEventHandler(MouseEvent.MOUSE_CLICKED, eventHandler); - } - private void addHazardEvent(Button btnAdd, TableView tbVictim, TableView tbHazardElement) { EventHandler eventHandler = new EventHandler() { @@ -162,7 +131,9 @@ public void handle(MouseEvent e) { + "" + ":" + he.getKind() + ")"); description.setWrappingWidth(600); t.setPromptText("HarmTruthMaker"); + t.setTooltip(new Tooltip("The Short Description of the Harm")); ta.setPromptText("Descrption of the Harm."); + ta.setTooltip(new Tooltip("The Detailed Description of the Harm")); GridPane gp = new GridPane(); gp.setPadding(new Insets(15, 15, 15, 15)); t.setPadding(new Insets(10, 5, 5, 5)); @@ -186,6 +157,8 @@ public void handle(DialogEvent event) { String harm = ta.getText(); DataBaseConnection.insertHazard(hazard, harm); DataBaseConnection.sql("SELECT * FROM hazard;", "hazard", hazardList); + } else if (dialog.getResult() != null && (t.getText().isEmpty() || ta.getText().isEmpty())) { + event.consume(); } } }; @@ -197,20 +170,36 @@ public void handle(DialogEvent event) { btnAdd.addEventHandler(MouseEvent.MOUSE_CLICKED, eventHandler); } - private void removeHazardEvent(Button btnRemove, TableView tbHazard) { + private void clickEventToTbVictim(TableView tbVictim) { EventHandler eventHandler = new EventHandler() { @Override - public void handle(MouseEvent e) { - if (tbHazard.getItems().size() != 0) { - int index = tbHazard.getSelectionModel().selectedIndexProperty().get(); - if (index != -1) { - Play o = tbHazard.getItems().remove(index); - DataBaseConnection.delete("hazard", o.getId()); + public void handle(MouseEvent event) { + if (event.getClickCount() == 2) { + int index = tbVictim.getSelectionModel().getSelectedIndex(); + if (index >= 0) { + MishapVictim mv = tbVictim.getItems().get(index); + RelatorGraph frame; + try { + frame = new RelatorGraph(mv.getRelator()); + frame.setResizable(true); + frame.setSize(800, 400); + frame.setVisible(true); + } catch (SQLException err) { + err.printStackTrace(); + } } } + int index = tbVictim.getSelectionModel().getSelectedIndex(); + if (index > -1) { + MishapVictim mv = tbVictim.getItems().get(index); + DataBaseConnection.sql( + "SELECT roletoplay.role,roletoplay.kind FROM relatortorole, roletoplay WHERE relatortorole.relatorid =" + + mv.getRelatorID() + " AND relatortorole.roleid = roletoplay.roleid;", + "hazardelement", hazardElementList); + } } }; - btnRemove.addEventHandler(MouseEvent.MOUSE_CLICKED, eventHandler); + tbVictim.addEventHandler(MouseEvent.MOUSE_CLICKED, eventHandler); } @Override @@ -231,6 +220,22 @@ public String getStepDescription() { + "explosion, etc."; } + private void removeHazardEvent(Button btnRemove, TableView tbHazard) { + EventHandler eventHandler = new EventHandler() { + @Override + public void handle(MouseEvent e) { + if (tbHazard.getItems().size() != 0) { + int index = tbHazard.getSelectionModel().selectedIndexProperty().get(); + if (index != -1) { + Play o = tbHazard.getItems().remove(index); + DataBaseConnection.delete("hazard", o.getId()); + } + } + } + }; + btnRemove.addEventHandler(MouseEvent.MOUSE_CLICKED, eventHandler); + } + public void updateHazardList() { DataBaseConnection.sql("SELECT * FROM hazard;", "hazard", hazardList); } diff --git a/src/main/java/hazard/HazardAnalysis/Steps/Views/ViewStep7.java b/src/main/java/hazard/HazardAnalysis/Steps/Views/ViewStep7.java index b923031..636d1ac 100644 --- a/src/main/java/hazard/HazardAnalysis/Steps/Views/ViewStep7.java +++ b/src/main/java/hazard/HazardAnalysis/Steps/Views/ViewStep7.java @@ -54,6 +54,8 @@ public void handle(DialogEvent event) { DataBaseConnection.insertCause(ta.getText(), h.getId()); DataBaseConnection.sql("SELECT * FROM cause WHERE cause.hazardid=" + h.getId() + ";", "cause", list); + } else if (dialog.getResult() != null && ta.getText().isEmpty()) { + event.consume(); } } }; diff --git a/src/main/java/hazard/HazardAnalysis/Steps/Views/ViewStep8.java b/src/main/java/hazard/HazardAnalysis/Steps/Views/ViewStep8.java index 6cb2f56..221bae4 100644 --- a/src/main/java/hazard/HazardAnalysis/Steps/Views/ViewStep8.java +++ b/src/main/java/hazard/HazardAnalysis/Steps/Views/ViewStep8.java @@ -86,6 +86,18 @@ public GridPane addGridPane() { @Override public TableRow call(TableView param) { final TableRow row = new TableRow() { + private void removeCssClass() { + if (getStyleClass().contains("true")) { + getStyleClass().remove("true"); + } + if (getStyleClass().contains("false")) { + getStyleClass().remove("false"); + } + if (getStyleClass().contains("table-row-cell")) { + getStyleClass().remove("table-row-cell"); + } + } + @Override protected void updateItem(Cause item, boolean empty) { super.updateItem(item, empty); @@ -108,18 +120,6 @@ protected void updateItem(Cause item, boolean empty) { getStyleClass().add("table-row-cell"); } } - - private void removeCssClass() { - if (getStyleClass().contains("true")) { - getStyleClass().remove("true"); - } - if (getStyleClass().contains("false")) { - getStyleClass().remove("false"); - } - if (getStyleClass().contains("table-row-cell")) { - getStyleClass().remove("table-row-cell"); - } - } }; return row; } @@ -199,16 +199,6 @@ public void changed(ObservableValue ov, String t, String t1) { btnAdd.addEventHandler(MouseEvent.MOUSE_CLICKED, eventHandler); } - private Double returnRiskValue(String s) { - if (s.contentEquals("High-75%")) - return .75D; - if (s.contentEquals("Medium-50%")) - return .50D; - if (s.contentEquals("Low-25%")) - return .25D; - return 0D; - } - @Override public GridPane getGridPane() { updateHazardList(); @@ -225,8 +215,14 @@ public String getStepDescription() { return "For each Hazard and it's Pre-initiating events determine a Severity and a Probability for the Hazard."; } - public void updateHazardList() { - DataBaseConnection.sql("SELECT * FROM hazard;", "hazard", hazardList); + private Double returnRiskValue(String s) { + if (s.contentEquals("High-75%")) + return .75D; + if (s.contentEquals("Medium-50%")) + return .50D; + if (s.contentEquals("Low-25%")) + return .25D; + return 0D; } public void updateCauseList(TableView tbHazard, ObservableList list) { @@ -236,4 +232,8 @@ public void updateCauseList(TableView tbHazard, ObservableList li DataBaseConnection.sql("SELECT * FROM cause WHERE cause.hazardid=" + id + ";", "cause", list); } } + + public void updateHazardList() { + DataBaseConnection.sql("SELECT * FROM hazard;", "hazard", hazardList); + } } diff --git a/src/main/java/hazard/HazardAnalysis/Steps/Views/ViewStep9.java b/src/main/java/hazard/HazardAnalysis/Steps/Views/ViewStep9.java index 292091c..80d853d 100644 --- a/src/main/java/hazard/HazardAnalysis/Steps/Views/ViewStep9.java +++ b/src/main/java/hazard/HazardAnalysis/Steps/Views/ViewStep9.java @@ -80,6 +80,18 @@ public GridPane addGridPane() { @Override public TableRow call(TableView param) { final TableRow row = new TableRow() { + private void removeCssClass() { + if (getStyleClass().contains("true")) { + getStyleClass().remove("true"); + } + if (getStyleClass().contains("false")) { + getStyleClass().remove("false"); + } + if (getStyleClass().contains("table-row-cell")) { + getStyleClass().remove("table-row-cell"); + } + } + @Override protected void updateItem(Cause item, boolean empty) { super.updateItem(item, empty); @@ -102,18 +114,6 @@ protected void updateItem(Cause item, boolean empty) { getStyleClass().add("table-row-cell"); } } - - private void removeCssClass() { - if (getStyleClass().contains("true")) { - getStyleClass().remove("true"); - } - if (getStyleClass().contains("false")) { - getStyleClass().remove("false"); - } - if (getStyleClass().contains("table-row-cell")) { - getStyleClass().remove("table-row-cell"); - } - } }; return row; } @@ -168,6 +168,8 @@ public void handle(DialogEvent event) { DataBaseConnection.insertMitigationToCause(ta.getText(), c.getId()); DataBaseConnection.sql("SELECT * FROM cause WHERE cause.hazardid=" + h.getId() + ";", "cause", causeList); + } else if (dialog.getResult() != null && ta.getText().isEmpty()) { + event.consume(); } } }; diff --git a/src/main/java/hazard/HazardClasses/Cause.java b/src/main/java/hazard/HazardClasses/Cause.java index 8ef542c..0f3632d 100644 --- a/src/main/java/hazard/HazardClasses/Cause.java +++ b/src/main/java/hazard/HazardClasses/Cause.java @@ -5,71 +5,72 @@ public class Cause extends Play { private int hazardID; private String risk; private String mitigation; -private double severity,probability,riskevaluation; + private double severity, probability, riskevaluation; + public Cause(int id, String cause, int hazardID) { super(id); this.cause = cause; this.hazardID = hazardID; this.risk = ""; this.mitigation = ""; - this.severity=0; - this.probability=0; - this.riskevaluation=0; - } - - public double getRiskevaluation() { - return riskevaluation; + this.severity = 0; + this.probability = 0; + this.riskevaluation = 0; } - public void setRiskevaluation(double riskevaluation) { - this.riskevaluation = riskevaluation; + public String getCause() { + return cause; } - public double getSeverity() { - return severity; + public int getHazardID() { + return hazardID; } - public void setSeverity(double severity) { - this.severity = severity; + public String getMitigation() { + return mitigation; } public double getProbability() { return probability; } - public void setProbability(double probability) { - this.probability = probability; + public String getRisk() { + return risk; } - public String getMitigation() { - return mitigation; + public double getRiskevaluation() { + return riskevaluation; } - public void setMitigation(String mitigation) { - this.mitigation = mitigation; + public double getSeverity() { + return severity; } - public String getRisk() { - return risk; + public void setCause(String cause) { + this.cause = cause; } - public void setRisk(String risk) { - this.risk = risk; + public void setHazardID(int hazardID) { + this.hazardID = hazardID; } - public String getCause() { - return cause; + public void setMitigation(String mitigation) { + this.mitigation = mitigation; } - public int getHazardID() { - return hazardID; + public void setProbability(double probability) { + this.probability = probability; } - public void setCause(String cause) { - this.cause = cause; + public void setRisk(String risk) { + this.risk = risk; } - public void setHazardID(int hazardID) { - this.hazardID = hazardID; + public void setRiskevaluation(double riskevaluation) { + this.riskevaluation = riskevaluation; + } + + public void setSeverity(double severity) { + this.severity = severity; } } diff --git a/src/main/java/hazard/HazardClasses/CausesRiskAndMitigation.java b/src/main/java/hazard/HazardClasses/CausesRiskAndMitigation.java new file mode 100644 index 0000000..e978a14 --- /dev/null +++ b/src/main/java/hazard/HazardClasses/CausesRiskAndMitigation.java @@ -0,0 +1,87 @@ +package hazard.HazardClasses; + +public class CausesRiskAndMitigation { + private String nr, hml, cause, harm, rq, mitigation; + private double probability, severity, rpn; + private boolean risk; + + public String getCause() { + return cause; + } + + public String getHarm() { + return harm; + } + + public String getHml() { + return hml; + } + + public String getMitigation() { + return mitigation; + } + + public String getNr() { + return nr; + } + + public double getProbability() { + return probability; + } + + public double getRpn() { + return rpn; + } + + public String getRq() { + return rq; + } + + public double getSeverity() { + return severity; + } + + public boolean isRisk() { + return risk; + } + + public void setCause(String cause) { + this.cause = cause; + } + + public void setHarm(String harm) { + this.harm = harm; + } + + public void setHml(String hml) { + this.hml = hml; + } + + public void setMitigation(String mitigation) { + this.mitigation = mitigation; + } + + public void setNr(String nr) { + this.nr = nr; + } + + public void setProbability(double probability) { + this.probability = probability; + } + + public void setRisk(boolean risk) { + this.risk = risk; + } + + public void setRpn(double rpn) { + this.rpn = rpn; + } + + public void setRq(String rq) { + this.rq = rq; + } + + public void setSeverity(double severity) { + this.severity = severity; + } +} diff --git a/src/main/java/hazard/HazardClasses/HazardElement.java b/src/main/java/hazard/HazardClasses/HazardElement.java index 5fe7eaf..90202e8 100644 --- a/src/main/java/hazard/HazardClasses/HazardElement.java +++ b/src/main/java/hazard/HazardClasses/HazardElement.java @@ -12,14 +12,14 @@ public String getKind() { return kind; } - public void setKind(String kind) { - this.kind = kind; - } - public String getRole() { return role; } + public void setKind(String kind) { + this.kind = kind; + } + public void setRole(String role) { this.role = role; } diff --git a/src/main/java/hazard/HazardClasses/MishapVictim.java b/src/main/java/hazard/HazardClasses/MishapVictim.java index e20c27a..a2c5a46 100644 --- a/src/main/java/hazard/HazardClasses/MishapVictim.java +++ b/src/main/java/hazard/HazardClasses/MishapVictim.java @@ -14,51 +14,51 @@ public MishapVictim(int id, int roleID, String role, int kindID, String kind, in this.relatorID = relatorID; } - public int getRoleID() { - return roleID; - } - - public void setRoleID(int roleID) { - this.roleID = roleID; + public String getKind() { + return kind; } public int getKindID() { return kindID; } - public void setKindID(int kindID) { - this.kindID = kindID; + public String getRelator() { + return relator; } public int getRelatorID() { return relatorID; } - public void setRelatorID(int relatorID) { - this.relatorID = relatorID; - } - - public String getKind() { - return kind; - } - - public String getRelator() { - return relator; - } - public String getRole() { return role; } + public int getRoleID() { + return roleID; + } + public void setKind(String kind) { this.kind = kind; } + public void setKindID(int kindID) { + this.kindID = kindID; + } + public void setRelator(String relator) { this.relator = relator; } + public void setRelatorID(int relatorID) { + this.relatorID = relatorID; + } + public void setRole(String role) { this.role = role; } + + public void setRoleID(int roleID) { + this.roleID = roleID; + } } \ No newline at end of file diff --git a/src/main/java/hazard/HazardClasses/PossibleVictim.java b/src/main/java/hazard/HazardClasses/PossibleVictim.java index e70a6c4..6673a20 100644 --- a/src/main/java/hazard/HazardClasses/PossibleVictim.java +++ b/src/main/java/hazard/HazardClasses/PossibleVictim.java @@ -13,51 +13,51 @@ public PossibleVictim(int roleID, String role, int kindID, String kind, int rela this.relatorID = relatorID; } - public int getRoleID() { - return roleID; - } - - public void setRoleID(int roleID) { - this.roleID = roleID; + public String getKind() { + return kind; } public int getKindID() { return kindID; } - public void setKindID(int kindID) { - this.kindID = kindID; + public String getRelator() { + return relator; } public int getRelatorID() { return relatorID; } - public void setRelatorID(int relatorID) { - this.relatorID = relatorID; - } - - public String getKind() { - return kind; - } - - public String getRelator() { - return relator; - } - public String getRole() { return role; } + public int getRoleID() { + return roleID; + } + public void setKind(String kind) { this.kind = kind; } + public void setKindID(int kindID) { + this.kindID = kindID; + } + public void setRelator(String relator) { this.relator = relator; } + public void setRelatorID(int relatorID) { + this.relatorID = relatorID; + } + public void setRole(String role) { this.role = role; } + + public void setRoleID(int roleID) { + this.roleID = roleID; + } } diff --git a/test.db b/test.db index 8b78c7d0251e716304d7f105104b0e9afa549492..af3bd50a051e4dcc30adacd7d2f34610d18e64ed 100644 GIT binary patch delta 522 zcmZozz|^pSX@WFk{6raN#`uj1OX7K0_+l9N+xb56ZR3mCEGXc^#~#7L%Ft-YKlxXl z!{oj89PTzLc2+_8N%OKvNVHOdL*$DQfI0>_CP5V7_q*6Wo0-K-Mxa*q?yVn-A1G G2mkz@+$}0l^ diff --git a/test.xlsx b/test.xlsx index dc9a8121a5f4a8ca652936862e48b928e6c60f5e..9175f96c01e465a65a11b37272305cedaa2cc0f5 100644 GIT binary patch literal 8329 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 UY@NcuAU(dq9@mWnlBZAq2c@*R;s5{u literal 4442 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 O7qJ%<`