From 9b4ee5535f757b794658a77ccc57e921e94f1a28 Mon Sep 17 00:00:00 2001 From: Philipp Salvisberg Date: Sun, 3 Jan 2021 09:53:42 +0100 Subject: [PATCH 01/55] smaller success icon --- .../sqldev/resources/images/success.png | Bin 3138 -> 490 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/sqldev/src/main/resources/org/utplsql/sqldev/resources/images/success.png b/sqldev/src/main/resources/org/utplsql/sqldev/resources/images/success.png index 525198af49d9cc3053392525453a6075c6ec9ce9..3c4d4c2fd09949957ba227266b1763d4d5cf516f 100644 GIT binary patch delta 464 zcmX>k@rrqZNGZx^prw85kH`QX@Rme0>?TfNTy1#`a7G79fieh^2s-fq{7e zBLg##W(0{XV1mmEEMP{kK?+Sm3qJvsg?PF+hFA#Rop8|0DNvy8zvcI7QY>x>U-$w! zwssx3l#}?aogqVfD`=@6+9apY6SvrGY0#4I_ljptj&%%Kk$U#g z83W_{_5X?+?B&1A7GD#q+grWVR-0-4^P4Zbmfn=-UNgVV-IqV;42x)inL>Nt=8uPV zzbIO;%T>5sald7Utb^}|x@M7Qv&w82+~i|FdHSe^qpwuo`+)k@uUoGseR-DLS~Qe`#Y51S1^0USm;oh$OZC!W)vt|fIX zahuS5FRl$X;$qB-&rkZtnY90O)sc)l2PA!8 sas2GNy!(3sXYi}*9Wt&J|9Ad@uw-@7E}NG>WI;jg>FVdQ&MBb@0AqEvi2wiq delta 3133 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 X?NOmfX_`FT00000NkvXXu0mjfx4_j! From e6b255d64e3617fa6160912e77fa732a762a6540 Mon Sep 17 00:00:00 2001 From: Philipp Salvisberg Date: Sun, 3 Jan 2021 09:54:02 +0100 Subject: [PATCH 02/55] smaller disabled icon --- .../sqldev/resources/images/disabled.png | Bin 3423 -> 699 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/sqldev/src/main/resources/org/utplsql/sqldev/resources/images/disabled.png b/sqldev/src/main/resources/org/utplsql/sqldev/resources/images/disabled.png index b2afa029ae563950e1fe2cdee027afbcf308fc69..257ffde52cb30576911e62f926bae9b80577bc98 100644 GIT binary patch delta 675 zcmV;U0$lyy8oLFMB!2;OQb$4nuFf3k0000)WmrjOO-%qQ0000800D<-00aO400961 z02%-Q00003paB2_0000100961paK8{000010000GpaTE|000010000G00000G*xl( z0006dNklEMm;{C@3G(SKhx{=u2-wof`VF!L?T2l9=P4^$Y3z& zU=Jbk1l&ra(HN*fF39s_IEC{o;D&r!RCSn29wIFACVv&2rMfM!C-E%^V+*L;hy*x) zD3{AW6^O^Aa=C+;V_dZh*7n%~IKGhm zHQ;%~)_>J7e4CsvFo|s^8`WGxd;#(s_Mhe7Ge*uEkY;F92cZ?pelHMH3UZCB#BOuc zYdnwebH#QAbV#LAS5U9hREemn7Uw>pC1qw3J%p18-xXeKkANIJnq>rTKwhSaGxE_N z-T5W+pL)tu0wS=CY&N?{wh)z=%)cEB23z@jejMu0^cTL5-#?;6`*nex+pz!u002ov JPDHLkV1nX4Cb<9r delta 3420 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 Date: Sun, 3 Jan 2021 09:54:25 +0100 Subject: [PATCH 03/55] smaller failure icon --- .../sqldev/resources/images/failure.png | Bin 3401 -> 690 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/sqldev/src/main/resources/org/utplsql/sqldev/resources/images/failure.png b/sqldev/src/main/resources/org/utplsql/sqldev/resources/images/failure.png index 27bc6d87b899eb2be70e4066a4dbd5eedeee6c24..40b596c6e7aaf941ecf3bf704f43892ad9aed4be 100644 GIT binary patch delta 666 zcmX>pwTX3tNGZx^prw85kH`QX@Rme0>?TfNTy1#`a7G79fieh^2s-fq{7e zBLg##W(0{XV1mmEEMP{kK?+Sm3qLV1Fv)njIEGjVE}eWfOE^&E_<2j?GBty%8DT-Y z*R9Z3@V)h8YklEWmMOouLeB{A_{^)-^n)o#MYup&*JPt$4MTWo_{JSwSN-0&7#H{d zw{{K^=GLoHoLPN-&gb3FAKSYukEsdTBlPj0TjjmaOH6#G*#7r9zkm1NnKM6R75!y? zu{Umy)#DGVHt1-))NzWKsbu;^Q?RZyG4=W5`yHGP_G|70J!?0p7ZbElxMWhE);^;q z)HdbObI08DVwQ;))v`j@DeQM&!d55s=$mqq*ze}Q9NW}1|F_lZW`(WqePq;-cc=Kn zCr0D>#SwOAuI+lg?vhng8^f}dpSW+#|axwdGwZ!#`Ek(u)R*T3Tzve-_%u zJPKS}7_nAumYD$yKeJb_P|e&)tUc8Yhd(+!@8|z{uCMG?+WAPfS2N|73mw!9Fg3J^ zXWRNNO=Q~YB}%PP>C%x3wwsT6F|tW>F16)8VPqj6f5$y)_ltsqW`-;F*H?Gc&oXRe zbGz9w+uNM+Wk=TR8$ZH?>#V*XWjdDmlxfm(4g-}t$M$Ha$}FMJ-LrSiN@2_&t;ucLK6U8RTlIB delta 3398 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 Date: Sun, 3 Jan 2021 09:55:29 +0100 Subject: [PATCH 04/55] smaller error icon --- .../utplsql/sqldev/resources/images/error.png | Bin 3244 -> 527 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/sqldev/src/main/resources/org/utplsql/sqldev/resources/images/error.png b/sqldev/src/main/resources/org/utplsql/sqldev/resources/images/error.png index aefaed044340319adf41da902479b11ab55ed8f9..efed0b8fd64a113ad0012872297823741dd144dd 100644 GIT binary patch delta 501 zcmZ1@+0QaTrJk`k$lZxy-8q?;3=9k|sS%!OzP=1vKsE;hV|yk83y{SK#8N=az`(qK zk%1XVGlIkxFu`R77BC~&AcZEOg`a@RDm`5sLo5W325t0Wb`+R9ck+{_gI;TNlA=7* zrK>%a4^1?y|Hk;=_4gNdDMf{qkHtG~R5fX`I(Ec7y4#m;ww+t*pdb6Qva)A;%@5xb z_`7}Pe6|X|Nq(A_RG)2&IPEiKYM@E>@|SnZ|A;r{7<6QAv=Cn;$7R}Zx=TPZIZVZ< z_T=Y_7gIjHYgO21HX-7q!aTzZ7WZ=kV^(DI81Y%%%{AHL_@KTuVV+96!xx4qCLW%X z*@0)Sny#~Pf2;EPyY&uhZYI@YaShq%gXg3Q&%FBA7d$mv@Z!evxjzqdZ86+YDxjh} zvG2~6UB?_*C2VrMKW8~6)bhqNF5Kr^5}NwT;&2LMs{+U4hjJHf?;Mp-OfD)FuNE_C z`*|{+S#i@hG2JkY7cUm%ofg_{5OUq(N#nu&b8|V~^dINfDQb3-Em3#6_Rey>OJMiI z%grWxzcW4LJ+L8iv*jT@4y$hlXZeidwFC-TF7iKFUpg`BUF>zCTbYMTrf%el)%m!7 e^&ZE6pO2`Q>n;gS{(ik36d#_helF{r5}E)Xxy91} delta 3240 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 a-vIzbTCw)#%mU&70000 Date: Sun, 3 Jan 2021 09:56:42 +0100 Subject: [PATCH 05/55] new info icon matching design of success/failure/error/disabled --- .../utplsql/sqldev/resources/images/info.png | Bin 796 -> 570 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/sqldev/src/main/resources/org/utplsql/sqldev/resources/images/info.png b/sqldev/src/main/resources/org/utplsql/sqldev/resources/images/info.png index eaf2ead82bf4728e2f4f78f27c088d1efe2ae4ea..1c8e3e7520fa9f559f2aa04da4b92ea4539ce89b 100644 GIT binary patch delta 545 zcmbQkwu@zgNGZx^prw85kH`QX@Rme0>?TfNTy1#`a7G79fieh^2s-fq{7e zBLg##W(0{XV1mmEEMP{kK?+Sm3qJvsE%9`546zX0I(fhUAqSD;_pPH2aPX-~9a0m{ zl92pkXkcko|KLf6gv<;NpBrEN4fuHYT+G>p+1%B{OAB0hJ3DpQdXKm$v1OdLeZNjb zYoQB!{H3_}cc1@$yZfH@fqJ)BOT?yJUsC?yMbfGdV!tj$-)7jt>0+qI(Ds9+LHu&s zi#JBr_lvUYB-Y4WeDQM~B_@`CdJL19yA_lI&hNR_ky@WuCcdigp&Ae~>0_!6>ulylT4BvEqGqY9+R&{-LM!kJZlFAuVq-}2*< zn|&;9$K&j-q!5qfXY;)Z9#~F1aav{a_N_^#I^Slfot_XZ>T~7Vt1ohPxAt-cPno-2 z(&zT9eU96?0~LCNrq9ojsE_tu_<63yoUB7@<5@J^Hh3uqO#dG6!e%DNjRG~f#YP+~ z3-~-rORm3C4CqOi>Sl22ftK)pk>_zvXWuJIFUxK7+IDO!>y|Uld1YFkR_t+-U7Vou z+MwBPLgz)ds5xI{UrL$1m%3&rp36E}>SSTb_Dwez&$uD=!tUA4Q+;`Fe$1XPmAU4F a{>l8ETQ^TU-YP8uiaSqNKbLh*2~7Y8kJ?iJ delta 772 zcmV+f1N;2C1e^wtB!2{FK}|sb0I$e51&Zka000?uMObuGZ)S9NVRB^vL1b@YWgtmy zVP|DhWnpA_ami&o00086NklK4D7LceR z0b@*vfyAhB=|WbzRu?8l-KvSvg=s>f3&ceciNuJOp$0!-5wLSz7%G5aw!+Yxq3g9UjQ!NZR1$QfpL!2^TNigi1pYBi6T-z0 zO$5Hu)l$}W(z_QGh3Uvlw?SS}F&bKhe^`d^)t5eK`dzcX!!HOzl7ODvbhtF*-i@>6 zN2=Y~SWtkaO@Clb1#BWfJV+Bv3QF*JR${pZDnBwmXst|qk8HK;&SIhJfpr1<|3j$8ci>JdKs7-^6ooeD0qIzabJF2_X7?|lPAFrEAsj@>>((Oj*ouWqQUDn Date: Sun, 3 Jan 2021 09:57:14 +0100 Subject: [PATCH 06/55] original size of info icon (before scaling down) --- .../sqldev/resources/images/info_2240x2240.png | Bin 0 -> 159338 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 sqldev/src/main/resources/org/utplsql/sqldev/resources/images/info_2240x2240.png diff --git a/sqldev/src/main/resources/org/utplsql/sqldev/resources/images/info_2240x2240.png b/sqldev/src/main/resources/org/utplsql/sqldev/resources/images/info_2240x2240.png new file mode 100644 index 0000000000000000000000000000000000000000..80100bc250e7e4c348ed45bbafe4eefbae155865 GIT binary patch literal 159338 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

Z2_p9uAh~nh-y95?*|b_m=HuE$D7Dh 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 literal 0 HcmV?d00001 From 863d1efd9c8479359a5ee9cd67f1fd24dcddec76 Mon Sep 17 00:00:00 2001 From: Philipp Salvisberg Date: Sun, 3 Jan 2021 09:58:33 +0100 Subject: [PATCH 07/55] new warning icon matching design of success/failure/error/disabled --- .../utplsql/sqldev/resources/images/warning.png | Bin 693 -> 569 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/sqldev/src/main/resources/org/utplsql/sqldev/resources/images/warning.png b/sqldev/src/main/resources/org/utplsql/sqldev/resources/images/warning.png index 63e614dbcba410c3e5872d126d4520215631d553..66a081c886863f77dc7ab556c372966b882562d0 100644 GIT binary patch delta 544 zcmdnWx|3ysNGZx^prw85kH`QX@Rme0>?TfNTy1#`a7G79fieh^2s-fq{7e zBLg##W(0{XV1mmEEMP{kK?+Sm3qJvsE%tPA46zX08gyRUB~awwyV~>BlV^$wYpd#9 z6->78OK%`Nowy4$7=0@>1GV#2CD-yd6iKU-~cZ$p6J z-SYFc_sjQx-g}$zpYaNlwJX0y^M4ffxII&)WIIa}cjnoSi<^sd*R2Wtl65Jvu~YGg z0grq9zs~T>jBmd#cX%YyxlLIhvtpO$;j7h0f1LbUzOaKis=cLNxl5o-M)oJ~mgi=Q zb6Hw~6`YnNx-i%>N4_ZH$zON>Oyl&|M%{P+ZH$+_P^fnB8n;hZ$)iarYdn4{f81~) zoL%39Ke+7BGK1x_Zoko3wlpF9*`WvR47sUMj8QG3`_{M}`0+&BC!zD(WnIUQ&J3mR zq1W?mN( z`y@mC?(%b?neAdf{_}9uS-;fpRa{-ucIvTZh};!X^<^__isLw6ygK|qvHbm`g@% aFMnTU*m(7uw=y><>O5WjT-G@yGywnx*s|D!D!3b3gIVSoT)!eTQs10zd^k$+!11H)-X1_}193`(L5 z1p-`*QrH{-5I`6P0G*ud7MY~O_Uky9udK|#U}3@_?{C0R#0UiF>Hz`>#W}rE3_KGP zd7u9M{^WmW3itmMN5=o1NsRxWZ)Esi?Zxm$MU+7c-3tH##Dr#hkzaD56w|x83}-KV zW4QZ}f#K{W27d+#Q3eJ(O9o+E6^3%4BUq6200a=+fSyQ3X>LK8GI^6U28QR|4C0~? zad8ol$qWou#y~bNLzt;NgC(*700G2=WP5dBW)(N%i&h}#3xkI}Bziq;f%IPn1|ALu z1~(f94n0Y*D>z{K00M{+VE+Z_zTtqvKdT6@xMO|4CP%6 z|4uw$2tIu8{|1l&00G1VwY@7ezmu8aNf})8!nF(xF(r%)3)dqIU;-NG@4&#MA<9q% zbOkR+FF*h>b%Zk78{6A^^9%7XFudCew|VzbMuumvfb?-jge!n9u+e2;&{t$Iby8-C z1{nYlKz~d?+ef?6K9D2FKstB?5I~H$vNN#&AQr#?<<14cgzw3i00000NkvXXu0mjf DQN0rW From 370ebcc114f3f8d21ba770b361838c5160b2daf8 Mon Sep 17 00:00:00 2001 From: Philipp Salvisberg Date: Sun, 3 Jan 2021 09:59:15 +0100 Subject: [PATCH 08/55] original size of warning icon (before scaling down) --- .../sqldev/resources/images/warning_672x672.png | Bin 0 -> 23585 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 sqldev/src/main/resources/org/utplsql/sqldev/resources/images/warning_672x672.png diff --git a/sqldev/src/main/resources/org/utplsql/sqldev/resources/images/warning_672x672.png b/sqldev/src/main/resources/org/utplsql/sqldev/resources/images/warning_672x672.png new file mode 100644 index 0000000000000000000000000000000000000000..b1740b4a8a3822daea9210509098869a82e6ddc5 GIT binary patch literal 23585 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 literal 0 HcmV?d00001 From 1d2974dced8f923cc098f0de72d7b801aef19118 Mon Sep 17 00:00:00 2001 From: Philipp Salvisberg Date: Sun, 3 Jan 2021 10:01:23 +0100 Subject: [PATCH 09/55] new status icon matching design of success/failure/error/disabled --- .../utplsql/sqldev/resources/images/status.png | Bin 3611 -> 757 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/sqldev/src/main/resources/org/utplsql/sqldev/resources/images/status.png b/sqldev/src/main/resources/org/utplsql/sqldev/resources/images/status.png index f6d3dd703d764959e0d29d691810c14d04150652..5c3abfd5a1d93f7327fa4f70058bd892f7a280f7 100644 GIT binary patch delta 733 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 From fce1136e5e2adcbf9802bfcf126f84977bd3b120 Mon Sep 17 00:00:00 2001 From: Philipp Salvisberg Date: Sun, 3 Jan 2021 10:01:44 +0100 Subject: [PATCH 10/55] original size of status icon (before scaling down) --- .../sqldev/resources/images/status_64x64.png | Bin 0 -> 2809 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 sqldev/src/main/resources/org/utplsql/sqldev/resources/images/status_64x64.png diff --git a/sqldev/src/main/resources/org/utplsql/sqldev/resources/images/status_64x64.png b/sqldev/src/main/resources/org/utplsql/sqldev/resources/images/status_64x64.png new file mode 100644 index 0000000000000000000000000000000000000000..4ce21d74d5e378f27793ac2e957949b17669da77 GIT binary patch literal 2809 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 Date: Sun, 3 Jan 2021 10:02:28 +0100 Subject: [PATCH 11/55] add procedure icon representing a test in the tree --- .../utplsql/sqldev/resources/images/procedure.png | Bin 0 -> 632 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 sqldev/src/main/resources/org/utplsql/sqldev/resources/images/procedure.png diff --git a/sqldev/src/main/resources/org/utplsql/sqldev/resources/images/procedure.png b/sqldev/src/main/resources/org/utplsql/sqldev/resources/images/procedure.png new file mode 100644 index 0000000000000000000000000000000000000000..6c4b7cfefb7054e7d27c964553e004603a233c2c GIT binary patch literal 632 zcmV-;0*C#HP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iOD= z6gwzAwC=V500H<(L_t(I%YBl+Yg17a$3OQrA(*7fiv*hr0atZ%5TTLiqy!wC73tEY z6jL|Bpdc(2EE9fSi29k>BFHxl^0x5vi%eZ+eJ zYd4#XkA*`2p@S#_7seuCIBwb?3MvACt<~{Xg2)XWgrgENnIk1*j1dna!xBVgM!h(I{#AA&fe_aHKw#CQ`#K;xiIiIEtR5(mPNygKastJx=ZM;$?@lrDtlR1CCXc__(KH-W SkZQ630000 Date: Sun, 3 Jan 2021 10:03:13 +0100 Subject: [PATCH 12/55] add procedure folder icon representing a context in the tree --- .../sqldev/resources/images/procedure_folder.png | Bin 0 -> 659 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 sqldev/src/main/resources/org/utplsql/sqldev/resources/images/procedure_folder.png diff --git a/sqldev/src/main/resources/org/utplsql/sqldev/resources/images/procedure_folder.png b/sqldev/src/main/resources/org/utplsql/sqldev/resources/images/procedure_folder.png new file mode 100644 index 0000000000000000000000000000000000000000..6c0e51f412f824047e80a3ab960d8bf565155cf8 GIT binary patch literal 659 zcmV;E0&M+>P)j27*9}kb<(@ zq)_O(RV`geLblMzMI=}oLnmn=!!$D>L_<0S2@)YKnua10e6wm5v^Qs5lrXqR`rSo~ znfJZ#r+csOJk*O;wAPLr3{QSBJ|K%H44Jc(LISc_~Tw#9s zN1`mnq>T@AaL&mK>n!+s@X%4*ntLnnwbt^@7=uz~EJxQ0VM`P&-#_IhW_?LySZkBm z*?At-Y8t)0U07J?k|J6gDHxKRN@dndQBff@o9iN98y>;HP-4|jV`ip|HUGAdmzE}z z*{_a0;4s`_P2AatMDAQHR&la>8kdGkXf%G|+}W%Yj8CY5mQr%>Fi`?Rk;EPl&Jo7D$=r|>S$IirnRq!RO7}|M9N?0|3S8lh<_+6g2<<002ovPDHLkV1l!mDoFqU literal 0 HcmV?d00001 From da1a8a85d8c7c04a599764281eb83ec13dab0ab8 Mon Sep 17 00:00:00 2001 From: Philipp Salvisberg Date: Sun, 3 Jan 2021 10:03:57 +0100 Subject: [PATCH 13/55] add package icon representing a suite in the tree --- .../utplsql/sqldev/resources/images/package.png | Bin 0 -> 632 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 sqldev/src/main/resources/org/utplsql/sqldev/resources/images/package.png diff --git a/sqldev/src/main/resources/org/utplsql/sqldev/resources/images/package.png b/sqldev/src/main/resources/org/utplsql/sqldev/resources/images/package.png new file mode 100644 index 0000000000000000000000000000000000000000..eb83901761ef5a2504b15f67089bbaae58d06d4a GIT binary patch literal 632 zcmV-;0*C#HP)WVeFM;@=_4z$YWdpzLbGpzdeIaC6f!hP%7Z zFnoLcf#HVsQ;=&I{`_I6Zr%nl2q1tMXQnZLosgD>u<_N^2Mjy%C&T$36LT5Fv=!j| zsw#+!I`{l%1PCA&umX>2hAmsRGKh+bGTf|Q$snRB57z`T?97Z!3~#PKWKeGnXL$VN z34^VzKf~U=8yOfG8GQi)hy@k|l9Cb(wnTvdlVd?<_h!I Date: Sun, 3 Jan 2021 10:04:45 +0100 Subject: [PATCH 14/55] add package folder icon representing a suite with multiple packages in the tree --- .../sqldev/resources/images/package_folder.png | Bin 0 -> 581 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 sqldev/src/main/resources/org/utplsql/sqldev/resources/images/package_folder.png diff --git a/sqldev/src/main/resources/org/utplsql/sqldev/resources/images/package_folder.png b/sqldev/src/main/resources/org/utplsql/sqldev/resources/images/package_folder.png new file mode 100644 index 0000000000000000000000000000000000000000..10620057806a5cfbc1eb1c050785ae81cd0521fe GIT binary patch literal 581 zcmV-L0=oT)P)sx*Y)Zz<~t}|Ns9#@&Et7qyPW^J@o(opZ)*;{o4J1eLKVdgka%BLi$-i zwlVzw3&;Qe0R{g5VbHeC`uO|Dw0Rzy4D�{{2P5|G-L@q)cOoW!yCb$c8%mAIuv- zEGBEfU=vaaG!Q5W#=qb+(1{H58Y&plW-u7BfHZq#?uXk9HswD=6E4jRe?c_Z2QpwU z;L?0y_acT{r+0x>vT=$s=vg~4C~9g$41|TjKX4eJYCgYfKEsXOFBv3X@-jp;Er%=K zTQ!;ClJPzUB`qzqKt$7gcE=8e)I5mBRe_}pA8$Wl;8&Gl2wUF`7F)M;F#|KVI*@e} z77GYx-#WE}!6&2#t}*or!UeN+BEbep8uA z12?x5gZkt|hMT$b86=R>0TU=*Q9>IHsOy=5X?-&@tO<$fFVqF_s3H-t09|l)NmHUR zEQJvZe!M^M5o|zgH-ia~wgX~*nB??-_4Ak+7(}pX{3FD|aP7vbH<{CaCjq%X8Sz-+ zIz5|v85=8`$lq`88JM{Q8Gil#^(J%b*Cd!DfOt0}5w3LwVh&{2gEYc8009O7-aRr# T#t Date: Sun, 3 Jan 2021 10:06:40 +0100 Subject: [PATCH 15/55] add showSuites to the preference model (tree-view yes/no) --- .../sqldev/model/preference/PreferenceModel.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/sqldev/src/main/java/org/utplsql/sqldev/model/preference/PreferenceModel.java b/sqldev/src/main/java/org/utplsql/sqldev/model/preference/PreferenceModel.java index 33a3d190..5cba1557 100644 --- a/sqldev/src/main/java/org/utplsql/sqldev/model/preference/PreferenceModel.java +++ b/sqldev/src/main/java/org/utplsql/sqldev/model/preference/PreferenceModel.java @@ -53,6 +53,7 @@ public static PreferenceModel getInstance(final PropertyStorage prefs) { private static final String KEY_SHOW_DISABLED_TESTS = "showDisabledTests"; private static final String KEY_SHOW_TEST_DESCRIPTION = "showTestDescription"; private static final String KEY_SYNC_DETAIL_TAB = "syncDetailTab"; + private static final String KEY_SHOW_SUITES = "showSuites"; private static final String KEY_TEST_PACKAGE_PREFIX = "testPackagePrefix"; private static final String KEY_TEST_PACKAGE_SUFFIX = "testPackageSuffix"; private static final String KEY_TEST_UNIT_PREFIX = "testUnitPrefix"; @@ -88,6 +89,7 @@ public String toString() { .append(KEY_SHOW_DISABLED_TESTS, isShowDisabledTests()) .append(KEY_SHOW_TEST_DESCRIPTION, isShowTestDescription()) .append(KEY_SYNC_DETAIL_TAB, isSyncDetailTab()) + .append(KEY_SHOW_SUITES, isShowSuites()) .append(KEY_TEST_PACKAGE_PREFIX, getTestPackagePrefix()) .append(KEY_TEST_PACKAGE_SUFFIX, getTestPackageSuffix()) .append(KEY_TEST_UNIT_PREFIX, getTestUnitPrefix()) @@ -241,6 +243,14 @@ public void setSyncDetailTab(final boolean syncDetailTab) { getHashStructure().putBoolean(KEY_SYNC_DETAIL_TAB, syncDetailTab); } + public boolean isShowSuites() { + return getHashStructure().getBoolean(KEY_SHOW_SUITES, true); + } + + public void setShowSuites(final boolean showSuites) { + getHashStructure().putBoolean(KEY_SHOW_SUITES, showSuites); + } + public String getTestPackagePrefix() { return getHashStructure().getString(KEY_TEST_PACKAGE_PREFIX, "test_"); } From 79505dfc62e9a5f06a578d147458c895ed0e85ac Mon Sep 17 00:00:00 2001 From: Philipp Salvisberg Date: Sun, 3 Jan 2021 10:07:36 +0100 Subject: [PATCH 16/55] add showSuites to the preference UI (tree-view checkbox) --- .../org/utplsql/sqldev/ui/preference/PreferencePanel.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/sqldev/src/main/java/org/utplsql/sqldev/ui/preference/PreferencePanel.java b/sqldev/src/main/java/org/utplsql/sqldev/ui/preference/PreferencePanel.java index 8a0bf227..d56a1176 100644 --- a/sqldev/src/main/java/org/utplsql/sqldev/ui/preference/PreferencePanel.java +++ b/sqldev/src/main/java/org/utplsql/sqldev/ui/preference/PreferencePanel.java @@ -63,6 +63,7 @@ public class PreferencePanel extends DefaultTraversablePanel { private final JCheckBox showDisabledTestsCheckBox = new JCheckBox(); private final JCheckBox showTestDescriptionCheckBox = new JCheckBox(); private final JCheckBox syncDetailTabCheckBox = new JCheckBox(); + private final JCheckBox showSuitesCheckBox = new JCheckBox(); private final JPanel generateTestPanel = new JPanel(); private final JTextField testPackagePrefixTextField = new JTextField(); private final JTextField testPackageSuffixTextField = new JTextField(); @@ -135,6 +136,8 @@ private void layoutControls() { .component(showTestDescriptionCheckBox)); rrTab.add(runTab.field().label().withText(UtplsqlResources.getString("PREF_SYNC_DETAIL_TAB_LABEL")) .component(syncDetailTabCheckBox)); + rrTab.add(runTab.field().label().withText(UtplsqlResources.getString("PREF_SHOW_SUITES_LABEL")) + .component(showSuitesCheckBox)); rrTab.addVerticalSpring(); // generate test group @@ -376,6 +379,7 @@ public void onEntry(final TraversableContext traversableContext) { showDisabledTestsCheckBox.setSelected(info.isShowDisabledTests()); showTestDescriptionCheckBox.setSelected(info.isShowTestDescription()); syncDetailTabCheckBox.setSelected(info.isSyncDetailTab()); + showSuitesCheckBox.setSelected(info.isShowSuites()); testPackagePrefixTextField.setText(info.getTestPackagePrefix()); testPackageSuffixTextField.setText(info.getTestPackageSuffix()); testUnitPrefixTextField.setText(info.getTestUnitPrefix()); @@ -414,6 +418,7 @@ public void onExit(final TraversableContext traversableContext) throws Traversal info.setShowDisabledTests(showDisabledTestsCheckBox.isSelected()); info.setShowTestDescription(showTestDescriptionCheckBox.isSelected()); info.setSyncDetailTab(syncDetailTabCheckBox.isSelected()); + info.setShowSuites(showSuitesCheckBox.isSelected()); info.setTestPackagePrefix(testPackagePrefixTextField.getText()); info.setTestPackageSuffix(testPackageSuffixTextField.getText()); info.setTestUnitPrefix(testUnitPrefixTextField.getText()); From ad912baa9ec77eae420b52f7d5c363dec0944be7 Mon Sep 17 00:00:00 2001 From: Philipp Salvisberg Date: Sun, 3 Jan 2021 10:08:58 +0100 Subject: [PATCH 17/55] extend test for preference model (showSuites) --- .../org/utplsql/sqldev/test/preference/PreferenceModelTest.java | 1 + 1 file changed, 1 insertion(+) diff --git a/sqldev/src/test/java/org/utplsql/sqldev/test/preference/PreferenceModelTest.java b/sqldev/src/test/java/org/utplsql/sqldev/test/preference/PreferenceModelTest.java index 904681b6..1ed23f7e 100644 --- a/sqldev/src/test/java/org/utplsql/sqldev/test/preference/PreferenceModelTest.java +++ b/sqldev/src/test/java/org/utplsql/sqldev/test/preference/PreferenceModelTest.java @@ -41,6 +41,7 @@ public void defaultValues() { Assert.assertTrue(model.isShowDisabledTests()); Assert.assertFalse(model.isShowTestDescription()); Assert.assertTrue(model.isSyncDetailTab()); + Assert.assertTrue(model.isShowSuites()); Assert.assertEquals("test_", model.getTestPackagePrefix()); Assert.assertEquals("", model.getTestPackageSuffix()); Assert.assertEquals("", model.getTestUnitPrefix()); From a972c5012e4328a6ff5c3acf02f4b9d424f23c2b Mon Sep 17 00:00:00 2001 From: Philipp Salvisberg Date: Sun, 3 Jan 2021 10:14:19 +0100 Subject: [PATCH 18/55] move common fields and methods from Suite/Test to Item --- .../org/utplsql/sqldev/model/runner/Item.java | 81 +++++++++++++++++++ .../utplsql/sqldev/model/runner/Suite.java | 26 ++---- .../org/utplsql/sqldev/model/runner/Test.java | 68 ++-------------- 3 files changed, 93 insertions(+), 82 deletions(-) diff --git a/sqldev/src/main/java/org/utplsql/sqldev/model/runner/Item.java b/sqldev/src/main/java/org/utplsql/sqldev/model/runner/Item.java index 5f578ca2..76b859c2 100644 --- a/sqldev/src/main/java/org/utplsql/sqldev/model/runner/Item.java +++ b/sqldev/src/main/java/org/utplsql/sqldev/model/runner/Item.java @@ -15,11 +15,16 @@ */ package org.utplsql.sqldev.model.runner; +import javax.swing.Icon; + import org.springframework.core.style.ToStringCreator; import org.utplsql.sqldev.model.JsonToStringStyler; +import org.utplsql.sqldev.resources.UtplsqlResources; public abstract class Item { private String id; + private String name; + private String description; private String startTime; private String endTime; private Double executionTime; @@ -36,6 +41,8 @@ public Item() { public String toString() { return new ToStringCreator(this, JsonToStringStyler.getInstance()) .append("id", id) + .append("name", name) + .append("description", description) .append("startTime", startTime) .append("endTime", endTime) .append("executionTime", executionTime) @@ -43,8 +50,66 @@ public String toString() { .append("errorStack", errorStack) .append("serverOutput", serverOutput) .append("warnings", warnings) + .append("parentId", getParentId()) + .append("statusIcon", getStatusIcon()) + .append("warningIcon", getWarningIcon()) + .append("infoIcon", getInfoIcon()) .toString(); } + + public String getParentId() { + // Works only if id (suitepath) is build based on names delimited with a period + // that's expected for real utPLSQL runs, but may fail for artificial runs. + // Returning null is valid, it means this item has no parent and as a + // consequence it will be shown on the top level in the runner. + // A key is required to identify an item since suites can be delivered + // multiple times, e.g. when running a chosen list of tests. This way + // the tests will shown at the right position in the tree, regardless of the call + // parameters. + if (name != null && id != null && name.length() < id.length() && id.endsWith(name)) { + return id.substring(0, id.length() - name.length() - 1); + } + return null; + } + + public Icon getStatusIcon() { + Icon icon = null; + if (getStartTime() != null && getEndTime() == null) { + icon = UtplsqlResources.getIcon("PROGRESS_ICON"); + } else { + if (getCounter() != null) { + // Escalation logic as for the color of the progress bar. + // A suite with errors or failed tests cannot be considered successful, + // even if some tests completed successfully. + if (getCounter().getError() > 0) { + icon = UtplsqlResources.getIcon("ERROR_ICON"); + } else if (getCounter().getFailure() > 0) { + icon = UtplsqlResources.getIcon("FAILURE_ICON"); + } else if (getCounter().getSuccess() > 0) { + icon = UtplsqlResources.getIcon("SUCCESS_ICON"); + } else if (getCounter().getDisabled() > 0) { + icon = UtplsqlResources.getIcon("DISABLED_ICON"); + } + } + } + return icon; + } + + public Icon getWarningIcon() { + Icon icon = null; + if (getCounter() != null && getCounter().getWarning() > 0) { + icon = UtplsqlResources.getIcon("WARNING_ICON"); + } + return icon; + } + + public Icon getInfoIcon() { + Icon icon = null; + if (getServerOutput() != null && getServerOutput().length() > 0) { + icon = UtplsqlResources.getIcon("INFO_ICON"); + } + return icon; + } public String getId() { return id; @@ -54,6 +119,22 @@ public void setId(final String id) { this.id = id; } + public String getName() { + return name; + } + + public void setName(final String name) { + this.name = name; + } + + public String getDescription() { + return description; + } + + public void setDescription(final String description) { + this.description = description; + } + public String getStartTime() { return startTime; } diff --git a/sqldev/src/main/java/org/utplsql/sqldev/model/runner/Suite.java b/sqldev/src/main/java/org/utplsql/sqldev/model/runner/Suite.java index 1b9b1c1b..f9f036db 100644 --- a/sqldev/src/main/java/org/utplsql/sqldev/model/runner/Suite.java +++ b/sqldev/src/main/java/org/utplsql/sqldev/model/runner/Suite.java @@ -22,8 +22,6 @@ import org.utplsql.sqldev.model.JsonToStringStyler; public class Suite extends Item { - private String name; - private String description; private List items; public Suite() { @@ -35,6 +33,8 @@ public String toString() { return new ToStringCreator(this, JsonToStringStyler.getInstance()) // ancestor .append("id", getId()) + .append("name", getName()) + .append("description", getDescription()) .append("startTime", getStartTime()) .append("endTime", getEndTime()) .append("executionTime", getExecutionTime()) @@ -42,29 +42,15 @@ public String toString() { .append("errorStack", getErrorStack()) .append("serverOutput", getServerOutput()) .append("warnings", getWarnings()) + .append("parentId", getParentId()) + .append("statusIcon", getStatusIcon()) + .append("warningIcon", getWarningIcon()) + .append("infoIcon", getInfoIcon()) // local - .append("name", name) - .append("description", description) .append("items", items) .toString(); } - public String getName() { - return name; - } - - public void setName(final String name) { - this.name = name; - } - - public String getDescription() { - return description; - } - - public void setDescription(final String description) { - this.description = description; - } - public List getItems() { return items; } diff --git a/sqldev/src/main/java/org/utplsql/sqldev/model/runner/Test.java b/sqldev/src/main/java/org/utplsql/sqldev/model/runner/Test.java index 79e8a3fe..0df46eba 100644 --- a/sqldev/src/main/java/org/utplsql/sqldev/model/runner/Test.java +++ b/sqldev/src/main/java/org/utplsql/sqldev/model/runner/Test.java @@ -17,11 +17,8 @@ import java.util.List; -import javax.swing.Icon; - import org.springframework.core.style.ToStringCreator; import org.utplsql.sqldev.model.JsonToStringStyler; -import org.utplsql.sqldev.resources.UtplsqlResources; public class Test extends Item { private String executableType; @@ -29,8 +26,6 @@ public class Test extends Item { private String objectName; private String procedureName; private Boolean disabled; - private String name; - private String description; private Integer testNumber; private List failedExpectations; @@ -39,6 +34,8 @@ public String toString() { return new ToStringCreator(this, JsonToStringStyler.getInstance()) // ancestor .append("id", getId()) + .append("name", getName()) + .append("description", getDescription()) .append("startTime", getStartTime()) .append("endTime", getEndTime()) .append("executionTime", getExecutionTime()) @@ -46,58 +43,21 @@ public String toString() { .append("errorStack", getErrorStack()) .append("serverOutput", getServerOutput()) .append("warnings", getWarnings()) + .append("parentId", getParentId()) + .append("statusIcon", getStatusIcon()) + .append("warningIcon", getWarningIcon()) + .append("infoIcon", getInfoIcon()) // local .append("executableType", executableType) .append("ownerName", ownerName) .append("objectName", objectName) .append("procedureName", procedureName) .append("disabled", disabled) - .append("name", name) - .append("description", description) .append("testNumber", testNumber) .append("failedExpectations", failedExpectations) - .append("statusIcon", getStatusIcon()) - .append("warningIcon", getWarningIcon()) - .append("infoIcon", getInfoIcon()) .toString(); } - public Icon getStatusIcon() { - Icon icon = null; - if (getStartTime() != null && getEndTime() == null) { - icon = UtplsqlResources.getIcon("PROGRESS_ICON"); - } else { - if (getCounter() != null) { - if (getCounter().getSuccess() > 0) { - icon = UtplsqlResources.getIcon("SUCCESS_ICON"); - } else if (getCounter().getError() > 0) { - icon = UtplsqlResources.getIcon("ERROR_ICON"); - } else if (getCounter().getFailure() > 0) { - icon = UtplsqlResources.getIcon("FAILURE_ICON"); - } else if (getCounter().getDisabled() > 0) { - icon = UtplsqlResources.getIcon("DISABLED_ICON"); - } - } - } - return icon; - } - - public Icon getWarningIcon() { - Icon icon = null; - if (getCounter() != null && getCounter().getWarning() > 0) { - icon = UtplsqlResources.getIcon("WARNING_ICON"); - } - return icon; - } - - public Icon getInfoIcon() { - Icon icon = null; - if (getServerOutput() != null && getServerOutput().length() > 0) { - icon = UtplsqlResources.getIcon("INFO_ICON"); - } - return icon; - } - public String getExecutableType() { return executableType; } @@ -138,22 +98,6 @@ public void setDisabled(final Boolean disabled) { this.disabled = disabled; } - public String getName() { - return name; - } - - public void setName(final String name) { - this.name = name; - } - - public String getDescription() { - return description; - } - - public void setDescription(final String description) { - this.description = description; - } - public Integer getTestNumber() { return testNumber; } From e803e46c369834a46a53c0caba6d394575ff133a Mon Sep 17 00:00:00 2001 From: Philipp Salvisberg Date: Sun, 3 Jan 2021 10:18:13 +0100 Subject: [PATCH 19/55] add ItemNode class for suites/tests in a tree --- .../utplsql/sqldev/model/runner/ItemNode.java | 157 ++++++++++++++++++ 1 file changed, 157 insertions(+) create mode 100644 sqldev/src/main/java/org/utplsql/sqldev/model/runner/ItemNode.java diff --git a/sqldev/src/main/java/org/utplsql/sqldev/model/runner/ItemNode.java b/sqldev/src/main/java/org/utplsql/sqldev/model/runner/ItemNode.java new file mode 100644 index 00000000..51196e54 --- /dev/null +++ b/sqldev/src/main/java/org/utplsql/sqldev/model/runner/ItemNode.java @@ -0,0 +1,157 @@ +/* + * Copyright 2021 Philipp Salvisberg + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.utplsql.sqldev.model.runner; + +import java.util.Enumeration; +import java.util.HashSet; +import java.util.Set; + +import javax.swing.Icon; +import javax.swing.tree.DefaultMutableTreeNode; + +import org.utplsql.sqldev.resources.UtplsqlResources; + +public class ItemNode extends DefaultMutableTreeNode { + + private static final long serialVersionUID = -4053143673822661743L; + + public ItemNode(Item userObject) { + super(userObject, userObject instanceof Suite); + } + + public String getId() { + return ((Item) getUserObject()).getId(); + } + + public String getName() { + return ((Item) getUserObject()).getName(); + } + + public String getDescription() { + return ((Item) getUserObject()).getDescription(); + } + + public Double getExecutionTime() { + return ((Item) getUserObject()).getExecutionTime(); + } + + public Set getTestPackages() { + HashSet testPackages = new HashSet<>(); + Enumeration orderedNodes = preorderEnumeration(); + while (orderedNodes.hasMoreElements()) { + ItemNode node = (ItemNode) orderedNodes.nextElement(); + if (node.getUserObject() instanceof Test) { + Test test = (Test) node.getUserObject(); + testPackages.add(test.getOwnerName() + "." + test.getObjectName()); + } + } + return testPackages; + } + + public Set getOwners() { + HashSet owners = new HashSet<>(); + Enumeration children = children(); + while (children.hasMoreElements()) { + ItemNode child = (ItemNode) children.nextElement(); + owners.add(child.getOwnerName()); + } + return owners; + } + + public String getOwnerName() { + String ownerName = null; + Enumeration orderedNodes = preorderEnumeration(); + while (orderedNodes.hasMoreElements()) { + ItemNode node = (ItemNode) orderedNodes.nextElement(); + if (node.getUserObject() instanceof Test) { + Test test = (Test) node.getUserObject(); + if (ownerName == null) { + ownerName = test.getOwnerName(); + } else if (!ownerName.equals(test.getOwnerName())) { + ownerName = "***"; + break; + } + } + } + return ownerName; + } + + public String getPackageName() { + String packageName = null; + Enumeration orderedNodes = preorderEnumeration(); + while (orderedNodes.hasMoreElements()) { + ItemNode node = (ItemNode) orderedNodes.nextElement(); + if (node.getUserObject() instanceof Test) { + Test test = (Test) node.getUserObject(); + if (packageName == null) { + packageName = test.getObjectName(); + } else if (!packageName.equals(test.getObjectName())) { + packageName = "***"; + break; + } + } + } + return packageName; + } + + public String getProcedureName() { + String procedureName = null; + Enumeration orderedNodes = preorderEnumeration(); + while (orderedNodes.hasMoreElements()) { + ItemNode node = (ItemNode) orderedNodes.nextElement(); + if (node.getUserObject() instanceof Test) { + Test test = (Test) node.getUserObject(); + if (procedureName == null) { + procedureName = test.getProcedureName(); + } else if (!procedureName.equals(test.getProcedureName())) { + procedureName = "***"; + break; + } + } + } + return procedureName; + } + + public Icon getStatusIcon() { + Item item = (Item) getUserObject(); + Icon icon = item.getStatusIcon(); + if (icon == null) { + if (item.getId() != null) { + if (item instanceof Test) { + icon = UtplsqlResources.getIcon("PROCEDURE_ICON"); + } else if (item.getId().contains("context_#")) { + icon = UtplsqlResources.getIcon("PROCEDURE_FOLDER_ICON"); + } else { + if (item.getName().equals(getPackageName())) { + icon = UtplsqlResources.getIcon("PACKAGE_ICON"); + } else { + icon = UtplsqlResources.getIcon("PACKAGE_FOLDER_ICON"); + } + } + } + } + return icon; + } + + public Icon getWarningIcon() { + return ((Item) getUserObject()).getWarningIcon(); + } + + public Icon getInfoIcon() { + return ((Item) getUserObject()).getInfoIcon(); + } + +} From 30a2c24b853d18eabd7afd9fa2b765b06a4d2531 Mon Sep 17 00:00:00 2001 From: Philipp Salvisberg Date: Sun, 3 Jan 2021 10:25:47 +0100 Subject: [PATCH 20/55] add items and itemNodes to Run --- .../org/utplsql/sqldev/model/runner/Run.java | 63 +++++++++++++++++-- 1 file changed, 58 insertions(+), 5 deletions(-) diff --git a/sqldev/src/main/java/org/utplsql/sqldev/model/runner/Run.java b/sqldev/src/main/java/org/utplsql/sqldev/model/runner/Run.java index 94d7c172..951a252f 100644 --- a/sqldev/src/main/java/org/utplsql/sqldev/model/runner/Run.java +++ b/sqldev/src/main/java/org/utplsql/sqldev/model/runner/Run.java @@ -17,6 +17,7 @@ import java.sql.Connection; import java.util.LinkedHashMap; +import java.util.LinkedHashSet; import java.util.List; import org.springframework.core.style.ToStringCreator; @@ -37,7 +38,9 @@ public class Run { private Integer infoCount; private String errorStack; private String serverOutput; + private final LinkedHashSet items; private LinkedHashMap tests; + private LinkedHashMap itemNodes; private String status; private Long start; // to abort connections, producerConn is handled by UtplsqlRunner @@ -60,6 +63,7 @@ public String toString() { .append("errorStack", errorStack) .append("serverOutput", serverOutput) .append("tests", tests) + .append("rootNode", itemNodes.get(reporterId)) .append("status", status) .append("start", start) .append("endTime", endTime) @@ -72,7 +76,10 @@ public Run(final String reporterId, final String connectionName, final List(); tests = new LinkedHashMap<>(); + itemNodes = new LinkedHashMap<>(); + createRootNode(); } public void setStartTime(final String startTime) { @@ -86,17 +93,54 @@ public String getName() { return time + " (" + conn + ")"; } + /** + * Is called after consuming the pre-run event to populate all items of a run. + * It's expected to be called only once. + * + * @param items items of a run, to be shown in the runner right after starting a run. + */ public void put(final List items) { + populateItems(items); + populateItemNodes(); + populateItemNodeChildren(); + } + + private void createRootNode() { + // Create pseudo root node as suite. + // The TreeTableModel requires a single root node, but it will not be displayed. + final Suite rootSuite = new Suite(); + rootSuite.setId(getReporterId()); + rootSuite.setName(getReporterId()); + ItemNode rootNode = new ItemNode(rootSuite); + itemNodes.put(rootSuite.getId(), rootNode); + } + + private void populateItems(List items) { for (final Item item : items) { - if (item instanceof Test) { - tests.put(item.getId(), (Test) item); - } + this.items.add(item); if (item instanceof Suite) { - put(((Suite) item).getItems()); + populateItems(((Suite) item).getItems()); + } else if (item instanceof Test) { + this.tests.put(item.getId(), (Test) item); } } } - + + private void populateItemNodes() { + for (final Item item : items) { + itemNodes.put(item.getId(), new ItemNode(item)); + } + } + + private void populateItemNodeChildren() { + for (Item item : items) { + String parentId = item.getParentId(); + ItemNode node = itemNodes.get(item.getId()); + ItemNode parent = itemNodes.get(parentId == null ? reporterId : parentId); + parent.add(node); + } + } + public Test getTest(final String id) { return tests.get(id); } @@ -222,6 +266,14 @@ public LinkedHashMap getTests() { public void setTests(final LinkedHashMap tests) { this.tests = tests; } + + public LinkedHashMap getItemNodes() { + return itemNodes; + } + + public void setItemNodes(LinkedHashMap itemNodes) { + this.itemNodes = itemNodes; + } public String getStatus() { return status; @@ -246,4 +298,5 @@ public Connection getConsumerConn() { public void setConsumerConn(Connection consumerConn) { this.consumerConn = consumerConn; } + } From 72096ba6a890b618b95e2eb85be470c7ecc6ea75 Mon Sep 17 00:00:00 2001 From: Philipp Salvisberg Date: Sun, 3 Jan 2021 10:27:39 +0100 Subject: [PATCH 21/55] add new procedure and package icons to resource bundle --- .../org/utplsql/sqldev/resources/UtplsqlResources.properties | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/sqldev/src/main/resources/org/utplsql/sqldev/resources/UtplsqlResources.properties b/sqldev/src/main/resources/org/utplsql/sqldev/resources/UtplsqlResources.properties index ce1045cb..3403af6f 100644 --- a/sqldev/src/main/resources/org/utplsql/sqldev/resources/UtplsqlResources.properties +++ b/sqldev/src/main/resources/org/utplsql/sqldev/resources/UtplsqlResources.properties @@ -24,6 +24,11 @@ STOP_ICON=/org/utplsql/sqldev/resources/images/stop.png CLEAR_ICON=/org/utplsql/sqldev/resources/images/clear.png CHECKMARK_ICON=/org/utplsql/sqldev/resources/images/checkmark.png STATUS_ICON=/org/utplsql/sqldev/resources/images/status.png +PROCEDURE_ICON=/org/utplsql/sqldev/resources/images/procedure.png +PROCEDURE_FOLDER_ICON=/org/utplsql/sqldev/resources/images/procedure_folder.png +PACKAGE_ICON=/org/utplsql/sqldev/resources/images/package.png +PACKAGE_FOLDER_ICON=/org/utplsql/sqldev/resources/images/package_folder.png + # progress.gif - the animated version - does not work PROGRESS_ICON=/org/utplsql/sqldev/resources/images/progress.png CODE_COVERAGE_ICON=/org/utplsql/sqldev/resources/images/coverage.png From 3c95d415bf6cabbf398a16e5bab31bbe8f49412f Mon Sep 17 00:00:00 2001 From: Philipp Salvisberg Date: Sun, 3 Jan 2021 10:30:16 +0100 Subject: [PATCH 22/55] change label of test tab to Test/Suite in resource bundle --- .../org/utplsql/sqldev/resources/UtplsqlResources.properties | 2 +- .../org/utplsql/sqldev/resources/UtplsqlResources_de.properties | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/sqldev/src/main/resources/org/utplsql/sqldev/resources/UtplsqlResources.properties b/sqldev/src/main/resources/org/utplsql/sqldev/resources/UtplsqlResources.properties index 3403af6f..f16c5f02 100644 --- a/sqldev/src/main/resources/org/utplsql/sqldev/resources/UtplsqlResources.properties +++ b/sqldev/src/main/resources/org/utplsql/sqldev/resources/UtplsqlResources.properties @@ -117,7 +117,7 @@ RUNNER_PROCEDURE_LABEL=Procedure RUNNER_DESCRIPTION_LABEL=Description RUNNER_START_LABEL=Start RUNNER_ASSERT_DESCRIPTION_COLUMN=Assert description (failed line) -RUNNER_TEST_TAB_LABEL=Test +RUNNER_TEST_TAB_LABEL=Test/Suite RUNNER_FAILURES_TAB_LABEL=Failures RUNNER_ERRORS_TAB_LABEL=Errors RUNNER_WARNINGS_TAB_LABEL=Warnings diff --git a/sqldev/src/main/resources/org/utplsql/sqldev/resources/UtplsqlResources_de.properties b/sqldev/src/main/resources/org/utplsql/sqldev/resources/UtplsqlResources_de.properties index 2a15b1c7..fc6c3630 100644 --- a/sqldev/src/main/resources/org/utplsql/sqldev/resources/UtplsqlResources_de.properties +++ b/sqldev/src/main/resources/org/utplsql/sqldev/resources/UtplsqlResources_de.properties @@ -85,7 +85,7 @@ RUNNER_PROCEDURE_LABEL=Prozedur RUNNER_DESCRIPTION_LABEL=Beschreibung RUNNER_START_LABEL=Start RUNNER_ASSERT_DESCRIPTION_COLUMN=Assert Beschreibung (gescheiterte Zeile) -RUNNER_TEST_TAB_LABEL=Test +RUNNER_TEST_TAB_LABEL=Test/Suite RUNNER_FAILURES_TAB_LABEL=Misserfolge RUNNER_ERRORS_TAB_LABEL=Fehler RUNNER_WARNINGS_TAB_LABEL=Warnungen From 50275bc4484ca3a1a1b4dfebef8f364daed27c5b Mon Sep 17 00:00:00 2001 From: Philipp Salvisberg Date: Sun, 3 Jan 2021 10:31:18 +0100 Subject: [PATCH 23/55] add label and button tooltip for show suites in resource bundle --- .../org/utplsql/sqldev/resources/UtplsqlResources.properties | 2 ++ .../org/utplsql/sqldev/resources/UtplsqlResources_de.properties | 2 ++ 2 files changed, 4 insertions(+) diff --git a/sqldev/src/main/resources/org/utplsql/sqldev/resources/UtplsqlResources.properties b/sqldev/src/main/resources/org/utplsql/sqldev/resources/UtplsqlResources.properties index f16c5f02..680cabc3 100644 --- a/sqldev/src/main/resources/org/utplsql/sqldev/resources/UtplsqlResources.properties +++ b/sqldev/src/main/resources/org/utplsql/sqldev/resources/UtplsqlResources.properties @@ -56,6 +56,7 @@ PREF_SHOW_SUCCESSFUL_TESTS_LABEL=Show successful tests? PREF_SHOW_DISABLED_TESTS_LABEL=Show disabled tests? PREF_SHOW_TEST_DESCRIPTION_LABEL=Show description (if present)? PREF_SYNC_DETAIL_TAB_LABEL=Synchronize detail tab based on test status? +PREF_SHOW_SUITES_LABEL=Show suites (hierarchical view of tests)? PREF_TEST_PACKAGE_PREFIX_LABEL=Test package prefix PREF_TEST_PACKAGE_SUFFIX_LABEL=Test package suffix PREF_TEST_UNIT_PREFIX_LABEL=Test unit prefix @@ -96,6 +97,7 @@ RUNNER_STOP_TOOLTIP=Stops the consumer session of the current test run immediate RUNNER_STOP_TEST_MESSAGE=Test disabled due to abortion of the test run. RUNNER_STOP_RUN_MESSAGE=Test run aborted. RUNNER_MISSING_TEST_RESULT_MESSAGE=Missing test results. +RUNNER_SHOW_SUITES_BUTTON=Switch between hierarchical view (shows suites and tests) and tabular view (shows tests only). RUNNER_CLEAR_BUTTON=Clear run history RUNNER_TESTS_LABEL=Tests RUNNER_FAILURES_LABEL=Failures diff --git a/sqldev/src/main/resources/org/utplsql/sqldev/resources/UtplsqlResources_de.properties b/sqldev/src/main/resources/org/utplsql/sqldev/resources/UtplsqlResources_de.properties index fc6c3630..8ba5566e 100644 --- a/sqldev/src/main/resources/org/utplsql/sqldev/resources/UtplsqlResources_de.properties +++ b/sqldev/src/main/resources/org/utplsql/sqldev/resources/UtplsqlResources_de.properties @@ -24,6 +24,7 @@ PREF_SHOW_SUCCESSFUL_TESTS_LABEL=Erfolgreiche Tests anzeigen? PREF_SHOW_DISABLED_TESTS_LABEL=Deaktivierte Tests anzeigen? PREF_SHOW_TEST_DESCRIPTION_LABEL=Beschreibung anzeigen (falls vorhanden)? PREF_SYNC_DETAIL_TAB_LABEL=Detailansicht basierend auf dem Teststatus synchronisieren? +PREF_SHOW_SUITES_LABEL=Suiten anzeigen (hierarchische Ansicht der Tests)? PREF_TEST_PACKAGE_PREFIX_LABEL=Test Package Pr\u00e4fix PREF_TEST_PACKAGE_SUFFIX_LABEL=Test Package Suffix PREF_TEST_UNIT_PREFIX_LABEL=Test Unit Pr\u00e4fix @@ -64,6 +65,7 @@ RUNNER_STOP_TOOLTIP=Stoppt die Verbrauchersitzung des aktuellen Testlaufs, die J RUNNER_STOP_TEST_MESSAGE=Test wurde aufgrund eines Abbruchs des Testlaufs deaktiviert. RUNNER_STOP_RUN_MESSAGE=Testlauf abgebrochen. RUNNER_MISSING_TEST_RESULT_MESSAGE=Testergebnis fehlt. +RUNNER_SHOW_SUITES_BUTTON=Zwischen hierarchischer Ansicht (zeigt Suites und Tests) und tabellarischer Ansicht (zeigt nur Tests) wechseln. RUNNER_CLEAR_BUTTON=Run History l\u00f6schen RUNNER_TESTS_LABEL=Tests RUNNER_FAILURES_LABEL=Fehlschl\u00e4ge From 3faa83999b3d231014ca13252a0d7d96f9a1a6ab Mon Sep 17 00:00:00 2001 From: Philipp Salvisberg Date: Sun, 3 Jan 2021 10:33:26 +0100 Subject: [PATCH 24/55] fix wrong Run initialization in test setup --- .../org/utplsql/sqldev/test/runner/UtplsqlRunnerPanelTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sqldev/src/test/java/org/utplsql/sqldev/test/runner/UtplsqlRunnerPanelTest.java b/sqldev/src/test/java/org/utplsql/sqldev/test/runner/UtplsqlRunnerPanelTest.java index b4da9385..4100b120 100644 --- a/sqldev/src/test/java/org/utplsql/sqldev/test/runner/UtplsqlRunnerPanelTest.java +++ b/sqldev/src/test/java/org/utplsql/sqldev/test/runner/UtplsqlRunnerPanelTest.java @@ -38,7 +38,7 @@ public class UtplsqlRunnerPanelTest { @Before public void setup() { final String reporterId = UUID.randomUUID().toString().replace("-", ""); - run = new Run(null, reporterId, Collections.emptyList()); + run = new Run(reporterId, null, Collections.emptyList()); run.setStartTime("2019-06-09T13:42:42.123456"); run.getCounter().setDisabled(0); run.getCounter().setSuccess(0); From c1d5f304876c548c1f1a7f3cfcd68dcc2d187ad5 Mon Sep 17 00:00:00 2001 From: Philipp Salvisberg Date: Sun, 3 Jan 2021 10:35:27 +0100 Subject: [PATCH 25/55] add runTestHidingSuccesfulRuns test (tree-view is the new default) --- .../sqldev/test/runner/UtplsqlRunnerTest.java | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/sqldev/src/test/java/org/utplsql/sqldev/test/runner/UtplsqlRunnerTest.java b/sqldev/src/test/java/org/utplsql/sqldev/test/runner/UtplsqlRunnerTest.java index e2a24001..d64d1302 100644 --- a/sqldev/src/test/java/org/utplsql/sqldev/test/runner/UtplsqlRunnerTest.java +++ b/sqldev/src/test/java/org/utplsql/sqldev/test/runner/UtplsqlRunnerTest.java @@ -25,11 +25,35 @@ import org.springframework.jdbc.datasource.SingleConnectionDataSource; import org.utplsql.sqldev.model.DatabaseTools; import org.utplsql.sqldev.model.SystemTools; +import org.utplsql.sqldev.model.preference.PreferenceModel; import org.utplsql.sqldev.runner.UtplsqlRunner; import org.utplsql.sqldev.test.AbstractJdbcTest; import org.utplsql.sqldev.test.coverage.CodeCoverageReporterTest; +import oracle.ide.config.Preferences; + public class UtplsqlRunnerTest extends AbstractJdbcTest { + PreferenceModel preferences; + + @Before + public void setupDefaultPreferences() { + try { + // first call will fail, second call will succeed (using preferences from user.home) + preferences = PreferenceModel.getInstance(Preferences.getPreferences()); + } catch (NoClassDefFoundError e) { + // running outside of SQL Developer, the following log message is shown: + // WARNING: No extension registry present. Loading preferences from user.home + preferences = PreferenceModel.getInstance(null); + // the second call will call will succeed and use preferences from user.home + // this ensures that the test and the runner use the same preferences + preferences = PreferenceModel.getInstance(Preferences.getPreferences()); + } finally { + // set defaults manually, since all tests are using the same preference store + preferences.setShowSuccessfulTests(true); + preferences.setShowWarningIndicator(false); + preferences.setShowInfoIndicator(false); + } + } @Before public void setup() { @@ -158,6 +182,22 @@ public void runTestsWithMaxTime() { runner.dispose(); } + @Test + public void runTestsHidingSuccesfulRuns() { + preferences.setShowSuccessfulTests(false); + preferences.setShowWarningIndicator(true); + preferences.setShowInfoIndicator(true); + UtplsqlRunner runner = new UtplsqlRunner(Collections.singletonList(":a"), getNewConnection(), getNewConnection()); + runner.runTestAsync(); + + SystemTools.waitForThread(runner.getProducerThread(), 200000); + SystemTools.waitForThread(runner.getConsumerThread(), 200000); + SystemTools.sleep(4 * 1000); + Assert.assertNotNull(runner); + runner.dispose(); + } + + @Test public void runTestsWithCodeCoverage() { UtplsqlRunner runner = new UtplsqlRunner(Collections.singletonList(":test_f"), null, null, null, getNewConnection(), getNewConnection()); From 70da38a75c99806d175c837ddd83488c1681f374 Mon Sep 17 00:00:00 2001 From: Philipp Salvisberg Date: Sun, 3 Jan 2021 10:46:23 +0100 Subject: [PATCH 26/55] add getSysdate() to StringTools (from UtplsqlRunner) --- .../java/org/utplsql/sqldev/model/StringTools.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/sqldev/src/main/java/org/utplsql/sqldev/model/StringTools.java b/sqldev/src/main/java/org/utplsql/sqldev/model/StringTools.java index 23fc20f9..2252b3b7 100644 --- a/sqldev/src/main/java/org/utplsql/sqldev/model/StringTools.java +++ b/sqldev/src/main/java/org/utplsql/sqldev/model/StringTools.java @@ -15,7 +15,9 @@ */ package org.utplsql.sqldev.model; +import java.text.SimpleDateFormat; import java.util.Collections; +import java.util.Date; import java.util.List; public class StringTools { @@ -74,4 +76,15 @@ public static String formatDateTime(final String dateTime) { } } } + + public static String millisToDateTimeString(long millis) { + final Date dateTime = new Date(millis); + final SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'000'"); + return df.format(dateTime); + } + + public static String getSysdate() { + return millisToDateTimeString(System.currentTimeMillis()); + } + } From 0b8b7291285236459fc4d6d608551801f71f56d9 Mon Sep 17 00:00:00 2001 From: Philipp Salvisberg Date: Sun, 3 Jan 2021 10:46:37 +0100 Subject: [PATCH 27/55] remove blank lines --- .../src/main/java/org/utplsql/sqldev/model/StringTools.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sqldev/src/main/java/org/utplsql/sqldev/model/StringTools.java b/sqldev/src/main/java/org/utplsql/sqldev/model/StringTools.java index 2252b3b7..15d446be 100644 --- a/sqldev/src/main/java/org/utplsql/sqldev/model/StringTools.java +++ b/sqldev/src/main/java/org/utplsql/sqldev/model/StringTools.java @@ -40,11 +40,11 @@ public static String getCSV(List list, String indent) { sb.append("\n"); return sb.toString(); } - + public static String getCSV(List list, int indentSpaces) { return getCSV(list, repeat(" ", indentSpaces)); } - + public static String getSimpleCSV(List list) { final StringBuilder sb = new StringBuilder(); for (final String item : list) { From 1749af8147c7fe25c0fa685abd422fff7b06cd04 Mon Sep 17 00:00:00 2001 From: Philipp Salvisberg Date: Sun, 3 Jan 2021 10:49:19 +0100 Subject: [PATCH 28/55] add dateTimeStringToMillis to StringTools --- .../org/utplsql/sqldev/model/StringTools.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/sqldev/src/main/java/org/utplsql/sqldev/model/StringTools.java b/sqldev/src/main/java/org/utplsql/sqldev/model/StringTools.java index 15d446be..07536740 100644 --- a/sqldev/src/main/java/org/utplsql/sqldev/model/StringTools.java +++ b/sqldev/src/main/java/org/utplsql/sqldev/model/StringTools.java @@ -15,11 +15,14 @@ */ package org.utplsql.sqldev.model; +import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Collections; import java.util.Date; import java.util.List; +import org.utplsql.sqldev.exception.GenericRuntimeException; + public class StringTools { // do not instantiate this class private StringTools() { @@ -87,4 +90,17 @@ public static String getSysdate() { return millisToDateTimeString(System.currentTimeMillis()); } + public static long dateTimeStringToMillis(final String dateTime) { + // handle milliseconds separately since they get lost (rounded) when converted to date + final SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); + Date date; + try { + date = df.parse(dateTime.substring(0, 20)); + } catch (ParseException e) { + throw new GenericRuntimeException("cannot parse datetime string " + dateTime + ".", e); + } + long millis = Long.parseLong(dateTime.substring(20, 23)); + return date.getTime() + millis; + } + } From a87d314fa7643ed7741f8a06c2d3774d3aa7c8e4 Mon Sep 17 00:00:00 2001 From: Philipp Salvisberg Date: Sun, 3 Jan 2021 10:49:40 +0100 Subject: [PATCH 29/55] add elapsedTime to StringTools --- .../src/main/java/org/utplsql/sqldev/model/StringTools.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/sqldev/src/main/java/org/utplsql/sqldev/model/StringTools.java b/sqldev/src/main/java/org/utplsql/sqldev/model/StringTools.java index 07536740..fbb1e038 100644 --- a/sqldev/src/main/java/org/utplsql/sqldev/model/StringTools.java +++ b/sqldev/src/main/java/org/utplsql/sqldev/model/StringTools.java @@ -103,4 +103,10 @@ public static long dateTimeStringToMillis(final String dateTime) { return date.getTime() + millis; } + public static double elapsedTime(String startDateTime, String endDateTime) { + double start = (double) dateTimeStringToMillis(startDateTime); + double end = (double) dateTimeStringToMillis(endDateTime); + return (end - start) / 1000; + } + } From 235eb0bd4b70e69b25f43a5624b79595f8c02f84 Mon Sep 17 00:00:00 2001 From: Philipp Salvisberg Date: Sun, 3 Jan 2021 10:50:03 +0100 Subject: [PATCH 30/55] add isNotBlank to StringTools --- .../src/main/java/org/utplsql/sqldev/model/StringTools.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/sqldev/src/main/java/org/utplsql/sqldev/model/StringTools.java b/sqldev/src/main/java/org/utplsql/sqldev/model/StringTools.java index fbb1e038..3bacb7bb 100644 --- a/sqldev/src/main/java/org/utplsql/sqldev/model/StringTools.java +++ b/sqldev/src/main/java/org/utplsql/sqldev/model/StringTools.java @@ -109,4 +109,8 @@ public static double elapsedTime(String startDateTime, String endDateTime) { return (end - start) / 1000; } + public static boolean isNotBlank(String value) { + return value != null && !value.trim().isEmpty(); + } + } From fe538090d5532c5b9831c0689efd83e7a547f5bb Mon Sep 17 00:00:00 2001 From: Philipp Salvisberg Date: Sun, 3 Jan 2021 10:50:35 +0100 Subject: [PATCH 31/55] add trim (with null handling) to StringTools --- .../main/java/org/utplsql/sqldev/model/StringTools.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/sqldev/src/main/java/org/utplsql/sqldev/model/StringTools.java b/sqldev/src/main/java/org/utplsql/sqldev/model/StringTools.java index 3bacb7bb..23323043 100644 --- a/sqldev/src/main/java/org/utplsql/sqldev/model/StringTools.java +++ b/sqldev/src/main/java/org/utplsql/sqldev/model/StringTools.java @@ -113,4 +113,11 @@ public static boolean isNotBlank(String value) { return value != null && !value.trim().isEmpty(); } + public static String trim(String value) { + if (value == null) { + return null; + } + return value.trim(); + } + } From 4a1802ef42151078385ccc2d9b52f5e0c0fb21cf Mon Sep 17 00:00:00 2001 From: Philipp Salvisberg Date: Sun, 3 Jan 2021 10:53:57 +0100 Subject: [PATCH 32/55] add tests for millisToDateTimeString to StringToolsTest --- .../org/utplsql/sqldev/test/StringToolsTest.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/sqldev/src/test/java/org/utplsql/sqldev/test/StringToolsTest.java b/sqldev/src/test/java/org/utplsql/sqldev/test/StringToolsTest.java index 8cb642ca..d8008946 100644 --- a/sqldev/src/test/java/org/utplsql/sqldev/test/StringToolsTest.java +++ b/sqldev/src/test/java/org/utplsql/sqldev/test/StringToolsTest.java @@ -17,6 +17,7 @@ import java.util.ArrayList; import java.util.List; +import java.util.TimeZone; import org.junit.Assert; import org.junit.Test; @@ -53,5 +54,18 @@ public void two_entries_as_simpleCSV() { list.add("world"); Assert.assertEquals("hello, world", StringTools.getSimpleCSV(list)); } + + @Test + public void earliest_date_from__millis() { + long zoneDiff = TimeZone.getDefault().getRawOffset(); + Assert.assertEquals("1970-01-01T00:00:00.000000", StringTools.millisToDateTimeString(-zoneDiff)); + } + + @Test + public void date_from__millis_with_millis() { + long zoneDiff = TimeZone.getDefault().getRawOffset(); + Assert.assertEquals("1970-01-01T00:00:42.123000", StringTools.millisToDateTimeString(42123 - zoneDiff)); + } + } From 3daf6afb4e79c4ade1edbd3081a9bb82d9f9447a Mon Sep 17 00:00:00 2001 From: Philipp Salvisberg Date: Sun, 3 Jan 2021 10:55:34 +0100 Subject: [PATCH 33/55] add tests for dateTimeStringToMillis to StringToolsTest --- .../org/utplsql/sqldev/test/StringToolsTest.java | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/sqldev/src/test/java/org/utplsql/sqldev/test/StringToolsTest.java b/sqldev/src/test/java/org/utplsql/sqldev/test/StringToolsTest.java index d8008946..c8814e44 100644 --- a/sqldev/src/test/java/org/utplsql/sqldev/test/StringToolsTest.java +++ b/sqldev/src/test/java/org/utplsql/sqldev/test/StringToolsTest.java @@ -66,6 +66,19 @@ public void date_from__millis_with_millis() { long zoneDiff = TimeZone.getDefault().getRawOffset(); Assert.assertEquals("1970-01-01T00:00:42.123000", StringTools.millisToDateTimeString(42123 - zoneDiff)); } - + + @Test + public void earliest_date_in_millis() { + long zoneDiff = TimeZone.getDefault().getRawOffset(); + final String dateTime = "1970-01-01T00:00:00.000000"; + Assert.assertEquals(0, StringTools.dateTimeStringToMillis(dateTime) + zoneDiff); + } + + @Test + public void date_with_millis() { + long zoneDiff = TimeZone.getDefault().getRawOffset(); + final String dateTime = "1970-01-01T00:00:42.123456"; + Assert.assertEquals(42123, StringTools.dateTimeStringToMillis(dateTime) + zoneDiff , 0); + } } From 17de78d811ee1aa1fbce7c15f055642de3611e8e Mon Sep 17 00:00:00 2001 From: Philipp Salvisberg Date: Sun, 3 Jan 2021 10:56:41 +0100 Subject: [PATCH 34/55] add test for elapsedTime to StringToolsTest --- .../test/java/org/utplsql/sqldev/test/StringToolsTest.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/sqldev/src/test/java/org/utplsql/sqldev/test/StringToolsTest.java b/sqldev/src/test/java/org/utplsql/sqldev/test/StringToolsTest.java index c8814e44..7cc4f286 100644 --- a/sqldev/src/test/java/org/utplsql/sqldev/test/StringToolsTest.java +++ b/sqldev/src/test/java/org/utplsql/sqldev/test/StringToolsTest.java @@ -80,5 +80,10 @@ public void date_with_millis() { final String dateTime = "1970-01-01T00:00:42.123456"; Assert.assertEquals(42123, StringTools.dateTimeStringToMillis(dateTime) + zoneDiff , 0); } + + @Test + public void elapsed_time_from_start_and_end_time() { + Assert.assertEquals(42.123, StringTools.elapsedTime("2021-01-01T14:00:00.000000", "2021-01-01T14:00:42.123000"), 0); + } } From 39a707bbbe589c373a9bcd87ffadede912675f6c Mon Sep 17 00:00:00 2001 From: Philipp Salvisberg Date: Sun, 3 Jan 2021 10:59:39 +0100 Subject: [PATCH 35/55] amend expected output based on new Run model in JsonToStringStylerTest --- .../sqldev/test/JsonToStringStylerTest.java | 76 ++++++++++++++++--- 1 file changed, 64 insertions(+), 12 deletions(-) diff --git a/sqldev/src/test/java/org/utplsql/sqldev/test/JsonToStringStylerTest.java b/sqldev/src/test/java/org/utplsql/sqldev/test/JsonToStringStylerTest.java index 84668056..a5c548ce 100644 --- a/sqldev/src/test/java/org/utplsql/sqldev/test/JsonToStringStylerTest.java +++ b/sqldev/src/test/java/org/utplsql/sqldev/test/JsonToStringStylerTest.java @@ -92,6 +92,31 @@ public void emptyRun() { sb.append(" \"errorStack\": null,\n"); sb.append(" \"serverOutput\": null,\n"); sb.append(" \"tests\": [],\n"); + sb.append(" \"rootNode\": {\n"); + sb.append(" \"className\": \"Suite\",\n"); + sb.append(" \"id\": \"1\",\n"); + sb.append(" \"name\": \"1\",\n"); + sb.append(" \"description\": null,\n"); + sb.append(" \"startTime\": null,\n"); + sb.append(" \"endTime\": null,\n"); + sb.append(" \"executionTime\": null,\n"); + sb.append(" \"counter\": {\n"); + sb.append(" \"className\": \"Counter\",\n"); + sb.append(" \"disabled\": 0,\n"); + sb.append(" \"success\": 0,\n"); + sb.append(" \"failure\": 0,\n"); + sb.append(" \"error\": 0,\n"); + sb.append(" \"warning\": 0\n"); + sb.append(" },\n"); + sb.append(" \"errorStack\": null,\n"); + sb.append(" \"serverOutput\": null,\n"); + sb.append(" \"warnings\": null,\n"); + sb.append(" \"parentId\": null,\n"); + sb.append(" \"statusIcon\": null,\n"); + sb.append(" \"warningIcon\": null,\n"); + sb.append(" \"infoIcon\": null,\n"); + sb.append(" \"items\": []\n"); + sb.append(" },\n"); sb.append(" \"status\": null,\n"); sb.append(" \"start\": null,\n"); sb.append(" \"endTime\": null,\n"); @@ -141,6 +166,8 @@ public void runWithTests() { sb.append(" {\n"); sb.append(" \"className\": \"Test\",\n"); sb.append(" \"id\": \"1\",\n"); + sb.append(" \"name\": \"Test One\",\n"); + sb.append(" \"description\": null,\n"); sb.append(" \"startTime\": null,\n"); sb.append(" \"endTime\": null,\n"); sb.append(" \"executionTime\": null,\n"); @@ -155,22 +182,23 @@ public void runWithTests() { sb.append(" \"errorStack\": null,\n"); sb.append(" \"serverOutput\": null,\n"); sb.append(" \"warnings\": null,\n"); + sb.append(" \"parentId\": null,\n"); + sb.append(" \"statusIcon\": null,\n"); + sb.append(" \"warningIcon\": null,\n"); + sb.append(" \"infoIcon\": null,\n"); sb.append(" \"executableType\": null,\n"); sb.append(" \"ownerName\": null,\n"); sb.append(" \"objectName\": null,\n"); sb.append(" \"procedureName\": null,\n"); sb.append(" \"disabled\": null,\n"); - sb.append(" \"name\": \"Test One\",\n"); - sb.append(" \"description\": null,\n"); sb.append(" \"testNumber\": null,\n"); - sb.append(" \"failedExpectations\": null,\n"); - sb.append(" \"statusIcon\": null,\n"); - sb.append(" \"warningIcon\": null,\n"); - sb.append(" \"infoIcon\": null\n"); + sb.append(" \"failedExpectations\": null\n"); sb.append(" },\n"); sb.append(" {\n"); sb.append(" \"className\": \"Test\",\n"); sb.append(" \"id\": \"2\",\n"); + sb.append(" \"name\": \"Test Two\",\n"); + sb.append(" \"description\": null,\n"); sb.append(" \"startTime\": null,\n"); sb.append(" \"endTime\": null,\n"); sb.append(" \"executionTime\": null,\n"); @@ -185,20 +213,44 @@ public void runWithTests() { sb.append(" \"errorStack\": null,\n"); sb.append(" \"serverOutput\": null,\n"); sb.append(" \"warnings\": null,\n"); + sb.append(" \"parentId\": null,\n"); + sb.append(" \"statusIcon\": null,\n"); + sb.append(" \"warningIcon\": null,\n"); + sb.append(" \"infoIcon\": null,\n"); sb.append(" \"executableType\": null,\n"); sb.append(" \"ownerName\": null,\n"); sb.append(" \"objectName\": null,\n"); sb.append(" \"procedureName\": null,\n"); sb.append(" \"disabled\": null,\n"); - sb.append(" \"name\": \"Test Two\",\n"); - sb.append(" \"description\": null,\n"); sb.append(" \"testNumber\": null,\n"); - sb.append(" \"failedExpectations\": null,\n"); - sb.append(" \"statusIcon\": null,\n"); - sb.append(" \"warningIcon\": null,\n"); - sb.append(" \"infoIcon\": null\n"); + sb.append(" \"failedExpectations\": null\n"); sb.append(" }\n"); sb.append(" ],\n"); + sb.append(" \"rootNode\": {\n"); + sb.append(" \"className\": \"Suite\",\n"); + sb.append(" \"id\": \"1\",\n"); + sb.append(" \"name\": \"1\",\n"); + sb.append(" \"description\": null,\n"); + sb.append(" \"startTime\": null,\n"); + sb.append(" \"endTime\": null,\n"); + sb.append(" \"executionTime\": null,\n"); + sb.append(" \"counter\": {\n"); + sb.append(" \"className\": \"Counter\",\n"); + sb.append(" \"disabled\": 0,\n"); + sb.append(" \"success\": 0,\n"); + sb.append(" \"failure\": 0,\n"); + sb.append(" \"error\": 0,\n"); + sb.append(" \"warning\": 0\n"); + sb.append(" },\n"); + sb.append(" \"errorStack\": null,\n"); + sb.append(" \"serverOutput\": null,\n"); + sb.append(" \"warnings\": null,\n"); + sb.append(" \"parentId\": null,\n"); + sb.append(" \"statusIcon\": null,\n"); + sb.append(" \"warningIcon\": null,\n"); + sb.append(" \"infoIcon\": null,\n"); + sb.append(" \"items\": []\n"); + sb.append(" },\n"); sb.append(" \"status\": null,\n"); sb.append(" \"start\": null,\n"); sb.append(" \"endTime\": null,\n"); From e24528ae5b448ab99a1ee23c225bcbad18e75a1f Mon Sep 17 00:00:00 2001 From: Philipp Salvisberg Date: Sun, 3 Jan 2021 11:02:01 +0100 Subject: [PATCH 36/55] add TestOverviewTreeTableModel class --- .../ui/runner/TestOverviewTreeTableModel.java | 518 ++++++++++++++++++ 1 file changed, 518 insertions(+) create mode 100644 sqldev/src/main/java/org/utplsql/sqldev/ui/runner/TestOverviewTreeTableModel.java diff --git a/sqldev/src/main/java/org/utplsql/sqldev/ui/runner/TestOverviewTreeTableModel.java b/sqldev/src/main/java/org/utplsql/sqldev/ui/runner/TestOverviewTreeTableModel.java new file mode 100644 index 00000000..c1562d2c --- /dev/null +++ b/sqldev/src/main/java/org/utplsql/sqldev/ui/runner/TestOverviewTreeTableModel.java @@ -0,0 +1,518 @@ +/* + * Copyright 2021 Philipp Salvisberg + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.utplsql.sqldev.ui.runner; + +import java.util.Enumeration; +import java.util.LinkedHashMap; + +import javax.swing.Icon; +import javax.swing.event.EventListenerList; +import javax.swing.event.TreeModelEvent; +import javax.swing.event.TreeModelListener; +import javax.swing.tree.TreeNode; +import javax.swing.tree.TreePath; + +import org.utplsql.sqldev.model.runner.Counter; +import org.utplsql.sqldev.model.runner.Item; +import org.utplsql.sqldev.model.runner.ItemNode; +import org.utplsql.sqldev.model.runner.Run; +import org.utplsql.sqldev.model.runner.Suite; +import org.utplsql.sqldev.model.runner.Test; +import org.utplsql.sqldev.resources.UtplsqlResources; + +import oracle.javatools.ui.treetable.TreeTableModel; + +public class TestOverviewTreeTableModel implements TreeTableModel { + private boolean showDescription; + private boolean useSmartTimes; + private boolean showSuccessfulTests; + private boolean showDisabledTests; + private String rootId; + private LinkedHashMap sources = new LinkedHashMap<>(); + private final LinkedHashMap nodes = new LinkedHashMap<>(); + protected final EventListenerList listenerList = new EventListenerList(); + + public TestOverviewTreeTableModel() { + super(); + } + + private boolean hasVisibleDisabledTests(ItemNode startNode) { + if (!showDisabledTests || startNode.getUserObject() instanceof Test) { + return false; + } + Enumeration children = sources.get(startNode.getId()).preorderEnumeration(); + while (children.hasMoreElements()) { + ItemNode child = (ItemNode) children.nextElement(); + Item item = (Item) child.getUserObject(); + if (item.getStatusIcon() == UtplsqlResources.getIcon("DISABLED_ICON")) { + return true; + } + } + return false; + } + + /** + * Determines if a node should be shown in the tree. + */ + private boolean isVisible(ItemNode node) { + if (node != null) { + Item item = (Item) node.getUserObject(); + if (item.getStatusIcon() == UtplsqlResources.getIcon("SUCCESS_ICON") && !showSuccessfulTests + && !hasVisibleDisabledTests(node)) { + return false; + } + if (item.getStatusIcon() == UtplsqlResources.getIcon("DISABLED_ICON") && !showDisabledTests) { + return false; + } + return true; + } + return true; + } + + /** + * Copies the original nodes determined by the run to the local nodes. + * Keeps references to items in the run, so changes in the run are automatically applied. + * However, the listeners need to by notified about the changes to display them + * in the underlying tree and table. + */ + private void setClonedItemNodes() { + nodes.clear(); + for (ItemNode source : sources.values()) { + ItemNode node = new ItemNode((Item) source.getUserObject()); + nodes.put(node.getId(), node); + } + for (ItemNode source : sources.values()) { + if (source.getUserObject() instanceof Suite) { + ItemNode parent = nodes.get(source.getId()); + Enumeration sourceChildren = source.children(); + while (sourceChildren.hasMoreElements()) { + ItemNode sourceChild = (ItemNode) sourceChildren.nextElement(); + ItemNode child = nodes.get(sourceChild.getId()); + if (isVisible(child)) { + parent.add(child); + } + } + } + } + reload(); + } + + /** + * Sets the complete model. For example when changing a run. + */ + public void setModel(final Run run, final boolean showDescription, final boolean useSmartTimes, + final boolean showSuccessfulTests, final boolean showDisabledTests) { + this.showDescription = showDescription; + this.useSmartTimes = useSmartTimes; + this.showSuccessfulTests = showSuccessfulTests; + this.showDisabledTests = showDisabledTests; + this.rootId = run.getReporterId(); + this.sources = run.getItemNodes(); + setClonedItemNodes(); + } + + /** + * Updates the description only. + */ + public void updateModel(final boolean showDescription) { + this.showDescription = showDescription; + } + + /** + * Updates filter criteria. If a change is detected the model is re-created from scratch. + */ + public void updateModel(final boolean showSuccessfulTests, final boolean showDisabledTests) { + if (this.showSuccessfulTests != showSuccessfulTests || this.showDisabledTests != showDisabledTests) { + this.showSuccessfulTests = showSuccessfulTests; + this.showDisabledTests = showDisabledTests; + setClonedItemNodes(); + } + } + + /** + * Re-creates the model from scratch. + */ + public void updateModel() { + setClonedItemNodes(); + } + + /** + * Applies the filter criteria for a part of the tree after an update. + * Technically it will remove nodes from the tree. + */ + private void removeInvisibleNodes(ItemNode startNode) { + TreeNode[] path = startNode.getPath(); + for (TreeNode node : path) { + ItemNode parent = (ItemNode) node.getParent(); + if (parent != null) { + if (!isVisible((ItemNode) node)) { + int childIndex = parent.getIndex(node); + if (childIndex >= 0) { + parent.remove(childIndex); + // Delaying the fireTreeNodesRemove call would avoid the following exception: + // Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: n >= m + // at java.util.Vector.elementAt(Vector.java:479) + // at javax.swing.tree.DefaultMutableTreeNode.getChildAt(DefaultMutableTreeNode.java:245) + // ... + // This exception is raised in the event dispatching thread (another thread). The line numbers + // may differ based on the JDK you are using. I suspect that events are not processed + // fast enough. + // + // However, it looks like these errors can be ignored. At least there seems to be no negative + // side effect in the runner GUI. In any case the user could always use the refresh action + // to get a clean state, should something look wrong. But I've never experienced this. + // + // These exceptions are thrown only when filtering is enabled, but then it happens quite often. + // This means it happens for 5-10% of the nodes. + // + // Calling fireTreeNodesRemoved in another thread, e.g. via SwingUtilities.invokeLater() + // will reduce the number of exceptions significantly (almost zero). However, in this case + // the subsequent updates might fail and this will cause an exception in this thread + // (in the method {@link #nodeChanged(String id)}. I tried the following: + // - calling all fireTreeNode... methods via SwingUtilities.invokeLater(). + // - catching the exception, trying to re-fire or ignore it + // In the end the user experience was always worse. Even if I've got no exceptions + // anymore the result in the TreeTable was wrong. I've got wrong rows, even empty rows. + // + // Therefore I decided to live with some exceptions in the event dispatching thread. + fireTreeNodesRemoved(this, parent.getPath(), new int[] { childIndex }, new Object[] { node }); + // removing the parent removes also all its children, hence no need for further processing + break; + } + } + } + } + } + + /** + * Updates a node and its parents and then apply the filter criteria. + */ + public void updateModel(final String id) { + nodeChanged(id); + ItemNode startNode = nodes.get(id); + if (startNode != null) { + removeInvisibleNodes(startNode); + } + } + + /** + * Notifies all listeners that the complete tree has changed. + * For that a root node must be available. + * However, a root node does not mean the model {@link #isComplete()}. + */ + public void reload() { + if (getRoot() != null) { + fireTreeStructureChanged(this, getRoot().getPath(), null, null); + } + } + + /** + * Notifies all listeners that a node and its parents have changed. + */ + public void nodeChanged(String id) { + ItemNode startNode = nodes.get(id); + if (startNode != null) { + TreeNode[] path = startNode.getPath(); + for (TreeNode node : path) { + ItemNode parent = (ItemNode) node.getParent(); + if (parent != null) { + int childIndex = parent.getIndex(node); + if (childIndex >= 0) { + fireTreeNodesChanged(this, parent.getPath(), new int[] { childIndex }, new Object[] { node }); + } + } + } + } + } + + /** + * Determines if the model is fully initialized and can be used. + * For that it the pseudo root must contain a child. + */ + public boolean isComplete() { + return nodes.size() > 1; // return sources.size() != nodes.size(); + } + + /** + * Calculates the row of the underlying table when the tree is fully expanded. + */ + public int getRow(final String id) { + // do not count root + int i = -1; + + // The order of orderedNodes can differ to nodes.values() + // when run is based on list of tests. + Enumeration orderedNodes = getRoot().preorderEnumeration(); + while (orderedNodes.hasMoreElements()) { + ItemNode node = (ItemNode) orderedNodes.nextElement(); + if (((Item) node.getUserObject()).getId().equals(id)) { + return i; + } + i++; + } + return -1; + } + + public Test getTestOf(final ItemNode startNode) { + Enumeration orderedNodes = startNode.preorderEnumeration(); + while (orderedNodes.hasMoreElements()) { + ItemNode node = (ItemNode) orderedNodes.nextElement(); + Item item = (Item) node.getUserObject(); + if (item instanceof Test) { + return (Test) item; + } + } + return null; + } + + public ItemNode getItemNode(final String id) { + return nodes.get(id); + } + + private interface CounterChecker { + boolean matchedStatus (Counter counter); + } + + private boolean ItemNodeStatus(final String id, final CounterChecker checker) { + ItemNode startNode = sources.get(id); + if (startNode != null) { + Enumeration orderedNodes = startNode.preorderEnumeration(); + while (orderedNodes.hasMoreElements()) { + ItemNode node = (ItemNode) orderedNodes.nextElement(); + Item item = (Item) node.getUserObject(); + if (checker.matchedStatus(item.getCounter())) { + return true; + } + } + } + return false; + } + + /** + * Returns true if a node or one of its children have errors. + */ + public boolean ItemNodeHasErrors(final String id) { + return ItemNodeStatus(id, counter -> counter.getError() > 0); + } + + /** + * Returns true if a node or one of its children have failed tests. + */ + public boolean ItemNodeHasFailedTests(final String id) { + return ItemNodeStatus(id, counter -> counter.getFailure() > 0); + } + + /** + * Returns true if a node or one of its children have successful tests. + */ + public boolean ItemNodeHasSuccessfulTests(final String id) { + return ItemNodeStatus(id, counter -> counter.getSuccess() > 0); + } + + public String getTreeColumnName() { + return UtplsqlResources.getString(showDescription ? "RUNNER_DESCRIPTION_LABEL" : "RUNNER_TEST_ID_COLUMN"); + } + + public String getTimeColumnName() { + return UtplsqlResources.getString("RUNNER_TEST_EXECUTION_TIME_COLUMN") + (!useSmartTimes ? " [s]" : ""); + } + + @Override + public ItemNode getRoot() { + return nodes.get(rootId); + } + + @Override + public ItemNode getChild(Object parent, int index) { + return (ItemNode) ((ItemNode) parent).getChildAt(index); + } + + @Override + public int getChildCount(Object parent) { + return ((ItemNode) parent).getChildCount(); + } + + @Override + public boolean isLeaf(Object node) { + return !((ItemNode) node).getAllowsChildren(); + } + + @Override + public void valueForPathChanged(TreePath path, Object newValue) { + // ignore, no implementation required + } + + @Override + public int getIndexOfChild(Object parent, Object child) { + return ((ItemNode) parent).getIndex((ItemNode) child); + } + + @Override + public void addTreeModelListener(TreeModelListener l) { + listenerList.add(TreeModelListener.class, l); + } + + @Override + public void removeTreeModelListener(TreeModelListener l) { + listenerList.remove(TreeModelListener.class, l); + } + + /** + * Copied from DefaultTreeModel + */ + protected void fireTreeNodesChanged(Object source, Object[] path, int[] childIndices, Object[] children) { + Object[] listeners = this.listenerList.getListenerList(); + TreeModelEvent e = null; + + for (int i = listeners.length - 2; i >= 0; i -= 2) { + if (listeners[i] == TreeModelListener.class) { + if (e == null) { + e = new TreeModelEvent(source, path, childIndices, children); + } + // might fail with IndexOutOfBoundsException + ((TreeModelListener) listeners[i + 1]).treeNodesChanged(e); + } + } + } + + /** + * Copied from DefaultTreeModel + */ + protected void fireTreeNodesInserted(Object source, Object[] path, int[] childIndices, Object[] children) { + Object[] listeners = this.listenerList.getListenerList(); + TreeModelEvent e = null; + + for (int i = listeners.length - 2; i >= 0; i -= 2) { + if (listeners[i] == TreeModelListener.class) { + if (e == null) { + e = new TreeModelEvent(source, path, childIndices, children); + } + + ((TreeModelListener) listeners[i + 1]).treeNodesInserted(e); + } + } + } + + /** + * Copied from DefaultTreeModel + */ + protected void fireTreeNodesRemoved(Object source, Object[] path, int[] childIndices, Object[] children) { + Object[] listeners = this.listenerList.getListenerList(); + TreeModelEvent e = null; + + for (int i = listeners.length - 2; i >= 0; i -= 2) { + if (listeners[i] == TreeModelListener.class) { + if (e == null) { + e = new TreeModelEvent(source, path, childIndices, children); + } + + ((TreeModelListener) listeners[i + 1]).treeNodesRemoved(e); + } + } + } + + /** + * Copied from DefaultTreeModel + */ + protected void fireTreeStructureChanged(Object source, Object[] path, int[] childIndices, Object[] children) { + Object[] listeners = this.listenerList.getListenerList(); + TreeModelEvent e = null; + + for (int i = listeners.length - 2; i >= 0; i -= 2) { + if (listeners[i] == TreeModelListener.class) { + if (e == null) { + e = new TreeModelEvent(source, path, childIndices, children); + } + + ((TreeModelListener) listeners[i + 1]).treeStructureChanged(e); + } + } + } + + @Override + public int getColumnCount() { + return 4; + } + + @Override + public String getColumnName(int col) { + switch (col) { + case 0: + return getTreeColumnName(); + case 1: + case 2: + return ""; // icons are used instead of descriptions + case 3: + return getTimeColumnName(); + default: + return null; + } + } + + @Override + public Class getColumnClass(int col) { + switch (col) { + case 0: + return TreeTableModel.class; + case 1: + case 2: + return Icon.class; + case 3: + return Double.class; + default: + return String.class; + } + } + + @Override + public Object getValueAt(Object node, int col) { + final ItemNode itemNode = (ItemNode) node; + switch (col) { + case 0: + if (showDescription && itemNode.getDescription() != null) { + if (itemNode.getUserObject() instanceof Suite) { + if (!itemNode.getName().contains("context_#")) { + // description of suites might be bewildering, hence use it for contexts only + return itemNode.getName(); + } + } + return itemNode.getDescription(); + } else { + return itemNode.getName(); + } + case 1: + return itemNode.getWarningIcon(); + case 2: + return itemNode.getInfoIcon(); + case 3: + return itemNode.getExecutionTime(); + default: + return null; + } + } + + @Override + public boolean isCellEditable(Object node, int col) { + // make the tree column editable to forward mouse events for collapse/expand + return getColumnClass(col) == TreeTableModel.class; + } + + @Override + public void setValueAt(Object value, Object node, int col) { + // ignore, no implementation required + } + +} From 535ea916ddc56fc77a0896b82a136f84ffeb4740 Mon Sep 17 00:00:00 2001 From: Philipp Salvisberg Date: Sun, 3 Jan 2021 11:04:12 +0100 Subject: [PATCH 37/55] return String instead of CharSequence for getTestIdColumnName() --- .../org/utplsql/sqldev/ui/runner/TestOverviewTableModel.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sqldev/src/main/java/org/utplsql/sqldev/ui/runner/TestOverviewTableModel.java b/sqldev/src/main/java/org/utplsql/sqldev/ui/runner/TestOverviewTableModel.java index 25349b20..63d56593 100644 --- a/sqldev/src/main/java/org/utplsql/sqldev/ui/runner/TestOverviewTableModel.java +++ b/sqldev/src/main/java/org/utplsql/sqldev/ui/runner/TestOverviewTableModel.java @@ -61,7 +61,7 @@ public void updateModel(final boolean showDescription) { fireTableDataChanged(); } - public CharSequence getTestIdColumnName() { + public String getTestIdColumnName() { StringBuilder sb = new StringBuilder(); calcCommonPrefix(); if (commonPrefix == null || commonPrefix.isEmpty()) { From 6911f8bfe8bb8a8f00b9f9cb2538facbf348f114 Mon Sep 17 00:00:00 2001 From: Philipp Salvisberg Date: Sun, 3 Jan 2021 11:05:34 +0100 Subject: [PATCH 38/55] new column order: status, description, indicators, execution time --- .../ui/runner/TestOverviewTableModel.java | 40 +++++++++---------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/sqldev/src/main/java/org/utplsql/sqldev/ui/runner/TestOverviewTableModel.java b/sqldev/src/main/java/org/utplsql/sqldev/ui/runner/TestOverviewTableModel.java index 63d56593..ea2729e5 100644 --- a/sqldev/src/main/java/org/utplsql/sqldev/ui/runner/TestOverviewTableModel.java +++ b/sqldev/src/main/java/org/utplsql/sqldev/ui/runner/TestOverviewTableModel.java @@ -108,34 +108,34 @@ public int getColumnCount() { public Object getValueAt(final int row, final int col) { final Test test = getTest(row); switch (col) { - case 0: - return test.getStatusIcon(); - case 1: - return test.getWarningIcon(); - case 2: - return test.getInfoIcon(); - case 3: - if (showDescription && test.getDescription() != null) { - return test.getDescription(); - } else { - return test.getId().substring(commonPrefix == null ? 0 : commonPrefix.length()); - } - case 4: - return test.getExecutionTime(); - default: - return null; + case 0: + return test.getStatusIcon(); + case 1: + if (showDescription && test.getDescription() != null) { + return test.getDescription(); + } else { + return test.getId().substring(commonPrefix == null ? 0 : commonPrefix.length()); + } + case 2: + return test.getWarningIcon(); + case 3: + return test.getInfoIcon(); + case 4: + return test.getExecutionTime(); + default: + return null; } } @Override public String getColumnName(final int col) { switch (col) { - case 0: case 1: + return UtplsqlResources.getString(showDescription ? "RUNNER_DESCRIPTION_LABEL" : "RUNNER_TEST_ID_COLUMN"); + case 0: case 2: - return ""; // icons are used instead of descriptions case 3: - return UtplsqlResources.getString(showDescription ? "RUNNER_DESCRIPTION_LABEL" : "RUNNER_TEST_ID_COLUMN"); + return ""; // icons are used instead of descriptions case 4: return getTimeColumnName(); default: @@ -153,8 +153,8 @@ public boolean isCellEditable(final int row, final int column) { public Class getColumnClass(final int col) { switch (col) { case 0: - case 1: case 2: + case 3: return Icon.class; case 4: return Double.class; From ad5110c98000404eb4a2f76d563ac9e8159f76db Mon Sep 17 00:00:00 2001 From: Philipp Salvisberg Date: Sun, 3 Jan 2021 11:10:27 +0100 Subject: [PATCH 39/55] use StringTools.getSysdate() --- .../org/utplsql/sqldev/runner/UtplsqlRunner.java | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/sqldev/src/main/java/org/utplsql/sqldev/runner/UtplsqlRunner.java b/sqldev/src/main/java/org/utplsql/sqldev/runner/UtplsqlRunner.java index fbd0ab47..192eb6b3 100644 --- a/sqldev/src/main/java/org/utplsql/sqldev/runner/UtplsqlRunner.java +++ b/sqldev/src/main/java/org/utplsql/sqldev/runner/UtplsqlRunner.java @@ -19,8 +19,6 @@ import java.awt.Toolkit; import java.net.URL; import java.sql.Connection; -import java.text.SimpleDateFormat; -import java.util.Date; import java.util.List; import java.util.UUID; import java.util.logging.Logger; @@ -36,6 +34,7 @@ import org.utplsql.sqldev.dal.RealtimeReporterEventConsumer; import org.utplsql.sqldev.exception.GenericRuntimeException; import org.utplsql.sqldev.model.DatabaseTools; +import org.utplsql.sqldev.model.StringTools; import org.utplsql.sqldev.model.SystemTools; import org.utplsql.sqldev.model.runner.PostRunEvent; import org.utplsql.sqldev.model.runner.PostSuiteEvent; @@ -173,19 +172,13 @@ public void process(final RealtimeReporterEvent event) { } } - public static String getSysdate() { - final Date dateTime = new Date(System.currentTimeMillis()); - final SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'000'"); - return df.format(dateTime); - } - public boolean isRunning() { return run != null && run.getEndTime() == null; } private void initRun() { run = new Run(realtimeReporterId, connectionName, pathList); - run.setStartTime(getSysdate()); + run.setStartTime(StringTools.getSysdate()); run.getCounter().setDisabled(0); run.getCounter().setSuccess(0); run.getCounter().setFailure(0); @@ -356,7 +349,7 @@ private void consume() { if (run.getTotalNumberOfTests() < 0) { run.setStatus(UtplsqlResources.getString("RUNNER_NO_TESTS_FOUND_TEXT")); run.setExecutionTime((System.currentTimeMillis() - Double.valueOf(run.getStart())) / 1000); - run.setEndTime(getSysdate()); + run.setEndTime(StringTools.getSysdate()); run.setTotalNumberOfTests(0); panel.update(realtimeReporterId); } From d299c874e350019a86d211a17d74a57677374b4f Mon Sep 17 00:00:00 2001 From: Philipp Salvisberg Date: Sun, 3 Jan 2021 11:13:06 +0100 Subject: [PATCH 40/55] add imports for Supplier, ItemNode, Suite and reorder --- .../org/utplsql/sqldev/runner/UtplsqlRunner.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/sqldev/src/main/java/org/utplsql/sqldev/runner/UtplsqlRunner.java b/sqldev/src/main/java/org/utplsql/sqldev/runner/UtplsqlRunner.java index 192eb6b3..1d977840 100644 --- a/sqldev/src/main/java/org/utplsql/sqldev/runner/UtplsqlRunner.java +++ b/sqldev/src/main/java/org/utplsql/sqldev/runner/UtplsqlRunner.java @@ -21,14 +21,11 @@ import java.sql.Connection; import java.util.List; import java.util.UUID; +import java.util.function.Supplier; import java.util.logging.Logger; import javax.swing.JFrame; -import oracle.dbtools.raptor.runner.DBStarterFactory; -import oracle.ide.Context; -import oracle.jdevimpl.runner.debug.DebuggingProcess; -import oracle.jdevimpl.runner.run.JRunner; import org.utplsql.sqldev.coverage.CodeCoverageReporter; import org.utplsql.sqldev.dal.RealtimeReporterDao; import org.utplsql.sqldev.dal.RealtimeReporterEventConsumer; @@ -36,6 +33,7 @@ import org.utplsql.sqldev.model.DatabaseTools; import org.utplsql.sqldev.model.StringTools; import org.utplsql.sqldev.model.SystemTools; +import org.utplsql.sqldev.model.runner.ItemNode; import org.utplsql.sqldev.model.runner.PostRunEvent; import org.utplsql.sqldev.model.runner.PostSuiteEvent; import org.utplsql.sqldev.model.runner.PostTestEvent; @@ -44,12 +42,18 @@ import org.utplsql.sqldev.model.runner.PreTestEvent; import org.utplsql.sqldev.model.runner.RealtimeReporterEvent; import org.utplsql.sqldev.model.runner.Run; +import org.utplsql.sqldev.model.runner.Suite; import org.utplsql.sqldev.model.runner.Test; import org.utplsql.sqldev.resources.UtplsqlResources; import org.utplsql.sqldev.ui.runner.RunnerFactory; import org.utplsql.sqldev.ui.runner.RunnerPanel; import org.utplsql.sqldev.ui.runner.RunnerView; +import oracle.dbtools.raptor.runner.DBStarterFactory; +import oracle.ide.Context; +import oracle.jdevimpl.runner.debug.DebuggingProcess; +import oracle.jdevimpl.runner.run.JRunner; + public class UtplsqlRunner implements RealtimeReporterEventConsumer { private static final Logger logger = Logger.getLogger(UtplsqlRunner.class.getName()); private static final int DEBUG_TIMEOUT_SECONDS = 60*60; From 7899067d6b2d2e5a686307817fbc263447f0d69f Mon Sep 17 00:00:00 2001 From: Philipp Salvisberg Date: Sun, 3 Jan 2021 11:17:24 +0100 Subject: [PATCH 41/55] add private logFalseCondition method used in assert statements --- .../main/java/org/utplsql/sqldev/runner/UtplsqlRunner.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/sqldev/src/main/java/org/utplsql/sqldev/runner/UtplsqlRunner.java b/sqldev/src/main/java/org/utplsql/sqldev/runner/UtplsqlRunner.java index 1d977840..fc7c4dfb 100644 --- a/sqldev/src/main/java/org/utplsql/sqldev/runner/UtplsqlRunner.java +++ b/sqldev/src/main/java/org/utplsql/sqldev/runner/UtplsqlRunner.java @@ -197,6 +197,13 @@ private void initRun() { panel.update(realtimeReporterId); } + private boolean logFalseCondition(boolean condition, Supplier msgToLog) { + if (!condition) { + logger.severe(msgToLog); + } + return condition; + } + private void doProcess(final PreRunEvent event) { run.setTotalNumberOfTests(event.getTotalNumberOfTests()); run.put(event.getItems()); From 51691aa375df8abf31c8a0b3478ae335b6a10389 Mon Sep 17 00:00:00 2001 From: Philipp Salvisberg Date: Sun, 3 Jan 2021 11:18:26 +0100 Subject: [PATCH 42/55] process pre-suite event --- .../java/org/utplsql/sqldev/runner/UtplsqlRunner.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/sqldev/src/main/java/org/utplsql/sqldev/runner/UtplsqlRunner.java b/sqldev/src/main/java/org/utplsql/sqldev/runner/UtplsqlRunner.java index fc7c4dfb..287ac050 100644 --- a/sqldev/src/main/java/org/utplsql/sqldev/runner/UtplsqlRunner.java +++ b/sqldev/src/main/java/org/utplsql/sqldev/runner/UtplsqlRunner.java @@ -168,7 +168,7 @@ public void process(final RealtimeReporterEvent event) { } else if (event instanceof PreRunEvent) { doProcess((PreRunEvent) event); } else if (event instanceof PreSuiteEvent) { - // not processed + doProcess((PreSuiteEvent) event); } else if (event instanceof PreTestEvent) { doProcess((PreTestEvent) event); } else { @@ -220,6 +220,15 @@ private void doProcess(final PostRunEvent event) { run.setStatus(UtplsqlResources.getString("RUNNER_FINISHED_TEXT")); panel.update(realtimeReporterId); } + + private void doProcess(final PreSuiteEvent event) { + final ItemNode node = run.getItemNodes().get(event.getId()); + assert logFalseCondition(node != null, () -> "Could not find suite id \"" + event.getId() + + "\" when processing PreSuiteEvent " + event.toString() + "."); + final Suite suite = (Suite) node.getUserObject(); + suite.setStartTime(StringTools.getSysdate()); + panel.update(realtimeReporterId); + } private void doProcess(final PostSuiteEvent event) { final Test test = run.getCurrentTest(); From d84dc2cbc8132ad37f7d2fd271acc66c9c87121b Mon Sep 17 00:00:00 2001 From: Philipp Salvisberg Date: Sun, 3 Jan 2021 11:27:08 +0100 Subject: [PATCH 43/55] pass item when updating runner panel This allows the runner panel to use the item instead of the run's current item. Furthermore the panel updates the a test/suite only if an item is passed. This improves the performance of the runner. --- .../main/java/org/utplsql/sqldev/runner/UtplsqlRunner.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sqldev/src/main/java/org/utplsql/sqldev/runner/UtplsqlRunner.java b/sqldev/src/main/java/org/utplsql/sqldev/runner/UtplsqlRunner.java index 287ac050..5e9181fe 100644 --- a/sqldev/src/main/java/org/utplsql/sqldev/runner/UtplsqlRunner.java +++ b/sqldev/src/main/java/org/utplsql/sqldev/runner/UtplsqlRunner.java @@ -267,7 +267,7 @@ private void doProcess(final PostSuiteEvent event) { sb.append(event.getServerOutput()); test.setServerOutput(sb.toString()); } - panel.update(realtimeReporterId); + panel.update(realtimeReporterId, suite); } private void doProcess(final PreTestEvent event) { @@ -281,7 +281,7 @@ private void doProcess(final PreTestEvent event) { run.setStatus(event.getId() + "..."); run.setCurrentTestNumber(event.getTestNumber()); run.setCurrentTest(test); - panel.update(realtimeReporterId); + panel.update(realtimeReporterId, test); } private void doProcess(final PostTestEvent event) { @@ -312,7 +312,7 @@ private void doProcess(final PostTestEvent event) { run.getCounter().setSuccess(run.getCounter().getSuccess() + event.getCounter().getSuccess()); run.getCounter().setFailure(run.getCounter().getFailure() + event.getCounter().getFailure()); run.getCounter().setError(run.getCounter().getError() + event.getCounter().getError()); - panel.update(realtimeReporterId); + panel.update(realtimeReporterId, test); } private void produceReportWithDebugger(String anonymousPlsqlBlock) { From 7a4fda9e0a1858608facf5940add368b4a5479f5 Mon Sep 17 00:00:00 2001 From: Philipp Salvisberg Date: Sun, 3 Jan 2021 11:33:14 +0100 Subject: [PATCH 44/55] add aggregation logic for suites in PostSuiteEvent Previously only tests were processed. That was enough for a representation in a simple table. To show the run result in a tree also suites need to be processed. --- .../utplsql/sqldev/runner/UtplsqlRunner.java | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/sqldev/src/main/java/org/utplsql/sqldev/runner/UtplsqlRunner.java b/sqldev/src/main/java/org/utplsql/sqldev/runner/UtplsqlRunner.java index 5e9181fe..41fe369f 100644 --- a/sqldev/src/main/java/org/utplsql/sqldev/runner/UtplsqlRunner.java +++ b/sqldev/src/main/java/org/utplsql/sqldev/runner/UtplsqlRunner.java @@ -231,6 +231,48 @@ assert logFalseCondition(node != null, () -> "Could not find suite id \"" + even } private void doProcess(final PostSuiteEvent event) { + final ItemNode node = run.getItemNodes().get(event.getId()); + assert logFalseCondition(node != null, () -> "Could not find suite id \"" + event.getId() + + "\" when processing PostSuiteEvent " + event.toString() + "."); + final Suite suite = (Suite) node.getUserObject(); + if (suite.getEndTime() == null) { + // first occurrence, multiple possible, e.g. ut_tester and ut_user in utPLSQL project + suite.setStartTime(event.getStartTime()); + suite.setEndTime(event.getEndTime()); + suite.setExecutionTime(event.getExecutionTime()); + suite.setCounter(event.getCounter()); + suite.setErrorStack(event.getErrorStack()); + suite.setWarnings(event.getWarnings()); + suite.setServerOutput(event.getServerOutput()); + } else { + // subsequent occurrence, aggregate + suite.setEndTime(event.getEndTime()); + suite.setExecutionTime(suite.getExecutionTime() + event.getExecutionTime()); + suite.getCounter().setWarning(suite.getCounter().getWarning() + event.getCounter().getWarning()); + suite.getCounter().setDisabled(suite.getCounter().getDisabled() + event.getCounter().getDisabled()); + suite.getCounter().setSuccess(suite.getCounter().getSuccess() + event.getCounter().getSuccess()); + suite.getCounter().setFailure(suite.getCounter().getFailure() + event.getCounter().getFailure()); + suite.getCounter().setError(suite.getCounter().getError() + event.getCounter().getError()); + if (event.getWarnings() != null) { + StringBuilder sb = new StringBuilder(); + if (suite.getWarnings() != null) { + sb.append(suite.getWarnings()); + sb.append("\n\n"); + } + sb.append(event.getWarnings()); + suite.setWarnings(sb.toString()); + } + if (event.getServerOutput() != null) { + StringBuilder sb = new StringBuilder(); + if (suite.getServerOutput() != null) { + sb.append(suite.getServerOutput()); + sb.append("\n\n"); + } + sb.append(event.getServerOutput()); + suite.setServerOutput(sb.toString()); + } + } + final Test test = run.getCurrentTest(); // Errors on suite levels are reported as warnings by the utPLSQL framework, // since an error on suite level does not affect a status of a test. From c847c87f925393abf43df6be6a9f3846a0466328 Mon Sep 17 00:00:00 2001 From: Philipp Salvisberg Date: Sun, 3 Jan 2021 11:35:32 +0100 Subject: [PATCH 45/55] assert test != null for PreTestEvent Old logic would have thrown an NullPointerException. --- .../java/org/utplsql/sqldev/runner/UtplsqlRunner.java | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/sqldev/src/main/java/org/utplsql/sqldev/runner/UtplsqlRunner.java b/sqldev/src/main/java/org/utplsql/sqldev/runner/UtplsqlRunner.java index 41fe369f..8eda049e 100644 --- a/sqldev/src/main/java/org/utplsql/sqldev/runner/UtplsqlRunner.java +++ b/sqldev/src/main/java/org/utplsql/sqldev/runner/UtplsqlRunner.java @@ -314,12 +314,9 @@ assert logFalseCondition(node != null, () -> "Could not find suite id \"" + even private void doProcess(final PreTestEvent event) { final Test test = run.getTest(event.getId()); - if (test == null) { - logger.severe(() -> "Could not find test id \"" + event.getId() + "\" when processing PreTestEvent " - + event.toString() + "."); - } else { - test.setStartTime(getSysdate()); - } + assert logFalseCondition(test != null, () -> "Could not find test id \"" + event.getId() + + "\" when processing PreTestEvent " + event.toString() + "."); + test.setStartTime(StringTools.getSysdate()); run.setStatus(event.getId() + "..."); run.setCurrentTestNumber(event.getTestNumber()); run.setCurrentTest(test); From accc46c71583275821b1bd2f899d473378e89871 Mon Sep 17 00:00:00 2001 From: Philipp Salvisberg Date: Sun, 3 Jan 2021 11:36:37 +0100 Subject: [PATCH 46/55] assert test != null for PostTestEvent Old logic would have thrown an NullPointerException. --- .../utplsql/sqldev/runner/UtplsqlRunner.java | 37 +++++++++---------- 1 file changed, 17 insertions(+), 20 deletions(-) diff --git a/sqldev/src/main/java/org/utplsql/sqldev/runner/UtplsqlRunner.java b/sqldev/src/main/java/org/utplsql/sqldev/runner/UtplsqlRunner.java index 8eda049e..5f7c783d 100644 --- a/sqldev/src/main/java/org/utplsql/sqldev/runner/UtplsqlRunner.java +++ b/sqldev/src/main/java/org/utplsql/sqldev/runner/UtplsqlRunner.java @@ -325,28 +325,25 @@ assert logFalseCondition(test != null, () -> "Could not find test id \"" + event private void doProcess(final PostTestEvent event) { final Test test = run.getTest(event.getId()); - if (test == null) { - logger.severe(() -> "Could not find test id \"" + event.getId() + "\" when processing PostTestEvent " - + event.toString() + "."); + assert logFalseCondition(test != null, () -> "Could not find test id \"" + event.getId() + + "\" when processing PostTestEvent " + event.toString() + "."); + test.setStartTime(event.getStartTime()); + test.setEndTime(event.getEndTime()); + test.setExecutionTime(event.getExecutionTime()); + test.setCounter(event.getCounter()); + test.setErrorStack(event.getErrorStack()); + test.setServerOutput(event.getServerOutput()); + if (test.getServerOutput() != null) { + run.setInfoCount(run.getInfoCount() + 1); + } + test.setFailedExpectations(event.getFailedExpectations()); + test.setWarnings(event.getWarnings()); + if (test.getWarnings() != null) { + test.getCounter().setWarning(1); } else { - test.setStartTime(event.getStartTime()); - test.setEndTime(event.getEndTime()); - test.setExecutionTime(event.getExecutionTime()); - test.setCounter(event.getCounter()); - test.setErrorStack(event.getErrorStack()); - test.setServerOutput(event.getServerOutput()); - if (test.getServerOutput() != null) { - run.setInfoCount(run.getInfoCount() + 1); - } - test.setFailedExpectations(event.getFailedExpectations()); - test.setWarnings(event.getWarnings()); - if (test.getWarnings() != null) { - test.getCounter().setWarning(1); - } else { - test.getCounter().setWarning(0); - } - run.getCounter().setWarning(run.getCounter().getWarning() + test.getCounter().getWarning()); + test.getCounter().setWarning(0); } + run.getCounter().setWarning(run.getCounter().getWarning() + test.getCounter().getWarning()); run.getCounter().setDisabled(run.getCounter().getDisabled() + event.getCounter().getDisabled()); run.getCounter().setSuccess(run.getCounter().getSuccess() + event.getCounter().getSuccess()); run.getCounter().setFailure(run.getCounter().getFailure() + event.getCounter().getFailure()); From 79dfab7147d03981c8e47e7f6b73dbd8d74aa62b Mon Sep 17 00:00:00 2001 From: Philipp Salvisberg Date: Sun, 3 Jan 2021 11:41:46 +0100 Subject: [PATCH 47/55] hyperlinks in warnings require mouse click to activate --- .../java/org/utplsql/sqldev/ui/runner/RunnerPanel.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/sqldev/src/main/java/org/utplsql/sqldev/ui/runner/RunnerPanel.java b/sqldev/src/main/java/org/utplsql/sqldev/ui/runner/RunnerPanel.java index a49e91d8..9a37fbdf 100644 --- a/sqldev/src/main/java/org/utplsql/sqldev/ui/runner/RunnerPanel.java +++ b/sqldev/src/main/java/org/utplsql/sqldev/ui/runner/RunnerPanel.java @@ -1390,7 +1390,12 @@ public void mouseClicked(final MouseEvent e) { testWarningsTextPane.setContentType("text/html"); testWarningsTextPane.setMinimumSize(TEXTPANE_DIM); testWarningsTextPane.setPreferredSize(TEXTPANE_DIM); - testWarningsTextPane.addHyperlinkListener(event -> openLink(event.getDescription())); + testWarningsTextPane.addHyperlinkListener(event -> { + if (event.getEventType() == HyperlinkEvent.EventType.ACTIVATED) { + final String link = event.getDescription(); + openLink(link); + } + }); final JScrollPane testWarningsScrollPane = new JScrollPane(testWarningsTextPane); c.gridx = 0; c.gridy = 0; From 77ba5a976b3fed22d3159302bb586ff932f07fb3 Mon Sep 17 00:00:00 2001 From: Philipp Salvisberg Date: Sun, 3 Jan 2021 11:42:11 +0100 Subject: [PATCH 48/55] hyperlinks in info (server output) require mouse click to activate --- .../java/org/utplsql/sqldev/ui/runner/RunnerPanel.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/sqldev/src/main/java/org/utplsql/sqldev/ui/runner/RunnerPanel.java b/sqldev/src/main/java/org/utplsql/sqldev/ui/runner/RunnerPanel.java index 9a37fbdf..a9d3a591 100644 --- a/sqldev/src/main/java/org/utplsql/sqldev/ui/runner/RunnerPanel.java +++ b/sqldev/src/main/java/org/utplsql/sqldev/ui/runner/RunnerPanel.java @@ -1417,7 +1417,12 @@ public void mouseClicked(final MouseEvent e) { testServerOutputTextPane.setContentType("text/html"); testServerOutputTextPane.setMinimumSize(TEXTPANE_DIM); testServerOutputTextPane.setPreferredSize(TEXTPANE_DIM); - testServerOutputTextPane.addHyperlinkListener(event -> openLink(event.getDescription())); + testServerOutputTextPane.addHyperlinkListener(event -> { + if (event.getEventType() == HyperlinkEvent.EventType.ACTIVATED) { + final String link = event.getDescription(); + openLink(link); + } + }); final JScrollPane testServerOutputScrollPane = new JScrollPane(testServerOutputTextPane); c.gridx = 0; c.gridy = 0; From e9a4d09571b36a6138d4bbd007902cb4a1fd3d47 Mon Sep 17 00:00:00 2001 From: Philipp Salvisberg Date: Sun, 3 Jan 2021 11:58:53 +0100 Subject: [PATCH 49/55] add alternative tree-table-view based on #65 to the RunnerPanel Columns in table and tree-table are shown in the same order. This means the warning and info indicators are shown now before the execution time column. All features that were available for the table-view are also available in the tree-table-view with one exception: It is not possible to sort a tree-table. Therefore sorting is disabled for the tree-table-view. Beside that, all features that are available in the context-menu work. Selection multiple nodes is supported as well. --- .../utplsql/sqldev/ui/runner/RunnerPanel.java | 711 ++++++++++++++---- 1 file changed, 564 insertions(+), 147 deletions(-) diff --git a/sqldev/src/main/java/org/utplsql/sqldev/ui/runner/RunnerPanel.java b/sqldev/src/main/java/org/utplsql/sqldev/ui/runner/RunnerPanel.java index a9d3a591..30a23f77 100644 --- a/sqldev/src/main/java/org/utplsql/sqldev/ui/runner/RunnerPanel.java +++ b/sqldev/src/main/java/org/utplsql/sqldev/ui/runner/RunnerPanel.java @@ -31,6 +31,7 @@ import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.logging.Logger; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.stream.Collectors; @@ -38,6 +39,7 @@ import javax.swing.BorderFactory; import javax.swing.Box; import javax.swing.DefaultComboBoxModel; +import javax.swing.Icon; import javax.swing.JCheckBoxMenuItem; import javax.swing.JComboBox; import javax.swing.JComponent; @@ -51,6 +53,7 @@ import javax.swing.JSplitPane; import javax.swing.JTabbedPane; import javax.swing.JTable; +import javax.swing.JTree; import javax.swing.LookAndFeel; import javax.swing.RepaintManager; import javax.swing.RowFilter; @@ -65,6 +68,8 @@ import javax.swing.table.TableCellRenderer; import javax.swing.table.TableColumn; import javax.swing.table.TableRowSorter; +import javax.swing.tree.DefaultTreeCellRenderer; +import javax.swing.tree.TreePath; import org.springframework.web.util.HtmlUtils; import org.utplsql.sqldev.coverage.CodeCoverageReporter; @@ -76,6 +81,8 @@ import org.utplsql.sqldev.model.preference.PreferenceModel; import org.utplsql.sqldev.model.runner.Counter; import org.utplsql.sqldev.model.runner.Expectation; +import org.utplsql.sqldev.model.runner.Item; +import org.utplsql.sqldev.model.runner.ItemNode; import org.utplsql.sqldev.model.runner.Run; import org.utplsql.sqldev.model.runner.Test; import org.utplsql.sqldev.parser.UtplsqlParser; @@ -86,8 +93,10 @@ import oracle.dbtools.raptor.controls.grid.DefaultDrillLink; import oracle.ide.config.Preferences; import oracle.javatools.ui.table.ToolbarButton; +import oracle.javatools.ui.treetable.JFastTreeTable; public class RunnerPanel { + private static final Logger logger = Logger.getLogger(RunnerPanel.class.getName()); private static final Color GREEN = new Color(0, 153, 0); private static final Color RED = new Color(153, 0, 0); private static final int INDICATOR_WIDTH = 20; @@ -114,7 +123,10 @@ public class RunnerPanel { private JCheckBoxMenuItem showInfoCounterCheckBoxMenuItem; private JProgressBar progressBar; private TestOverviewTableModel testOverviewTableModel; + private TestOverviewTreeTableModel testOverviewTreeTableModel; private JTable testOverviewTable; + private JFastTreeTable testOverviewTreeTable; + private JScrollPane testOverviewScrollPane; private JMenuItem testOverviewRunMenuItem; private JMenuItem testOverviewRunWorksheetMenuItem; private JMenuItem testOverviewDebugMenuItem; @@ -125,6 +137,7 @@ public class RunnerPanel { private JCheckBoxMenuItem showSuccessfulTestsCheckBoxMenuItem; private JCheckBoxMenuItem showDisabledTestsCheckBoxMenuItem; private JCheckBoxMenuItem syncDetailTabCheckBoxMenuItem; + private JCheckBoxMenuItem showSuitesCheckBoxMenuItem; private RunnerTextField testOwnerTextField; private RunnerTextField testPackageTextField; private RunnerTextField testProcedureTextField; @@ -153,14 +166,14 @@ public Component getTableCellRendererComponent(final JTable table, final Object label.setIcon(UtplsqlResources.getIcon("STATUS_ICON")); label.setHorizontalAlignment(JLabel.CENTER); } else if (col == 1) { + label.setIcon(null); + label.setHorizontalAlignment(JLabel.LEFT); + } else if (col == 2) { label.setIcon(UtplsqlResources.getIcon("WARNING_ICON")); label.setHorizontalAlignment(JLabel.CENTER); - } else if (col == 2) { + } else if (col == 3) { label.setIcon(UtplsqlResources.getIcon("INFO_ICON")); label.setHorizontalAlignment(JLabel.CENTER); - } else if (col == 3) { - label.setIcon(null); - label.setHorizontalAlignment(JLabel.LEFT); } else if (col == 4) { label.setIcon(null); label.setHorizontalAlignment(JLabel.RIGHT); @@ -169,6 +182,33 @@ public Component getTableCellRendererComponent(final JTable table, final Object } } + // used in multiple components, therefore an inner class + private static class TestTreeTableHeaderRenderer extends DefaultTableCellRenderer { + private static final long serialVersionUID = -1784754761029185815L; + + @Override + public Component getTableCellRendererComponent(final JTable table, final Object value, final boolean isSelected, + final boolean hasFocus, final int row, final int col) { + final TableCellRenderer renderer = table.getTableHeader().getDefaultRenderer(); + final JLabel label = ((JLabel) renderer.getTableCellRendererComponent(table, value, isSelected, hasFocus, + row, col)); + if (col == 0) { + label.setIcon(null); + label.setHorizontalAlignment(JLabel.LEFT); + } else if (col == 1) { + label.setIcon(UtplsqlResources.getIcon("WARNING_ICON")); + label.setHorizontalAlignment(JLabel.CENTER); + } else if (col == 2) { + label.setIcon(UtplsqlResources.getIcon("INFO_ICON")); + label.setHorizontalAlignment(JLabel.CENTER); + } else if (col == 3) { + label.setIcon(null); + label.setHorizontalAlignment(JLabel.RIGHT); + } + return label; + } + } + // used in multiple components, therefore an inner class private static class FailuresTableHeaderRenderer extends DefaultTableCellRenderer { private static final long serialVersionUID = 5059401447983514596L; @@ -257,12 +297,14 @@ private void applyShowWarningsCounter() { private void applyShowInfoCounter() { infoCounterValueLabel.getParent().setVisible(showInfoCounterCheckBoxMenuItem.isSelected()); } - + private void applyShowTestDescription() { + // table testOverviewTableModel.updateModel(showTestDescriptionCheckBoxMenuItem.isSelected()); - final TableColumn idColumn = testOverviewTable.getColumnModel().getColumn(3); - idColumn.setHeaderValue(testOverviewTableModel.getTestIdColumnName()); - testOverviewTable.getTableHeader().repaint(); + fixColumnHeader(testOverviewTableModel.getTestIdColumnName(), testOverviewTable, 1); + // tree-table + testOverviewTreeTableModel.updateModel(showTestDescriptionCheckBoxMenuItem.isSelected()); + fixColumnHeader(testOverviewTreeTableModel.getTreeColumnName(), testOverviewTreeTable, 0); } private void showColumn(final boolean show, TableColumn col) { @@ -280,35 +322,89 @@ private void showColumn(final boolean show, TableColumn col) { } private void applyShowWarningIndicator(final boolean show) { - showColumn(show, testOverviewTable.getColumnModel().getColumn(1)); + showColumn(show, testOverviewTable.getColumnModel().getColumn(2)); + showColumn(show, testOverviewTreeTable.getColumnModel().getColumn(1)); } private void applyShowInfoIndicator(final boolean show) { - showColumn(show, testOverviewTable.getColumnModel().getColumn(2)); + showColumn(show, testOverviewTable.getColumnModel().getColumn(3)); + showColumn(show, testOverviewTreeTable.getColumnModel().getColumn(2)); + } + + private void selectTestInTestOverviewTable(Test test) { + if (test != null) { + for (int i=0; i sorter = ((TableRowSorter) testOverviewTable.getRowSorter()); - final RowFilter filter = new RowFilter() { - @Override - public boolean include(final RowFilter.Entry entry) { - final Test test = entry.getModel().getTest((entry.getIdentifier()).intValue()); - final Counter counter = test.getCounter(); - if (counter != null) { - if (counter.getSuccess() > 0 && !showSuccessfulTests) { - return false; - } - if (counter.getDisabled() > 0 && !showDisabledTests) { - return false; - } + private void applyShowSuites() { + applyFilter(showSuccessfulTestsCheckBoxMenuItem.isSelected(), showDisabledTestsCheckBoxMenuItem.isSelected()); + if (showSuitesCheckBoxMenuItem.isSelected()) { + testOverviewScrollPane.setViewportView(testOverviewTreeTable); + // sync in tree-table - just first selected test + final int rowIndex = testOverviewTable.getSelectedRow(); + if (rowIndex != -1) { + final int row = testOverviewTable.convertRowIndexToModel(rowIndex); + final Test test = testOverviewTableModel.getTest(row); + ItemNode itemNode = testOverviewTreeTableModel.getItemNode(test.getId()); + if (itemNode != null) { + testOverviewTreeTable.getTree().setSelectionPath(new TreePath(itemNode.getPath())); } - return true; } - }; - sorter.setRowFilter(filter); + } else { + testOverviewScrollPane.setViewportView(testOverviewTable); + // sync in table - just first test in selected item + TreePath path = testOverviewTreeTable.getTree().getSelectionPath(); + if (path != null) { + ItemNode itemNode = (ItemNode) path.getLastPathComponent(); + Item item = (Item) itemNode.getUserObject(); + Test test; + if (item instanceof Test) { + test = (Test) item; + } else { + test = testOverviewTreeTableModel.getTestOf(itemNode); + } + selectTestInTestOverviewTable(test); + } + } + showSelectedRow(); } + private void applyFilter(final boolean showSuccessfulTests, final boolean showDisabledTests) { + if (!showSuitesCheckBoxMenuItem.isSelected()) { + // table + @SuppressWarnings("unchecked") + final TableRowSorter sorter = ((TableRowSorter) testOverviewTable.getRowSorter()); + final RowFilter filter = new RowFilter() { + @Override + public boolean include(final RowFilter.Entry entry) { + final Test test = entry.getModel().getTest((entry.getIdentifier()).intValue()); + final Counter counter = test.getCounter(); + if (counter != null) { + if (counter.getSuccess() > 0 && !showSuccessfulTests) { + return false; + } + if (counter.getDisabled() > 0 && !showDisabledTests) { + return false; + } + } + return true; + } + }; + sorter.setRowFilter(filter); + } else { + // tree-table + testOverviewTreeTableModel.updateModel(showSuccessfulTests, showDisabledTests); + expandAllNodes(testOverviewTreeTable.getTree(), 0); + } + } + private void openTest(final Test test) { final UtplsqlDao dao = new UtplsqlDao(DatabaseTools.getConnection(currentRun.getConnectionName())); final String source = dao.getSource(test.getOwnerName(), "PACKAGE", test.getObjectName().toUpperCase()).trim(); @@ -387,30 +483,46 @@ private void openEditor(final String owner, final String type, final String name "oracle.dbtools.raptor.controls.grid.DefaultDrillLink" }); drillLink.performDrill(); } + + private void syncDetailTab(Item item) { + int tabIndex = 0; + if (item != null) { + if (failuresTableModel.getRowCount() > 0) { + tabIndex = 1; + } else if (StringTools.isNotBlank(item.getErrorStack())) { + tabIndex = 2; + } else if (StringTools.isNotBlank(item.getWarnings())) { + tabIndex = 3; + } else if (StringTools.isNotBlank(item.getServerOutput())) { + tabIndex = 4; + } + } + testDetailTabbedPane.setSelectedIndex(tabIndex); + } private void syncDetailTab() { if (syncDetailTabCheckBoxMenuItem.isSelected()) { - final int rowIndex = testOverviewTable.getSelectedRow(); - if (rowIndex != -1) { - final int row = testOverviewTable.convertRowIndexToModel(rowIndex); - final Test test = testOverviewTableModel.getTest(row); - int tabIndex = 0; - if (test != null && test.getCounter() != null) { - if (test.getCounter().getFailure() != null && test.getCounter().getFailure() > 0) { - tabIndex = 1; - } else if (test.getCounter().getError() != null && test.getCounter().getError() > 0) { - tabIndex = 2; - } else if (test.getCounter().getWarning() != null && test.getCounter().getWarning() > 0) { - tabIndex = 3; - } else if (test.getServerOutput() != null && test.getServerOutput().length() > 0) { - tabIndex = 4; - } + if (!showSuitesCheckBoxMenuItem.isSelected()) { + // table + final int rowIndex = testOverviewTable.getSelectedRow(); + if (rowIndex != -1) { + final int row = testOverviewTable.convertRowIndexToModel(rowIndex); + final Test test = testOverviewTableModel.getTest(row); + syncDetailTab(test); + } + } else { + // tree-table + TreePath path = testOverviewTreeTable.getTree().getSelectionPath(); + if (path != null) { + ItemNode itemNode = (ItemNode) path.getLastPathComponent(); + Item item = (Item) itemNode.getUserObject(); + syncDetailTab(item); } - testDetailTabbedPane.setSelectedIndex(tabIndex); } + } } - + private PreferenceModel getPreferenceModel() { try { return PreferenceModel.getInstance(Preferences.getPreferences()); @@ -445,96 +557,203 @@ private void applyPreferences() { showDisabledTestsCheckBoxMenuItem.setSelected(preferences.isShowDisabledTests()); fixCheckBoxMenuItem(showDisabledTestsCheckBoxMenuItem); applyFilter(showSuccessfulTestsCheckBoxMenuItem.isSelected(), showDisabledTestsCheckBoxMenuItem.isSelected()); + testOverviewTreeTableModel.updateModel(showSuccessfulTestsCheckBoxMenuItem.isSelected(), showDisabledTestsCheckBoxMenuItem.isSelected()); fixCheckBoxMenuItem(showInfoIndicatorCheckBoxMenuItem); syncDetailTabCheckBoxMenuItem.setSelected(preferences.isSyncDetailTab()); fixCheckBoxMenuItem(syncDetailTabCheckBoxMenuItem); + showSuitesCheckBoxMenuItem.setSelected(preferences.isShowSuites()); + fixCheckBoxMenuItem(showSuitesCheckBoxMenuItem); + applyShowSuites(); useSmartTimes = preferences.isUseSmartTimes(); } public void setModel(final Run run) { + assert run != null && run.getReporterId() != null : "Cannot run without reporterId"; + setModel(run, false); + } + + private void setModel(final Run run, boolean force) { runs.put(run.getReporterId(), run); refreshRunsComboBox(); - setCurrentRun(run); + setCurrentRun(run, force); + } + + private void expandAllNodes(JTree tree, int startingRow) { + int rowCount = tree.getRowCount(); + for (int i = startingRow; i < rowCount; i++) { + tree.expandRow(i); + } + // recursive call until all nodes are expanded + if (tree.getRowCount() != rowCount) { + expandAllNodes(tree, rowCount); + } + } + + private void fixColumnHeader(String columnHeader, JTable table, int columnIndex) { + final TableColumn column = table.getColumnModel().getColumn(columnIndex); + if (!column.getHeaderValue().equals(columnHeader)) { + column.setHeaderValue(columnHeader); + table.getTableHeader().repaint(); + } } - private void setCurrentRun(final Run run) { - if (run != currentRun) { - currentRun = run; - testOverviewTableModel.setModel(run.getTests(), showTestDescriptionCheckBoxMenuItem.isSelected(), - useSmartTimes); - final String header = testOverviewTableModel.getTimeColumnName(); - final TableColumn timeColumn = testOverviewTable.getColumnModel().getColumn(4); - if (!timeColumn.getHeaderValue().equals(header)) { - timeColumn.setHeaderValue(header); - testOverviewTable.getTableHeader().repaint(); + /** + * Sets the current run. This can be forced with the force parameter. + * + * However, as long as a run is in progress you will technically not be able + * to switch to another run because a subsequent {@link #update(String)} call will + * switch back to the currently executing run. This behavior is intentional. + */ + private void setCurrentRun(final Run run, boolean force) { + boolean switched = false; + // Multiple, parallel runs are supported. Ensure that the runner does not switch back and forth. + if (force // choosing the run via the combo box + || currentRun == null // the very first run + || currentRun.getEndTime() != null // the current run is not running + || run.getTotalNumberOfTests() == -1) // when initializing a new run (newest wins once) + { + if (run != currentRun) { + currentRun = run; + // table + testOverviewTableModel.setModel(run.getTests(), showTestDescriptionCheckBoxMenuItem.isSelected(), + useSmartTimes); + fixColumnHeader(testOverviewTableModel.getTimeColumnName(), testOverviewTable, 4); + // tree-table + testOverviewTreeTableModel.setModel(run, showTestDescriptionCheckBoxMenuItem.isSelected(), useSmartTimes, + showSuccessfulTestsCheckBoxMenuItem.isSelected(), showDisabledTestsCheckBoxMenuItem.isSelected()); + fixColumnHeader(testOverviewTreeTableModel.getTimeColumnName(), testOverviewTreeTable, 3); + testOverviewTreeTableModel.reload(); + // common + resetDerived(); + final ComboBoxItem item = new ComboBoxItem<>(currentRun.getReporterId(), + currentRun.getName()); + runComboBox.setSelectedItem(item); + elapsedTimeTimer.start(); + switched = true; } - resetDerived(); + } + if (switched || !testOverviewTreeTableModel.isComplete()) { + // table + testOverviewTableModel.fireTableDataChanged(); + // tree-table + testOverviewTreeTableModel.updateModel(); + testOverviewTreeTableModel.reload(); + expandAllNodes(testOverviewTreeTable.getTree(), 0); + } + // ensure that the runComboBox shows always the currentRun + @SuppressWarnings("unchecked") + final ComboBoxItem currentItem = (ComboBoxItem) runComboBox.getSelectedItem(); + if (currentItem != null && !currentItem.getKey().equals(currentRun.getReporterId())) { final ComboBoxItem item = new ComboBoxItem<>(currentRun.getReporterId(), currentRun.getName()); runComboBox.setSelectedItem(item); - elapsedTimeTimer.start(); } } private void enableOrDisableStopButton() { stopButton.setEnabled(currentRun.getEndTime() == null); } - + public synchronized void update(final String reporterId) { - enableOrDisableStopButton(); - setCurrentRun(runs.get(reporterId)); - final int row = currentRun.getCurrentTestNumber() - 1; - final CharSequence header = testOverviewTableModel.getTestIdColumnName(); - final TableColumn idColumn = testOverviewTable.getColumnModel().getColumn(3); - if (!idColumn.getHeaderValue().equals(header)) { - idColumn.setHeaderValue(header); - testOverviewTable.getTableHeader().repaint(); - } - if (row < 0) { - testOverviewTableModel.fireTableDataChanged(); - } else { - if (testOverviewTableModel.getRowCount() > row) { - final Rectangle positionOfCurrentTest = testOverviewTable - .getCellRect(testOverviewTable.convertRowIndexToView(row), 0, true); - testOverviewTable.scrollRectToVisible(positionOfCurrentTest); - testOverviewTableModel.fireTableRowsUpdated(row, row); - SystemTools.sleep(5); - if (!showSuccessfulTestsCheckBoxMenuItem.isSelected() - || !showDisabledTestsCheckBoxMenuItem.isSelected()) { - applyFilter(showSuccessfulTestsCheckBoxMenuItem.isSelected(), - showDisabledTestsCheckBoxMenuItem.isSelected()); + update(reporterId, null); + } + + public synchronized void update(final String reporterId, Item item) { + try { + setCurrentRun(runs.get(reporterId), false); + if (!currentRun.getReporterId().equals(reporterId)) { + // this run is currently not active in the runner + return; + } + enableOrDisableStopButton(); + fixColumnHeader(testOverviewTableModel.getTestIdColumnName(), testOverviewTable, 1); + fixColumnHeader(testOverviewTreeTableModel.getTreeColumnName(), testOverviewTreeTable, 0); + if (!showSuitesCheckBoxMenuItem.isSelected()) { + // table + if (item instanceof Test) { + final int row = ((Test) item).getTestNumber() - 1; + if (row >= 0 && testOverviewTableModel.getRowCount() > row) { + final Rectangle positionOfCurrentTest = testOverviewTable + .getCellRect(testOverviewTable.convertRowIndexToView(row), 0, true); + testOverviewTable.scrollRectToVisible(positionOfCurrentTest); + testOverviewTableModel.fireTableRowsUpdated(row, row); + SystemTools.sleep(5); + if (!showSuccessfulTestsCheckBoxMenuItem.isSelected() + || !showDisabledTestsCheckBoxMenuItem.isSelected()) { + applyFilter(showSuccessfulTestsCheckBoxMenuItem.isSelected(), + showDisabledTestsCheckBoxMenuItem.isSelected()); + } + testOverviewTable.scrollRectToVisible(positionOfCurrentTest); + } + } + } + if (showSuitesCheckBoxMenuItem.isSelected()) { + // tree-table + if (item != null && testOverviewTreeTableModel.isComplete()) { + if (item instanceof Test) { + final Test test = (Test) item; + int treeRow = testOverviewTreeTableModel.getRow(test.getId()); + if (treeRow >= 0) { + final Rectangle positionOfCurrentTestInTree = testOverviewTreeTable + .getCellRect(testOverviewTreeTable.convertRowIndexToView(treeRow), 0, true); + testOverviewTreeTable.scrollRectToVisible(positionOfCurrentTestInTree); + testOverviewTreeTableModel.updateModel(test.getId()); + } + } else { + testOverviewTreeTableModel.updateModel(item.getId()); + } } - testOverviewTable.scrollRectToVisible(positionOfCurrentTest); } - } - statusLabel.setText(currentRun.getStatus()); - testCounterValueLabel.setText(currentRun.getTotalNumberOfCompletedTests() - + (currentRun.getTotalNumberOfTests() >= 0 ? "/" + currentRun.getTotalNumberOfTests() : "")); - errorCounterValueLabel.setText(String.valueOf(currentRun.getCounter().getError())); - failureCounterValueLabel.setText(String.valueOf(currentRun.getCounter().getFailure())); - disabledCounterValueLabel.setText(String.valueOf(currentRun.getCounter().getDisabled())); - warningsCounterValueLabel.setText(String.valueOf(currentRun.getCounter().getWarning())); - infoCounterValueLabel.setText(String.valueOf(currentRun.getInfoCount())); - if (currentRun.getTotalNumberOfTests() == 0) { - progressBar.setValue(100); - } else { - progressBar - .setValue(100 * currentRun.getTotalNumberOfCompletedTests() / currentRun.getTotalNumberOfTests()); - } - if (currentRun.getCounter().getError() > 0 || (currentRun.getCounter().getFailure() > 0)) { - progressBar.setForeground(RED); - } else { - progressBar.setForeground(GREEN); + statusLabel.setText(currentRun.getStatus()); + testCounterValueLabel.setText(currentRun.getTotalNumberOfCompletedTests() + + (currentRun.getTotalNumberOfTests() >= 0 ? "/" + currentRun.getTotalNumberOfTests() : "")); + errorCounterValueLabel.setText(String.valueOf(currentRun.getCounter().getError())); + failureCounterValueLabel.setText(String.valueOf(currentRun.getCounter().getFailure())); + disabledCounterValueLabel.setText(String.valueOf(currentRun.getCounter().getDisabled())); + warningsCounterValueLabel.setText(String.valueOf(currentRun.getCounter().getWarning())); + infoCounterValueLabel.setText(String.valueOf(currentRun.getInfoCount())); + if (currentRun.getTotalNumberOfTests() == 0) { + progressBar.setValue(100); + } else { + progressBar + .setValue(100 * currentRun.getTotalNumberOfCompletedTests() / currentRun.getTotalNumberOfTests()); + } + if (currentRun.getCounter().getError() > 0 || (currentRun.getCounter().getFailure() > 0)) { + progressBar.setForeground(RED); + } else { + progressBar.setForeground(GREEN); + } + } catch (Exception e) { + logger.warning(() -> "Ignored exception " + (e.getMessage() == null ? e.getClass().getSimpleName() + : e.getMessage()) + " while processing reporterId " + reporterId + (item == null ? "." + : " for item id " + item.getId() + ".")); } } private ArrayList getPathListFromSelectedTests() { final ArrayList pathList = new ArrayList<>(); - for (final int rowIndex : testOverviewTable.getSelectedRows()) { - final int row = testOverviewTable.convertRowIndexToModel(rowIndex); - final Test test = testOverviewTableModel.getTest(row); - final String path = test.getOwnerName() + "." + test.getObjectName() + "." + test.getProcedureName(); - pathList.add(path); + if (!showSuitesCheckBoxMenuItem.isSelected()) { + // table + for (final int rowIndex : testOverviewTable.getSelectedRows()) { + final int row = testOverviewTable.convertRowIndexToModel(rowIndex); + final Test test = testOverviewTableModel.getTest(row); + final String path = test.getOwnerName() + "." + test.getObjectName() + "." + test.getProcedureName(); + pathList.add(path); + } + } else { + // tree-table + TreePath[] selectionPaths = testOverviewTreeTable.getTree().getSelectionPaths(); + if (selectionPaths != null) { + for (final TreePath path : selectionPaths) { + final ItemNode node = (ItemNode) path.getLastPathComponent(); + if (node.getOwnerName().equals("***")) { + // process children, which must be owners only. + pathList.addAll(node.getOwners()); + } else { + pathList.add(node.getOwnerName() + ":" + node.getId()); + } + } + } } return pathList; } @@ -561,6 +780,53 @@ private void fixCheckBoxMenuItem(final JCheckBoxMenuItem item) { } } + private void showFirstRow() { + // table + final Rectangle positionOfCurrentTest = testOverviewTable + .getCellRect(testOverviewTable.convertRowIndexToView(0), 0, true); + testOverviewTable.scrollRectToVisible(positionOfCurrentTest); + // tree-table + final Rectangle positionOfCurrentTestInTree = testOverviewTreeTable + .getCellRect(testOverviewTreeTable.convertRowIndexToView(0), 0, true); + testOverviewTreeTable.scrollRectToVisible(positionOfCurrentTestInTree); + } + + private void showSelectedRow() { + if (!showSuitesCheckBoxMenuItem.isSelected()) { + // table + final int rowIndex = testOverviewTable.getSelectedRow(); + final int row = testOverviewTable.convertRowIndexToModel(rowIndex); + final Rectangle position = testOverviewTable + .getCellRect(testOverviewTable.convertRowIndexToView(row), 0, true); + testOverviewTable.scrollRectToVisible(position); + } else { + // tree-table + TreePath path = testOverviewTreeTable.getTree().getSelectionPath(); + if (path != null) { + ItemNode itemNode = (ItemNode) path.getLastPathComponent(); + Item item = (Item) itemNode.getUserObject(); + int treeRow = testOverviewTreeTableModel.getRow(item.getId()); + if (treeRow >= 0) { + final Rectangle position = testOverviewTreeTable + .getCellRect(testOverviewTreeTable.convertRowIndexToView(treeRow), 0, true); + testOverviewTreeTable.scrollRectToVisible(position); + } + } + } + } + + private void refreshAction() { + // table + testOverviewTableModel.fireTableDataChanged(); + // tree-table + testOverviewTreeTableModel.updateModel(); + expandAllNodes(testOverviewTreeTable.getTree(), 0); + // common + showFirstRow(); + resetDerived(); + testDetailTabbedPane.setSelectedIndex(0); + } + private void comboBoxAction() { if (currentRun != null) { @SuppressWarnings("unchecked") @@ -569,7 +835,7 @@ private void comboBoxAction() { if (currentRun.getReporterId() != null && comboBoxItem != null) { if (!currentRun.getReporterId().equals(comboBoxItem.getKey())) { update(comboBoxItem.getKey()); - testDetailTabbedPane.setSelectedIndex(0); + refreshAction(); } } } @@ -666,12 +932,26 @@ private void runCodeCoverage(boolean selectedOnly) { final HashSet testPackages = new HashSet<>(); if (selectedOnly) { // pathList and unique testPackages based on selected tests - for (final int rowIndex : testOverviewTable.getSelectedRows()) { - final int row = testOverviewTable.convertRowIndexToModel(rowIndex); - final Test test = testOverviewTableModel.getTest(row); - final String path = test.getOwnerName() + "." + test.getObjectName() + "." + test.getProcedureName(); - pathList.add(path); - testPackages.add(test.getOwnerName() + "." + test.getObjectName()); + if (!showSuitesCheckBoxMenuItem.isSelected()) { + // table + for (final int rowIndex : testOverviewTable.getSelectedRows()) { + final int row = testOverviewTable.convertRowIndexToModel(rowIndex); + final Test test = testOverviewTableModel.getTest(row); + final String path = test.getOwnerName() + "." + test.getObjectName() + "." + test.getProcedureName(); + pathList.add(path); + testPackages.add(test.getOwnerName() + "." + test.getObjectName()); + } + } else { + // tree-table + TreePath[] selectionPaths = testOverviewTreeTable.getTree().getSelectionPaths(); + if (selectionPaths != null) { + for (final TreePath path : selectionPaths) { + final ItemNode node = (ItemNode) path.getLastPathComponent(); + final Item item = (Item) node.getUserObject(); + pathList.add(":" + item.getId()); + testPackages.addAll(node.getTestPackages()); + } + } } } else { // pathList and unique testPackages based on currentRun @@ -700,12 +980,11 @@ private void fixCountersAndUpdate() { List incompleteTests = currentRun.getTests().values().stream() .filter(it -> it.getEndTime() == null && !it.isDisabled()).collect(Collectors.toList()); if (!incompleteTests.isEmpty()) { - final Double now = (double) System.currentTimeMillis(); - final String sysdate = UtplsqlRunner.getSysdate(); + final String sysdate = StringTools.getSysdate(); for (Test test : incompleteTests) { // fix incomplete tests, see https://github.com/utPLSQL/utPLSQL-SQLDeveloper/issues/107 test.setEndTime(sysdate); - test.setExecutionTime((now - currentRun.getStart()) / 1000); + test.setExecutionTime(StringTools.elapsedTime(test.getStartTime(), test.getEndTime())); test.setErrorStack(UtplsqlResources.getString("RUNNER_MISSING_TEST_RESULT_MESSAGE")); test.getCounter().setError(1); } @@ -733,9 +1012,8 @@ private void fixCountersAndUpdate() { currentRun.getCounter().setWarning(currentRun.getCounter().getWarning() + test.getCounter().getWarning()); } // terminate run - currentRun.setEndTime(UtplsqlRunner.getSysdate()); - double now = (double) System.currentTimeMillis(); - currentRun.setExecutionTime((now - currentRun.getStart()) / 1000); + currentRun.setEndTime(StringTools.getSysdate()); + currentRun.setExecutionTime(StringTools.elapsedTime(currentRun.getStartTime(), currentRun.getEndTime())); currentRun.setCurrentTestNumber(0); // update run in GUI update(currentRun.getReporterId()); @@ -751,14 +1029,19 @@ private void initializeGUI() { final GradientToolbar toolbar = new GradientToolbar(); toolbar.setFloatable(false); final EmptyBorder buttonBorder = new EmptyBorder(new Insets(2, 4, 2, 4)); // insets: top, left, bottom, right + final ToolbarButton showSuitesButton = new ToolbarButton(UtplsqlResources.getIcon("PACKAGE_FOLDER_ICON")); + showSuitesButton.setToolTipText(UtplsqlResources.getString("RUNNER_SHOW_SUITES_BUTTON")); + showSuitesButton.setBorder(buttonBorder); + showSuitesButton.addActionListener(event -> { + showSuitesCheckBoxMenuItem.setSelected(!showSuitesCheckBoxMenuItem.isSelected()); + applyShowSuites(); + fixCheckBoxMenuItem(showSuitesCheckBoxMenuItem); + }); + toolbar.add(showSuitesButton); final ToolbarButton refreshButton = new ToolbarButton(UtplsqlResources.getIcon("REFRESH_ICON")); refreshButton.setToolTipText(UtplsqlResources.getString("RUNNER_REFRESH_TOOLTIP")); refreshButton.setBorder(buttonBorder); - refreshButton.addActionListener(event -> { - resetDerived(); - testDetailTabbedPane.setSelectedIndex(0); - testOverviewTableModel.fireTableDataChanged(); - }); + refreshButton.addActionListener(event -> refreshAction()); toolbar.add(refreshButton); final ToolbarButton rerunButton = new ToolbarButton(UtplsqlResources.getIcon("RUN_ICON")); rerunButton.setToolTipText(UtplsqlResources.getString("RUNNER_RERUN_TOOLTIP")); @@ -798,15 +1081,35 @@ private void initializeGUI() { if (currentRun.getConsumerConn() != null) { // Aborts JDBC Connection. Connection might still run in the background. That's expected. DatabaseTools.abortConnection(currentRun.getConsumerConn()); - List notCompletedTests = currentRun.getTests().values().stream() - .filter(it -> it.getTestNumber() >= currentRun.getCurrentTestNumber() && it.getEndTime() == null && !it.isDisabled()) + List notCompletedItems = currentRun.getItemNodes().values().stream() + .map(node -> (Item) node.getUserObject()) + .filter(item -> item.getEndTime() == null && !(item instanceof Test && ((Test) item).isDisabled())) .collect(Collectors.toList()); - for (Test test : notCompletedTests) { - test.setDisabled(true); - test.getCounter().setDisabled(1); - test.getCounter().setWarning(1); - test.setWarnings(UtplsqlResources.getString("RUNNER_STOP_TEST_MESSAGE")); - test.setStartTime(null); + String sysdate = StringTools.getSysdate(); + for (Item item : notCompletedItems) { + item.getCounter().setDisabled(1); + if (item instanceof Test) { + Test test = (Test) item; + test.setDisabled(true); + test.getCounter().setWarning(1); + test.setWarnings(UtplsqlResources.getString("RUNNER_STOP_TEST_MESSAGE")); + test.setStartTime(null); + } else { + if (item.getStartTime() != null) { + item.setEndTime(sysdate); + if (testOverviewTreeTableModel.ItemNodeHasErrors(item.getId())) { + item.getCounter().setError(1); + } + if (testOverviewTreeTableModel.ItemNodeHasFailedTests(item.getId())) { + item.getCounter().setFailure(1); + } + if (testOverviewTreeTableModel.ItemNodeHasSuccessfulTests(item.getId())) { + item.getCounter().setSuccess(1); + } + item.setExecutionTime(StringTools.elapsedTime(item.getStartTime(), item.getEndTime())); + } + } + testOverviewTreeTableModel.nodeChanged(item.getId()); } currentRun.setStatus(UtplsqlResources.getString("RUNNER_STOP_RUN_MESSAGE")); fixCountersAndUpdate(); @@ -829,7 +1132,7 @@ private void initializeGUI() { final Run run = currentRun; runs.clear(); currentRun = null; - setModel(run); + setModel(run, true); update(run.getReporterId()); }); toolbar.add(clearButton); @@ -952,7 +1255,7 @@ private void initializeGUI() { fixCheckBoxMenuItem(showInfoCounterCheckBoxMenuItem); }); countersPopupMenu.add(showInfoCounterCheckBoxMenuItem); - counterPanel.setComponentPopupMenu(countersPopupMenu); + basePanel.setComponentPopupMenu(countersPopupMenu); // Progress bar progressBar = new JProgressBar(); @@ -973,7 +1276,7 @@ private void initializeGUI() { c.weighty = 0; basePanel.add(progressBar, c); - // Test overview + // Test overview (table variant) testOverviewTableModel = new TestOverviewTableModel(); testOverviewTable = new JTable(testOverviewTableModel); testOverviewTable.getTableHeader().setReorderingAllowed(false); @@ -989,7 +1292,7 @@ private void initializeGUI() { testOwnerTextField.setText(test.getOwnerName()); testPackageTextField.setText(test.getObjectName()); testProcedureTextField.setText(test.getProcedureName()); - testDescriptionTextArea.setText(test.getDescription() != null ? test.getDescription().trim() : null); + testDescriptionTextArea.setText(StringTools.trim(test.getDescription())); testIdTextArea.setText(test.getId()); testStartTextField.setText(StringTools.formatDateTime(test.getStartTime())); failuresTableModel.setModel(test.getFailedExpectations()); @@ -998,16 +1301,15 @@ private void initializeGUI() { if (test.getFailedExpectations() != null && !test.getFailedExpectations().isEmpty()) { failuresTable.setRowSelectionInterval(0, 0); } - testErrorStackTextPane - .setText(getHtml(test.getErrorStack() != null ? test.getErrorStack().trim() : null)); - testWarningsTextPane.setText(getHtml(test.getWarnings() != null ? test.getWarnings().trim() : null)); - testServerOutputTextPane - .setText(getHtml(test.getServerOutput() != null ? test.getServerOutput().trim() : null)); + testErrorStackTextPane.setText(getHtml(StringTools.trim(test.getErrorStack()))); + testWarningsTextPane.setText(getHtml(StringTools.trim(test.getWarnings()))); + testServerOutputTextPane.setText(getHtml(StringTools.trim(test.getServerOutput()))); syncDetailTab(); testOverviewRunMenuItem.setEnabled(true); testOverviewRunWorksheetMenuItem.setEnabled(true); testOverviewDebugMenuItem.setEnabled(true); testOverviewCodeCoverageMenuItem.setEnabled(true); + } }); testOverviewTable.addMouseListener(new MouseAdapter() { @@ -1029,23 +1331,23 @@ public void mouseClicked(final MouseEvent e) { overviewTableStatus.setPreferredWidth(INDICATOR_WIDTH); overviewTableStatus.setMaxWidth(INDICATOR_WIDTH); overviewTableStatus.setHeaderRenderer(testTableHeaderRenderer); - final TableColumn overviewTableWarning = testOverviewTable.getColumnModel().getColumn(1); + final TableColumn overviewTableId = testOverviewTable.getColumnModel().getColumn(1); + overviewTableId.setHeaderRenderer(testTableHeaderRenderer); + final TableColumn overviewTableWarning = testOverviewTable.getColumnModel().getColumn(2); overviewTableWarning.setMinWidth(INDICATOR_WIDTH); overviewTableWarning.setPreferredWidth(INDICATOR_WIDTH); overviewTableWarning.setMaxWidth(INDICATOR_WIDTH); overviewTableWarning.setHeaderRenderer(testTableHeaderRenderer); - final TableColumn overviewTableInfo = testOverviewTable.getColumnModel().getColumn(2); + final TableColumn overviewTableInfo = testOverviewTable.getColumnModel().getColumn(3); overviewTableInfo.setMinWidth(INDICATOR_WIDTH); overviewTableInfo.setPreferredWidth(INDICATOR_WIDTH); overviewTableInfo.setMaxWidth(INDICATOR_WIDTH); overviewTableInfo.setHeaderRenderer(testTableHeaderRenderer); - final TableColumn overviewTableId = testOverviewTable.getColumnModel().getColumn(3); - overviewTableId.setHeaderRenderer(testTableHeaderRenderer); final TableColumn overviewTableTime = testOverviewTable.getColumnModel().getColumn(4); overviewTableTime.setPreferredWidth(60); overviewTableTime.setMaxWidth(100); overviewTableTime.setHeaderRenderer(testTableHeaderRenderer); - overviewTableTime.setCellRenderer(new DefaultTableCellRenderer() { + final DefaultTableCellRenderer timeColumnRenderer = new DefaultTableCellRenderer() { private static final long serialVersionUID = 7720067427609773267L; { setHorizontalAlignment(JLabel.RIGHT); @@ -1057,8 +1359,113 @@ public Component getTableCellRendererComponent(final JTable table, final Object final SmartTime smartTime = new SmartTime(((Double) value), useSmartTimes); return super.getTableCellRendererComponent(table, smartTime.toString(), isSelected, hasFocus, row, col); } + }; + overviewTableTime.setCellRenderer(timeColumnRenderer); + + // Test overview (tree-table variant) + testOverviewTreeTableModel = new TestOverviewTreeTableModel(); + testOverviewTreeTable = new JFastTreeTable(testOverviewTreeTableModel); + testOverviewTreeTable.setShowGrid(false); // first column is the tree and is not affected in SQLDev, true does not look good + testOverviewTreeTable.getTableHeader().setReorderingAllowed(false); + testOverviewTreeTable.setAutoCreateRowSorter(false); + testOverviewTreeTable.setRowHeight(OVERVIEW_TABLE_ROW_HEIGHT); + testOverviewTreeTable.getTableHeader().setPreferredSize( + new Dimension(testOverviewTreeTable.getTableHeader().getPreferredSize().width, OVERVIEW_TABLE_ROW_HEIGHT)); + testOverviewTreeTable.getTree().setRootVisible(false); + // calling setDoubleBuffered on tree leads to suppressed painting + RepaintManager.currentManager(testOverviewTreeTable).setDoubleBufferingEnabled(true); + testOverviewTreeTable.getTree().getSelectionModel().addTreeSelectionListener(event -> { + final TreePath path = event.getPath(); + if (path != null) { + final ItemNode node = (ItemNode) path.getLastPathComponent(); + final Item item = (Item) node.getUserObject(); + testOwnerTextField.setText(node.getOwnerName()); + testPackageTextField.setText(node.getPackageName()); + testProcedureTextField.setText(node.getProcedureName()); + testDescriptionTextArea.setText(node.getDescription()); + testIdTextArea.setText(node.getId()); + testStartTextField.setText(StringTools.formatDateTime(item.getStartTime())); + if (item instanceof Test) { + Test test = (Test) item; + failuresTableModel.setModel(test.getFailedExpectations()); + failuresTableModel.fireTableDataChanged(); + testFailureMessageTextPane.setText(null); + if (test.getFailedExpectations() != null && !test.getFailedExpectations().isEmpty()) { + failuresTable.setRowSelectionInterval(0, 0); + } + } else { + failuresTableModel.setModel(null); + failuresTableModel.fireTableDataChanged(); + testFailureMessageTextPane.setText(null); + + } + testErrorStackTextPane.setText(getHtml(StringTools.trim(item.getErrorStack()))); + testWarningsTextPane.setText(getHtml(StringTools.trim(item.getWarnings()))); + testServerOutputTextPane.setText(getHtml(StringTools.trim(item.getServerOutput()))); + syncDetailTab(); + testOverviewRunMenuItem.setEnabled(true); + testOverviewRunWorksheetMenuItem.setEnabled(true); + testOverviewDebugMenuItem.setEnabled(true); + testOverviewCodeCoverageMenuItem.setEnabled(true); + } + }); + + final JTree overviewTreeTableName = testOverviewTreeTable.getTree(); + overviewTreeTableName.setCellRenderer(new DefaultTreeCellRenderer() { + private static final long serialVersionUID = 580783625740405285L; + + @Override + public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, + boolean leaf, int row, boolean hasFocus) { + this.hasFocus = hasFocus; + final ItemNode node = (ItemNode) value; + setText((String) testOverviewTreeTableModel.getValueAt(value, 0)); + + Color foregroundColor; + if (selected) { + foregroundColor = getTextSelectionColor(); + } else { + foregroundColor = getTextNonSelectionColor(); + } + setForeground(foregroundColor); + + Icon icon = node.getStatusIcon(); + if (icon == null) { + if (leaf) { + icon = getLeafIcon(); + } else if (expanded) { + icon = getOpenIcon(); + } else { + icon = getClosedIcon(); + } + } + setIcon(icon); + this.selected = selected; + return this; + } }); - final JScrollPane testOverviewScrollPane = new JScrollPane(testOverviewTable); + final TestTreeTableHeaderRenderer testTreeTableHeaderRenderer = new TestTreeTableHeaderRenderer(); + final TableColumn overviewTreeTableSuite = testOverviewTreeTable.getColumnModel().getColumn(0); + overviewTreeTableSuite.setHeaderRenderer(testTreeTableHeaderRenderer); + final TableColumn overviewTreeTableWarning = testOverviewTreeTable.getColumnModel().getColumn(1); + overviewTreeTableWarning.setMinWidth(INDICATOR_WIDTH); + overviewTreeTableWarning.setPreferredWidth(INDICATOR_WIDTH); + overviewTreeTableWarning.setMaxWidth(INDICATOR_WIDTH); + overviewTreeTableWarning.setHeaderRenderer(testTreeTableHeaderRenderer); + final TableColumn overviewTreeTableInfo = testOverviewTreeTable.getColumnModel().getColumn(2); + overviewTreeTableInfo.setMinWidth(INDICATOR_WIDTH); + overviewTreeTableInfo.setPreferredWidth(INDICATOR_WIDTH); + overviewTreeTableInfo.setMaxWidth(INDICATOR_WIDTH); + overviewTreeTableInfo.setHeaderRenderer(testTreeTableHeaderRenderer); + final TableColumn overviewTreeTableTime = testOverviewTreeTable.getColumnModel().getColumn(3); + overviewTreeTableTime.setPreferredWidth(60); + overviewTreeTableTime.setMaxWidth(100); + overviewTreeTableTime.setHeaderRenderer(testTreeTableHeaderRenderer); + overviewTreeTableTime.setCellRenderer(timeColumnRenderer); + + // Scroll pane for test overview containing either the tree-table or table variant, populated in applyPreferences() + testOverviewScrollPane = new JScrollPane(); + RepaintManager.currentManager(testOverviewScrollPane).setDoubleBufferingEnabled(true); // Context menu for test overview final JPopupMenu testOverviewPopupMenu = new JPopupMenu(); @@ -1124,9 +1531,19 @@ public Component getTableCellRendererComponent(final JTable table, final Object syncDetailTab(); fixCheckBoxMenuItem(syncDetailTabCheckBoxMenuItem); }); + testOverviewPopupMenu.add(new JSeparator()); testOverviewPopupMenu.add(syncDetailTabCheckBoxMenuItem); + showSuitesCheckBoxMenuItem = new JCheckBoxMenuItem(UtplsqlResources.getString("PREF_SHOW_SUITES_LABEL").replace("?", ""), true); + showSuitesCheckBoxMenuItem.addActionListener(event -> { + applyShowSuites(); + fixCheckBoxMenuItem(showSuitesCheckBoxMenuItem); + }); + testOverviewPopupMenu.add(showSuitesCheckBoxMenuItem); testOverviewTable.setComponentPopupMenu(testOverviewPopupMenu); testOverviewTable.getTableHeader().setComponentPopupMenu(testOverviewPopupMenu); + testOverviewTreeTable.setComponentPopupMenu(testOverviewPopupMenu); + testOverviewTreeTable.getTableHeader().setComponentPopupMenu(testOverviewPopupMenu); + testOverviewScrollPane.setComponentPopupMenu(testOverviewPopupMenu); // Test tabbed pane (Test Properties) final ScrollablePanel testInfoPanel = new ScrollablePanel(); From ce56ec3c2cac584a15a6044be2d82c0751363d6e Mon Sep 17 00:00:00 2001 From: Philipp Salvisberg Date: Sun, 3 Jan 2021 14:32:51 +0100 Subject: [PATCH 50/55] ensure that the test runs in all environments --- .../src/main/java/org/utplsql/sqldev/ui/runner/SmartTime.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sqldev/src/main/java/org/utplsql/sqldev/ui/runner/SmartTime.java b/sqldev/src/main/java/org/utplsql/sqldev/ui/runner/SmartTime.java index 69ea1500..fc4b2812 100644 --- a/sqldev/src/main/java/org/utplsql/sqldev/ui/runner/SmartTime.java +++ b/sqldev/src/main/java/org/utplsql/sqldev/ui/runner/SmartTime.java @@ -16,6 +16,7 @@ package org.utplsql.sqldev.ui.runner; import java.text.DecimalFormat; +import java.util.Locale; public class SmartTime { private Double seconds; @@ -45,6 +46,7 @@ public Double getSeconds() { @Override public String toString() { + Locale.setDefault(new Locale("en", "US")); String ret; if (seconds == null) { ret = null; From 5d6d6bc6d65cba938b45fbf72378cd893be359ed Mon Sep 17 00:00:00 2001 From: Philipp Salvisberg Date: Sun, 3 Jan 2021 14:33:59 +0100 Subject: [PATCH 51/55] add ItemNode.createNonOverlappingSet --- .../utplsql/sqldev/model/runner/ItemNode.java | 46 ++++++++++++++++++- 1 file changed, 45 insertions(+), 1 deletion(-) diff --git a/sqldev/src/main/java/org/utplsql/sqldev/model/runner/ItemNode.java b/sqldev/src/main/java/org/utplsql/sqldev/model/runner/ItemNode.java index 51196e54..591e1b3f 100644 --- a/sqldev/src/main/java/org/utplsql/sqldev/model/runner/ItemNode.java +++ b/sqldev/src/main/java/org/utplsql/sqldev/model/runner/ItemNode.java @@ -15,8 +15,11 @@ */ package org.utplsql.sqldev.model.runner; +import java.util.ArrayList; +import java.util.Collections; import java.util.Enumeration; import java.util.HashSet; +import java.util.List; import java.util.Set; import javax.swing.Icon; @@ -24,13 +27,18 @@ import org.utplsql.sqldev.resources.UtplsqlResources; -public class ItemNode extends DefaultMutableTreeNode { +public class ItemNode extends DefaultMutableTreeNode implements Comparable { private static final long serialVersionUID = -4053143673822661743L; public ItemNode(Item userObject) { super(userObject, userObject instanceof Suite); } + + @Override + public int compareTo(ItemNode other) { + return getId().compareTo(other.getId()); + } public String getId() { return ((Item) getUserObject()).getId(); @@ -153,5 +161,41 @@ public Icon getWarningIcon() { public Icon getInfoIcon() { return ((Item) getUserObject()).getInfoIcon(); } + + /** + * Calculates non-overlapping items. + * + * This can be used to build a list of suites to be started by utPLSQL while ensuring that + * + * - all requested tests are executed, but not more than once + * - the test execution is efficient by ensuring that the list is as short as possible + * + * This means if all tests of a suite shall be executed that the suit should be + * part of the result list and not all of its tests. + * + * In other words, top-level nodes are preferred to produce an optimal result. + * + * @param selectedNodes all selected nodes must be part of the same tree + * @return non-overlapping set of nodes + */ + public static Set createNonOverlappingSet(List selectedNodes) { + HashSet result = new HashSet<>(); + if (selectedNodes != null && selectedNodes.size() > 0) { + HashSet expandedResult = new HashSet<>(); + List sortedNodes = new ArrayList<>(selectedNodes); + Collections.sort(sortedNodes); + for (ItemNode sortedNode : sortedNodes) { + if (!expandedResult.contains(sortedNode)) { + result.add(sortedNode); + Enumeration expandedNodes = sortedNode.preorderEnumeration(); + while (expandedNodes.hasMoreElements()) { + ItemNode expandedNode = (ItemNode) expandedNodes.nextElement(); + expandedResult.add(expandedNode); + } + } + } + } + return result; + } } From c77e2546ed4ea2f3993221ce424b0ef9c78d06aa Mon Sep 17 00:00:00 2001 From: Philipp Salvisberg Date: Sun, 3 Jan 2021 14:34:55 +0100 Subject: [PATCH 52/55] add test cases for add ItemNode.createNonOverlappingSet --- .../org/utplsql/sqldev/test/ItemNodeTest.java | 151 ++++++++++++++++++ 1 file changed, 151 insertions(+) create mode 100644 sqldev/src/test/java/org/utplsql/sqldev/test/ItemNodeTest.java diff --git a/sqldev/src/test/java/org/utplsql/sqldev/test/ItemNodeTest.java b/sqldev/src/test/java/org/utplsql/sqldev/test/ItemNodeTest.java new file mode 100644 index 00000000..4bdfdb10 --- /dev/null +++ b/sqldev/src/test/java/org/utplsql/sqldev/test/ItemNodeTest.java @@ -0,0 +1,151 @@ +/* + * Copyright 2021 Philipp Salvisberg + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.utplsql.sqldev.test; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Set; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.utplsql.sqldev.model.runner.ItemNode; + +public class ItemNodeTest { + private final HashMap model = new HashMap<>(); + private final List selection = new ArrayList<>(); + + private void addItem(String id, String parentId) { + // using suite only + org.utplsql.sqldev.model.runner.Suite suite = new org.utplsql.sqldev.model.runner.Suite(); + suite.setId(id); + ItemNode node = new ItemNode(suite); + model.put(id, node); + ItemNode parent; + if (parentId != null) { + parent = model.get(parentId); + parent.add(node); + } + } + + @Before + public void setup() { + /* + * Setup model for all test cases: + * + * a + * +- a.a + * +- a.a.a + * +- a.a.b + * +- a.a.b.a + * +- a.a.b.b + * +- a.b + * +- a.b.a + * +- a.b.b + * b + * +- b.a + * +- b.b + */ + model.clear(); + addItem("a" , null); + addItem("a.a" , "a"); + addItem("a.a.a" , "a.a"); + addItem("a.a.b" , "a.a"); + addItem("a.a.b.a", "a.a.b"); + addItem("a.a.b.b", "a.a.b"); + addItem("a.b" , "a"); + addItem("a.b.a" , "a.b"); + addItem("a.b.b" , "a.b"); + addItem("b" , null); + addItem("b.a" , "b"); + addItem("b.b" , "b"); + selection.clear(); + } + + + @Test + public void null_input() { + Set actual = ItemNode.createNonOverlappingSet(null); + Assert.assertEquals(0, actual.size()); + } + + @Test + public void empty_input() { + Set actual = ItemNode.createNonOverlappingSet(selection); + Assert.assertEquals(0, actual.size()); + } + + @Test + public void one_top_node() { + selection.add(model.get("a")); + Set actual = ItemNode.createNonOverlappingSet(selection); + Assert.assertEquals(1, actual.size()); + Assert.assertTrue(actual.contains(model.get("a"))); + } + + @Test + public void one_top_node_one_child() { + selection.add(model.get("a")); + selection.add(model.get("a.a.b.a")); + Set actual = ItemNode.createNonOverlappingSet(selection); + Assert.assertEquals(1, actual.size()); + Assert.assertTrue(actual.contains(model.get("a"))); + } + + @Test + public void one_top_node_two_chidren() { + selection.add(model.get("a.b")); + selection.add(model.get("a")); + selection.add(model.get("a.a.b.a")); + Set actual = ItemNode.createNonOverlappingSet(selection); + Assert.assertEquals(1, actual.size()); + Assert.assertTrue(actual.contains(model.get("a"))); + } + + @Test + public void one_top_node_three_chidren() { + selection.add(model.get("a")); + selection.add(model.get("a.a.b.a")); + selection.add(model.get("a.b")); + selection.add(model.get("a.b.a")); + Set actual = ItemNode.createNonOverlappingSet(selection); + Assert.assertEquals(1, actual.size()); + Assert.assertTrue(actual.contains(model.get("a"))); + } + + @Test + public void three_chidren() { + selection.add(model.get("a.a.b.a")); + selection.add(model.get("a.b")); + selection.add(model.get("a.b.a")); + Set actual = ItemNode.createNonOverlappingSet(selection); + Assert.assertEquals(2, actual.size()); + Assert.assertTrue(actual.contains(model.get("a.a.b.a"))); + Assert.assertTrue(actual.contains(model.get("a.b"))); + } + + @Test + public void two_top_nodes() { + selection.add(model.get("a")); + selection.add(model.get("b")); + Set actual = ItemNode.createNonOverlappingSet(selection); + Assert.assertEquals(2, actual.size()); + Assert.assertTrue(actual.contains(model.get("a"))); + Assert.assertTrue(actual.contains(model.get("b"))); + } + +} From 0970cd4d858cca0fcaa5810755ec2936d03cdaa5 Mon Sep 17 00:00:00 2001 From: Philipp Salvisberg Date: Sun, 3 Jan 2021 14:35:51 +0100 Subject: [PATCH 53/55] use ItemNode.createNonOverlappingSet to optimize paths before calling utPLSQL --- .../main/java/org/utplsql/sqldev/ui/runner/RunnerPanel.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/sqldev/src/main/java/org/utplsql/sqldev/ui/runner/RunnerPanel.java b/sqldev/src/main/java/org/utplsql/sqldev/ui/runner/RunnerPanel.java index 30a23f77..145dde29 100644 --- a/sqldev/src/main/java/org/utplsql/sqldev/ui/runner/RunnerPanel.java +++ b/sqldev/src/main/java/org/utplsql/sqldev/ui/runner/RunnerPanel.java @@ -743,9 +743,12 @@ private ArrayList getPathListFromSelectedTests() { } else { // tree-table TreePath[] selectionPaths = testOverviewTreeTable.getTree().getSelectionPaths(); + ArrayList selectedNodes = new ArrayList<>(); if (selectionPaths != null) { for (final TreePath path : selectionPaths) { - final ItemNode node = (ItemNode) path.getLastPathComponent(); + selectedNodes.add((ItemNode) path.getLastPathComponent()); + } + for (final ItemNode node : ItemNode.createNonOverlappingSet(selectedNodes)) { if (node.getOwnerName().equals("***")) { // process children, which must be owners only. pathList.addAll(node.getOwners()); From 71fbc5f74f8333dcb84b22d8af9a9ca27fd3ae5d Mon Sep 17 00:00:00 2001 From: Philipp Salvisberg Date: Sun, 3 Jan 2021 15:10:41 +0100 Subject: [PATCH 54/55] use interfaces to enable ModelGoon to draw correct class diagram --- .../java/org/utplsql/sqldev/model/runner/Run.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/sqldev/src/main/java/org/utplsql/sqldev/model/runner/Run.java b/sqldev/src/main/java/org/utplsql/sqldev/model/runner/Run.java index 951a252f..09d38e2f 100644 --- a/sqldev/src/main/java/org/utplsql/sqldev/model/runner/Run.java +++ b/sqldev/src/main/java/org/utplsql/sqldev/model/runner/Run.java @@ -19,6 +19,8 @@ import java.util.LinkedHashMap; import java.util.LinkedHashSet; import java.util.List; +import java.util.Map; +import java.util.Set; import org.springframework.core.style.ToStringCreator; import org.utplsql.sqldev.model.JsonToStringStyler; @@ -38,9 +40,9 @@ public class Run { private Integer infoCount; private String errorStack; private String serverOutput; - private final LinkedHashSet items; - private LinkedHashMap tests; - private LinkedHashMap itemNodes; + private final Set items; + private Map tests; + private Map itemNodes; private String status; private Long start; // to abort connections, producerConn is handled by UtplsqlRunner @@ -260,7 +262,7 @@ public void setServerOutput(final String serverOutput) { } public LinkedHashMap getTests() { - return tests; + return (LinkedHashMap) tests; } public void setTests(final LinkedHashMap tests) { @@ -268,7 +270,7 @@ public void setTests(final LinkedHashMap tests) { } public LinkedHashMap getItemNodes() { - return itemNodes; + return (LinkedHashMap) itemNodes; } public void setItemNodes(LinkedHashMap itemNodes) { From 4d28aa91b883445c65d323ea964ffea6a095275d Mon Sep 17 00:00:00 2001 From: Philipp Salvisberg Date: Sun, 3 Jan 2021 15:11:17 +0100 Subject: [PATCH 55/55] updated RunnerModel class diagram --- images/runner_model.png | Bin 109440 -> 175893 bytes .../sqldev/model/runner/RunnerModel.mgc | 30 ++++++++++++++++-- 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/images/runner_model.png b/images/runner_model.png index f807ea782b516272b1832535c76e3643c05fdee9..1ca8e819aa49966cb93578bb2d1f66b37d5780bf 100644 GIT binary patch literal 175893 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�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 z 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 z z{LSm!Z`-eS%FTcp1z?%DemHK=kJm)9=?B@kJF+eLbE=?eJaUj$f>#DSh<6`(y;Piv5x007gUR*iy|ovHmKJ#1@@ zq(vcyEbqW5r@VgTxCC5`Ep(TFYR<~D<@?Im4>(W=OgDg^<0v8!`9^SI`n*}=5TA%9 ztxCqa)S{=%v|40M&|wsA2ecf|DM0i%(0|{BO*4+3_ij3B+wzJ5tGWX=I_y6uXnv^0`3`npMYHI(SYxEjSBSUrUm#EB@8Let2czy9_{ zO~i4NJAT)42N?GeK*_QTIR@e?EEO~i0FY&0000$9z@?+w0QY5$jARk~?6M8v$OwuYWUIz>KvUX=OY!aDTgezl~1*JSv*2 z-N53z`<)@=0>nsAfKa0*6xhG1^3;!8EfL9Ycc&{$f|(dM6_5v~F6N>5n((_bY}oY~ z(CLkaRRLqJhyE`PIajlJt%j2Gza0MT056-DCjR&pcv~JWStU3vnc~|-az%Sh{&*R4 z&T#O2DLP*4EKNMVB-5h4mnX*sA-g=QE>^Gj8*)~MGTQ86^ZLYLqA1pWx7r{r%@*n8 zdL?=d_Vm>7NB(+2ym*!Ftkjm)YUh1eO$ti@2?7Txkq>cQh^aYm+o zewLiSEC+sPe5Blt>%Ia16JuA%O41bN)IJT#4a%VX9dw-ru%RMPbTPk}sJ?hpoiBox z?)bo;o)sL88k)ks2>E5Hk&}@my)Uz`EDjET&d44bv z1#QP6bP`qoybx@S7#_x2qT!F3(r>_3f}(cnaNwTywxC#vez1%CjQgM&D^;%rKl%1>Ybvk(9n%s3(IV`uG(vAiIKMwl3QI zI5il_5o4s^_QMS$QwWefHNO5X03jNIGRMH74F%w{I1&{dCu^;KK$+9wvw;fviUe3# zGc8RDvR1GAFDA9sx5c`>n4&S@98dl>k!!bTNqrys+p;S^AlAb1TGj7moMZ}Pwd?B9 z-wcQFAO3H8Uj-86SAg@L2$G`!=mIW~SG-po@Gz0Uh%E1UyDQF>_O0yid}02EBr6Pt zg|VSR4!$`L0z#{IzO8^z1!d1EU43FPO3NDcTvBjE#>!48EgQ9-`#2AD<%#S22p)w}K=!5yh{*K=Bl~nWA4GTz?CE;>GgC z2oGKxazt8=Y3{BzvlDt!r*cTjx90jr9N&@rs*Zds3KJCSdzpjKmLF)RL8fo6^?WlS zd2!mtg+1!Wfp8ekvbqu_jNgYv-26}KMh*kcQg!aah1C;24_qc~wKZKTn;469@N!ce zATt$eU`zT@PaO+eE4~!4-2n#dj*>{3dxdvhSvQfGzA zrcDJZLt%!SHk-8ly7k9M-{;4oiKu$}VLpIeA7sdc0hKURRp5=idXWe%gl)(WMolJ! zK0OA^{Fy1QD^=RL2u}jLN9EU(Fi0S9K4NpTB&PL$1IaE~%oB_eIYPQs(JY>8Z!?dh zs53Ek`u6l0Fvt3dTjm!LniL8`bA=U3KHvdf`N)ecG8oSc#TKiklC*M(g$J&tgD61p zADm5;q%*EcZE8hUH+~OJ4=D2!9G2UW-kLucSHU(eDr z(cR1V5sbo4+m26KZQv$}+S>6yecg2&`u5>@D+gLxIxN9D<<;?`4W%6)1%KdO#4B}IbLjkFoF;`Unel_TfxD#^WvdA?d#8}CS~?}NOAr&ES!|=@TcrG z#xwo{Kf-Z)75l$<8IsU5t5xmXiB|nEpIv`#5`hQST%x;R42ZlTv5`cDk2$?Sz%;1r z0aqE?wcfz=QM7Q0@*`_3EAdB2lPc!7pVXLzX>cosaPX1)0K7)`c^nq{PJ3$>{Yw=H zT@O;iQT9_>jc!fe=LyPu!Rtgg0i%q(MhW)X`zX$&$CGn(!pK0!kLz;rY{E%w1C&^6 zlfXhRn@WR5fmcOPgWg&ijlB3ZGcnR-x@;bf!7vcS%oNkly*hLC8RtU32GbQ+v!KTp zk4T7{g$HZhIP;3`QsZ1+mnwf~gOoVv2*P~yz749SlalH1F6`+ZHT`^69biUdFqa#< zBzPshR(Fivc;(cVPR7DKAkLN~q)xOQPiQ$W=|n{tbQM?0X#Lo+zv|(&dbVRy6y*n+ zLoQJEL7$&p@^-Rbhf-G z)#eM2P*D!0V=4H$>`FUHWzX}!MOypJ~dOH)N$IoW8AGdmD={&Uv=qQSz>jW z0uDugG(}1Gf2)h<ItFvdB`+?5gr`_UiT7$SNg5m*>;)&{R%9E?teB`3D9D$_)gZ!AFK^zeKYH|m^T z{^{st?A%cK`9S9})d*@h(2c9pFiztC0VR(Kb&r&zqOpy?g;cuB$21@hGECTL4y(_wp`*>Iv<;N1s8nT_30^y$54!%0qb$gI7I+j9d1XWOe-HsD-HJ#!*cyd+6IQis!H=X{^IFX+z;eyAaI$1b;DWZa$fY%g{^^+( z$+e}|qp(nlEw+*bDSIEDg2%&A5?pTv@OLcn8BKO3Ve{053XZKhpJ$k#=}8dLL}KsQ zSB$^K7kF8?r6Ot@J>@(3A-!57oY)JKh<4tB7OUY+mNt)FNKDcN6W%R>k)bY^%}>a+ zRpyx!K?n@ji;sX;T8>8DfuYk^R?BINFDMy{9X-uMc}+y}IpL|wFc$86gN^D?PnaSV z?5d|vUH5D-I@PcBL^`Kg(4byQ8I9;+;WUIQUn(@+z~h(nFiTXo2#L<#hdNQhampRJ zW7Nurgqv{VyrQ^cUgm{GqO9P)?*dY5eqVX&(z+qWd(FBH#(Wp4pj$4)LH(!t&k9nt zn90$O$PF{Ze11SgvPn0#w>1}H!K)I}V{LejxO?}>oVmyU(ROY6OCJ0jD|{FJ4CvX? zxWo~$>C=t0Ha;I*L|jP1k+IZ%mfRko51QtZa_}dPwyXt4CGjYWejEL3rZU-ImvqkP zm6!j^BjTLuk}Nmu&zf-9+>-;Y`S|nLmeL!9 zs!yaJ%&l7ChV*s|0brafX!0N3VFEcOVJNnj^L#ir-|D9zy&s@vOz&CXjNU7v- zS9{3wrt_US3>2o&ck6`<%xwvJNz(?g#xmg&*A=2f7R=G|qx5aFqP4jq6;Ea`u|=SM zvk^lV%Xeol%1wfwa|MrpYBO0+SX|P1G)<&*lM4rX_ zi7Y^;;A#`JOWK8xYHbI}9&pJTL!u8d@>U zp-)sH%QwiqhR^krhY=rfEA(>xVV1!oN=M8`Tzfs}1n(;}`Y=_^Z&mnNT_90dxQXEx zJ@0s7UuCi;4SvJ+Gx<9q@f+(F>+Js|Zfg{w=7Cn1!4s+lJ>r!iDhA^gk2|&3iZbPg z&};K%u}PI=hQ`%Ll3rtSn6@i9LKU#hY$4dt(%?o*Qjw(vW4SkD`NYzW{R4bo44dma zeIg_+_YLFi2oLglY+gc$7zVGI-B#l*0!mmAZN0%e>qHVH!Nt`Y(VQe6ga9WiAGOu+X=>g^DTHqSlpleNQD?7ZbuF3UX z+73Q50TKJpVuPpZDjoMGbhk95ekZof7ftW27{u?E!8OB+hni|&vn2eiK>_&oe@yi_ ztxwp|dRZ6u1r?O%{Aq%yhUYE|?pI04j?my8(lMRB6A9uPj^8~Ctt5LZjThM#E z7Q{H&xXdiQdzCAMsBH!3^?%Hx1Zqr(cz?}zPR<(1Xe>oHm__5e%nRJ8`*@fBWuCO! z0N?{7B`vhm#q;MGbmI9cjLM1IF&&{7XBP#xKkC_S;C16#Ya9u3`UwM1rX*^8Pd@@Z zLdb-a;%K>;TaYT0Rf^qv{WsRj#0O(ARh!-5Kx#q9AltDn83C)+(qqp5IJ!uGDn%I- zVnZY{p(PreUnUy9z5i^L-+vhS&B=K%zr9@O_}`u54%3y;oP# z*@qzUaopw?f5A6Sk?qv|&W`n_B|4t0MzWP+<|%R6iQ2ntjnCIAHrDa}sH)bkYd}yCl~TG>Ndf6@ zBrV|3-67pAAV>>HgCZ8)-4fCwosuG5QiAxeqc?ot_Z$Bhj(Z*6b2;w4pZz>*%{kYc zXQxYN!d>xkb3c$GNiLe%)*7Xorn0XC1J&^PJc?T%6r>(pnG5rN8R^{;>pH7w5p#R? z=V@6&4Bc_<++e?$*l>L*Bh^I2yI7|>_njwY98;#3P-bH5r2T_ewaRlIGi9d5A1qsy zpvrA{y}vvf_fb!}THbYICI2Ca{cWmEUG6%lKCGQd`30a}lW7Wbk%`R>bR2xmHmtrj z%rdiQky8^?_I)Yw&543<4oZP|z0)$`2NSw_Eo|IlyJ^y3+X@Hnpo?iGdDkVY^5OMf zxR;g3uRYUgLQ~YqI7~m{Jec;eU9-f*)ctTec`nJgBH^a?ijN%qns@8kjWV3*tsUE6 z^%NHo)Kke`b|b6fUk9+IrfbM9Fruy~<&o;U&s_l*T&wI-&4<<$nBTr~)+l_ySrnWO z@};`vss$yLwC=SE9(H2=~04HaGvadqlD^)+iM=51lSDllFr z-bXX5`k7VW)foTF`Er;ODb4Bti&jjZ-Mp1|c^77UKDwS1 z{#rJ_-pb!wiYvO#HQ|jIjl5>itOh+}_;FWujo{uK3J1C~#BfX=SzX0@ut!-PL zkZ}mU?wnw9Bu=Dw02j*8f&1kVjwpg*3JI``p%rjU5DSGsEpewX6+B@y`%jRTny|K#rYcMb900=mc60=3bS`OcLjso2gpdN> z1cY2PeMC#{bq+N7=gRwDuyzuxohyReZ+vuW_oxOK@I5rKqzFs_m{LH?_8e5^yPVc| zUqyf+&AtWe1>kyffbIg$3DL9w|8K$L+tFuNvs(J6RI(U%UAUauCf03ISSKb0D$w9Sq?HHv*8q) z64|t0H>TQFXu5+2v;`2&{HNV8CZlzm)RuZ2iLZ18WSc89qFFE?XUe`C4wyW;%zJ0w zmrxlQ%%r>lFHj9}3#U9!m`oCm=n=IyjH7tw+tlr}=M?+P%_#GZOLx;Yf04@3tFOth zKC1-f*{k6=Ce;xi^3MR-I<=&781MX&Bq7hF->W|zlfSqxaF5rhRWernA@d>~w`4$1 z3Xfvv5NLGY-BXY!V4fTsYR9_vF>C&^0Ao5JV9d7CUB_^<-@UPjl6p(68Xrl(93_!4 zJ_;ku<&EjUM2PRFp}*kTeI<0tl8^aZw@DH+({q0ngHVd!d`#01;LRM5ZE#bw%CtcZ z!MOUMa)5u#@=dz4M6eUiZ9bfN(9ynl)_g`f>0Q9)d)vmTj}sf|Q(YbjoI!tBdDepd zzppRyI@E&wa|1Q5?V8$DJ~vPUDx~;rAK}E!#A1X(DYDG%jORgn5lH?JUPXnsAbH|& zc_16gV3X${ieYKw1rOxzJGzRJNHRWkFP$ifECsp;Wshyyr7w0eWcOx2A0hggFNjV( zDxV1$kmHZ%4gFb);Me#bx>d@M%Ve)pF1+=V%A*9!$^QrkCqp80v6M z7j!A3lx^o79loZagLjjNSjaU`PlK{AceSs!a{c!s`0GjF1`@1YYP|SbNs|`8hPtoL z%EU(1;nw-$<_y9U&Go#UqsVxV?b&8479Zr)lrc*v-X}TXkcFX3wVG*nB^vIWW4ud+ ze%Z@LQMR?H_tj0%AFzf^09 zk8ih27uMdFvP-{eTnql5-!nOcL2l{4@a+;7?_ydTC9;

o581U*c-WBR?mG!?+d% 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

cu_2FF_&zyn7R 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 literal 109440 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 RJc;8VdrI+Siqtue{{^z?a_0a5 diff --git a/sqldev/src/main/java/org/utplsql/sqldev/model/runner/RunnerModel.mgc b/sqldev/src/main/java/org/utplsql/sqldev/model/runner/RunnerModel.mgc index 61fb3090..e4ec1ec8 100644 --- a/sqldev/src/main/java/org/utplsql/sqldev/model/runner/RunnerModel.mgc +++ b/sqldev/src/main/java/org/utplsql/sqldev/model/runner/RunnerModel.mgc @@ -94,7 +94,7 @@ default-accepted="false" static-accepted="false" accessors-accepted="false" constructors-accepted="false"/> - + @@ -102,13 +102,27 @@ private-accepted="false" protected-accepted="false" default-accepted="false" static-accepted="false" accessors-accepted="false" constructors-accepted="false"/> + + + endpointName="currentTest" kind="Simple"> + + + + + + + + + + + + +