From 2ac347c89c20e8e5a810befcc4c9092b0d8129f8 Mon Sep 17 00:00:00 2001 From: mighty-mhsl <61280870+mighty-mhsl@users.noreply.github.com> Date: Sat, 21 Oct 2023 10:37:08 +0200 Subject: [PATCH 1/4] =?UTF-8?q?=D0=A1ompleted=20task=201?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- .../java/main/task_1/TimeMachine.class | Bin 0 -> 2154 bytes .../main/task_1/TimeTravelException.class | Bin 0 -> 484 bytes .../java/main/task_1/TimeTraveler.class | Bin 0 -> 724 bytes .../compileJava/previous-compilation-data.bin | Bin 0 -> 223 bytes src/main/java/task_1/TimeMachine.java | 48 ++++++++++++++++++ src/main/java/task_1/TimeTravelException.java | 15 ++++++ src/main/java/task_1/TimeTraveler.java | 26 ++++++++++ src/main/java/task_1/clues/clue_3.md | 1 + 9 files changed, 91 insertions(+), 1 deletion(-) create mode 100644 build/classes/java/main/task_1/TimeMachine.class create mode 100644 build/classes/java/main/task_1/TimeTravelException.class create mode 100644 build/classes/java/main/task_1/TimeTraveler.class create mode 100644 build/tmp/compileJava/previous-compilation-data.bin create mode 100644 src/main/java/task_1/TimeMachine.java create mode 100644 src/main/java/task_1/TimeTravelException.java create mode 100644 src/main/java/task_1/TimeTraveler.java diff --git a/README.md b/README.md index 9409591..d77f5e2 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ 5. Git создаст локальную копию удаленного репозитория в текущем каталоге. Локальную копию вы можете изменять и синхронизировать с удалённым репозиторием по мере необходимости. # Как создать Pull Request -Идём в НАШ удаленный репозиторий на GitHub (не в вашу копию, а именно в НАШ репозиторий). Так как мы только что сделали push с решением задачи в свою ветку, то сразу же видим сообщение с предложением создать Pull Request. +Идём в НАШ удаленный репозиторий на GitHub (в свою копию или в наш, по идее не важно). Так как мы только что сделали push с решением задачи в свою ветку, то сразу же видим сообщение с предложением создать Pull Request. Жмём на зеленую кнопку. ![Image1](https://github.com/FAANG-School/exceptions_workshop/blob/master/images/image1.png) Если не видите эту жёлтую всплывашку, то просто перейдите во вкладку Pull requests сверху, и нажмите зеленую кнопку там. diff --git a/build/classes/java/main/task_1/TimeMachine.class b/build/classes/java/main/task_1/TimeMachine.class new file mode 100644 index 0000000000000000000000000000000000000000..a2c8f23352b57ebf889acbb66b05485b3d76806c GIT binary patch literal 2154 zcmZuy%W@k<6g_Q?J!5$iXXJOHB;y2vBEJYEK;jU{6BNG!RuW_bc3bXP6H7BYS2 zVM$TNIw>MkxC&NmC>HzzD~g|>I6abM8M{=~ef##k=broM(eMBM{0o4~*h<31oo)={ zu3qk$_{74eNf^i_aT50}%;&rz8d3|_j;gQ}SC-DUe zNy05@Y1zb=`tX&BuPv--k5voO!kX3=O{@#_6zgHA{HUO0C?IkI-Cpf+5N>+@2G2_Z zUDrL|i*5*XW^zjx9|;(@gLNg)JL~yszFt{VVP3A4sY%TSMOl6%Lr?oAaR5|BswZKTG-7Fv9sc<@{!`cx|_EZ7`M_Q8BHZvh! zN!_bQ^^l;)79&~QoRifSqvYM^MOBTwz$Y&w3caep_<_KC{EiHvxd_6h58u89W@bH_ zZVQOLWu%Jqe1XBt^6XRjOiq=hzcIDQ@czbhTvi!wkWk+d*8<1e&=!0~Z&&2E0_NRb zp4jAoCbn_fZStj15h%GB)Wf2>=jjff$nTS$)GTeh31wpx=WLwE8v-ZW+SqKy>!bxH zS#?*(a4XFYyI#%pgUH=#4wNe+H=;=;sBq*)HTV-78z>2!k6l|0cT2MAx2+;~O)1}9 z3qqgvo;E#m$W)d?CD*szbx*C2ns{ns6J>#+|JV6e-7Bvv&iREVgjaR97^zk-7FDhG zq+T9%4`ADywyrblvvJG@`yB4VmL4!J>2b!2(F!g|w8F4<9tZ4TE#DG=m^R=ep5Ks z!~6&X9sF^`V~JDF-GI<7PsP_hxq>vZr35Bb$DO#EaM=!!<<*z~b7?UlPaB zgNxL-O*dpQ#uEYJFd~+8pbiG$;BePrextPxvzq-8iEnXi7e*n~xr44>(_;;o-?cQ> zo~HZzmL{n+FVV9LyRd^}spAdw(&GfTl*1+6Kq}Qop@IGe1~l&kH1Bid46-%J%;9f@ znVd&I*$&_ehOoi{?dP%jI*(OMVv5|!6>k%z1D7awBH=g=-l3@Lr;EV}rlgbGVo04_ ze|F5V1{)as0X=i%Jl??2ix|pc(To0W7M`b`Nu+GOWf` zuJ>8Y1@eB#0azyQRTfldccV!V)40wP|J(5)tpt5@yc=W28Tx-j>qLz6F(rd&L%2z) Mla{yW*MZyr0f$E9A^-pY literal 0 HcmV?d00001 diff --git a/build/classes/java/main/task_1/TimeTravelException.class b/build/classes/java/main/task_1/TimeTravelException.class new file mode 100644 index 0000000000000000000000000000000000000000..779c04dcec01ec6e56c92f1ac22ddfde2d8e2135 GIT binary patch literal 484 zcmZ`$O-sX25S&fZrj4o9^g|IZ-r5QV!JFbm>?wF@=~Z59s87>G(zN)q6coXOKfoU) zPST=>Di7Z7?9R@-kI%374*)0Fv0=ikpn$rChJ~g;W&+p0Qw!yVDw=rxG||!IR8Tt8 zkxtJA&Gve`GZdH?@l7D8`8o=&=F?G-4AdxO#r5N{3WqAu8D165^j6bq-%r)-{`%M( z=xH!W)FKEkAIHH%s^f^J0vb#92&~i{jNwD|7 zqoDqK^Ph7F3hmAi2Ye=z&n7T3A!Y`13uW#Vq8_oqXm{Tr-NRQH&pF5DzR6jTYm!~z w+8}Bz*>F%L;#{uEA0WH7()1XGy<+zT#uF2RG|)UNR&yC=Nm$7UwsO|?H})i8egFUf literal 0 HcmV?d00001 diff --git a/build/classes/java/main/task_1/TimeTraveler.class b/build/classes/java/main/task_1/TimeTraveler.class new file mode 100644 index 0000000000000000000000000000000000000000..91c1c384f4348d1d78d84ccf6050246a70446550 GIT binary patch literal 724 zcmZuu%Sr-K82--8q-j%W+Wo%M36h{)(V`*{q!x+LDvoxrQ{xEZ)Kj%6NP-qUKo1pt z=U5o&=D(f)yUahIU+*6P_OYEs3M&~*VAX^*6V}t%NMlpLi)2R$%+>DXqpXB7YF93k zSV!#xflO1!$?cVrv4E(uzftnHPaWz=Cr1K{rBP_LT5gc~q{*_sGm;XJc&V5CxZn6uRW gVBv?FKZiy}!S2&PaB(bnaV*&T4_+DzUa}I)-vGUG*8l(j literal 0 HcmV?d00001 diff --git a/build/tmp/compileJava/previous-compilation-data.bin b/build/tmp/compileJava/previous-compilation-data.bin new file mode 100644 index 0000000000000000000000000000000000000000..22a72270f07e95e65665509b3994e8e1a1daec01 GIT binary patch literal 223 zcmZQ(aAgc(3Srh`VQ4Q&EY6NMWMyb%V`$0DO=V|jD@rU&&Ea6^tVm8RD9Oyv6ZkoM z%BHEi-9&tMr*CnYvpt{Fmx+s^Jux{WGcQ%($F~((f2V)j&7@~k=vumS8FvU14?_po zjMO55zps0|C(AZE timeTraveler.getDeathYear()) { + throw new TimeTravelException("The traveler has already died!"); + } + System.out.println("The trip was successful! The traveler " + timeTraveler.getName() + " is in " + yearInTheFuture + "."); + } + + public static void trip(TimeMachine timeMachine, TimeTraveler timeTraveler) { + try { + timeMachine.travelInTime(timeTraveler, 2070); + } catch (TimeTravelException e) { + System.out.println(e); + } + } + + public static void main(String[] args) { + TimeMachine timeMachineOne = new TimeMachine(2023, true); + TimeMachine timeMachineTwo = new TimeMachine(2000, false); + + TimeTraveler timeTravelerOne = new TimeTraveler("Alex", 1996, 2060); + TimeTraveler timeTravelerTwo = new TimeTraveler("Mike", 2025, 2080); + TimeTraveler timeTravelerThree = new TimeTraveler("Kate", 2080, 2150); + + trip(timeMachineOne, timeTravelerOne); + trip(timeMachineOne, timeTravelerTwo); + trip(timeMachineOne, timeTravelerThree); + + trip(timeMachineTwo, timeTravelerOne); + } +} \ No newline at end of file diff --git a/src/main/java/task_1/TimeTravelException.java b/src/main/java/task_1/TimeTravelException.java new file mode 100644 index 0000000..9b22f67 --- /dev/null +++ b/src/main/java/task_1/TimeTravelException.java @@ -0,0 +1,15 @@ +package task_1; + +public class TimeTravelException extends Exception { + + private String s; + + public TimeTravelException(String s) { + this.s = s; + } + + @Override + public String toString() { + return s; + } +} diff --git a/src/main/java/task_1/TimeTraveler.java b/src/main/java/task_1/TimeTraveler.java new file mode 100644 index 0000000..e1011a2 --- /dev/null +++ b/src/main/java/task_1/TimeTraveler.java @@ -0,0 +1,26 @@ +package task_1; + +public class TimeTraveler { + + private String name; + private int birthYear; + private int deathYear; + + public TimeTraveler(String name, int birthYear, int deathYear) { + this.name = name; + this.birthYear = birthYear; + this.deathYear = deathYear; + } + + public String getName() { + return name; + } + + public int getBirthYear() { + return birthYear; + } + + public int getDeathYear() { + return deathYear; + } +} diff --git a/src/main/java/task_1/clues/clue_3.md b/src/main/java/task_1/clues/clue_3.md index aa177d6..fa964b6 100644 --- a/src/main/java/task_1/clues/clue_3.md +++ b/src/main/java/task_1/clues/clue_3.md @@ -2,4 +2,5 @@ а затем проверьте год, в который нужно путешествовать. Для этого сравните год путешествия с годом рождение и смерти. В случае не выполнения условий выкиньте исключение с +помощью ключевого слова `throw`. помощью ключевого слова `throw`. \ No newline at end of file From b7e7da9127f886cbaf5991580a69db63a57f332b Mon Sep 17 00:00:00 2001 From: Alexandr Borovik Date: Fri, 27 Oct 2023 23:08:35 +0300 Subject: [PATCH 2/4] =?UTF-8?q?=D0=A1ompleted=20task=201?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/main/task_1/TimeMachine.class | Bin 2154 -> 1822 bytes .../main/task_1/TimeTravelException.class | Bin 484 -> 370 bytes .../java/main/task_1/TimeTraveler.class | Bin 724 -> 724 bytes .../compileJava/previous-compilation-data.bin | Bin 223 -> 223 bytes src/main/java/task_1/TimeMachine.java | 24 ++++++++---------- src/main/java/task_1/TimeTravelException.java | 14 +++------- src/main/java/task_1/TimeTraveler.java | 6 ++--- 7 files changed, 17 insertions(+), 27 deletions(-) diff --git a/build/classes/java/main/task_1/TimeMachine.class b/build/classes/java/main/task_1/TimeMachine.class index a2c8f23352b57ebf889acbb66b05485b3d76806c..8fdbc3d076f1032b1bf8fdb44fbdf83434405d11 100644 GIT binary patch delta 739 zcmYLHO-~b16g_Wd+IbyEa3E<5t!=Sb+EOTf3stl#VxdK(idOufXsIoviAs#S{s0pb zGkgDoG1x>Bwj{=df5DZ}y&D(C^Gejbik?5pz%;{7f~_24#Aegv_~0Lc(2pQ` zaU9N^z%kW?sXZpW^yMA+D~|ci=pazs$6s{f(hh=^z5&Pl>`1$V!G&%da?J0Jj4_@v z+TBc;p(EE-#*-Oyr2hjB|9^1=CTE2BIl}x15z35WlCtI~bBRLL6Q=id;5be&vN6l= knWD-dayUh#ku{3btk%gL#2F%k9ULFd5_(uVNuq|SKWs8#*8l(j delta 970 zcmZWoOHUJF6g~4OGfYQu5XwW4YAG#kp`iGHilTxFw15gIqS8_elt(F0!Cg200W)#y z&bUSsP)UqyW1@e-mEzv5@q7cy!c21Sx%a#G+;hK~d2#sXk>aP{?>_+Oz=i=YdP`A_ zK4GqDxUS=d0TulQYB8W=Q24lxL@95GnG~q*| z-7Syke$1Gd#hm?I4k}stkFu|1-oyeH?OnMqzJ#2KWpKFW&8~T~Ij@N&tZ-PXiB;q^ zteGeXk_cJ^dMu&*e~~8qXtMK4gU63`?vuzaP^>zbDp1gAbi8?~L?lmTFg~AJPem6~ zx!LIO^n4~=h&7MfU(|YEHQx&$^PzkPaRYi4lAxvy*kvxS6tvr1Rncaic%jgiA%rl! zK%!G}km!|(shK`tue(;*`NI_`9&{%Ebtch@sMDE58#!dOlf?zavMih;6e3iVibaS5 z%xrMD7+(y=uUc(*PLe-{2rNhl01wmGMNCwnFN3ntFdVVy=ag-bURbxWK z8Jy*0QsUhHMiu+Igc=Rt-ICccNiD#VE$)J~Ki zv$W5aZf>J)Xs0L=^_I44>0TzfRHx!NBTJtV30Jt~EgHf#s$*TW5s}#B6xrD&1cTVe z6&m?9H!&BWq96u%ox>D9#!H{1@FcHPtaouwA!4||D8}Cg-7J&X+|R?XL)(cKxl83foF1ScAobFk+o78fU`r%sd;pLj-tnT3IM z;ve~1sjS4ZME#t^ymbAb(!7$)+*H?!N zX*MnG?F@_?fh;Blb|A?G7G(vhV`Ja|^2H#k7&w74Ai&1J&AbJoT|26d)W9d#x+4&p&xI-=3aCT3Hl9P_$XKajq)E=?PTR`QB_ WmgVHpXed|r#8M=zdyMVI+W7;li6kii diff --git a/build/classes/java/main/task_1/TimeTraveler.class b/build/classes/java/main/task_1/TimeTraveler.class index 91c1c384f4348d1d78d84ccf6050246a70446550..11a33b794d3d18e0e63038c9393fb8bdb5df6b0b 100644 GIT binary patch delta 30 jcmcb@dWCgE1EZi213Lo;0|SE)11AF)h~7Mr(U}ndTxtZ? delta 30 jcmcb@dWCgE1EU}l13Lo;0|NsS11AF)h~7Mr(U}ndS;_>a diff --git a/build/tmp/compileJava/previous-compilation-data.bin b/build/tmp/compileJava/previous-compilation-data.bin index 22a72270f07e95e65665509b3994e8e1a1daec01..0ed6946c9d0e3d81055c83adf9c3967e8263ef07 100644 GIT binary patch delta 85 zcmV-b0IL7r0p9_TFH7V1AZ>CfR;;e`yy%$sgZhRO@t)c delta 85 zcmV-b0IL7r0p9_TFH8BGl(Ln(MifoEXS76|w{Hne0tx_!VPj}%Ze Date: Sat, 28 Oct 2023 03:19:35 +0300 Subject: [PATCH 3/4] =?UTF-8?q?=D0=A1ompleted=20task=202?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/main/task_1/TimeMachine.class | Bin 1822 -> 1860 bytes .../compileJava/previous-compilation-data.bin | Bin 223 -> 593 bytes .../task_2/NotEnoughMaterialException.java | 7 ++ .../java/task_2/NotEnoughWoodException.java | 7 ++ src/main/java/task_2/OlivandersShop.java | 102 ++++++++++++++++++ .../task_2/OrdersListIsEmptyException.java | 7 ++ src/main/java/task_2/Wand.java | 47 ++++++++ src/main/java/task_2/WandOrder.java | 28 +++++ 8 files changed, 198 insertions(+) create mode 100644 src/main/java/task_2/NotEnoughMaterialException.java create mode 100644 src/main/java/task_2/NotEnoughWoodException.java create mode 100644 src/main/java/task_2/OlivandersShop.java create mode 100644 src/main/java/task_2/OrdersListIsEmptyException.java create mode 100644 src/main/java/task_2/Wand.java create mode 100644 src/main/java/task_2/WandOrder.java diff --git a/build/classes/java/main/task_1/TimeMachine.class b/build/classes/java/main/task_1/TimeMachine.class index 8fdbc3d076f1032b1bf8fdb44fbdf83434405d11..c7d0d51fa1bb8e98faa6a788a9e676cd4ba13b8e 100644 GIT binary patch delta 188 zcmXwyy$-DGs5#l$IRB5|Z{nTKyG$u(Wlf=j~cnG^^VDSWA$2<6R`I_vPNVcJ+;g4VEY8SWkAM| zos2zWj)a_u7|C20e~6iCayXF4D5;w>6B+m(8|Ko>I+U;wncs6uktH=%(O~rf*F+VV delta 131 zcmX@YH;-?F4;$xk237_(1_p-U$)RjsqB^>Q9AeuTWH$mum>AT6q#OhLJKoL8LdIlo~V<3-*!JWZ`L6d=zL4v`W!4$}1V$fjFW-tS)W@fNtkYX?gvRD|r R7&sX$fGk#^N=vZmRsi;L4*viE diff --git a/build/tmp/compileJava/previous-compilation-data.bin b/build/tmp/compileJava/previous-compilation-data.bin index 0ed6946c9d0e3d81055c83adf9c3967e8263ef07..e874e99ec78face903ae443184d7a5ea1c4ed3c3 100644 GIT binary patch delta 504 zcmcc5c#(yXb0VXCeK?mMH$!_#VsUo75i1WvOJZJ%z>+(A`7cyUe;2mcUaNdik%iZv zlaHabC?&N>fPLAovd1~cWdc>AxEi0w-QW)v@aGa_=*r0~1L{mIDi&gB$;dAdVENnf ziE~wBoZ?N+>+8%U?1WuKd_`Tw{J6v!n)6E}7~1mkOVcwX8R|O{OHzw66LUBOP8U9J z;_8Tc6uL!v=V{-soKmjRt}>poK63tC@(gVt+lv(#S~81E6d9U|l^9xc3rZ?E1mtcn zObeU!DXmz1N_Gg-v20~uCKZPE#N>?3yi@^(4gZuvf8Hnxu<;jb4=`>~4PjDa=qO4o zOU(iLrFr|bOB3^W+|^w*!bLS1TJrN#I0RUKEf;Z|aQ9M9TP&M{!73AWPDTbMUVa8% zMg~TH22~)b%)r11B7_-%0t`}MQXNQ6Y*no1)Y8)q(FxJjXJKVi(_?7ON-Rrc0IFBj z*E4W64AEid&;xN9jP#6sbyUD?WfMJ9S2JI8R|`K&eQs892}y_=VJkiBa7!Mr8crKM zTUWbqb4`epy1kx*zcn9Niq}!k$<^7_#naWt&0oP%UO`a_qDabJ&m-8=-%?Nrtd5@% HXfXo-0C0ke delta 120 zcmcb}a-Wfrc_O2|f-e&nLwjO!MrK~Bfb}~^xAe{rb7GTwr#7Y@e!?BX#537|QHq<1 zn~{N$lYxPek#q7yMny|zUOm1L{ty9u7FISML59|>#Ii&NpftCTp0KM(2tPZAAc)H# Qswd{l&jn_4G6F>y05l#KLI3~& diff --git a/src/main/java/task_2/NotEnoughMaterialException.java b/src/main/java/task_2/NotEnoughMaterialException.java new file mode 100644 index 0000000..03cd47b --- /dev/null +++ b/src/main/java/task_2/NotEnoughMaterialException.java @@ -0,0 +1,7 @@ +package task_2; + +public class NotEnoughMaterialException extends RuntimeException { + public NotEnoughMaterialException(String coreMaterial) { + super("There is not enough \"" + coreMaterial + "\" for the production of sticks."); + } +} diff --git a/src/main/java/task_2/NotEnoughWoodException.java b/src/main/java/task_2/NotEnoughWoodException.java new file mode 100644 index 0000000..27940e2 --- /dev/null +++ b/src/main/java/task_2/NotEnoughWoodException.java @@ -0,0 +1,7 @@ +package task_2; + +public class NotEnoughWoodException extends RuntimeException { + public NotEnoughWoodException(String woodType) { + super("There is not enough \"" + woodType + "\" for the production of sticks."); + } +} diff --git a/src/main/java/task_2/OlivandersShop.java b/src/main/java/task_2/OlivandersShop.java new file mode 100644 index 0000000..9c51224 --- /dev/null +++ b/src/main/java/task_2/OlivandersShop.java @@ -0,0 +1,102 @@ +package task_2; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class OlivandersShop { + + private Map woodTypeCount; + private Map coreMaterialCount; + private List orders = new ArrayList<>(); + + public Map getWoodTypeCount() { + return woodTypeCount; + } + + public Map getCoreMaterialCount() { + return coreMaterialCount; + } + + public void setWoodTypeCount(Map woodTypeCount) { + this.woodTypeCount = woodTypeCount; + } + + public void setCoreMaterialCount(Map coreMaterialCount) { + this.coreMaterialCount = coreMaterialCount; + } + + public void placeOrder(WandOrder order) { + String woodType = order.getWand().getWoodType(); + String coreMaterial = order.getWand().getCoreMaterial(); + + for (Map.Entry woodTypeCnt : woodTypeCount.entrySet()) { + if (woodTypeCnt.getKey().equals(woodType)) { + if (woodTypeCnt.getValue() >= order.getQuantity()) { + for (Map.Entry coreMaterialCnt : coreMaterialCount.entrySet()) { + if (coreMaterialCnt.getKey().equals(coreMaterial)) { + if (coreMaterialCnt.getValue() >= order.getQuantity()) { + orders.add(order); + } else { + throw new NotEnoughMaterialException(coreMaterial); + } + } + } + } else { + throw new NotEnoughWoodException(woodType); + } + } + } + } + + public Wand findMostPowerfulWand() { + if (orders.isEmpty()) { + throw new OrdersListIsEmptyException(); + } + Wand mostPowerfulWand = orders.get(0).getWand(); + for (WandOrder wandOrder : orders) { + if (wandOrder.getWand().getPowerLevel() > mostPowerfulWand.getPowerLevel()) { + mostPowerfulWand = wandOrder.getWand(); + } + } + return mostPowerfulWand; + } + + public static void main(String[] args) { + OlivandersShop olivandersShop = new OlivandersShop(); + + olivandersShop.setWoodTypeCount(new HashMap<>()); + + olivandersShop.getWoodTypeCount().put("Acacia", 30); + olivandersShop.getWoodTypeCount().put("Beech", 25); + olivandersShop.getWoodTypeCount().put("Elder", 40); + olivandersShop.getWoodTypeCount().put("Vine", 10); + olivandersShop.getWoodTypeCount().put("Willow", 15); + olivandersShop.getWoodTypeCount().put("Cedar", 35); + olivandersShop.getWoodTypeCount().put("Yew", 20); + + olivandersShop.setCoreMaterialCount(new HashMap<>()); + + olivandersShop.getCoreMaterialCount().put("Phoenix feather", 30); + olivandersShop.getCoreMaterialCount().put("Thestral tail hair", 40); + olivandersShop.getCoreMaterialCount().put("Unicorn hair", 25); + olivandersShop.getCoreMaterialCount().put("Dragon heartstring", 10); + + Wand wandOne = new Wand("Acacia", 15.3, "Unicorn hair", 100); + Wand wandTwo = new Wand("Cedar", 13.8, "Thestral tail hair", 150); + Wand wandThree = new Wand("Willow", 14.8, "Dragon heartstring", 90); + + WandOrder wandOrderOne = new WandOrder("CustomerOne", wandOne, 10); + WandOrder wandOrderTwo = new WandOrder("CustomerOne", wandTwo, 20); + WandOrder wandOrderThree = new WandOrder("CustomerTwo", wandTwo, 5); + WandOrder wandOrderFour = new WandOrder("CustomerTwo", wandThree, 9); + + olivandersShop.placeOrder(wandOrderOne); + olivandersShop.placeOrder(wandOrderTwo); + olivandersShop.placeOrder(wandOrderThree); + olivandersShop.placeOrder(wandOrderFour); + + System.out.println(olivandersShop.findMostPowerfulWand()); + } +} \ No newline at end of file diff --git a/src/main/java/task_2/OrdersListIsEmptyException.java b/src/main/java/task_2/OrdersListIsEmptyException.java new file mode 100644 index 0000000..af27d12 --- /dev/null +++ b/src/main/java/task_2/OrdersListIsEmptyException.java @@ -0,0 +1,7 @@ +package task_2; + +public class OrdersListIsEmptyException extends RuntimeException { + public OrdersListIsEmptyException() { + super("The list of orders is empty!"); + } +} diff --git a/src/main/java/task_2/Wand.java b/src/main/java/task_2/Wand.java new file mode 100644 index 0000000..f0115db --- /dev/null +++ b/src/main/java/task_2/Wand.java @@ -0,0 +1,47 @@ +package task_2; + +public class Wand { + + private String woodType; + private double length; + private String coreMaterial; + private int powerLevel; + + public Wand(String woodType, double length, String coreMaterial, int powerLevel) { + if (woodType.isEmpty()) { + throw new IllegalArgumentException("The \"woodType\" field should not be empty."); + } + if (length <= 0) { + throw new IllegalArgumentException("The \"length\" field should not be <= 0."); + } + if (coreMaterial.isEmpty()) { + throw new IllegalArgumentException("The \"coreMaterial\" field should not be empty."); + } + if (powerLevel <= 0) { + throw new IllegalArgumentException("The \"powerLevel\" field should not be <= 0."); + } + this.woodType = woodType; + this.length = length; + this.coreMaterial = coreMaterial; + this.powerLevel = powerLevel; + + } + + public String getWoodType() { + return woodType; + } + + public String getCoreMaterial() { + return coreMaterial; + } + + public int getPowerLevel() { + return powerLevel; + } + + @Override + public String toString() { + return "Wand [" + "woodType: " + woodType + "; length: " + length + "; coreMaterial: " + + coreMaterial + "; powerLevel: " + powerLevel + "]."; + } +} diff --git a/src/main/java/task_2/WandOrder.java b/src/main/java/task_2/WandOrder.java new file mode 100644 index 0000000..f1bb252 --- /dev/null +++ b/src/main/java/task_2/WandOrder.java @@ -0,0 +1,28 @@ +package task_2; + +public class WandOrder { + + private final String customerName; + private Wand wand; + private int quantity; + + public WandOrder(String customerName, Wand wand, int quantity) { + if (customerName.isEmpty()) { + throw new IllegalArgumentException("The \"customerName\" field should not be empty."); + } + if (quantity <= 0) { + throw new IllegalArgumentException("The \"quantity\" field should not be <= 0."); + } + this.customerName = customerName; + this.wand = wand; + this.quantity = quantity; + } + + public Wand getWand() { + return wand; + } + + public int getQuantity() { + return quantity; + } +} From 7cf057929accbf87a79230421cc7c7fc9d02084f Mon Sep 17 00:00:00 2001 From: Alexandr Borovik Date: Sat, 28 Oct 2023 04:19:49 +0300 Subject: [PATCH 4/4] =?UTF-8?q?=D0=A1ompleted=20task=202?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/task_2/NotEnoughMaterialException.java | 2 +- src/main/java/task_2/NotEnoughWoodException.java | 2 +- src/main/java/task_2/Wand.java | 8 ++++---- src/main/java/task_2/WandOrder.java | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/main/java/task_2/NotEnoughMaterialException.java b/src/main/java/task_2/NotEnoughMaterialException.java index 03cd47b..eb4c706 100644 --- a/src/main/java/task_2/NotEnoughMaterialException.java +++ b/src/main/java/task_2/NotEnoughMaterialException.java @@ -2,6 +2,6 @@ public class NotEnoughMaterialException extends RuntimeException { public NotEnoughMaterialException(String coreMaterial) { - super("There is not enough \"" + coreMaterial + "\" for the production of sticks."); + super("There is not enough \"" + coreMaterial + "\" for the production of sticks!"); } } diff --git a/src/main/java/task_2/NotEnoughWoodException.java b/src/main/java/task_2/NotEnoughWoodException.java index 27940e2..dc1681b 100644 --- a/src/main/java/task_2/NotEnoughWoodException.java +++ b/src/main/java/task_2/NotEnoughWoodException.java @@ -2,6 +2,6 @@ public class NotEnoughWoodException extends RuntimeException { public NotEnoughWoodException(String woodType) { - super("There is not enough \"" + woodType + "\" for the production of sticks."); + super("There is not enough \"" + woodType + "\" for the production of sticks!"); } } diff --git a/src/main/java/task_2/Wand.java b/src/main/java/task_2/Wand.java index f0115db..9820a2c 100644 --- a/src/main/java/task_2/Wand.java +++ b/src/main/java/task_2/Wand.java @@ -9,16 +9,16 @@ public class Wand { public Wand(String woodType, double length, String coreMaterial, int powerLevel) { if (woodType.isEmpty()) { - throw new IllegalArgumentException("The \"woodType\" field should not be empty."); + throw new IllegalArgumentException("The \"woodType\" field should not be empty!"); } if (length <= 0) { - throw new IllegalArgumentException("The \"length\" field should not be <= 0."); + throw new IllegalArgumentException("The \"length\" field should not be <= 0!"); } if (coreMaterial.isEmpty()) { - throw new IllegalArgumentException("The \"coreMaterial\" field should not be empty."); + throw new IllegalArgumentException("The \"coreMaterial\" field should not be empty!"); } if (powerLevel <= 0) { - throw new IllegalArgumentException("The \"powerLevel\" field should not be <= 0."); + throw new IllegalArgumentException("The \"powerLevel\" field should not be <= 0!"); } this.woodType = woodType; this.length = length; diff --git a/src/main/java/task_2/WandOrder.java b/src/main/java/task_2/WandOrder.java index f1bb252..1274939 100644 --- a/src/main/java/task_2/WandOrder.java +++ b/src/main/java/task_2/WandOrder.java @@ -8,10 +8,10 @@ public class WandOrder { public WandOrder(String customerName, Wand wand, int quantity) { if (customerName.isEmpty()) { - throw new IllegalArgumentException("The \"customerName\" field should not be empty."); + throw new IllegalArgumentException("The \"customerName\" field should not be empty!"); } if (quantity <= 0) { - throw new IllegalArgumentException("The \"quantity\" field should not be <= 0."); + throw new IllegalArgumentException("The \"quantity\" field should not be <= 0!"); } this.customerName = customerName; this.wand = wand;