From 361632cba5d40e45deffbf86d96c5e3ced64f9f7 Mon Sep 17 00:00:00 2001 From: timur-muminov1 Date: Sun, 7 Nov 2021 23:14:39 +0300 Subject: [PATCH 1/4] 1st and 2nd labs done --- .../java-lessons/ru/tn/courses/.gitignore | 1 + .../EmailNotificationChannel.class | Bin 0 -> 1581 bytes .../SMSNotificationChannel.class | Bin 0 -> 1575 bytes .../TelegramNotificationChannel.class | Bin 0 -> 1590 bytes .../WhatsappNotificationChannel.class | Bin 0 -> 1590 bytes .../v2/task2/domain/NotificationUseCase.class | Bin 0 -> 2117 bytes .../task2/domain/enums/StatusCallback.class | Bin 0 -> 1239 bytes .../domain/interfaces/CallbackStatus.class | Bin 0 -> 245 bytes .../task2/domain/interfaces/Notifiable.class | Bin 0 -> 315 bytes .../v2/task2/domain/models/MessageModel.class | Bin 0 -> 1821 bytes .../domain/models/NotificationModel.class | Bin 0 -> 2176 bytes .../v2/task2/domain/models/SenderModel.class | Bin 0 -> 1864 bytes .../task2/presentation/ExampleUIClass.class | Bin 0 -> 4466 bytes .../java/ru/tn/courses/rnemykin/Main1.java | 10 --- .../tmuminov/v2/task1/subtask1/Subtask1.java | 19 +++++ .../v2/task1/subtask2/ExampleUIClass.java | 48 ++++++++++++ .../tmuminov/v2/task1/subtask2/Subtask2.java | 20 +++++ .../v2/task1/subtask2/enums/Banks.java | 9 +++ .../v2/task1/subtask2/enums/Currency.java | 6 ++ .../v2/task1/subtask2/models/Rate.java | 25 ++++++ .../tmuminov/v2/task1/subtask3/Subtask3.java | 30 ++++++++ .../courses/tmuminov/v2/task2/subtask1/README | 5 ++ .../tmuminov/v2/task2/subtask1/Subtask1.java | 18 +++++ .../EmailNotificationChannel.java | 25 ++++++ .../mail_channels/SMSNotificationChannel.java | 27 +++++++ .../TelegramNotificationChannel.java | 27 +++++++ .../WhatsappNotificationChannel.java | 25 ++++++ .../subtask1/domain/NotificationUseCase.java | 23 ++++++ .../subtask1/domain/enums/StatusCallback.java | 6 ++ .../domain/interfaces/CallbackStatus.java | 7 ++ .../domain/interfaces/Notifiable.java | 7 ++ .../subtask1/domain/models/MessageModel.java | 8 ++ .../domain/models/NotificationModel.java | 8 ++ .../subtask1/domain/models/SenderModel.java | 10 +++ .../subtask1/presentation/ExampleUIClass.java | 72 ++++++++++++++++++ .../v2/task2/subtask2/FirstClass.java | 15 ++++ .../v2/task2/subtask2/SecondClass.java | 15 ++++ .../tmuminov/v2/task2/subtask2/Subtask2.java | 10 +++ .../task2/subtask2/instances/Instance1.java | 4 + .../task2/subtask2/instances/Instance2.java | 4 + .../task2/subtask2/instances/Instance3.java | 4 + 41 files changed, 478 insertions(+), 10 deletions(-) create mode 100644 out/production/java-lessons/ru/tn/courses/.gitignore create mode 100644 out/production/java-lessons/ru/tn/courses/tmuminov/v2/task2/data/mail_channels/EmailNotificationChannel.class create mode 100644 out/production/java-lessons/ru/tn/courses/tmuminov/v2/task2/data/mail_channels/SMSNotificationChannel.class create mode 100644 out/production/java-lessons/ru/tn/courses/tmuminov/v2/task2/data/mail_channels/TelegramNotificationChannel.class create mode 100644 out/production/java-lessons/ru/tn/courses/tmuminov/v2/task2/data/mail_channels/WhatsappNotificationChannel.class create mode 100644 out/production/java-lessons/ru/tn/courses/tmuminov/v2/task2/domain/NotificationUseCase.class create mode 100644 out/production/java-lessons/ru/tn/courses/tmuminov/v2/task2/domain/enums/StatusCallback.class create mode 100644 out/production/java-lessons/ru/tn/courses/tmuminov/v2/task2/domain/interfaces/CallbackStatus.class create mode 100644 out/production/java-lessons/ru/tn/courses/tmuminov/v2/task2/domain/interfaces/Notifiable.class create mode 100644 out/production/java-lessons/ru/tn/courses/tmuminov/v2/task2/domain/models/MessageModel.class create mode 100644 out/production/java-lessons/ru/tn/courses/tmuminov/v2/task2/domain/models/NotificationModel.class create mode 100644 out/production/java-lessons/ru/tn/courses/tmuminov/v2/task2/domain/models/SenderModel.class create mode 100644 out/production/java-lessons/ru/tn/courses/tmuminov/v2/task2/presentation/ExampleUIClass.class delete mode 100644 src/main/java/ru/tn/courses/rnemykin/Main1.java create mode 100644 src/main/java/ru/tn/courses/tmuminov/v2/task1/subtask1/Subtask1.java create mode 100644 src/main/java/ru/tn/courses/tmuminov/v2/task1/subtask2/ExampleUIClass.java create mode 100644 src/main/java/ru/tn/courses/tmuminov/v2/task1/subtask2/Subtask2.java create mode 100644 src/main/java/ru/tn/courses/tmuminov/v2/task1/subtask2/enums/Banks.java create mode 100644 src/main/java/ru/tn/courses/tmuminov/v2/task1/subtask2/enums/Currency.java create mode 100644 src/main/java/ru/tn/courses/tmuminov/v2/task1/subtask2/models/Rate.java create mode 100644 src/main/java/ru/tn/courses/tmuminov/v2/task1/subtask3/Subtask3.java create mode 100644 src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask1/README create mode 100644 src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask1/Subtask1.java create mode 100644 src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask1/data/mail_channels/EmailNotificationChannel.java create mode 100644 src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask1/data/mail_channels/SMSNotificationChannel.java create mode 100644 src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask1/data/mail_channels/TelegramNotificationChannel.java create mode 100644 src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask1/data/mail_channels/WhatsappNotificationChannel.java create mode 100644 src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask1/domain/NotificationUseCase.java create mode 100644 src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask1/domain/enums/StatusCallback.java create mode 100644 src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask1/domain/interfaces/CallbackStatus.java create mode 100644 src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask1/domain/interfaces/Notifiable.java create mode 100644 src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask1/domain/models/MessageModel.java create mode 100644 src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask1/domain/models/NotificationModel.java create mode 100644 src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask1/domain/models/SenderModel.java create mode 100644 src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask1/presentation/ExampleUIClass.java create mode 100644 src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask2/FirstClass.java create mode 100644 src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask2/SecondClass.java create mode 100644 src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask2/Subtask2.java create mode 100644 src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask2/instances/Instance1.java create mode 100644 src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask2/instances/Instance2.java create mode 100644 src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask2/instances/Instance3.java diff --git a/out/production/java-lessons/ru/tn/courses/.gitignore b/out/production/java-lessons/ru/tn/courses/.gitignore new file mode 100644 index 00000000..6a3417b8 --- /dev/null +++ b/out/production/java-lessons/ru/tn/courses/.gitignore @@ -0,0 +1 @@ +/out/ diff --git a/out/production/java-lessons/ru/tn/courses/tmuminov/v2/task2/data/mail_channels/EmailNotificationChannel.class b/out/production/java-lessons/ru/tn/courses/tmuminov/v2/task2/data/mail_channels/EmailNotificationChannel.class new file mode 100644 index 0000000000000000000000000000000000000000..f1e8e1bf95e3a0221fa45c33e68791f82cd76eb2 GIT binary patch literal 1581 zcmbtUTTc^F5dIF`c1u|-#d1*r@m5;|RuH^U?iCWW#l%8i&FS`F7uwxscT4;Q{sv>> zGtc;-=z~8%U;GLF4r7dS+7gNe+l1Zhx$MlD`R1EB^Y!=VF97DT5<&-jDijTV1Q>dD z`99Z6+v52P0QZb_osD_yL;0*dFH023#(do^{mIes+;1aQl1-o3~F{em0HVY85Yv# zFqG`V2(GFa)o=~h8J63$Wm=wacDO;nk1^E|G6WsrR&2`^WG#L!Y<0?RYPco&QrA~D z(%aA1RNQ75IZ4%qgyK{yo+zxnGDO8QZ7YNr5*o&25riuap(S+2-j+j%Rg5z{Z5b!` zxK8|+UKmAgS)%0XYjV43d*+U5aOovgm#COzm~UyYp3NrW>ZW+UL`*3uyFgPoZCYZp zTFwh+t1jqG+XgS?xMRwFkO_w3ln%(xJNKyg2!YVWe$nd)D43;SXBB}X!M*d2+ z2Kf&&r%NiC$Pq!FDAPq^8}t!Tqv`(_07VnAno?DR!m!dVm@}iHE%TQ&z|DS*15AS)iMHhx#7F1T`i(Q}3fur=3nSlPzoP zBiLb0e3wQk2KBxv8nwCtrg4vU3^SOeQ6ByVgI3i>f{#@lwu7QD#dcMKsa3{w12BHxK2T$FK1!7xS`l6F;fO;xk1 zwj&(XEmzCBX&tBsv#QIT{aKYfbKO*hSuHzi&gE{^NpZs{aBZJK&h4a98@U|AQsx|n zl3f_XWf|iNuHY)eYMZun(-rnE*9iCtraD4~pe>w=Wjcba#m|MUPT6$@H$1-N&9!u9 z=jn!wn+#*8sY-iL>}tgo#f=x5sJOaih7dzS!Gu=?;fhUY37xjTZ4+V{lMLyWadMZd z#J}-OD{<2l2BjdI+p=7JSJ$}bBUL|_G0m{p(p){4O|;cb@q$4-NhzyHQ#hlWVyjv% z2z$FO=*w6dH}c%py?x_Qa!b0y@VGU%?Z%L#;&p^sYz~j%W!u>+6MQ15`FhqnO16gh z2QO#KDVfLsF(rrsfbRI@!pHe>L?^BhAbjbZfCH-HF6sCmW_B_xBS)la?$ z@PIm`hir}l>80TA;vU_eCoK0#=JOCW(0Z!{Bx_z4sPivT_{$`ZAkeeQeqe}wM{r$6 MOd^#P5_Dko7p-}-g#Z8m literal 0 HcmV?d00001 diff --git a/out/production/java-lessons/ru/tn/courses/tmuminov/v2/task2/data/mail_channels/TelegramNotificationChannel.class b/out/production/java-lessons/ru/tn/courses/tmuminov/v2/task2/data/mail_channels/TelegramNotificationChannel.class new file mode 100644 index 0000000000000000000000000000000000000000..7cfd9cbe6c3f4b63895569f85d936dd0b7de04d2 GIT binary patch literal 1590 zcmbtVTTc^F5dIF`c1u|-#d1*r@m5;|RuH^U?iCVDsm7MRn$zupF6?fb-7WDK_#2Fg z&phLUq7VK6eeoywJB%^Twj~sew1#eaE<1B(zWHX(?3Z7kJ_DG?N(deB$&eKI5n$-q z<@;PUxV57`E$j--WeCjcmhLVx_~MCt2tjnp2r1}-!f@e4eUrN-QntBOESoju$AP8q z2U*|CF~}$rilG;CBomDhyKmNh05gL0pn?S-}+yF(mD(>RPH+ zuG)@pRM)JUx>ep+_or2tJA2bAdFHyM3ae^5YS!g$)k$%~C~$3$LC$WaQft{P!$SHT zhLT+v!BrWf3a;Tg!*ZLpbjua?HrELFF{U~~hM+B+O4)J*S&N?wTb;6-3T}CP$?Gc{ z>8rR0`$hv8Xkg8wU!B$crvtYUMF46oYGqe(FkRn5mY zy;sTBIR7H&bYUeEdE&?wCS51CL4V?EG<|j%P&5&%DO)ut3@hz|`DZlLD<~zkt9V@Y ztL++XO8*}bGIZCU>{F^cdJ zBE$a58-&N-Vc;W%J8%Gn);AjKU}oYy;)gZcQ)Dv+A3V=7bkZ0`4?X>eV2FBY98p3t zKw5p|yC09JVS31BD3Bfs?miyS=~=?^kYqj&Q3I{FnnSYYWsW`s3l#n$$s-6{SY|&l S$bKNWDkCP5$`T1Wu>2eT@w!d` literal 0 HcmV?d00001 diff --git a/out/production/java-lessons/ru/tn/courses/tmuminov/v2/task2/data/mail_channels/WhatsappNotificationChannel.class b/out/production/java-lessons/ru/tn/courses/tmuminov/v2/task2/data/mail_channels/WhatsappNotificationChannel.class new file mode 100644 index 0000000000000000000000000000000000000000..eb1dafd72f33a733055ec82ced5f70a9a12cf3f2 GIT binary patch literal 1590 zcmbtVTTc^F5dIF`c1u|-#d1*r@m5;|RuH^U?iCVDsm4NmG^g8xUD)n!cDKY|;BPP{ zKJ$zZiaz)Q^u?dx?=Z$V+m=u?LJi&YTz2NneDlqm*)P97eFiX#r3l&(kRd4uBE-yx*N!j6M$*Ry!K~f^M9b5m(TI-ecZ2%8uYAhM;Q*VKYd{N2x+P`f)+VMFp2Iz>s#Ts%NU2 zRdrn9s$Qj9(M@Yt-JMiD?(R&g8pdGK3xB+Lq}GvX(p(wmN0k72NRol2@13 zvYSs=WZYyJI!e`=55=k4o+z!n)P(KnmKi|;DFq{b5kzf=&=NXrXTu@HGDaD4r^d-W zt`h&obFIuxQy8xLtjs-^+jh?K^etWEzN1WCC}W&q_Eekogf?+kH^qwvktJoU5>3&p zZi-yBQWVZcUC^DiG;S2Qqx<{DOUWziF2j@43I4A@(p1K-FiXubGQ4Uzj}?l6sA@jG z?!QW(j`J^aju%!sRUnQ$QK9R^*62@M4QEd-1BxbQHf5^@g<+{xF#n8(dIhDVb`=lH zez{enP3iw5LWa&-nXYrYk>yC9x`QTGb-zG{Pbk1~p9s3bx2OR!j8TX3XKI2psnah#F}9)eO=#FEjKZn4|FLNghM!+#>sl Se)a?5Wf=*HR2E3khQ;5w`MQ$; literal 0 HcmV?d00001 diff --git a/out/production/java-lessons/ru/tn/courses/tmuminov/v2/task2/domain/NotificationUseCase.class b/out/production/java-lessons/ru/tn/courses/tmuminov/v2/task2/domain/NotificationUseCase.class new file mode 100644 index 0000000000000000000000000000000000000000..d533666cea66d059ccfbc9efaefdbe892d762dae GIT binary patch literal 2117 zcmbtV+fExv5Iv0tOa=!NlN(9M=C->YZf!2PfC*%S6e$s~(wZRgv}%TqGcXrxx{Z|V z<4XCJyzah)WRdm*@=;N$$D=R=Ka6)@dOYLms&lGNRek>Q&%Xecv1X$Wg(9pH`Z2&T zvM&w=_eI#`zwYi!S2GMOd!eUS7z$Nq+r}Wy6=9b!gc8G2+~zvuZq$yIR9pw`zzd^8 zemKXqPzQ5-FA9Vg^36zluRK?1FA85Oxh9lkumjQBiZ-G>=`%E|>nEWbI`+b5{p=TK zJ!inccvYw3CV}ch7)H5>krFPT!mymvpBHKwzY;Ey>~ImgK2aD^GTh6OV|Z8n-x%{c z$becCzP~HngN7Emt?JHp5f>R2bFxdb)gUr5PVzK}%M6cRYu!>yoFDk!ft(4Y=Ixdr zi9N+zkm#ps~9WdS_#*2gQ1jE)?9!2+jA0> z8%v=ndw06j-02iOHLlwj#Z9Bl9~kacpPyC4X>-H-c79o=yf>s$qA3&NHtynH5kHpj z6MjC`4~;iU%Yfm6+m2%y>Mbvj8=mibDrt=uHg3T&P$w9!bc6cBpqpY??X45IyGe@sB)$>6X8q)GW5H?c>9)NB`@KOy9{84V$cyN zL**=1hQYRyaVP?+#4u$&GY1%+{)gD#QDGP|Q!X70485u*D>#}3DVIdaJ&2)8tCAS( z25lZ!KJ&~lzS>1FGiLPQHf^mw+IK(!R2K};S)(^jPe#xFi6gMT=|>-C=`??X7Tg@2 zrH%pSu|RLs{kTu3xh!FkE1*0%F*W@G#WCv>&KGdv#;jJ*x}k-WxLW9#r>^KC9^hf( zzKlm$OsvaTqF)8$7IoUs7Ja2nn}+<8pqY@)F-CW+smi5~xN?N?&12l!u_iy_&Jn6h z)-fh`tm!f92-AO&afj1z;fAKu!X~aCZ_IePn$NkFi2`#|gwLo)930 JUlOlRzXA=^W_kbs literal 0 HcmV?d00001 diff --git a/out/production/java-lessons/ru/tn/courses/tmuminov/v2/task2/domain/enums/StatusCallback.class b/out/production/java-lessons/ru/tn/courses/tmuminov/v2/task2/domain/enums/StatusCallback.class new file mode 100644 index 0000000000000000000000000000000000000000..b9b6b87b3e6cd1f7cb3c2212632bb47a371d7e51 GIT binary patch literal 1239 zcmbtU?{Csj6g`g?3bkV!!_DFRu^%dBZWW@RKms8wSwgmG9m(RSM^~|1DG6=)yObqv z(P;MBKgxJtS2LFRjgs_n?>qON!+H1d`_K1Z0BWcxNHA1Kp%Hk7H4I0-?Hj=$95~)^ zY>X>L!2Pp|aWWim$1`j%9QcMA@F4VC+;w~0I?I4T){sPsK{1b7t+r`0yzR`;vMPF} zHDscmd(HjM(fhW@-P539j(E1Z&CXGqc-Hia*d2A`o()Ms;sH2mu& zw}vNV%6!N1?1OO7vqv9z&!x<}|A^CPIuC|iXJ~P^%SVpjh>2v64~Q>!*F~DW;Il(N zIAc0}kLGejIH{<2X@F{$8@qToRVci!%_Op3Wl&AJE0(?I2p^Vi--ul?8I3ZXOP=nS z)L0dl1E7@#8dxZZA*P)q#aq}U+%t+cXcdn-f%*;EE6jhPh~YWCQ_-G8_!Yc}@vo7H zvTBZ%F0ph4Ch&<{_#$PrYZP>pqJ5e#LJ7t)B>DhKX?yJgt6!t-X}X(o1=~V8UPhRm z1y#&jEJTM)Szs~w6YN-;Kr)Zz3H=w`)t|;LcH**TT(8|4}6^Pd!@U2SM69x=PkRbY|&fl{6F%J;2CYY1+8 Vcqkw+@s9z*51JwDFGOAg#6K=INoxQA literal 0 HcmV?d00001 diff --git a/out/production/java-lessons/ru/tn/courses/tmuminov/v2/task2/domain/interfaces/Notifiable.class b/out/production/java-lessons/ru/tn/courses/tmuminov/v2/task2/domain/interfaces/Notifiable.class new file mode 100644 index 0000000000000000000000000000000000000000..704d57e196b598e48c410b0ace18b576b93397ab GIT binary patch literal 315 zcma)&F^&Q;3`KufU>2I?7|>ve7CIy#E0$5>`p{KB_8xl`CG<7tQq-rYbLrd*~gyUsFMX1<%vR+JGvQD1wAhxue zJCmWWFgbI}lmGTVSs>wDCjnj3cj-m3dA@v6ov3X{nBkWtgyDT?UwkTG?7GN z!UunVKgxJ++p!XGG4i3k_nx=soYUu?{`!6L6F?CgG4vrMAuOXG5r*V}+E$f@YV0fT zc-6FO43VN{XwC{lD4W|GKokQKVloCHGb~#z#W9qs*|KbID~{gMHN$Kx?Ip!g?ZYLd zX6mYDD7snW4O`jbwyo~-EpcKP(7j`cKv+pcz9J)mB!lE@7}Di#LOYJ78T$ocn3gew z3`5lBhO?{boFZ(dsiF}Xqqs^6$Mnn@wzK8`&$5s^pMby_mob5Bgi}}T`a0FauzES1 zk_bB~V+uE@=loMkZP*NNFBLS9`F<)nf{To4SSmUsA`Tr*9_b}Y5&Wo9QLxF5p@es1y&ZdWa>>6li~Wxb)=c2MBQ_;5Z*5d93r{jNo^%rJg>KMVe@(7A32x})^O z=}9rjCBxvB3(su{&lzUB{pnG!gf)iA-lp_nyyjq$?tLHKkr2{i_|PsbriHuGFrZZe zqbW8`RyXPNku3XZ&E$W8!wP&rcsCbwu($+@g1cd_>F{dgl?QcLuY#O{>@m z9HGy+NCG`01`pZap?y3=1|Stk2&8EAWXW8BFVZR;rThtofp4@ukLSgfe7qD*l-vdG zW5Abxa-X6CJoF-giDaYsxf5LfoBxPsb6Rc`bC`GY9z0D%anC@1{yU^zY4rPH7`3C* zgrIZ0R|~q%L%8eLpip+Ag917AwMPRw&S5OLRtoOXD!!4&5|1MuLl#Msq_9iGj3}O> TK)=9eSRrYQq^o#=b&UN1XJ(M^ literal 0 HcmV?d00001 diff --git a/out/production/java-lessons/ru/tn/courses/tmuminov/v2/task2/domain/models/NotificationModel.class b/out/production/java-lessons/ru/tn/courses/tmuminov/v2/task2/domain/models/NotificationModel.class new file mode 100644 index 0000000000000000000000000000000000000000..91f34d2c9d490656415d14779b8c30d44b9088d9 GIT binary patch literal 2176 zcmb_eTTc@~7(D}}Tj~OBDJY`i1+*=f6}-D#?d*L0&N(yZoB7%wKaalyn8njLI?$;hqN58@hQuyE;6|C- z+r}$Vlun5uI&0aMH_yNdhHedU9p|7kEI3uevyGyxI<9aHuTrg8wmdKnW(<$J zdoxB!R=8yw6gYp)AyRdP!(bNL6IvH` zNjNnLQ_-b#^drrnRfOyEZNV_xCgZ9P^eI#1-Jp*1xWEwenGV=VM@cM6>A9Z6_kCyFz9{a-aS!)3JkaqFj~GVk`*fB%jbZ?!oFdT+0v+M)8Ck#LFIk!t?;f@xh+^g=JA^U>s6^aDFjgR|cMYu)B z+V`XrhAfx4>xKgX$J=I-uzJI-4yqP|$uQj5{7lvC%%DZ}QMaO}hn^&Zp0{n`)bxd` zVUc01ZqO+k*09WQ<@8jljPDMnsa1AROXx&O^>=zpsWx02sejU_fzc1eHOjh9vv)K` zXiVq6f#rsepyeix(36`yLh_K}9k@ZCQNk$BQTojJ`541Znh~<5qrOkql$3f}^=it$ zMejYGlmPk)6a_^HrTxanvdC&xn6QW@w%ufje|gVt7pdG3GFj1&YQg`UFc@!O$=( zL9JR1-7wXLRpoU@-Qi}H+v{S%5O=&)ktkSE_`N10g)~FLKiJS4oFQB4MzrJFhPkf^ z+pLTss_6AS-8RHJ*o?Y0gTmFWP-xQPI(KVUbxXHN2`;zE zVJ_dJ{+=?648!?QBB2Z!DI+YS;D`u1-a3LI?d_11EBu`yQcH*QIwxdEH_>?&=@rXz z9oN>Iew0oshQ|p!!BYv(WIV?UhKa6p?Uv~p4X*m!0fb?o-0{M26b|1o+twjheZ%*< zS*>$tvSe9@t)>>r^2~L4uQmYger@tK?o@1}=~{LevRc<2C%h5(_!M&6gZ+%~g9^s+ zl9KE^W3BsagQ@o_Qw$RQlJv_k$VJoSwig3;B)nmm>K3U7Z6|37D-7coo6_z06~a7q zh(3Bh5oAT5qFGk77H_1sL8Aml4eu^l-J{iK8lyDkl%HVA*fAt!<`_w3_86HX+V8`C z`o;(YLQT?F@$E5%2ecxj$0N>j9+P0ti55jMJfwLtLI$8C&?b30L8%@>Sw%#8=2X dour9ifo?pGMQHSI`3lRlo1op-c#Bnx{sqSppe_Ia literal 0 HcmV?d00001 diff --git a/out/production/java-lessons/ru/tn/courses/tmuminov/v2/task2/presentation/ExampleUIClass.class b/out/production/java-lessons/ru/tn/courses/tmuminov/v2/task2/presentation/ExampleUIClass.class new file mode 100644 index 0000000000000000000000000000000000000000..f3b4e01aedcad1686bccb40f32af08fa3576a06c GIT binary patch literal 4466 zcmbtY`&Sg#9sk^AahG8XxCp339aFUIlClw_tu98CVq66!S-`4ElVSG)BfB%(nOT&+ z(>8s--?5MM8Cv_usV87ha!&t%p8lA>rl+Uv=gus!lm#sLVdsADo$vj=U$cMz_uGF1 zFn~8TM9>gJR7WFr3AEle=goA{v}e-Srf$o;FR*LCvMv7^frg&sWDIeEGj1jA+v&Vh zaXsm!{Zgf5+0J}=zCZ1o-dumW;FL_uPG5C=Yud`2zU9~xo*XhgsUe1jCNx8jVYiOQ z&?1o8j$GN5p0xddPI~yRSt=LhM0TiXdY(X=y^)K+z{qw)HNF53p z4GDB9M?5aDuct0ba#BMp4k@I=)O`&pWS>b+D&ro}@dVx{@YvKk*-3Sk=z6U(>ef*m z$MAlEsJv^@@8V_*Nr9`|8q)O5H2qzCDL-r4wk&$-aaoizu34%LfT8fEhMq70p49OH z^a*tNnh&)XsFeK5P1(SuWSrDIMx`LdVlMNuBO&j=V#iwqQ@4J}8jg zfuC}txw`6{3e`EIBZC2^f>-kD;0avWiFfKVr4lSLS9YMpu!_Ap;%PV=s&QV&1q?Cx zEh=3mx$W(0NwaKUy3=N!rFqCK z7N^YoT#m)F;ssfr)o~eD1P-nUHYz>OoMCmYMHRU4-r2=5Dv-GDTD~+E*er}v$Vy|e zxu#tRK;>=_m_RqS#)#xW6C(kzTvHZ8fgCm9y9T5MIquIu;+ zZV1GxoXCD7VjQ;wT580y&5~5NU)1qYbvs`1q^l0&cv;}U^;wpG!*>iep@QMh$`w7% z#W5vt@_3)IQt%9|zt31nRYN<`XE53g?dd)v2o^(oiV&--p=l^U#xSj82D1Wt*7|Oi z?wgS=#VDKXuiS28ovgCsZ5?wcvLz|us;(S&hGre^Rmqin7wyR=C*xq>X&vX$oM%is zu2J!5V@0B@<6|Jds3IY7e)}-p7-(VsnNvj>cr6BBM+NibsEF2Pr@-QSWU$erbxyV| zB;km%d9J8V+K#(A7VvS-K2AlsA!Nj%U`$1A*!bDDKZ#Gp@M#^NQ4!s?(%Nfq7?DAo z7wsmzg3rb9c^zNCtB)}IR81}IO36!yX}prDB$}HT8XC^!1kOHcw$>w*iQ`KQ!D{pv z1zEJ_)x;CWSE%#KvF-S4uNW;uPJyY|qB8Por8FhoapiuMaZcVWPMWTz_SM6vKWlMV z+g{AADxiSw`KIfSxsIAH1a{|F<2(p-k>weUl%E?l%T>6Zd=~z=D0EV$N^v1JIP5-a#WlZe9iS*js-O@ zFIvjvZR>~PJ{5sXy$g=xd%kOyN2NdO6ug#QcwNIU@XHu}rQ_H5jldIYb;q*jojI8v z2}I`&lP$z|+y#N=Qtj>^wUxShDP(ZTvE#9ps&41W?h zv^6Tfrb6T32suVLC#ad9UqOTtYG&seQB!!Z=X@NjoGF8q!&tC#nh93+ajp^7@`9Dk zi|a11s|L@na(6#~fR|GbAyV%kcH<$MmY@-Az3~nbHy&W`LmYUBgG(?{4NK_en;s&i zme5NuP4M^<`U##Q_@O17CU}%s+pRI^eqZYKG8+(yN z2PflBoa1NFW$ecUy6|;k>6DeS;T!lSSAlO)+6a`~?{Zc4xs`eg-S;q-N{lSyYKl8! z8P6|aGL^Ww?%;(~;w5#EFx4|e`z!JTUH8zOic+sd#8X|%uonOGW-3u4k`lQAO5`(i z0dSPxrpK_G#@|PQ4?Sl^d?RPYIIQ4LF~b|@tr`S zTUCX=ORCK@#J@Oj{S(m$zQ=|D|@353?2xQ0pRDw9s!!>c5&OcO<D6T%Vv6hGst Yg8An>`z_w!@Ao{>cyb?q#GkSMzdyk8?EnA( literal 0 HcmV?d00001 diff --git a/src/main/java/ru/tn/courses/rnemykin/Main1.java b/src/main/java/ru/tn/courses/rnemykin/Main1.java deleted file mode 100644 index 7de40bda..00000000 --- a/src/main/java/ru/tn/courses/rnemykin/Main1.java +++ /dev/null @@ -1,10 +0,0 @@ -package ru.tn.courses.rnemykin; - -/** - * Created by rnemykin on 03.03.17. - */ -public class Main1 { - public static void main(String[] args) { - System.out.println("it works!"); - } -} diff --git a/src/main/java/ru/tn/courses/tmuminov/v2/task1/subtask1/Subtask1.java b/src/main/java/ru/tn/courses/tmuminov/v2/task1/subtask1/Subtask1.java new file mode 100644 index 00000000..02806ff7 --- /dev/null +++ b/src/main/java/ru/tn/courses/tmuminov/v2/task1/subtask1/Subtask1.java @@ -0,0 +1,19 @@ +package ru.tn.courses.tmuminov.v2.task1.subtask1; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +// В целочисленной последовательности есть нулевые элементы. Создать массив из номеров этих элементов. +public class Subtask1 { + + public static void main(String[] args) { + List exampleArray = Arrays.asList(1, 0, 2, 3, 4, 0, 15, 67, 0, 413, 1, 0, 5); + List resultArray = new ArrayList<>(); + + for (int i = 0; i < exampleArray.size(); i++) + if (exampleArray.get(i) == 0) resultArray.add(i); + + System.out.println(resultArray); + } +} diff --git a/src/main/java/ru/tn/courses/tmuminov/v2/task1/subtask2/ExampleUIClass.java b/src/main/java/ru/tn/courses/tmuminov/v2/task1/subtask2/ExampleUIClass.java new file mode 100644 index 00000000..74ba6cbd --- /dev/null +++ b/src/main/java/ru/tn/courses/tmuminov/v2/task1/subtask2/ExampleUIClass.java @@ -0,0 +1,48 @@ +package ru.tn.courses.tmuminov.v2.task1.subtask2; + +import ru.tn.courses.tmuminov.v2.task1.subtask2.enums.Banks; +import ru.tn.courses.tmuminov.v2.task1.subtask2.models.Rate; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.HashMap; +import java.util.Map; + +public class ExampleUIClass { + + private final BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); + private double highestRate = 0; + private Banks resultBunk; + private final Map banks = new HashMap<>(); + + { + for (Banks bank : Banks.values()) { + banks.put(bank, new Rate()); + } + } + + public void startProgram() throws IOException { + print("Write your amount of money"); + int amount = Integer.parseInt(bufferedReader.readLine()); + + print("Here is information about exchange rates\n"); + banks.forEach((bank, rate) -> { + print(bank + " -> " + rate.getRate() + " " + rate.getCurrency()); + if(rate.getRate() > highestRate){ + highestRate = rate.getRate(); + resultBunk = bank; + } + }); + + + print("It is most profitable to buy rubles from this bank: " + resultBunk + "\n"); + print("the current rate of this bank is the highest: " + highestRate + "\n"); + + print("you will receive " + amount*highestRate + " rubles"); + } + + private void print(String message) { + System.out.println(message); + } +} diff --git a/src/main/java/ru/tn/courses/tmuminov/v2/task1/subtask2/Subtask2.java b/src/main/java/ru/tn/courses/tmuminov/v2/task1/subtask2/Subtask2.java new file mode 100644 index 00000000..98a6ab16 --- /dev/null +++ b/src/main/java/ru/tn/courses/tmuminov/v2/task1/subtask2/Subtask2.java @@ -0,0 +1,20 @@ +package ru.tn.courses.tmuminov.v2.task1.subtask2; + + +// У вас есть доллары. Вы хотите обменять их на рубли. Есть информация о стоимости купли-продажи в банках города. +// В городе N банков. Составьте программу, определяющую, какой банк выбрать, чтобы выгодно обменять доллары на рубли. + +import java.io.IOException; + +public class Subtask2 { + + public static void main(String[] args) { + ExampleUIClass exampleUIClass = new ExampleUIClass(); + try { + exampleUIClass.startProgram(); + } catch (IOException e) { + e.printStackTrace(); + } + } + +} diff --git a/src/main/java/ru/tn/courses/tmuminov/v2/task1/subtask2/enums/Banks.java b/src/main/java/ru/tn/courses/tmuminov/v2/task1/subtask2/enums/Banks.java new file mode 100644 index 00000000..39c25a11 --- /dev/null +++ b/src/main/java/ru/tn/courses/tmuminov/v2/task1/subtask2/enums/Banks.java @@ -0,0 +1,9 @@ +package ru.tn.courses.tmuminov.v2.task1.subtask2.enums; + +public enum Banks { + VTB, + SBERBANK, + TINKOFF, + POCHTABANK, + ALFABANK +} diff --git a/src/main/java/ru/tn/courses/tmuminov/v2/task1/subtask2/enums/Currency.java b/src/main/java/ru/tn/courses/tmuminov/v2/task1/subtask2/enums/Currency.java new file mode 100644 index 00000000..53ec7dd0 --- /dev/null +++ b/src/main/java/ru/tn/courses/tmuminov/v2/task1/subtask2/enums/Currency.java @@ -0,0 +1,6 @@ +package ru.tn.courses.tmuminov.v2.task1.subtask2.enums; + +public enum Currency { + RUB, + USD +} diff --git a/src/main/java/ru/tn/courses/tmuminov/v2/task1/subtask2/models/Rate.java b/src/main/java/ru/tn/courses/tmuminov/v2/task1/subtask2/models/Rate.java new file mode 100644 index 00000000..c7b5a706 --- /dev/null +++ b/src/main/java/ru/tn/courses/tmuminov/v2/task1/subtask2/models/Rate.java @@ -0,0 +1,25 @@ +package ru.tn.courses.tmuminov.v2.task1.subtask2.models; + +import ru.tn.courses.tmuminov.v2.task1.subtask2.enums.Currency; + +public class Rate { + + private double rate = Math.random() * 10 + 65; + private Currency currency = Currency.RUB; + + public double getRate() { + return rate; + } + + public void setRate(int rate) { + this.rate = rate; + } + + public Currency getCurrency() { + return currency; + } + + public void setCurrency(Currency currency) { + this.currency = currency; + } +} diff --git a/src/main/java/ru/tn/courses/tmuminov/v2/task1/subtask3/Subtask3.java b/src/main/java/ru/tn/courses/tmuminov/v2/task1/subtask3/Subtask3.java new file mode 100644 index 00000000..0dabfe66 --- /dev/null +++ b/src/main/java/ru/tn/courses/tmuminov/v2/task1/subtask3/Subtask3.java @@ -0,0 +1,30 @@ +package ru.tn.courses.tmuminov.v2.task1.subtask3; + + +// Сортировка выбором. Дана последовательность чисел а1, а2, ..., аn. Требуется переставить элементы так, чтобы они были расположены по убыванию. +// Для этого в массиве, начиная с первого, выбирается наибольший элемент и ставится на первое место, а первый – на место наибольшего. +// Затем, начиная со второго, эта процедура повторяется. Написать алгоритм сортировки выбором. + +import java.util.Arrays; +import java.util.List; + +public class Subtask3 { + public static void main(String[] args) { + List exampleArray = Arrays.asList(1, 66, 2, 3, 4, 0, 15, 67, 34, 413, 1, 236, 5); + + for (int i = 0; i < exampleArray.size(); i++) { + int pos = i; + int max = exampleArray.get(i); + + for (int j = i + 1; j < exampleArray.size(); j++) { + if (exampleArray.get(j) > max) { + pos = j; + max = exampleArray.get(j); + } + } + exampleArray.set(pos, exampleArray.get(i)); + exampleArray.set(i, max); + } + System.out.println(exampleArray); + } +} diff --git a/src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask1/README b/src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask1/README new file mode 100644 index 00000000..5163aa78 --- /dev/null +++ b/src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask1/README @@ -0,0 +1,5 @@ +- Необходимо разработать модель (класс) сообщение (уведомление). +- Необходимо разработать интерфейс для обработки (отправки) сообщения. +- Реализовать классы рассылки сообщения через различные каналы: телеграм, email, смс и тд. +- Необходимо оформить все перечисления через enum +- Вынести общую логику в абстракцию \ No newline at end of file diff --git a/src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask1/Subtask1.java b/src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask1/Subtask1.java new file mode 100644 index 00000000..d736856f --- /dev/null +++ b/src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask1/Subtask1.java @@ -0,0 +1,18 @@ +package ru.tn.courses.tmuminov.v2.task2.subtask1; + +import ru.tn.courses.tmuminov.v2.task2.subtask1.presentation.ExampleUIClass; + +import java.io.IOException; + +public class Subtask1 { + + + + public static void main(String[] args){ + try { + new ExampleUIClass().startProgram(); + } catch (IOException e) { + e.printStackTrace(); + } + } +} diff --git a/src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask1/data/mail_channels/EmailNotificationChannel.java b/src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask1/data/mail_channels/EmailNotificationChannel.java new file mode 100644 index 00000000..0a6c3afb --- /dev/null +++ b/src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask1/data/mail_channels/EmailNotificationChannel.java @@ -0,0 +1,25 @@ +package ru.tn.courses.tmuminov.v2.task2.subtask1.data.mail_channels; + +import ru.tn.courses.tmuminov.v2.task2.subtask1.domain.enums.StatusCallback; +import ru.tn.courses.tmuminov.v2.task2.subtask1.domain.interfaces.Notifiable; +import ru.tn.courses.tmuminov.v2.task2.subtask1.domain.models.NotificationModel; +import ru.tn.courses.tmuminov.v2.task2.subtask1.domain.interfaces.CallbackStatus; + +public class EmailNotificationChannel implements Notifiable { + + @Override + public void sendNotification(NotificationModel notificationModel, CallbackStatus callbackStatus) { + // TODO something with user data + try { + // Random callback status + int temp = (Math.random() <= 0.5) ? 1 : 2; + Thread.sleep(2000); + if (temp % 2 == 0) { + callbackStatus.response(StatusCallback.SUCCESS); + } else + callbackStatus.response(StatusCallback.FAILURE); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } +} diff --git a/src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask1/data/mail_channels/SMSNotificationChannel.java b/src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask1/data/mail_channels/SMSNotificationChannel.java new file mode 100644 index 00000000..9b023c71 --- /dev/null +++ b/src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask1/data/mail_channels/SMSNotificationChannel.java @@ -0,0 +1,27 @@ +package ru.tn.courses.tmuminov.v2.task2.subtask1.data.mail_channels; + +import ru.tn.courses.tmuminov.v2.task2.subtask1.domain.enums.StatusCallback; +import ru.tn.courses.tmuminov.v2.task2.subtask1.domain.interfaces.Notifiable; +import ru.tn.courses.tmuminov.v2.task2.subtask1.domain.models.NotificationModel; +import ru.tn.courses.tmuminov.v2.task2.subtask1.domain.interfaces.CallbackStatus; + +public class SMSNotificationChannel implements Notifiable { + + @Override + public void sendNotification(NotificationModel notificationModel, CallbackStatus callbackStatus) { + // TODO something with user data + try { + // Random callback status + int temp = (Math.random() <= 0.5) ? 1 : 2; + Thread.sleep(2000); + if (temp % 2 == 0) { + callbackStatus.response(StatusCallback.SUCCESS); + } else + callbackStatus.response(StatusCallback.FAILURE); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + + +} diff --git a/src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask1/data/mail_channels/TelegramNotificationChannel.java b/src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask1/data/mail_channels/TelegramNotificationChannel.java new file mode 100644 index 00000000..384934f8 --- /dev/null +++ b/src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask1/data/mail_channels/TelegramNotificationChannel.java @@ -0,0 +1,27 @@ +package ru.tn.courses.tmuminov.v2.task2.subtask1.data.mail_channels; + +import ru.tn.courses.tmuminov.v2.task2.subtask1.domain.enums.StatusCallback; +import ru.tn.courses.tmuminov.v2.task2.subtask1.domain.interfaces.Notifiable; +import ru.tn.courses.tmuminov.v2.task2.subtask1.domain.models.NotificationModel; +import ru.tn.courses.tmuminov.v2.task2.subtask1.domain.interfaces.CallbackStatus; + +public class TelegramNotificationChannel implements Notifiable { + + @Override + public void sendNotification(NotificationModel notificationModel, CallbackStatus callbackStatus) { + // TODO something with user data + try { + // Random callback status + int temp = (Math.random() <= 0.5) ? 1 : 2; + Thread.sleep(2000); + if (temp % 2 == 0) { + callbackStatus.response(StatusCallback.SUCCESS); + } else + callbackStatus.response(StatusCallback.FAILURE); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + + +} diff --git a/src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask1/data/mail_channels/WhatsappNotificationChannel.java b/src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask1/data/mail_channels/WhatsappNotificationChannel.java new file mode 100644 index 00000000..18d650a5 --- /dev/null +++ b/src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask1/data/mail_channels/WhatsappNotificationChannel.java @@ -0,0 +1,25 @@ +package ru.tn.courses.tmuminov.v2.task2.subtask1.data.mail_channels; + +import ru.tn.courses.tmuminov.v2.task2.subtask1.domain.enums.StatusCallback; +import ru.tn.courses.tmuminov.v2.task2.subtask1.domain.interfaces.Notifiable; +import ru.tn.courses.tmuminov.v2.task2.subtask1.domain.models.NotificationModel; +import ru.tn.courses.tmuminov.v2.task2.subtask1.domain.interfaces.CallbackStatus; + +public class WhatsappNotificationChannel implements Notifiable { + + @Override + public void sendNotification(NotificationModel notificationModel, CallbackStatus callbackStatus) { + // TODO something with user data + try { + // Random callback status + int temp = (Math.random() <= 0.5) ? 1 : 2; + Thread.sleep(2000); + if (temp % 2 == 0) { + callbackStatus.response(StatusCallback.SUCCESS); + } else + callbackStatus.response(StatusCallback.FAILURE); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } +} diff --git a/src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask1/domain/NotificationUseCase.java b/src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask1/domain/NotificationUseCase.java new file mode 100644 index 00000000..9ed1d866 --- /dev/null +++ b/src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask1/domain/NotificationUseCase.java @@ -0,0 +1,23 @@ +package ru.tn.courses.tmuminov.v2.task2.subtask1.domain; + +import ru.tn.courses.tmuminov.v2.task2.subtask1.domain.interfaces.Notifiable; +import ru.tn.courses.tmuminov.v2.task2.subtask1.domain.models.NotificationModel; +import ru.tn.courses.tmuminov.v2.task2.subtask1.domain.models.SenderModel; +import ru.tn.courses.tmuminov.v2.task2.subtask1.domain.interfaces.CallbackStatus; +import ru.tn.courses.tmuminov.v2.task2.subtask1.domain.models.MessageModel; + +import java.net.URI; + +public class NotificationUseCase { + + public void sendNotification(Notifiable clazz, String message, String username, CallbackStatus callbackStatus){ + clazz.sendNotification(mapToModel(message, username), callbackStatus); + } + + private NotificationModel mapToModel(String message, String username){ + SenderModel senderModel = new SenderModel(1, username, URI.create("https://klike.net/uploads/posts/2019-07/1564314090_3.jpg")); + MessageModel messageModel = new MessageModel(1, message, System.currentTimeMillis()); + + return new NotificationModel(1, senderModel, messageModel); + } +} diff --git a/src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask1/domain/enums/StatusCallback.java b/src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask1/domain/enums/StatusCallback.java new file mode 100644 index 00000000..9f911ad8 --- /dev/null +++ b/src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask1/domain/enums/StatusCallback.java @@ -0,0 +1,6 @@ +package ru.tn.courses.tmuminov.v2.task2.subtask1.domain.enums; + +public enum StatusCallback { + SUCCESS, + FAILURE +} diff --git a/src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask1/domain/interfaces/CallbackStatus.java b/src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask1/domain/interfaces/CallbackStatus.java new file mode 100644 index 00000000..8bb73bfa --- /dev/null +++ b/src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask1/domain/interfaces/CallbackStatus.java @@ -0,0 +1,7 @@ +package ru.tn.courses.tmuminov.v2.task2.subtask1.domain.interfaces; + +import ru.tn.courses.tmuminov.v2.task2.subtask1.domain.enums.StatusCallback; + +public interface CallbackStatus { + void response(StatusCallback statusCallback); +} diff --git a/src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask1/domain/interfaces/Notifiable.java b/src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask1/domain/interfaces/Notifiable.java new file mode 100644 index 00000000..e86e76c4 --- /dev/null +++ b/src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask1/domain/interfaces/Notifiable.java @@ -0,0 +1,7 @@ +package ru.tn.courses.tmuminov.v2.task2.subtask1.domain.interfaces; + +import ru.tn.courses.tmuminov.v2.task2.subtask1.domain.models.NotificationModel; + +public interface Notifiable { + void sendNotification(NotificationModel notificationModel, CallbackStatus callbackStatus); +} diff --git a/src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask1/domain/models/MessageModel.java b/src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask1/domain/models/MessageModel.java new file mode 100644 index 00000000..ee4ea66c --- /dev/null +++ b/src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask1/domain/models/MessageModel.java @@ -0,0 +1,8 @@ +package ru.tn.courses.tmuminov.v2.task2.subtask1.domain.models; + +public record MessageModel( + int messageId, + String message, + long sentTime +) { +} diff --git a/src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask1/domain/models/NotificationModel.java b/src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask1/domain/models/NotificationModel.java new file mode 100644 index 00000000..9c31aef0 --- /dev/null +++ b/src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask1/domain/models/NotificationModel.java @@ -0,0 +1,8 @@ +package ru.tn.courses.tmuminov.v2.task2.subtask1.domain.models; + +public record NotificationModel( + int notificationId, + SenderModel user, + MessageModel message +) { +} diff --git a/src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask1/domain/models/SenderModel.java b/src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask1/domain/models/SenderModel.java new file mode 100644 index 00000000..f3869c6e --- /dev/null +++ b/src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask1/domain/models/SenderModel.java @@ -0,0 +1,10 @@ +package ru.tn.courses.tmuminov.v2.task2.subtask1.domain.models; + +import java.net.URI; + +public record SenderModel( + int senderId, + String senderName, + URI senderPhoto +) { +} diff --git a/src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask1/presentation/ExampleUIClass.java b/src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask1/presentation/ExampleUIClass.java new file mode 100644 index 00000000..7dbf177e --- /dev/null +++ b/src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask1/presentation/ExampleUIClass.java @@ -0,0 +1,72 @@ +package ru.tn.courses.tmuminov.v2.task2.subtask1.presentation; + +import ru.tn.courses.tmuminov.v2.task2.subtask1.data.mail_channels.EmailNotificationChannel; +import ru.tn.courses.tmuminov.v2.task2.subtask1.data.mail_channels.SMSNotificationChannel; +import ru.tn.courses.tmuminov.v2.task2.subtask1.data.mail_channels.TelegramNotificationChannel; +import ru.tn.courses.tmuminov.v2.task2.subtask1.data.mail_channels.WhatsappNotificationChannel; +import ru.tn.courses.tmuminov.v2.task2.subtask1.domain.NotificationUseCase; +import ru.tn.courses.tmuminov.v2.task2.subtask1.domain.enums.StatusCallback; +import ru.tn.courses.tmuminov.v2.task2.subtask1.domain.interfaces.CallbackStatus; +import ru.tn.courses.tmuminov.v2.task2.subtask1.domain.interfaces.Notifiable; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; + +public class ExampleUIClass { + + private final NotificationUseCase notificationUseCase = new NotificationUseCase(); + private final BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); + private boolean exit = false; + + private final TelegramNotificationChannel telegramNotificationChannel = new TelegramNotificationChannel(); + private final WhatsappNotificationChannel whatsappNotificationChannel = new WhatsappNotificationChannel(); + private final SMSNotificationChannel smsNotificationChannel = new SMSNotificationChannel(); + private final EmailNotificationChannel emailNotificationChannel = new EmailNotificationChannel(); + + private final CallbackStatus responseMessageCallbackStatus = statusCallback -> { + if (statusCallback == StatusCallback.SUCCESS) { + print("Message delivered"); + } else print("Message not delivered"); + }; + + private String message; + private String username; + + public void startProgram() throws IOException { + while (!exit) { + print("Write your message"); + message = bufferedReader.readLine(); + + print("Write your name"); + username = bufferedReader.readLine(); + + print("Where to send the message?"); + print("1. Telegram \n2. Whatsapp \n3. SMS \n4. Email \n0. Exit \n"); + + int chosenChannel = Integer.parseInt(bufferedReader.readLine()); + + if (chosenChannel == 0) { + exit = true; + } else sendMessageToChosenChanel(chosenChannel); + } + print("Thanks for using"); + } + + private void sendMessageToChosenChanel(int chosenChannel) { + switch (chosenChannel) { + case 1 -> send(telegramNotificationChannel); + case 2 -> send(whatsappNotificationChannel); + case 3 -> send(smsNotificationChannel); + case 4 -> send(emailNotificationChannel); + } + } + + private void send(Notifiable notifiable) { + notificationUseCase.sendNotification(notifiable, message, username, responseMessageCallbackStatus); + } + + private void print(String message) { + System.out.println(message); + } +} diff --git a/src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask2/FirstClass.java b/src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask2/FirstClass.java new file mode 100644 index 00000000..c0762074 --- /dev/null +++ b/src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask2/FirstClass.java @@ -0,0 +1,15 @@ +package ru.tn.courses.tmuminov.v2.task2.subtask2; + +import ru.tn.courses.tmuminov.v2.task2.subtask2.instances.Instance1; +import ru.tn.courses.tmuminov.v2.task2.subtask2.instances.Instance2; +import ru.tn.courses.tmuminov.v2.task2.subtask2.instances.Instance3; + +public class FirstClass { + + FirstClass(){ + SecondClass secondClass = new SecondClass(); + secondClass.method(new Instance1()); + secondClass.method(new Instance2()); + secondClass.method(new Instance3()); + } +} diff --git a/src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask2/SecondClass.java b/src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask2/SecondClass.java new file mode 100644 index 00000000..5a11c5da --- /dev/null +++ b/src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask2/SecondClass.java @@ -0,0 +1,15 @@ +package ru.tn.courses.tmuminov.v2.task2.subtask2; + +import ru.tn.courses.tmuminov.v2.task2.subtask2.instances.Instance1; +import ru.tn.courses.tmuminov.v2.task2.subtask2.instances.Instance2; + +public class SecondClass { + + public void method(Object o) { + if (o instanceof Instance1) { + System.out.println("Message from instance 1"); + } else if (o instanceof Instance2) { + System.out.println("Message from instance 2"); + } else System.out.println("Message from instance 3"); + } +} diff --git a/src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask2/Subtask2.java b/src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask2/Subtask2.java new file mode 100644 index 00000000..7fafb80a --- /dev/null +++ b/src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask2/Subtask2.java @@ -0,0 +1,10 @@ +package ru.tn.courses.tmuminov.v2.task2.subtask2; + +public class Subtask2 { + + + // Написать программу, в которой на вход подается сущность и в зависимости от типа исполняется основная бизнес логика + public static void main(String[] args) { + FirstClass firstClass = new FirstClass(); + } +} diff --git a/src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask2/instances/Instance1.java b/src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask2/instances/Instance1.java new file mode 100644 index 00000000..914c60a3 --- /dev/null +++ b/src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask2/instances/Instance1.java @@ -0,0 +1,4 @@ +package ru.tn.courses.tmuminov.v2.task2.subtask2.instances; + +public class Instance1 { +} diff --git a/src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask2/instances/Instance2.java b/src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask2/instances/Instance2.java new file mode 100644 index 00000000..9b4f30e0 --- /dev/null +++ b/src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask2/instances/Instance2.java @@ -0,0 +1,4 @@ +package ru.tn.courses.tmuminov.v2.task2.subtask2.instances; + +public class Instance2 { +} diff --git a/src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask2/instances/Instance3.java b/src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask2/instances/Instance3.java new file mode 100644 index 00000000..73a8fec5 --- /dev/null +++ b/src/main/java/ru/tn/courses/tmuminov/v2/task2/subtask2/instances/Instance3.java @@ -0,0 +1,4 @@ +package ru.tn.courses.tmuminov.v2.task2.subtask2.instances; + +public class Instance3 { +} From c7cfd64bdcf302e0f5f7bac8ae45471b16f14eea Mon Sep 17 00:00:00 2001 From: timur-muminov1 Date: Sun, 7 Nov 2021 23:14:51 +0300 Subject: [PATCH 2/4] 1st and 2nd labs done --- .../tmuminov/v2/task1/subtask1/Subtask1.class | Bin 0 -> 1315 bytes .../v2/task1/subtask2/ExampleUIClass.class | Bin 0 -> 3957 bytes .../tmuminov/v2/task1/subtask2/Subtask2.class | Bin 0 -> 810 bytes .../tmuminov/v2/task1/subtask2/enums/Banks.class | Bin 0 -> 1351 bytes .../v2/task1/subtask2/enums/Currency.class | Bin 0 -> 1201 bytes .../tmuminov/v2/task1/subtask2/models/Rate.class | Bin 0 -> 1080 bytes .../tmuminov/v2/task1/subtask3/Subtask3.class | Bin 0 -> 1426 bytes .../ru/tn/courses/tmuminov/v2/task2/README | 5 +++++ .../tn/courses/tmuminov/v2/task2/Subtask1.class | Bin 0 -> 688 bytes 9 files changed, 5 insertions(+) create mode 100644 out/production/java-lessons/ru/tn/courses/tmuminov/v2/task1/subtask1/Subtask1.class create mode 100644 out/production/java-lessons/ru/tn/courses/tmuminov/v2/task1/subtask2/ExampleUIClass.class create mode 100644 out/production/java-lessons/ru/tn/courses/tmuminov/v2/task1/subtask2/Subtask2.class create mode 100644 out/production/java-lessons/ru/tn/courses/tmuminov/v2/task1/subtask2/enums/Banks.class create mode 100644 out/production/java-lessons/ru/tn/courses/tmuminov/v2/task1/subtask2/enums/Currency.class create mode 100644 out/production/java-lessons/ru/tn/courses/tmuminov/v2/task1/subtask2/models/Rate.class create mode 100644 out/production/java-lessons/ru/tn/courses/tmuminov/v2/task1/subtask3/Subtask3.class create mode 100644 out/production/java-lessons/ru/tn/courses/tmuminov/v2/task2/README create mode 100644 out/production/java-lessons/ru/tn/courses/tmuminov/v2/task2/Subtask1.class diff --git a/out/production/java-lessons/ru/tn/courses/tmuminov/v2/task1/subtask1/Subtask1.class b/out/production/java-lessons/ru/tn/courses/tmuminov/v2/task1/subtask1/Subtask1.class new file mode 100644 index 0000000000000000000000000000000000000000..0d6c808d021aa6e7da4c90bbd0104ae52a2ff774 GIT binary patch literal 1315 zcmb7DOH&g;5dJ0`vLV^P0up?IqM*EF1$+mi2%@QqVpXhI=xGwxxR7j8`vBure}z?g zu&nYR7d`OM((>#t@V9tCdv-TMd>qVUdb<1T>Hd1AzwUha3}6~JV+cW#5mwNG2!p!J zSGiW^W=UHpEbB#wAu?^4hLdKHhKBPpq6{6opp5D0CEbcaMod8*3WL1L%dWogkRdsg z8P5KJO~ufLb{VRI4sZA!`QtYK5`!J!9x4)7~V1!sB@0+y1okD<#; zw0n&3#LxvPjvnlnaX`UA9AaqO#rZkHw(&&w*kuH?S3w_+kY3WMfbM1rK?QX_9gTB}CT-|o`3Po34k=hS7s@ffk za^xIK=M`$+I5Zij6-;2V!MYhkS5OlXW%C~;&@G-}n6O;UF|}gVwQSwioQhj9%<8JP zI;lC_UYXErx8QGb!G<9`TV0}FwPy`ezwK5Ex^QKG`W zg+%rvx)wLleM?IBj&38#@CpN?z1uh(!WYOJIQkrIW4(ml#_vtQ)75|N-cx8D>9NBp|!C{?>V#y&2f%1rq8*C>;)FBTCrAhi4$s=i_eW<&$ zCT>d~5K3Fxt}kV0BRM#mQPF!W#M^So?vr&T^xzbqP(p=aE5OgX`j9xc{1WEpmb zLZ(}u44O^hiMg|a&k0XMj$vqNt?G0GIV(NE?P$3dI&RajRmV2;ud+0|;7egMq)dll z$IKcUDmnBbuY4R}*gd+YNU@fKh8;?1C&R#sP-MPRto33yhBWNau@|>9Jm3Xo>69C8 z;Q7KYOFOVl$DJ?FA1+JockU_sL0$bhTt0S%+g(dMQJu25?=x(zuL_)8TJ~r)Bo$?H zpN>0VF!Z&}R$KV;ESG|TO>5ZCusw`6kfv2W!Tt70-pyeIX|?Z89iPQr3|s2l>5$cJ zk&#fAG&M(XSi(z5sH$^j_Qcv!8o6Z(yT;yBxj1ZPG#{R!=Ce=DTT2> zsW!On297k`reV8|SjZ95M|4y$PDpn>(;;I!lE$cpO{YcWqsnVS$LDdBAxm{VH)A@K z$idO1)mS=*Nla;&)^QBSm$DpsT6Lso36E5CIn^BvKfzu#ixUjR6Li1~(>F|~>3TMo zrt28I?gr8jR~l_PsKW3FNk5mT1O1qeFJOkwEN?VKmo#4-U4KefS9v9lDlE5V;53xw z@}xQCI(}daucFfSxQP1#n?O72K1@5eTPL{j@2$;}gIUQ`AzsnkucDUrrS zMR;G)@l||{ikK3X9XK1S{*`mEf+*M1>(UMP#O^nW*6Lz^)7L9Isn6lb>-L+^TWURO5Iu zqnMmF$+oEocl~BRb~K43XC-fRh#y1E8oo)_*(TYWL8mj~$6dj}#k2i*mH_=#4!_24H2hXk)9)Axw*VT&9$f{;mmqyLX>wJ#|2Gh0%r7NCUy39# z^>IM5_&rr+RjQlbc717dJ-2B}#T|xpje4+PcmWN3qv^S}p$NoKWOBq{xh!61I3(M` zXoQq6!-haLILl&6trCbk&}i2msavOx$avDUEW;BGVa^MK#dfmzGqotpxO;-87;!|^ zafBE4zk-SHp=h}1{a zLS;1U*6#K&McB`s5Kf4FXBQp*!!Fsb{6raaI6AJB?8$)CihYZ!{qk95a4?;ilZpuG{%+# zAxC2Ox6|5F_%=EF9nz#y@LkeJEp(iQqcl>EXWzq@$F75~*i)aIphks084`N4v0mDN zr|}F}e@Y$oSlcrMLz;FSD2*MsjwbysFTx1}QDYU^E3cuyqy{RvW7lwIB~?4ag1CbU z$Dr6oD7yU=Qz5i&M0%I49|#jgnV>JK@8dc0RV6A7Hb##h(BBk(h#%3rKuVvdxu4^g fcm=PLqpyX}KZMUW!snmxCQ0UK?JfKT?_lVE8A)TO literal 0 HcmV?d00001 diff --git a/out/production/java-lessons/ru/tn/courses/tmuminov/v2/task1/subtask2/Subtask2.class b/out/production/java-lessons/ru/tn/courses/tmuminov/v2/task1/subtask2/Subtask2.class new file mode 100644 index 0000000000000000000000000000000000000000..5ea8c853bab5dbe9aaeb33b76a87fbbca4ebbb58 GIT binary patch literal 810 zcmb7C+fEcg5IsFR(8D-;fn`xq@t%MhJK%#c5MKx;B!ieNY+`)s9Xo5oTsA#D8$Q85 z@tGG$H1PxcD7AXPm`!}ZnWU<_PF0<%>iY5X>vsTKcpSn*gTs$7gIR{ok(@}8%6ugD zhes;046|E0*Y-6-V|8u75iqLL%(L?^<$i)fFH z&TZeyCM6%B0R2mR3K+f2Z5G)W~RaZNR{YwRZtcH|}Dk84+>!AE68_H8oy_S68oZ z`elfzSr2tjj_Z~=Rv5xQy>O!5Xg8PUpV>WkP2fHjXmi}>fw|owxkxubnvtG)at?M{ z!#$D?2IjCtGP-cUb=;_JH?d3>7yQ{RBkA5Z@b~AKi=Un${DNTb*%{iW%sWbsosD;BmcS=;?C9f=T) zhR^;e<9&}JBlu}sve$dwx%b_BdftBj`Th$)4x2JU44ICvdyd{{`yJPEb+6^OY^UAT zyDPe9y2okV_3Qj$MYkNk&sX!M_d5o| z`iH?d$GI$76lNG z-X!GBf7(k8_9_?>rFO$?R?Uvhiw7r!9kWFTC2k5xF7-a!G-AxK4;|Cb`Jrq43?bSD3#(WY`(!a<@e|XK=nKe;OH-$q{VKNmkGo2jvCdn^OTpQQtK4Zp zBUywA1^MwOSWW6dGHT%-WTO`8k!-bS4?{*x?jdg6oJhedYy^e8pwR9Qs*`vkonqkx zk_eJv5y&D)MMR*AU@i=?O;oKo|N=isr)@BF*{p0%T;MAW!p$f}yhX J$I113{TJz9C1n5r literal 0 HcmV?d00001 diff --git a/out/production/java-lessons/ru/tn/courses/tmuminov/v2/task1/subtask2/enums/Currency.class b/out/production/java-lessons/ru/tn/courses/tmuminov/v2/task1/subtask2/enums/Currency.class new file mode 100644 index 0000000000000000000000000000000000000000..9f1b9195d7781030470ae3a6943596e170635ae5 GIT binary patch literal 1201 zcmbVLZEMp|6n<`#G;K^@R_o^KeA$cIbZ)Ul5p5Zpb%IzO7+V;AN@J{_88P(a`Zm zV}0DvLo@hP*Mq3fUmCjYMZ-XEN4{@+*5@o3L=_U!48oi4Q-;T#8Cx}ZuZ)Up+^cIm zvVs46=M(R=sgKi=s2GJ zIvVzE|E<|~Df8+-#I%{ufuYnHS*F`FeTVl?hKQayq*XFC7j}Cok)^G-%8Ad+g zgsRpf!?Y|nQSaqcA=kJyGr_GUgJRIXVA;zq37#h8tv!rhe+(I8S5 zn3H~j?F$nK#=ba#Y+U4@!6r76vYn)C`3F^%t_w%FaR?y}Zi;arALG^`6wd2ZhI~v{ TB=ICv=slJ2(Q%(JDb)W0Ma2^I literal 0 HcmV?d00001 diff --git a/out/production/java-lessons/ru/tn/courses/tmuminov/v2/task1/subtask2/models/Rate.class b/out/production/java-lessons/ru/tn/courses/tmuminov/v2/task1/subtask2/models/Rate.class new file mode 100644 index 0000000000000000000000000000000000000000..4e258a0767980dfa6b7ab8c1d78253e14ee18cf5 GIT binary patch literal 1080 zcmbVL+iuf95Ivjt(j=y7o6r_QY0A}cp(`o`LWxR5E2K&(paOY!+*Ru~wk2O8@dbPi z7g2$D-~;$5#Ox*{sl-E6TiTu3ojK>sc>Md%&tCvq;6>z+H=$Y3VK6M5x&xQ@-SC*d z?wtxRWiVQP=%+gjdArdqVh#lpMGGZZ4D*xl12;XP;Mfh1qCf@j8SOhnLXXjY(^f_S zOQ@KrTDXd3hR1Qn(~x^n7AGR%X^;he7!CMfo2PDa_J}80Pa4}ih>k=*;fHQ27_?Yz zY_EV-Tr+XqLJc<!YoMmZWhNP^gfWt>(3ExEw6HE!%z0y2ZI@&- zlskSXUS&Z~#P8f*pH7xKk>~ciZtP2cbf~2#e!}o%b`?`yX)>6{A{{o!O#WG#z2E3E zuziLST~8`*+Kt(HF1CxPN<=WhYT1{DlH!VQ>HB-)r7t^EkQHpnvBCy5HAiEUqnE}- zS=3?Lbuc-uwARTxP(Dy|zJobGU{-PEtctRCjz#AyR?e~ZMI~?0I*&Z9Iy9K5&@kU3 z&mtg7$8E@YWw@(O>SS}GmUp`I4U3=1$dM|VXLVSbO4i58_i&$X>lF2zsHA?=seL3V z6Akj81Ih%mpdglqVIv4ipmJ>jVQ9b^fpO&zm8^ZH^l2rP|0>zUgHiGhMN3M<*}Tw< Xp^z17$Lf?2V=Tmw6Rn6JD#oq9*6Q3W literal 0 HcmV?d00001 diff --git a/out/production/java-lessons/ru/tn/courses/tmuminov/v2/task1/subtask3/Subtask3.class b/out/production/java-lessons/ru/tn/courses/tmuminov/v2/task1/subtask3/Subtask3.class new file mode 100644 index 0000000000000000000000000000000000000000..a3fa91f8a37e77d52b1ad1799737610425ccc248 GIT binary patch literal 1426 zcmb7E$!il)82`OwCX=QUJ6#gD)Y@uo+Njf7txMWyTNeUxfk;KXIE`bRHkpK3iWNZw z(W@7af{5T*g)V~P$%FK7@E_2Nw<@@NZzj>i@-={QoQfcTpaemN zh!BG^r!8n|Ni&P;+1WY0;4p;74byNk48i2!jD#>l`!A=g>F7n>iaYspvY)PN4=!$7$tSmvb05;N@{k_u&H)`@=`+rzoT?5rx(H9 z(yi!1OhR17Mr>l(;FbJoW)N)ShVJ#B<*r*~Y(;|PqE01Z%}v&7@PW3;=;8UohUv`k znRsxoj6Uq3V4DXIB(wkQuK~n#3;MB3!hnn<2J0hx4*5mf(aV&t;__zvY(_;rXHnI> zW9eF%083%Fggr9$LS^Xm=4cT$N(d_vV)pln&Gpgom452q&xkBi*%2BwB27oGQqW2>nq_dgrWBlO z25oRO_urM$RI02QG(fy*>jZ*f7Sn?>3~Y}6SputCp&CKzon(XJG^sq;5(!Ik)*!$r8JRVdw-aN=+wLVP$Z@%LVz}8NFIztJfc}FYEpVq215F&X3xS*dj zI84zxlzaK!(2HTZa{Lzn&r0+aq>Dje1uglDf->b%QS?YCq0la~5J;%<}5{5Wn0ytnt=yd_2 zu+fHFP;i@GnfvI(Bf7jV5W^DUcuVpcHsd|E-~;)6LIUgP_CU@MkPisj!<0#+=sBc` z3sR0t^j;pJDlTqff;hg#&&c2?Q5$!043o5uDU$f2e9bg*$4L{1_!X{%F7^#QjIrS_ O5ZAGjtS87Cz{wvU)J?Ad literal 0 HcmV?d00001 diff --git a/out/production/java-lessons/ru/tn/courses/tmuminov/v2/task2/README b/out/production/java-lessons/ru/tn/courses/tmuminov/v2/task2/README new file mode 100644 index 00000000..5163aa78 --- /dev/null +++ b/out/production/java-lessons/ru/tn/courses/tmuminov/v2/task2/README @@ -0,0 +1,5 @@ +- Необходимо разработать модель (класс) сообщение (уведомление). +- Необходимо разработать интерфейс для обработки (отправки) сообщения. +- Реализовать классы рассылки сообщения через различные каналы: телеграм, email, смс и тд. +- Необходимо оформить все перечисления через enum +- Вынести общую логику в абстракцию \ No newline at end of file diff --git a/out/production/java-lessons/ru/tn/courses/tmuminov/v2/task2/Subtask1.class b/out/production/java-lessons/ru/tn/courses/tmuminov/v2/task2/Subtask1.class new file mode 100644 index 0000000000000000000000000000000000000000..a65c11b53fb10fafc92f9ba24cb94e199aa58307 GIT binary patch literal 688 zcma)3-Add*6#iy68jZ=W-PBe4Z?9GbhkCox8&MFV7S=A5Ud^V%b~KrU$z<`3dhLxu z3w;0|N_r+*N}*5#bB1%yd_O1W_U`*n0DE{FpoO*%FT@TA-bhe+K#M9 zFV2ierH`0l@IOzZdg9EzWAOHiFOp~yrR7PTPoy~$lZ-08q)0_J7Dl=Jq3GGKs$$qm z9xE^;gwtG{`}98CEL^C=9qzz*vftD?=c-#m?`PS|9~ Date: Fri, 24 Dec 2021 12:26:57 +0500 Subject: [PATCH 3/4] added 3rd task --- .../v2/task3/subtask1/CustomString.java | 71 ++++++++++++++++ .../tmuminov/v2/task3/subtask1/Main.java | 24 ++++++ .../v2/task3/subtask2/ListContainer.java | 84 +++++++++++++++++++ .../tmuminov/v2/task3/subtask2/Main.java | 39 +++++++++ 4 files changed, 218 insertions(+) create mode 100644 src/main/java/ru/tn/courses/tmuminov/v2/task3/subtask1/CustomString.java create mode 100644 src/main/java/ru/tn/courses/tmuminov/v2/task3/subtask1/Main.java create mode 100644 src/main/java/ru/tn/courses/tmuminov/v2/task3/subtask2/ListContainer.java create mode 100644 src/main/java/ru/tn/courses/tmuminov/v2/task3/subtask2/Main.java diff --git a/src/main/java/ru/tn/courses/tmuminov/v2/task3/subtask1/CustomString.java b/src/main/java/ru/tn/courses/tmuminov/v2/task3/subtask1/CustomString.java new file mode 100644 index 00000000..3c5d3af3 --- /dev/null +++ b/src/main/java/ru/tn/courses/tmuminov/v2/task3/subtask1/CustomString.java @@ -0,0 +1,71 @@ +package ru.tn.courses.tmuminov.v2.task3.subtask1; + +// Разработать класс String +// класс должен содержать конструкторы String(), String(String s) +//- реализовать метод конкатенации двух объектов +//- Реализовать метод получения подстроки по индексам +//- реализовать метод получения индекса вхождения подстроки в строку +//- реализовать метод сравнения двух строк +//- реализовать методы startWith - начинается с, endWith - заканчивается, contains - содержит + + +import java.util.Arrays; + +public class CustomString { + + private char[] chars; + + public CustomString(CustomString customString) { + chars = customString.chars; + } + + public CustomString() {} + + public char[] getChars() { + return chars; + } + + public void setChars(char[] chars) { + this.chars = chars; + } + + public void concat(CustomString customString) { + char[] chars0 = customString.chars; + char[] result = Arrays.copyOf(chars, chars.length + chars0.length); + System.arraycopy(chars0, 0, result, chars.length, chars0.length); + chars = result; + } + + public CustomString substring(int indexStart, int indexEnd) { + char[] result = new char[indexEnd-indexStart + 1]; + System.arraycopy(chars, indexStart, result, 0, indexEnd - indexStart + 1); + CustomString customString = new CustomString(); + customString.setChars(result); + return customString; + } + + public int indexOf(CustomString customString) { + char[] chars0 = customString.chars; + if (chars0.length > 0) + for (int i = 0; i <= chars.length - chars0.length; i++) + for (int j = 0; j < chars0.length && chars[j + i] == chars0[j]; j++) + if (chars0.length == j + 1) return i; + return -1; + } + + public boolean equals(CustomString customString) { + return Arrays.equals(chars, customString.chars); + } + + public char endWith() { + return chars[chars.length-1]; + } + + public char startWith() { + return chars[0]; + } + + public boolean contains(CustomString customString) { + return indexOf(customString) >= 0; + } +} diff --git a/src/main/java/ru/tn/courses/tmuminov/v2/task3/subtask1/Main.java b/src/main/java/ru/tn/courses/tmuminov/v2/task3/subtask1/Main.java new file mode 100644 index 00000000..b93d8b5c --- /dev/null +++ b/src/main/java/ru/tn/courses/tmuminov/v2/task3/subtask1/Main.java @@ -0,0 +1,24 @@ +package ru.tn.courses.tmuminov.v2.task3.subtask1; + +public class Main { + + public static void main(String[] args) { + CustomString customString = new CustomString(); + customString.setChars("hello world".toCharArray()); + System.out.println(customString.startWith()); + System.out.println(customString.endWith()); + System.out.println(customString.getChars()); + + CustomString customString1 = new CustomString(); + customString1.setChars("world".toCharArray()); + System.out.println(customString.indexOf(customString1)); + System.out.println(customString.equals(customString1)); + System.out.println(customString.contains(customString1)); + + + System.out.println(customString.substring(1,5).getChars()); + + customString.concat(customString1); + System.out.println(customString.getChars()); + } +} diff --git a/src/main/java/ru/tn/courses/tmuminov/v2/task3/subtask2/ListContainer.java b/src/main/java/ru/tn/courses/tmuminov/v2/task3/subtask2/ListContainer.java new file mode 100644 index 00000000..2789c2df --- /dev/null +++ b/src/main/java/ru/tn/courses/tmuminov/v2/task3/subtask2/ListContainer.java @@ -0,0 +1,84 @@ +package ru.tn.courses.tmuminov.v2.task3.subtask2; + +import java.util.Arrays; +import java.util.Collection; + +//Разработать класс ListContainer для хранения дженерик списков +//класс должен содержать конструктор по умолчанию и конструктор с new ListContainer(T ... elements) +//метод получения значения списка +//метод сравнения двух контейнеров +//методы добавления и удаления элемента в контейнер +//методы поиска элементов по индексу или значению +//добавление коллекции элементов +//получение контейнера с подсписком по индексам + +public class ListContainer { + + private T[] ts = (T[]) new Object[10]; + private int counter = 0; + + public ListContainer(T[] ts) { + this.ts = ts; + } + + public ListContainer() { + } + + public boolean equals(ListContainer listContainer) { + return Arrays.equals(ts, listContainer.ts); + } + + public void add(T t) { + if (counter != ts.length - 1) { + ts[counter] = t; + counter++; + } else { + T[] newTs = (T[]) new Object[2 * ts.length]; + System.arraycopy(ts, 0, newTs, 0, ts.length); + ts = newTs; + add(t); + } + } + + public void remove(int index) { + if (ts.length - index >= 0) { + if (ts.length - 1 - index >= 0) + System.arraycopy(ts, index + 1, ts, index, ts.length - 1 - index); + counter--; + } + } + + public T get(int index) { + return ts[index]; + } + + public int indexOf(T t) { + for (int i = 0; i < ts.length; i++) + if (ts[i] == t) + return i; + return -1; + } + + public void addAll(Collection collection) { + Object[] t = collection.toArray(); + for(int i = 0; i < collection.size(); i++){ + add((T) t[i]); + } + } + + public ListContainer subList(int indexStart, int indexEnd) { + ListContainer ls = new ListContainer<>(); + for (int i = indexStart; i < indexEnd; i++) { + ls.add(ts[i]); + } + return ls; + } + + public T[] getArray() { + return ts; + } + + public void setArray(T[] ts) { + this.ts = ts; + } +} \ No newline at end of file diff --git a/src/main/java/ru/tn/courses/tmuminov/v2/task3/subtask2/Main.java b/src/main/java/ru/tn/courses/tmuminov/v2/task3/subtask2/Main.java new file mode 100644 index 00000000..8e7492ce --- /dev/null +++ b/src/main/java/ru/tn/courses/tmuminov/v2/task3/subtask2/Main.java @@ -0,0 +1,39 @@ +package ru.tn.courses.tmuminov.v2.task3.subtask2; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +public class Main { + public static void main(String[] args) { + String s = "ewe"; + + ListContainer listContainer = new ListContainer<>(); + for(int i = 0; i < 10; i++) { + listContainer.add(s); + } + listContainer.add("timur"); + listContainer.remove(4); + listContainer.remove(3); + + System.out.println(Arrays.toString(listContainer.getArray())); + + System.out.println(listContainer.indexOf("timur")); + + List list = new ArrayList<>(); + list.add("q"); + list.add("t"); + + listContainer.addAll(list); + System.out.println(Arrays.toString(listContainer.getArray())); + + System.out.println(listContainer.get(4)); + + ListContainer listContainer2 = new ListContainer<>(); + listContainer2.add("errr"); + + System.out.println(listContainer.equals(listContainer2)); + + System.out.println(Arrays.toString(listContainer.subList(3, 7).getArray())); + } +} From 29bdbb17a44fd027ac6bfbd4de03f00669b6aa83 Mon Sep 17 00:00:00 2001 From: timur-muminov1 Date: Fri, 24 Dec 2021 12:27:36 +0500 Subject: [PATCH 4/4] added 3rd task --- .../tmuminov/v2/task1/subtask1/Subtask1.class | Bin 1315 -> 1315 bytes .../v2/task1/subtask2/ExampleUIClass.class | Bin 3957 -> 3957 bytes .../tmuminov/v2/task1/subtask2/Subtask2.class | Bin 810 -> 810 bytes .../v2/task1/subtask2/enums/Banks.class | Bin 1351 -> 1351 bytes .../v2/task1/subtask2/enums/Currency.class | Bin 1201 -> 1201 bytes .../v2/task1/subtask2/models/Rate.class | Bin 1080 -> 1080 bytes .../tmuminov/v2/task1/subtask3/Subtask3.class | Bin 1426 -> 1426 bytes .../ru/tn/courses/tmuminov/v2/task2/README | 5 ----- .../courses/tmuminov/v2/task2/Subtask1.class | Bin 688 -> 0 bytes .../EmailNotificationChannel.class | Bin 1581 -> 0 bytes .../SMSNotificationChannel.class | Bin 1575 -> 0 bytes .../TelegramNotificationChannel.class | Bin 1590 -> 0 bytes .../WhatsappNotificationChannel.class | Bin 1590 -> 0 bytes .../v2/task2/domain/NotificationUseCase.class | Bin 2117 -> 0 bytes .../task2/domain/enums/StatusCallback.class | Bin 1239 -> 0 bytes .../domain/interfaces/CallbackStatus.class | Bin 245 -> 0 bytes .../task2/domain/interfaces/Notifiable.class | Bin 315 -> 0 bytes .../v2/task2/domain/models/MessageModel.class | Bin 1821 -> 0 bytes .../domain/models/NotificationModel.class | Bin 2176 -> 0 bytes .../v2/task2/domain/models/SenderModel.class | Bin 1864 -> 0 bytes .../task2/presentation/ExampleUIClass.class | Bin 4466 -> 0 bytes 21 files changed, 5 deletions(-) delete mode 100644 out/production/java-lessons/ru/tn/courses/tmuminov/v2/task2/README delete mode 100644 out/production/java-lessons/ru/tn/courses/tmuminov/v2/task2/Subtask1.class delete mode 100644 out/production/java-lessons/ru/tn/courses/tmuminov/v2/task2/data/mail_channels/EmailNotificationChannel.class delete mode 100644 out/production/java-lessons/ru/tn/courses/tmuminov/v2/task2/data/mail_channels/SMSNotificationChannel.class delete mode 100644 out/production/java-lessons/ru/tn/courses/tmuminov/v2/task2/data/mail_channels/TelegramNotificationChannel.class delete mode 100644 out/production/java-lessons/ru/tn/courses/tmuminov/v2/task2/data/mail_channels/WhatsappNotificationChannel.class delete mode 100644 out/production/java-lessons/ru/tn/courses/tmuminov/v2/task2/domain/NotificationUseCase.class delete mode 100644 out/production/java-lessons/ru/tn/courses/tmuminov/v2/task2/domain/enums/StatusCallback.class delete mode 100644 out/production/java-lessons/ru/tn/courses/tmuminov/v2/task2/domain/interfaces/CallbackStatus.class delete mode 100644 out/production/java-lessons/ru/tn/courses/tmuminov/v2/task2/domain/interfaces/Notifiable.class delete mode 100644 out/production/java-lessons/ru/tn/courses/tmuminov/v2/task2/domain/models/MessageModel.class delete mode 100644 out/production/java-lessons/ru/tn/courses/tmuminov/v2/task2/domain/models/NotificationModel.class delete mode 100644 out/production/java-lessons/ru/tn/courses/tmuminov/v2/task2/domain/models/SenderModel.class delete mode 100644 out/production/java-lessons/ru/tn/courses/tmuminov/v2/task2/presentation/ExampleUIClass.class diff --git a/out/production/java-lessons/ru/tn/courses/tmuminov/v2/task1/subtask1/Subtask1.class b/out/production/java-lessons/ru/tn/courses/tmuminov/v2/task1/subtask1/Subtask1.class index 0d6c808d021aa6e7da4c90bbd0104ae52a2ff774..7aeffbcca750345986990d17f299e8a57d333f34 100644 GIT binary patch delta 53 zcmZ3?wU~?J)W2Q(7#J9AH*#!ZX5^T>oB6RMH$y%H4?{TvA44+(Kf^pAy@WxKVKsx$ I_he3I!T699W>30nXF diff --git a/out/production/java-lessons/ru/tn/courses/tmuminov/v2/task2/README b/out/production/java-lessons/ru/tn/courses/tmuminov/v2/task2/README deleted file mode 100644 index 5163aa78..00000000 --- a/out/production/java-lessons/ru/tn/courses/tmuminov/v2/task2/README +++ /dev/null @@ -1,5 +0,0 @@ -- Необходимо разработать модель (класс) сообщение (уведомление). -- Необходимо разработать интерфейс для обработки (отправки) сообщения. -- Реализовать классы рассылки сообщения через различные каналы: телеграм, email, смс и тд. -- Необходимо оформить все перечисления через enum -- Вынести общую логику в абстракцию \ No newline at end of file diff --git a/out/production/java-lessons/ru/tn/courses/tmuminov/v2/task2/Subtask1.class b/out/production/java-lessons/ru/tn/courses/tmuminov/v2/task2/Subtask1.class deleted file mode 100644 index a65c11b53fb10fafc92f9ba24cb94e199aa58307..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 688 zcma)3-Add*6#iy68jZ=W-PBe4Z?9GbhkCox8&MFV7S=A5Ud^V%b~KrU$z<`3dhLxu z3w;0|N_r+*N}*5#bB1%yd_O1W_U`*n0DE{FpoO*%FT@TA-bhe+K#M9 zFV2ierH`0l@IOzZdg9EzWAOHiFOp~yrR7PTPoy~$lZ-08q)0_J7Dl=Jq3GGKs$$qm z9xE^;gwtG{`}98CEL^C=9qzz*vftD?=c-#m?`PS|9~> zGtc;-=z~8%U;GLF4r7dS+7gNe+l1Zhx$MlD`R1EB^Y!=VF97DT5<&-jDijTV1Q>dD z`99Z6+v52P0QZb_osD_yL;0*dFH023#(do^{mIes+;1aQl1-o3~F{em0HVY85Yv# zFqG`V2(GFa)o=~h8J63$Wm=wacDO;nk1^E|G6WsrR&2`^WG#L!Y<0?RYPco&QrA~D z(%aA1RNQ75IZ4%qgyK{yo+zxnGDO8QZ7YNr5*o&25riuap(S+2-j+j%Rg5z{Z5b!` zxK8|+UKmAgS)%0XYjV43d*+U5aOovgm#COzm~UyYp3NrW>ZW+UL`*3uyFgPoZCYZp zTFwh+t1jqG+XgS?xMRwFkO_w3ln%(xJNKyg2!YVWe$nd)D43;SXBB}X!M*d2+ z2Kf&&r%NiC$Pq!FDAPq^8}t!Tqv`(_07VnAno?DR!m!dVm@}iHE%TQ&z|DS*15AS)iMHhx#7F1T`i(Q}3fur=3nSlPzoP zBiLb0e3wQk2KBxv8nwCtrg4vU3^SOeQ6ByVgI3i>f{#@lwu7QD#dcMKsa3{w12BHxK2T$FK1!7xS`l6F;fO;xk1 zwj&(XEmzCBX&tBsv#QIT{aKYfbKO*hSuHzi&gE{^NpZs{aBZJK&h4a98@U|AQsx|n zl3f_XWf|iNuHY)eYMZun(-rnE*9iCtraD4~pe>w=Wjcba#m|MUPT6$@H$1-N&9!u9 z=jn!wn+#*8sY-iL>}tgo#f=x5sJOaih7dzS!Gu=?;fhUY37xjTZ4+V{lMLyWadMZd z#J}-OD{<2l2BjdI+p=7JSJ$}bBUL|_G0m{p(p){4O|;cb@q$4-NhzyHQ#hlWVyjv% z2z$FO=*w6dH}c%py?x_Qa!b0y@VGU%?Z%L#;&p^sYz~j%W!u>+6MQ15`FhqnO16gh z2QO#KDVfLsF(rrsfbRI@!pHe>L?^BhAbjbZfCH-HF6sCmW_B_xBS)la?$ z@PIm`hir}l>80TA;vU_eCoK0#=JOCW(0Z!{Bx_z4sPivT_{$`ZAkeeQeqe}wM{r$6 MOd^#P5_Dko7p-}-g#Z8m diff --git a/out/production/java-lessons/ru/tn/courses/tmuminov/v2/task2/data/mail_channels/TelegramNotificationChannel.class b/out/production/java-lessons/ru/tn/courses/tmuminov/v2/task2/data/mail_channels/TelegramNotificationChannel.class deleted file mode 100644 index 7cfd9cbe6c3f4b63895569f85d936dd0b7de04d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1590 zcmbtVTTc^F5dIF`c1u|-#d1*r@m5;|RuH^U?iCVDsm7MRn$zupF6?fb-7WDK_#2Fg z&phLUq7VK6eeoywJB%^Twj~sew1#eaE<1B(zWHX(?3Z7kJ_DG?N(deB$&eKI5n$-q z<@;PUxV57`E$j--WeCjcmhLVx_~MCt2tjnp2r1}-!f@e4eUrN-QntBOESoju$AP8q z2U*|CF~}$rilG;CBomDhyKmNh05gL0pn?S-}+yF(mD(>RPH+ zuG)@pRM)JUx>ep+_or2tJA2bAdFHyM3ae^5YS!g$)k$%~C~$3$LC$WaQft{P!$SHT zhLT+v!BrWf3a;Tg!*ZLpbjua?HrELFF{U~~hM+B+O4)J*S&N?wTb;6-3T}CP$?Gc{ z>8rR0`$hv8Xkg8wU!B$crvtYUMF46oYGqe(FkRn5mY zy;sTBIR7H&bYUeEdE&?wCS51CL4V?EG<|j%P&5&%DO)ut3@hz|`DZlLD<~zkt9V@Y ztL++XO8*}bGIZCU>{F^cdJ zBE$a58-&N-Vc;W%J8%Gn);AjKU}oYy;)gZcQ)Dv+A3V=7bkZ0`4?X>eV2FBY98p3t zKw5p|yC09JVS31BD3Bfs?miyS=~=?^kYqj&Q3I{FnnSYYWsW`s3l#n$$s-6{SY|&l S$bKNWDkCP5$`T1Wu>2eT@w!d` diff --git a/out/production/java-lessons/ru/tn/courses/tmuminov/v2/task2/data/mail_channels/WhatsappNotificationChannel.class b/out/production/java-lessons/ru/tn/courses/tmuminov/v2/task2/data/mail_channels/WhatsappNotificationChannel.class deleted file mode 100644 index eb1dafd72f33a733055ec82ced5f70a9a12cf3f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1590 zcmbtVTTc^F5dIF`c1u|-#d1*r@m5;|RuH^U?iCVDsm4NmG^g8xUD)n!cDKY|;BPP{ zKJ$zZiaz)Q^u?dx?=Z$V+m=u?LJi&YTz2NneDlqm*)P97eFiX#r3l&(kRd4uBE-yx*N!j6M$*Ry!K~f^M9b5m(TI-ecZ2%8uYAhM;Q*VKYd{N2x+P`f)+VMFp2Iz>s#Ts%NU2 zRdrn9s$Qj9(M@Yt-JMiD?(R&g8pdGK3xB+Lq}GvX(p(wmN0k72NRol2@13 zvYSs=WZYyJI!e`=55=k4o+z!n)P(KnmKi|;DFq{b5kzf=&=NXrXTu@HGDaD4r^d-W zt`h&obFIuxQy8xLtjs-^+jh?K^etWEzN1WCC}W&q_Eekogf?+kH^qwvktJoU5>3&p zZi-yBQWVZcUC^DiG;S2Qqx<{DOUWziF2j@43I4A@(p1K-FiXubGQ4Uzj}?l6sA@jG z?!QW(j`J^aju%!sRUnQ$QK9R^*62@M4QEd-1BxbQHf5^@g<+{xF#n8(dIhDVb`=lH zez{enP3iw5LWa&-nXYrYk>yC9x`QTGb-zG{Pbk1~p9s3bx2OR!j8TX3XKI2psnah#F}9)eO=#FEjKZn4|FLNghM!+#>sl Se)a?5Wf=*HR2E3khQ;5w`MQ$; diff --git a/out/production/java-lessons/ru/tn/courses/tmuminov/v2/task2/domain/NotificationUseCase.class b/out/production/java-lessons/ru/tn/courses/tmuminov/v2/task2/domain/NotificationUseCase.class deleted file mode 100644 index d533666cea66d059ccfbc9efaefdbe892d762dae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2117 zcmbtV+fExv5Iv0tOa=!NlN(9M=C->YZf!2PfC*%S6e$s~(wZRgv}%TqGcXrxx{Z|V z<4XCJyzah)WRdm*@=;N$$D=R=Ka6)@dOYLms&lGNRek>Q&%Xecv1X$Wg(9pH`Z2&T zvM&w=_eI#`zwYi!S2GMOd!eUS7z$Nq+r}Wy6=9b!gc8G2+~zvuZq$yIR9pw`zzd^8 zemKXqPzQ5-FA9Vg^36zluRK?1FA85Oxh9lkumjQBiZ-G>=`%E|>nEWbI`+b5{p=TK zJ!inccvYw3CV}ch7)H5>krFPT!mymvpBHKwzY;Ey>~ImgK2aD^GTh6OV|Z8n-x%{c z$becCzP~HngN7Emt?JHp5f>R2bFxdb)gUr5PVzK}%M6cRYu!>yoFDk!ft(4Y=Ixdr zi9N+zkm#ps~9WdS_#*2gQ1jE)?9!2+jA0> z8%v=ndw06j-02iOHLlwj#Z9Bl9~kacpPyC4X>-H-c79o=yf>s$qA3&NHtynH5kHpj z6MjC`4~;iU%Yfm6+m2%y>Mbvj8=mibDrt=uHg3T&P$w9!bc6cBpqpY??X45IyGe@sB)$>6X8q)GW5H?c>9)NB`@KOy9{84V$cyN zL**=1hQYRyaVP?+#4u$&GY1%+{)gD#QDGP|Q!X70485u*D>#}3DVIdaJ&2)8tCAS( z25lZ!KJ&~lzS>1FGiLPQHf^mw+IK(!R2K};S)(^jPe#xFi6gMT=|>-C=`??X7Tg@2 zrH%pSu|RLs{kTu3xh!FkE1*0%F*W@G#WCv>&KGdv#;jJ*x}k-WxLW9#r>^KC9^hf( zzKlm$OsvaTqF)8$7IoUs7Ja2nn}+<8pqY@)F-CW+smi5~xN?N?&12l!u_iy_&Jn6h z)-fh`tm!f92-AO&afj1z;fAKu!X~aCZ_IePn$NkFi2`#|gwLo)930 JUlOlRzXA=^W_kbs diff --git a/out/production/java-lessons/ru/tn/courses/tmuminov/v2/task2/domain/enums/StatusCallback.class b/out/production/java-lessons/ru/tn/courses/tmuminov/v2/task2/domain/enums/StatusCallback.class deleted file mode 100644 index b9b6b87b3e6cd1f7cb3c2212632bb47a371d7e51..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1239 zcmbtU?{Csj6g`g?3bkV!!_DFRu^%dBZWW@RKms8wSwgmG9m(RSM^~|1DG6=)yObqv z(P;MBKgxJtS2LFRjgs_n?>qON!+H1d`_K1Z0BWcxNHA1Kp%Hk7H4I0-?Hj=$95~)^ zY>X>L!2Pp|aWWim$1`j%9QcMA@F4VC+;w~0I?I4T){sPsK{1b7t+r`0yzR`;vMPF} zHDscmd(HjM(fhW@-P539j(E1Z&CXGqc-Hia*d2A`o()Ms;sH2mu& zw}vNV%6!N1?1OO7vqv9z&!x<}|A^CPIuC|iXJ~P^%SVpjh>2v64~Q>!*F~DW;Il(N zIAc0}kLGejIH{<2X@F{$8@qToRVci!%_Op3Wl&AJE0(?I2p^Vi--ul?8I3ZXOP=nS z)L0dl1E7@#8dxZZA*P)q#aq}U+%t+cXcdn-f%*;EE6jhPh~YWCQ_-G8_!Yc}@vo7H zvTBZ%F0ph4Ch&<{_#$PrYZP>pqJ5e#LJ7t)B>DhKX?yJgt6!t-X}X(o1=~V8UPhRm z1y#&jEJTM)Szs~w6YN-;Kr)Zz3H=w`)t|;LcH**TT(8|4}6^Pd!@U2SM69x=PkRbY|&fl{6F%J;2CYY1+8 Vcqkw+@s9z*51JwDFGOAg#6K=INoxQA diff --git a/out/production/java-lessons/ru/tn/courses/tmuminov/v2/task2/domain/interfaces/Notifiable.class b/out/production/java-lessons/ru/tn/courses/tmuminov/v2/task2/domain/interfaces/Notifiable.class deleted file mode 100644 index 704d57e196b598e48c410b0ace18b576b93397ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 315 zcma)&F^&Q;3`KufU>2I?7|>ve7CIy#E0$5>`p{KB_8xl`CG<7tQq-rYbLrd*~gyUsFMX1<%vR+JGvQD1wAhxue zJCmWWFgbI}lmGTVSs>wDCjnj3cj-m3dA@v6ov3X{nBkWtgyDT?UwkTG?7GN z!UunVKgxJ++p!XGG4i3k_nx=soYUu?{`!6L6F?CgG4vrMAuOXG5r*V}+E$f@YV0fT zc-6FO43VN{XwC{lD4W|GKokQKVloCHGb~#z#W9qs*|KbID~{gMHN$Kx?Ip!g?ZYLd zX6mYDD7snW4O`jbwyo~-EpcKP(7j`cKv+pcz9J)mB!lE@7}Di#LOYJ78T$ocn3gew z3`5lBhO?{boFZ(dsiF}Xqqs^6$Mnn@wzK8`&$5s^pMby_mob5Bgi}}T`a0FauzES1 zk_bB~V+uE@=loMkZP*NNFBLS9`F<)nf{To4SSmUsA`Tr*9_b}Y5&Wo9QLxF5p@es1y&ZdWa>>6li~Wxb)=c2MBQ_;5Z*5d93r{jNo^%rJg>KMVe@(7A32x})^O z=}9rjCBxvB3(su{&lzUB{pnG!gf)iA-lp_nyyjq$?tLHKkr2{i_|PsbriHuGFrZZe zqbW8`RyXPNku3XZ&E$W8!wP&rcsCbwu($+@g1cd_>F{dgl?QcLuY#O{>@m z9HGy+NCG`01`pZap?y3=1|Stk2&8EAWXW8BFVZR;rThtofp4@ukLSgfe7qD*l-vdG zW5Abxa-X6CJoF-giDaYsxf5LfoBxPsb6Rc`bC`GY9z0D%anC@1{yU^zY4rPH7`3C* zgrIZ0R|~q%L%8eLpip+Ag917AwMPRw&S5OLRtoOXD!!4&5|1MuLl#Msq_9iGj3}O> TK)=9eSRrYQq^o#=b&UN1XJ(M^ diff --git a/out/production/java-lessons/ru/tn/courses/tmuminov/v2/task2/domain/models/NotificationModel.class b/out/production/java-lessons/ru/tn/courses/tmuminov/v2/task2/domain/models/NotificationModel.class deleted file mode 100644 index 91f34d2c9d490656415d14779b8c30d44b9088d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2176 zcmb_eTTc@~7(D}}Tj~OBDJY`i1+*=f6}-D#?d*L0&N(yZoB7%wKaalyn8njLI?$;hqN58@hQuyE;6|C- z+r}$Vlun5uI&0aMH_yNdhHedU9p|7kEI3uevyGyxI<9aHuTrg8wmdKnW(<$J zdoxB!R=8yw6gYp)AyRdP!(bNL6IvH` zNjNnLQ_-b#^drrnRfOyEZNV_xCgZ9P^eI#1-Jp*1xWEwenGV=VM@cM6>A9Z6_kCyFz9{a-aS!)3JkaqFj~GVk`*fB%jbZ?!oFdT+0v+M)8Ck#LFIk!t?;f@xh+^g=JA^U>s6^aDFjgR|cMYu)B z+V`XrhAfx4>xKgX$J=I-uzJI-4yqP|$uQj5{7lvC%%DZ}QMaO}hn^&Zp0{n`)bxd` zVUc01ZqO+k*09WQ<@8jljPDMnsa1AROXx&O^>=zpsWx02sejU_fzc1eHOjh9vv)K` zXiVq6f#rsepyeix(36`yLh_K}9k@ZCQNk$BQTojJ`541Znh~<5qrOkql$3f}^=it$ zMejYGlmPk)6a_^HrTxanvdC&xn6QW@w%ufje|gVt7pdG3GFj1&YQg`UFc@!O$=( zL9JR1-7wXLRpoU@-Qi}H+v{S%5O=&)ktkSE_`N10g)~FLKiJS4oFQB4MzrJFhPkf^ z+pLTss_6AS-8RHJ*o?Y0gTmFWP-xQPI(KVUbxXHN2`;zE zVJ_dJ{+=?648!?QBB2Z!DI+YS;D`u1-a3LI?d_11EBu`yQcH*QIwxdEH_>?&=@rXz z9oN>Iew0oshQ|p!!BYv(WIV?UhKa6p?Uv~p4X*m!0fb?o-0{M26b|1o+twjheZ%*< zS*>$tvSe9@t)>>r^2~L4uQmYger@tK?o@1}=~{LevRc<2C%h5(_!M&6gZ+%~g9^s+ zl9KE^W3BsagQ@o_Qw$RQlJv_k$VJoSwig3;B)nmm>K3U7Z6|37D-7coo6_z06~a7q zh(3Bh5oAT5qFGk77H_1sL8Aml4eu^l-J{iK8lyDkl%HVA*fAt!<`_w3_86HX+V8`C z`o;(YLQT?F@$E5%2ecxj$0N>j9+P0ti55jMJfwLtLI$8C&?b30L8%@>Sw%#8=2X dour9ifo?pGMQHSI`3lRlo1op-c#Bnx{sqSppe_Ia diff --git a/out/production/java-lessons/ru/tn/courses/tmuminov/v2/task2/presentation/ExampleUIClass.class b/out/production/java-lessons/ru/tn/courses/tmuminov/v2/task2/presentation/ExampleUIClass.class deleted file mode 100644 index f3b4e01aedcad1686bccb40f32af08fa3576a06c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4466 zcmbtY`&Sg#9sk^AahG8XxCp339aFUIlClw_tu98CVq66!S-`4ElVSG)BfB%(nOT&+ z(>8s--?5MM8Cv_usV87ha!&t%p8lA>rl+Uv=gus!lm#sLVdsADo$vj=U$cMz_uGF1 zFn~8TM9>gJR7WFr3AEle=goA{v}e-Srf$o;FR*LCvMv7^frg&sWDIeEGj1jA+v&Vh zaXsm!{Zgf5+0J}=zCZ1o-dumW;FL_uPG5C=Yud`2zU9~xo*XhgsUe1jCNx8jVYiOQ z&?1o8j$GN5p0xddPI~yRSt=LhM0TiXdY(X=y^)K+z{qw)HNF53p z4GDB9M?5aDuct0ba#BMp4k@I=)O`&pWS>b+D&ro}@dVx{@YvKk*-3Sk=z6U(>ef*m z$MAlEsJv^@@8V_*Nr9`|8q)O5H2qzCDL-r4wk&$-aaoizu34%LfT8fEhMq70p49OH z^a*tNnh&)XsFeK5P1(SuWSrDIMx`LdVlMNuBO&j=V#iwqQ@4J}8jg zfuC}txw`6{3e`EIBZC2^f>-kD;0avWiFfKVr4lSLS9YMpu!_Ap;%PV=s&QV&1q?Cx zEh=3mx$W(0NwaKUy3=N!rFqCK z7N^YoT#m)F;ssfr)o~eD1P-nUHYz>OoMCmYMHRU4-r2=5Dv-GDTD~+E*er}v$Vy|e zxu#tRK;>=_m_RqS#)#xW6C(kzTvHZ8fgCm9y9T5MIquIu;+ zZV1GxoXCD7VjQ;wT580y&5~5NU)1qYbvs`1q^l0&cv;}U^;wpG!*>iep@QMh$`w7% z#W5vt@_3)IQt%9|zt31nRYN<`XE53g?dd)v2o^(oiV&--p=l^U#xSj82D1Wt*7|Oi z?wgS=#VDKXuiS28ovgCsZ5?wcvLz|us;(S&hGre^Rmqin7wyR=C*xq>X&vX$oM%is zu2J!5V@0B@<6|Jds3IY7e)}-p7-(VsnNvj>cr6BBM+NibsEF2Pr@-QSWU$erbxyV| zB;km%d9J8V+K#(A7VvS-K2AlsA!Nj%U`$1A*!bDDKZ#Gp@M#^NQ4!s?(%Nfq7?DAo z7wsmzg3rb9c^zNCtB)}IR81}IO36!yX}prDB$}HT8XC^!1kOHcw$>w*iQ`KQ!D{pv z1zEJ_)x;CWSE%#KvF-S4uNW;uPJyY|qB8Por8FhoapiuMaZcVWPMWTz_SM6vKWlMV z+g{AADxiSw`KIfSxsIAH1a{|F<2(p-k>weUl%E?l%T>6Zd=~z=D0EV$N^v1JIP5-a#WlZe9iS*js-O@ zFIvjvZR>~PJ{5sXy$g=xd%kOyN2NdO6ug#QcwNIU@XHu}rQ_H5jldIYb;q*jojI8v z2}I`&lP$z|+y#N=Qtj>^wUxShDP(ZTvE#9ps&41W?h zv^6Tfrb6T32suVLC#ad9UqOTtYG&seQB!!Z=X@NjoGF8q!&tC#nh93+ajp^7@`9Dk zi|a11s|L@na(6#~fR|GbAyV%kcH<$MmY@-Az3~nbHy&W`LmYUBgG(?{4NK_en;s&i zme5NuP4M^<`U##Q_@O17CU}%s+pRI^eqZYKG8+(yN z2PflBoa1NFW$ecUy6|;k>6DeS;T!lSSAlO)+6a`~?{Zc4xs`eg-S;q-N{lSyYKl8! z8P6|aGL^Ww?%;(~;w5#EFx4|e`z!JTUH8zOic+sd#8X|%uonOGW-3u4k`lQAO5`(i z0dSPxrpK_G#@|PQ4?Sl^d?RPYIIQ4LF~b|@tr`S zTUCX=ORCK@#J@Oj{S(m$zQ=|D|@353?2xQ0pRDw9s!!>c5&OcO<D6T%Vv6hGst Yg8An>`z_w!@Ao{>cyb?q#GkSMzdyk8?EnA(