From 294d423ae7018074300a979da371e768f314f5f0 Mon Sep 17 00:00:00 2001 From: Khagapati Bagh <30410947+khagapati-bagh@users.noreply.github.com> Date: Wed, 24 Nov 2021 23:02:31 +0530 Subject: [PATCH 1/7] Added test cases --- tic-tac-toe/src/com/game/Main.java | 17 ++++++++++++----- tic-tac-toe/test/inputFiles/testCase1.txt | 11 +++++++++++ tic-tac-toe/test/inputFiles/testCase2.txt | 14 ++++++++++++++ tic-tac-toe/test/inputFiles/testCase3.txt | 5 +++++ 4 files changed, 42 insertions(+), 5 deletions(-) create mode 100644 tic-tac-toe/test/inputFiles/testCase1.txt create mode 100644 tic-tac-toe/test/inputFiles/testCase2.txt create mode 100644 tic-tac-toe/test/inputFiles/testCase3.txt diff --git a/tic-tac-toe/src/com/game/Main.java b/tic-tac-toe/src/com/game/Main.java index 5bac1c9..0676fa3 100644 --- a/tic-tac-toe/src/com/game/Main.java +++ b/tic-tac-toe/src/com/game/Main.java @@ -4,20 +4,20 @@ import com.game.model.Player; import com.game.service.BoardService; +import java.io.File; +import java.io.FileNotFoundException; import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class Main { - public static void main(String[] args) { - // write your code here + private static void helper(Scanner scanner) { + System.out.println("**********************\n New Game Started\n**********************"); BoardService boardService = new BoardService(); List playerList = new ArrayList<>(); - Scanner scanner = new Scanner(System.in); - int numberOfPlayer = 0; while (numberOfPlayer == 0) { //System.out.println("Enter Number of player"); @@ -33,7 +33,7 @@ public static void main(String[] args) { String name = scanner.next(); Player player = new Player(name, choice.toUpperCase().charAt(0)); playerList.add(player); - System.out.println(player.toString()); + //System.out.println(player.toString()); } //System.out.println("Enter Board Size"); @@ -66,4 +66,11 @@ public static void main(String[] args) { } System.out.println("Game Over"); } + + public static void main(String[] args) throws FileNotFoundException { + // write your code here + helper(new Scanner(new File(args[0]))); + helper(new Scanner(new File(args[1]))); + helper(new Scanner(new File(args[2]))); + } } diff --git a/tic-tac-toe/test/inputFiles/testCase1.txt b/tic-tac-toe/test/inputFiles/testCase1.txt new file mode 100644 index 0000000..ca3e664 --- /dev/null +++ b/tic-tac-toe/test/inputFiles/testCase1.txt @@ -0,0 +1,11 @@ +2 +X Gaurav +O Sagar +3 +2 2 +1 3 +1 1 +1 2 +2 2 +3 3 +exit \ No newline at end of file diff --git a/tic-tac-toe/test/inputFiles/testCase2.txt b/tic-tac-toe/test/inputFiles/testCase2.txt new file mode 100644 index 0000000..e61d46d --- /dev/null +++ b/tic-tac-toe/test/inputFiles/testCase2.txt @@ -0,0 +1,14 @@ +2 +X Gaurav +O Sagar +3 +2 3 +1 2 +2 2 +2 1 +1 1 +3 3 +3 2 +3 1 +1 3 +exit \ No newline at end of file diff --git a/tic-tac-toe/test/inputFiles/testCase3.txt b/tic-tac-toe/test/inputFiles/testCase3.txt new file mode 100644 index 0000000..a39d2d5 --- /dev/null +++ b/tic-tac-toe/test/inputFiles/testCase3.txt @@ -0,0 +1,5 @@ +2 +X Gaurav +O Sagar +4 +exit \ No newline at end of file From 9e25e7f898bb7c7bc8976ddedfd6b876df504760 Mon Sep 17 00:00:00 2001 From: khagapati-bagh Date: Sun, 28 Nov 2021 18:05:17 +0530 Subject: [PATCH 2/7] Added trello project --- tic-tac-toe/.idea/.gitignore | 3 + tic-tac-toe/.idea/misc.xml | 6 + tic-tac-toe/.idea/modules.xml | 8 + tic-tac-toe/.idea/vcs.xml | 6 + .../tic-tac-toe/com/game/Main.class | Bin 0 -> 2821 bytes .../com/game/constant/Constant.class | Bin 0 -> 395 bytes .../tic-tac-toe/com/game/model/Board.class | Bin 0 -> 890 bytes .../tic-tac-toe/com/game/model/Player.class | Bin 0 -> 1470 bytes .../com/game/service/BoardService.class | Bin 0 -> 3477 bytes tic-tac-toe/tic-tac-toe.iml | 11 + trello/.idea/.gitignore | 5 + trello/.idea/compiler.xml | 8 + trello/.idea/description.html | 1 + trello/.idea/encodings.xml | 6 + trello/.idea/misc.xml | 12 + trello/.idea/modules.xml | 8 + trello/.idea/project-template.xml | 3 + trello/.idea/vcs.xml | 6 + .../production/trello/com/trello/Main.class | Bin 0 -> 3974 bytes .../com/trello/constants/Constants.class | Bin 0 -> 815 bytes .../trello/com/trello/enums/Access.class | Bin 0 -> 955 bytes .../com/trello/models/Application.class | Bin 0 -> 3779 bytes .../trello/com/trello/models/Board.class | Bin 0 -> 4762 bytes .../trello/com/trello/models/BoardList.class | Bin 0 -> 3990 bytes .../trello/com/trello/models/Card.class | Bin 0 -> 3774 bytes .../trello/com/trello/models/User.class | Bin 0 -> 2352 bytes .../trello/services/ApplicationService.class | Bin 0 -> 9136 bytes trello/src/com/trello/Main.java | 120 +++++++++ .../src/com/trello/constants/Constants.java | 21 ++ trello/src/com/trello/enums/Access.java | 6 + trello/src/com/trello/models/Application.java | 20 ++ trello/src/com/trello/models/Board.java | 60 +++++ trello/src/com/trello/models/BoardList.java | 45 ++++ trello/src/com/trello/models/Card.java | 32 +++ trello/src/com/trello/models/User.java | 21 ++ .../trello/services/ApplicationService.java | 245 ++++++++++++++++++ trello/trello.iml | 12 + 37 files changed, 665 insertions(+) create mode 100644 tic-tac-toe/.idea/.gitignore create mode 100644 tic-tac-toe/.idea/misc.xml create mode 100644 tic-tac-toe/.idea/modules.xml create mode 100644 tic-tac-toe/.idea/vcs.xml create mode 100644 tic-tac-toe/out/production/tic-tac-toe/com/game/Main.class create mode 100644 tic-tac-toe/out/production/tic-tac-toe/com/game/constant/Constant.class create mode 100644 tic-tac-toe/out/production/tic-tac-toe/com/game/model/Board.class create mode 100644 tic-tac-toe/out/production/tic-tac-toe/com/game/model/Player.class create mode 100644 tic-tac-toe/out/production/tic-tac-toe/com/game/service/BoardService.class create mode 100644 tic-tac-toe/tic-tac-toe.iml create mode 100644 trello/.idea/.gitignore create mode 100644 trello/.idea/compiler.xml create mode 100644 trello/.idea/description.html create mode 100644 trello/.idea/encodings.xml create mode 100644 trello/.idea/misc.xml create mode 100644 trello/.idea/modules.xml create mode 100644 trello/.idea/project-template.xml create mode 100644 trello/.idea/vcs.xml create mode 100644 trello/out/production/trello/com/trello/Main.class create mode 100644 trello/out/production/trello/com/trello/constants/Constants.class create mode 100644 trello/out/production/trello/com/trello/enums/Access.class create mode 100644 trello/out/production/trello/com/trello/models/Application.class create mode 100644 trello/out/production/trello/com/trello/models/Board.class create mode 100644 trello/out/production/trello/com/trello/models/BoardList.class create mode 100644 trello/out/production/trello/com/trello/models/Card.class create mode 100644 trello/out/production/trello/com/trello/models/User.class create mode 100644 trello/out/production/trello/com/trello/services/ApplicationService.class create mode 100644 trello/src/com/trello/Main.java create mode 100644 trello/src/com/trello/constants/Constants.java create mode 100644 trello/src/com/trello/enums/Access.java create mode 100644 trello/src/com/trello/models/Application.java create mode 100644 trello/src/com/trello/models/Board.java create mode 100644 trello/src/com/trello/models/BoardList.java create mode 100644 trello/src/com/trello/models/Card.java create mode 100644 trello/src/com/trello/models/User.java create mode 100644 trello/src/com/trello/services/ApplicationService.java create mode 100644 trello/trello.iml diff --git a/tic-tac-toe/.idea/.gitignore b/tic-tac-toe/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/tic-tac-toe/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/tic-tac-toe/.idea/misc.xml b/tic-tac-toe/.idea/misc.xml new file mode 100644 index 0000000..8ed5f34 --- /dev/null +++ b/tic-tac-toe/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/tic-tac-toe/.idea/modules.xml b/tic-tac-toe/.idea/modules.xml new file mode 100644 index 0000000..80dbae4 --- /dev/null +++ b/tic-tac-toe/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/tic-tac-toe/.idea/vcs.xml b/tic-tac-toe/.idea/vcs.xml new file mode 100644 index 0000000..6c0b863 --- /dev/null +++ b/tic-tac-toe/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/tic-tac-toe/out/production/tic-tac-toe/com/game/Main.class b/tic-tac-toe/out/production/tic-tac-toe/com/game/Main.class new file mode 100644 index 0000000000000000000000000000000000000000..b9335bdf7e46233e459cf5a4a2188a5cfbd20d1b GIT binary patch literal 2821 zcmZ`*>vI!T6#w1kvB_pzppZ(cg$Sr^0i%djC{#)WEVcy=uln95YrBx_#?7X*C_eFl zsQA|U79aIFjyjWybsWFy2fzDwIOC|J;P38+CNMEGd-vRP&-?uD+5B?m`yT|=dFV)mlB8S(Wfd1o%P~wy>Tm>;@;xPwk3?|4f(H~FRj~>WO3x3e z=)}Vc9#Qb9KzNgBnQoszptEbAKrn6R41ooMrezG53!{d!M<30T(>iEp_542FG3CC> z47%fHNlIt!LTXGe7^xxMw0dcE+{hOVN1&~9@Sr}Sr^>FGPi3;YWf@MdbQI2x+h*1? z>rO6XI1^qx%WJMmJ}?Yh?w zQXuMkFpn^$kZI)%M%Gd@lJO4O&M)v(@m!I+F7U9a7T|fc=%efAjH_o44e3R%K?I+I z#|Sh9#|Q$JwZQhsrrhq^tS`FPecc&jKNmMRX4=~(vqsT1ZL6fv zZ2Xn7lN!3QTEP<b?YKrxZ7A8T;JAjTaYCSD9%hX? z!?vtS|O7=s;Gk8|Rb2upwpVzN19E+pjd7RYn0$!BSzr>`Hi!PPA{m97#jt}$uS-J5tzAm-(@jSM5F;B5`>;9U*x;e8FK@PUR8@ex6N zA@H}B&3w*qG<+VnQtxEgcDLJQD>sjm z^UP+ZO0H4hoUzL^9`^yr@OJacyR>KM1p?S_;rVP{;i44EGtPK*o?M7r#WE({0gIM7 z$2bmxaxbu?vwC~#<=GzB-dp5+O6w(Jm!n8``Y9dk9Oz2dW>&pUT3(NUp37Yjf?urO zuG^?x^6s%J=c%dZy^XXe6~_#jGdFejuByr+8TXa-d}(0JvK_+@sbQM*;Wyd~jL8~f zviXss?vxBK_l9b$Mx>x0GKTC4CVNTez`*|u5Sc`jk*2GYnU!QURI?d3WS%|MmG+`~*u*Yo1m83OafTCA%r^;(U4waj};&)O5MC&(b zY7JBnoI_}27U97;D11kT0(~8CU_o~UQ4(kWm^u4V+4%$)sI+UN-edO~YXW1&D#cy&Bj!J;+sP&`~bjn*do zgxE&KvlmH3T9;H1pGJ!etc`)qVB9;3CL-VAqF}B^O+2C#(WF>=MC7;F$(hCv6 zBCdc3Bo z4{nRhY&!bh|NgSr_^~~ZkM%PO!O3xW=qMSrDq-cBmSOy9*0QeoUgeTh0>bAXyV z$?1oB2JH%NRxl_Q{DUU(H`bp)n-Jn(@MAZmVE7F7a1|nYmP(3(T~%?)NN7i~8@KQ+ zkzcBUeDfSuj?7`zNOxe}EH0bH<=^3od0wyqFI3~zZcHod1xCIE1MJ*RR_5lq+p`(B SvRc3%K0#)-m(M=Z#P@%kMW1y5 literal 0 HcmV?d00001 diff --git a/tic-tac-toe/out/production/tic-tac-toe/com/game/constant/Constant.class b/tic-tac-toe/out/production/tic-tac-toe/com/game/constant/Constant.class new file mode 100644 index 0000000000000000000000000000000000000000..cf9d17b79db40b967642c3233e307b39e171d27c GIT binary patch literal 395 zcmZ`#O-sW-6r9(jO^vCo^;^7n(;m#lTSbtXLLum(F^Cu0#-(maH;`_`zvW5r;1BRe zi7%nnlb6|@VP<#U`}+R)1aOXh7Z$c1>^RsZc-O)3>Mo2P$D@aUKqEqHkm-dH+QcF) zq{ShNUb>F}nxZlO(i5rR7aApU6BC zla!Tim?a{OMXpM|6m9dY7KEcP$>#o4%%z_!8~DFf`UH2J6?r0us(feF@vQ9QVI3af z@c%ra^H=b~8Ee@30Z&L#Y5)KL literal 0 HcmV?d00001 diff --git a/tic-tac-toe/out/production/tic-tac-toe/com/game/model/Board.class b/tic-tac-toe/out/production/tic-tac-toe/com/game/model/Board.class new file mode 100644 index 0000000000000000000000000000000000000000..7d7595100381b5ab0f810c777696cf8e9c125ae4 GIT binary patch literal 890 zcmZ{hK~LL25QX15j@=m31V~dTPzY_M01`g5w^kg8+6pOx1BeSJC#-^z9ao8|)cz(8 zAc2rL@B{jzs=nEz3bM>)c4s{A&9~z}e;*zJe8LA04%R9tV_ia1!iI}?F5WBHqv*F* zQ2PoMo&3mtwRIfx-VYPKmxjYLh0^J1TfzAf4Wew9X>0R@x^{X-U9}Sp^ucA))x+bk z8?!RsNqb>@5)LEDCq+9uk46fOPA^RYu?`Z-4P84_aKet=^GR|ki z*D0RQ?@v>H{XPXQw>Ay3bUi6MEmpT!cSEA3kP%xOm~CBEiFq zLcNGtp(ctT4hQ|?2Rbv%GZ=bz|D9 zj2>m6%%-@;n?G*C9OjuRETGOP1_95p!7Z#S7A%N?V~T#E_!Sxx@h-b%kh8UX2P;3m z#<$EFhsL;TGG5%}Z8G?EAxJ3?QZEEqECwm%K^6(J^bCkBS3s8VhB3bp`#QIgl|qnZ ctW3nyjcnh+&V#HIr1=bp{9OTAH51?d1G*$|r2qf` literal 0 HcmV?d00001 diff --git a/tic-tac-toe/out/production/tic-tac-toe/com/game/model/Player.class b/tic-tac-toe/out/production/tic-tac-toe/com/game/model/Player.class new file mode 100644 index 0000000000000000000000000000000000000000..5f75cc63931ed71bc30632ba085aba4efe12bc73 GIT binary patch literal 1470 zcmZ`&YflqV5Iwiu?)I^iQlWqpX%*~)$Ex5HT8%X(Bn_G%Bz|1lOQ9S13hJq&wo(e>}mj2OjcAEm}`icHQ*DSr$()N3f*=cPHNFBXx z2*{0N+icK5)abHfcFbN?AX6MKsg(|?s%AGSd9rSHjJaxw7qZ6ai6G*zDe$TYDgM-~yG=`&hns(c}q%TArCXo8F-t8J4l6*Z#v9Tri zqflX%G`sdQ^7Kqo^pwL0u{?ANu|lpVk;unDPYknU=jhg=?_u)u<#UMg4}=B?pFt|G zo*`1so@!cP!H5;rND^FXkGEZqpsZ7SRow+*>X7yYK2Me0kk2&cSv6;HAEc&*)5n3EY1ZMM@Eb10*mvw9ne|+ zGSWF4SbPV|esPs}@`y6aD~%4GBYpEOLdMG)swumxWX)EBu_B{b%Y?OZ4HiEK#=48b z7_Wu@HtsE?NLZz7uz0tOMZcqubxhoOx7A-z-k&3yjtvkm)0)Vo3Iin4suze10~20A ZrjM!5WClo%u4Vm-ven^(D7pHV{{iLD>xlpW literal 0 HcmV?d00001 diff --git a/tic-tac-toe/out/production/tic-tac-toe/com/game/service/BoardService.class b/tic-tac-toe/out/production/tic-tac-toe/com/game/service/BoardService.class new file mode 100644 index 0000000000000000000000000000000000000000..f8910a45c56dabbed0890234d448edcaf3885dd0 GIT binary patch literal 3477 zcmaJ@TT>h78Gcr~(n?}&bMS&e9At;sLLlP+R%)DpYm8G`unpMc;Izpi*03NUDhV3W zLwcZX{zB}FbhzQhH|exuTF-FTn@)S#AJES9qP^*DCX| z`+ofSzkfUcFoKWcNMhE+TpS_H#?XU#>D`y+fr%^fU5MdLycNaUalC_vaqf9nroSt_ z?@9BXH1A8}NV8}n7e@Xm@^Y?ke%>GOmbhHvIeG6xnle&Ta+S8q-xPly zr^;$YfB0}h!>Rd-lUti{HiBEu+O+$qa=$p|Ew5B=dCqci-N}ooiN1G8BDYfH zt+d7CF=46b(Fq#-)9T#)q8O>4jw-`*#UId5sVQYi`#?j3nw}`;Hw)`r$*njgk_-tn zZJY4aa@|VYE5E@T?{2vzB1uj8hE8vky!DDKC@8e!Owf=Cy1KzDFVGiDGsP`p=G9X| zB3f|PTz{&QQ+1#E0lSxXw%yWo*%@;S82xLL}%oFs-OwIPVt{hmt z^@uMe%bU5JTP{D^%;&dFd|+W4A6l3|uZ17tM;3-KY~dTyT*Ih^*QB|DVUiLkgL!9t zd2qf$hc4gT^zut?$-q#~qQNY?m3gI7i@nKu1Y~$5&XE*FEc!lTV}83_aSQZ( zag&zpX=U9j4&D=ukeKTfm?SMHO!HnPq&$^qr~HFQ+;LqlvX)-}5Ki@}G>SMI8}2&e z-N__5b~11zug#of_W$gUR*HTssE*We!?YMykO{cv<)ado40S6LLB>*y%qyXA#HE~^ zqQ-hyP63TS>W!_%K2^!~WsYt_S8I*weQ4=t2)(@z{r50F<5~z8*`DSOAO-_*oIwLF zaU?c?Mx@ZkuZA@G1AG7C?l9-((!Ya|s3NSsiIplMiNv2^hGz7!uEZ{qde*QFcA5sd zhHRrT^I*r&_74BEqqF_H92%%1`dh@B<5e^eoF#~Kg=mQP3$7^fG@}XaY?G|zeK?C( z_KqiYvEc9?DZfNc!f;gQ6r z2-Jc!oF{Rs=*|KDBI(TDC^*a*bMljan+8 z*23UQXpc~9d68P1P-AfnsC~+jX!T-1?T*r9=3p0gCP7h-bUqK%-r>KGQ0Y*fzeXyf zRN8fPvetI9--~e-8PQn-6(s61#D0y)MeY`L$(%$hq#`ZR(p5Z8LH`O35{YJCVJzYS z*gvSv!0>ahnNg$NILL~@iES(JK1TH+xTt%y4z;eZE62(?Y3ksW=Z7(L7!9zeC9;ZAqYb96#EFY z1|o=aUoHsNbbn9~R5iFObzn5y9v+RfM-H;4o{id3+uTLEJz_^kvN4vuXJ}z1K5NIS zu$x<}XshB}7417wM)Yr7ucAX0%+Km&@d85vJYc&(NxsS8yoG!GF7Th*ciAqomFyCN zS(e0G6kv=yZ>VrfBIE+nQ9M+k)s!g5U>vg6hZ)*>U=LYeV@GC8O!80a$LGi#QvM-- zkybuie9V!AX5hJs6OwK{i6=;Os>JJjf+i+k=SXAbH^)RF|Ca;rk>UF_CbU%x z)j%y&13{>w3`sq`c>YVINrK_h@GXko7tAw;OZbnc6P^1=e1c2>k3ce2bUyHhU0Fjq zwqY#sIg>YO52xgb>gE%rKRuFXejR^A_b&4dT4Anvgt^K*Ut=cZ39~?_7ZnMq7U%hr zeLJWY<25?tH9F%p<&EPzm=3CifzWV_6lQQIATr6XRF}p8@Z)1H^z*8$Zhr9 + + + + + + + + + + \ No newline at end of file diff --git a/trello/.idea/.gitignore b/trello/.idea/.gitignore new file mode 100644 index 0000000..1078b7e --- /dev/null +++ b/trello/.idea/.gitignore @@ -0,0 +1,5 @@ +# Default ignored files +/shelf/ +/workspace.xml +#IDE metadata +**.idea/** \ No newline at end of file diff --git a/trello/.idea/compiler.xml b/trello/.idea/compiler.xml new file mode 100644 index 0000000..a1757ae --- /dev/null +++ b/trello/.idea/compiler.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/trello/.idea/description.html b/trello/.idea/description.html new file mode 100644 index 0000000..db5f129 --- /dev/null +++ b/trello/.idea/description.html @@ -0,0 +1 @@ +Simple Java application that includes a class with main() method \ No newline at end of file diff --git a/trello/.idea/encodings.xml b/trello/.idea/encodings.xml new file mode 100644 index 0000000..97626ba --- /dev/null +++ b/trello/.idea/encodings.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/trello/.idea/misc.xml b/trello/.idea/misc.xml new file mode 100644 index 0000000..2fc6c34 --- /dev/null +++ b/trello/.idea/misc.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/trello/.idea/modules.xml b/trello/.idea/modules.xml new file mode 100644 index 0000000..9c3d3dc --- /dev/null +++ b/trello/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/trello/.idea/project-template.xml b/trello/.idea/project-template.xml new file mode 100644 index 0000000..1f08b88 --- /dev/null +++ b/trello/.idea/project-template.xml @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/trello/.idea/vcs.xml b/trello/.idea/vcs.xml new file mode 100644 index 0000000..6c0b863 --- /dev/null +++ b/trello/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/trello/out/production/trello/com/trello/Main.class b/trello/out/production/trello/com/trello/Main.class new file mode 100644 index 0000000000000000000000000000000000000000..61fed10d47bcbf48af5baca7ed1df64f2df55537 GIT binary patch literal 3974 zcmb_fdvH`|75{zr-rak5_ofLO64-!10)zxe7AP!jQd;r?w#|cP^MFzcm))CW=|0lk zO#o|^Dy`MFR;gA|iv_W_Pqk5lf}+)m(pn!VT07GjXLOu#Y-j4|bd*Z*oO_qBu+hJ~ zGxs~+d3@*m&iT$go4owqiBkYp<8?3E5LFTLz{HRj5{6Zbc;P~nnK&=Iy=cUp8WK#C z8d6Ntyo~a4mxc_}tcIM1F%9Dy_OOS&yzJxU{k+`GAwHnt9xpzK52@I%;a--1Si?t{ z9?)IFI&^#oCv=?T<-5Fm52q;YaBAF0#A6G>TwE33*YN|K5SUj0IGRpnb4Dtc4Ypm{ zQ9rizcC_@7*B9B`-QLmJ!Q2m-Q@UHaX#XR;B%p5Y4G*-mZPoE(X1y)#?K`?Ux>_04 zX_l1qc69X&bW90-&czIc%>}ngX^(#7lhL?1_${GIL_J1iuyM1*0 zg4Mrd^{-g%Yww7(^@cb1g?qYnoMn-_B@zj5B<|PDdHTC|ToU}o&W_>gILCf|i{I&Z zjh+3T`=GR-YTP4Nfb7||+l*5G7UJHQ&6!C7iA^hKY>!>oV;bo^G{~muJjm zdfe=%QL!PDPUbPVX~dZ+Dnr9`*H9Gj@+_WP*H+vJh3fx$mN9#sLOA91I(2XuAC-Z3 zP8ITYPVMt{4#Rf5bL{+iuHDQ=Gx1R#*gU?o+4yjZt@_eVF$89grCO#D&*IuRmhJJO zAv0s9Y#38exo!g2PgA9$M4O8xcFs7ttGB9#C8qeU^pl{C2j5%KSE9!8d^_|C~w8wWNC(E*@vN z{(1J5T$8t(Z%I3C@q#PF)s_@y_x>7N>?dnwRX}l5yoHw3XsZ?#sTNyOxvi=#QZ2E> zKW$YVtHhfH4(l!P#uQX>mdbn#kDSC(>ZoN+nwx7-;W~=N0WF|ZcnHDrL6#`7qwoc^ zG6LQ(c)%m9i?0{tH_OiNBpSB{wBra)VugjZ(bGi_W2$5vTlJ%hWJ>nPSR zI1&86gIjIk*fikQSa`Sq9OtC0DgYO#r}mk0uLrpLD^^wu;+< zTloeHb8PWCTU=_3oqNC0LdeGGG?3G1tO_V9oxI7ytb!DLbdtMsz4h)}G!9yL%E+K8 zBQ}7)4jn#}pd6*BLK$i>1Iys2|3+pagbFmH5^rNR-l1;4fGQzlj@Xa)(YH8HJctG2 zQB;e^uuvSvB5?$@;%O`q&tbWkK!Z4iMsWr~aSkiQAFxuqiB;lVTq~(qEmdNTRD+PT z5^JS(xK8Rsv($%m(jabd}R6cnJM|^k6eI*?mbyh~9E!s8JNEd@tQXh*9Hi z0g?eeWg!N!g{FPEG6!368%>>UB)<J?*+_Iu~XEXhiiW2dCZlrl+2%BMbcT)yo=N#@>B@t Lcg!F#5_bIuGwZK# literal 0 HcmV?d00001 diff --git a/trello/out/production/trello/com/trello/constants/Constants.class b/trello/out/production/trello/com/trello/constants/Constants.class new file mode 100644 index 0000000000000000000000000000000000000000..4592c73c066f22529c175d036d789556b28fd4d2 GIT binary patch literal 815 zcmaLUUr*Ce7zXg?z{U<`j4=@baSlWTRO%n@G$vbDrAhZEZ8zc->1u-|rA@ZZ@8y+= z7k&Ugl=11p@LYLwa(-{m`?h_~?>|3(0XV~%hDE$C;Y|r|1(poQYxqvYzHz^aiZlgv-Dp&w5}i2@tirfqtrgcK;a=e-LFO`zE7HJ!FZnMK=jJ&6i; z#;jK5uG1T`r6y47JJygdl-S^`{-9-BhQub1bekPkx8_HT&k{QVTC?50?3kUF=}7Df zth7znaIC&(^|}&u&S<)>^@;n2!1ADbIp;n{4&1!!fdAo``4`*`I%MDbD2cKU0*gn- z!~9#*FQLGi9VKCRdNT^goCeI8OE8HmZp} z4{gE(H8-7(gYaXN&#K%#InBc^;|RwB_5TkMsQ$Z|-sn0EGVEc2mk6w58wC`>-=P*z zqNUXP{hvJ43(B+a(SMzZ*+)QVk7o0PJ@OIhNK zMzhcUQO5TQaV$EnNiTQrbI*_W?$_^cKLPCEWdLPzwh6x3Z<)uP z9z*HfGW?n4O`I`9xuP$_@pkauVaS`V@9a-T11CJP1|IFmF~PwHhOLTuYMohzXZb^; z7lp1rZ0Jj*H8Zd+uWyB}V4Bl$-x?9C_AeD>Yr4K0?J^Ypqtw;=3_SYiQkG259r{)@ z35iLnh(fw)d-KD!1?mnpuX&@zUFxUO3nroMym3X=?5xdo5mUvgxVkkJTc|Uv-*6== z3NTdMLs`WNaw_u3G32fqB`h!`Z7=Xi;dVt|uy-&xb?k^-yjl$0_AI*U1=!zSUuSLX zZPVjX>BUKVMIjE*O!~lTNw}v9M+O>hfs|?Wm}W7QDcBbzE+KuQ6~i6+r{bDK_yX4F z_#GtTT}9*7uSi~k3w+`l{x0pPGZcy_#dYcip@iZ#B>DikS}R{5^*Jst%3U3oabH-+ zgBY`cG#+AOZe*W=h*AFzexk|J1=8op#0!PTi)``-m82=XjT1gaws#ID)Mnvwu?bF1 SN|Hs1%*|9DQA}@ zf0#uQD5|Wwbyo*ks9(!Gkt^h?vl^mf<5xB43%s`|nJakbYnv-x`Ler`=gQz>G3(~9 zy5*eAgGIf%p5tZqb`b7Vsg%!U-D<8_kUXq;RsZz#9vB;My*%x+?Q74P9h(6}Wb)5+ z$JI!YP>IN-n(vOPHBZ7Pa(92UMzUg+ri_DQZ7NFohFi1rd8wYMlWpG5rms-jj2$RE z+Z9V{+c@BQ7 z37gm=iq&dw_zm0GQ)ev7U*2-D$Oir3cBGd&AiC_+1#7k@e%|3mWXXDu&Jckhn zdu7-!!$FK_c>ezlImGDT0_Ge{VcNk-K`B8;WOzk}i+ESVu4bOp$>(di{HkPWM~G@n zC2Ph(4R>Vtl(J3j^L3cT!`Ojw zS{xMs6PV;olRWZJ5vdG_vh%hn9G>FR4kSMm#GORoTQA99R z60gx)sVyrnkXH%zI?)@QBN$H`K^0jz!d~oaL`V~5I!7>{Hi9bKaD@Fh(1>t?Xr^-n zzZRcHCG`-(5e{Os5n+~y?S&(2Q~QD%_fXIKlM_F{(CaY*aaf1xL-Kf=IWIMYde3q5rYCvDKhNt;PSe9T7}yo=tXku*b2y=jY1y=gmX ziIW{TSxGzO)R&IYsV^N*#>6QeIK`6jx|4pdW6hM*Z5lOmAEz+SyAI)dEbwJUsKnQJ zlWS4>e1+3QI^M!9oFOu>1dp?M)>@t`XNfG7sn$6n8{e?$yiF9tx2(K(h~ik}IgX>> zvj0J!g{8+Bws4+*w)Pmi6^v~I8JR6#WrCHf`Sor{3gmL(E)jkZ^)A7N!Yj$;H2F3t z8tqH&v$(sI$ehq;{IrcEGV4s5otV4}YkCX)H)P#O>taaifyI_oDpPOT@J-C3zsXJ- zbyHv3^i5{N#N2Y%Nau8%Rc8s(5yd7hVVNg2DEMWf2nD=}E4)RN{d);liFC~3DBdG7 z_&wT%_lZnj<{x1{;et+?HI33j)1Gi+a~_d}AsBUsx{uzv6u6lox29+NYT#_OIye10 z7`TOZ^lRs%{{Sct{B-~T literal 0 HcmV?d00001 diff --git a/trello/out/production/trello/com/trello/models/Board.class b/trello/out/production/trello/com/trello/models/Board.class new file mode 100644 index 0000000000000000000000000000000000000000..fc5d73423bc5cee1a6aa2e8c0580f6c3aa0bce5c GIT binary patch literal 4762 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 literal 0 HcmV?d00001 diff --git a/trello/out/production/trello/com/trello/models/Card.class b/trello/out/production/trello/com/trello/models/Card.class new file mode 100644 index 0000000000000000000000000000000000000000..ea642128b93f26c08d39a9592ffc8957d73c2536 GIT binary patch literal 3774 zcma)9S#KLv6#mAU&CVoE+$O1;q!>-}ku~XYAl(O%u z1W!mj@JL^Z1cIgr5CR^Ggm~`{fS^_OgjZ*`JZ6B8X}N16VR~LJl<(^#mGNHgVFx zvm$!Vz^Md9&&zUJE_*?!7iD=#mX~FDMFg)Jcuj#`uxrJcqJre?G5e&QE8CTY+<`{T ztt?C{Fh#o8UUU?!6LPmxFVx(nhFh&rXxHoRLdBtQ<7}b2m}}IWa=DsYtQMVeJ$I?xfQpuUBQ;|wccD-cjB-Dbr&zDqqA^`)|XstHT20qtCN z%SA5_JqH?g;rN`r|}82$hSatgel)dmoAxfi_kE!3a*O8 zh5)Hjz2(Y4MDiuS-2oz=ttPw68nq|A)q7ZfflZV z@7rq)Nno#y;n|yS4gg!%w-jWD4FEL6 zq=2MiQbTWN9lV_>_jZ<*`#LDhXNGH*rv>7>xTiAbp=7>AYz1BCpk}h?pk*e{LI28A zo#Z;mOMqUeG|`JbtVcgKB8e$-)4mbhh#XHe=Q*Kxlw2F*b!@WW(%)$#M%jt)VH}a) zd6>!g3KE%bpmIxg`?SVw1=e}=%u>>O0mHJbVBKfv&nEkP5YLH6$nU>^4cTPUXZEjP zz3{Wi4YGZYfg{=T82pl#c0q#K%rCKolwtm+8O97YVIPKJV-zJyC8$B)$sniyRx=gIUcFZ zHjhy5U9FsmROWa@DEF^c?v7OESVbu7tCg)t<-4#wP|h<$(h9nCoZ4zOKVycc?bksM zn@jgPT@rnFv>okA?Z~8voqM9~^j@hQnKZGp13S4&Ej!}szfwCgsbXgrc1PK18^+7$ zM@CNU@ICbHC_gdFJ@o5hHuE_&^=$TM41Ef%>umNX49!huR>p9G|d( z9wwE*3R`nOsc!th$K(Jh%X=<%AZeI?q1V8{zcFaw5dTc&Z*26*`2Ul1jNduGn*6Zw zTgi|$DWk;R{>-!wjTXkPF=B~bk#C`IM){L^Cbi%1o8G40<&}P; z)luOO=T#A;)IefNJNTlJyyl7637(Rf;;Ze8M)SHS(nAsZ!xwGN8=i=*5oj5nXe7Fj z`+YZqV7l-Qj^Hr{q2Vn&PAbOKzltXqU>83;B|J$=OlkIiL{C^K}$I1Wz literal 0 HcmV?d00001 diff --git a/trello/out/production/trello/com/trello/models/User.class b/trello/out/production/trello/com/trello/models/User.class new file mode 100644 index 0000000000000000000000000000000000000000..7caf40423b938d0d104f1d743cf95307e183ee71 GIT binary patch literal 2352 zcma)7YfocU6kVtH*>cOHJgcZhM}?MB9Y-Bn21iC1aezS>@DXFYlpE++TI@qjj6Y%i zfImRK@Iez{5>1SL854h#+Z*@No=7ScoEy zTe7?-%c6y)7z`}fxGm53Z7kdPz{VZftyox%(Q8eXyAr-G=tEgHWV>nMo`Tt|d$r|V zg~ZBz_iHy-b}M_i%|@+M*()g6a=PXocnVR0iwAD0%%HharPP>Ln4P>F^)!~LZ3X>S zb(eYjR!S9bt$DEH)$X}FWm*y|)uLP8c55Zsheo}zU#csNtrV*Vxkk+^m#eu0CMef) zTO=l28`Xff!qDW@Wfm-9&ufUYl-m>Hpg1Soh4n@2ZO7p*B?|qX&?ig~?#=}AzG}K< z@;w)QcjvxWY!s$GRZ!LQiibxEMzyi;)tFxDy&{?mTgSJyw(-_saC>k2I5e~zLPC9Q zkI)j|Y`DcQSKUKjU=E8v4tCM4EDCq(x$oBZgC1#QX07Ngm87{*X~2w(nu8>^91LT`!Kf@_7*QC#IE4$%Qh8StvA#={ zc2oJ3gKd1oMANAX2a^ULdor1VBdPBlq%ff{(tT7Myp6Pj7ct>rO3+J!uE=s7vkLuf z20>R8SU)>%x`&5eh26+@8;MH;7ZNXEf^Xaq-(n3Bsg@`r1^Z9d%x4c2#dwD6v)q+= zuJbvReh8J$oFI~(K7p3bo8uJ1JIp^XEJfuWP@-_~aqXgmnr#{R<*|B%%S<1jhob3+~}^3g;)rMIg*f zKgXcY#0m0+Oq8e|-j(B1?lL6*#bB!=*k}c_QC)(yi@|o+U^ci*uzoQ(+BNuPyb=cI zS)|Bk`i*I~BPiPNqXU7>mi%TYzrw5C^Jq_-N17+HO?J=IF&_WVM_Mm=IR9KZbm}^* zin6W;ne>k^^yAE*i2ndXJI?%p`08}}6uthIpl@xOOJ2|Zg`TAT2m?oOvPsTD|Cz@? z-k{4s-b@YB&R9Jq#u)z)-h9oyq^U`Tk<|Y z2GcBK7~dkxiI4DQE@6f?jpY@QBhqmjOL&dQz$$Lybt02*+61l=S*THjH;8Qh)`IyQ z%l-$w7T$b}5eske-&T(?7QkpHWNLm-0u?dKr%Z<-@(KISH==Vm&W4(<;rjS4w8C!VoMu>qeR~DkJte}$W9vm z(Rg=J=YtDFQ8jEJj{@l!SjQYu1Toyf4N}$k!MuujBAx3f-XSu4*}j4Kga)0mDMhKE k)Dyb5_YpA+!#Hy|^U=?nLN~L+t?hZyN@vo%>1+M&e+t2YT>t<8 literal 0 HcmV?d00001 diff --git a/trello/out/production/trello/com/trello/services/ApplicationService.class b/trello/out/production/trello/com/trello/services/ApplicationService.class new file mode 100644 index 0000000000000000000000000000000000000000..3ad17cb7cde9e0c11c7d01fcfed3e00fa7097ec3 GIT binary patch literal 9136 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 3) { + switch (commands[1].toUpperCase()) { + case Constants.BOARD: + applicationService.showBoard(commands[2]); + break; + case Constants.LIST: + applicationService.showList(commands[2]); + break; + case Constants.CARD: + applicationService.showCard(commands[2]); + break; + default: + System.out.println("Invalid Input"); + break; + } + } + break; + case Constants.BOARD: + if (inputLength >= 3) { + if (commands[1].equalsIgnoreCase(Constants.CREATE)) { + applicationService.createBoard(commands[2]); + } else if (commands[1].equalsIgnoreCase(Constants.DELETE)) { + applicationService.deleteBoard(commands[2]); + } else if (commands[2].equalsIgnoreCase(Constants.NAME)) { + applicationService.setBoardName(commands[1], commands[3]); + } else if (commands[2].equalsIgnoreCase(Constants.PRIVACY)) { + applicationService.changeBoardPrivacy(commands[1], commands[3]); + } else if (commands[2].equalsIgnoreCase(Constants.ADD_MEMBER)) { + applicationService.addMemberToBard(commands[1], commands[3]); + } else if (commands[2].equalsIgnoreCase(Constants.REMOVE_MEMBER)) { + applicationService.removeUserFromBoard(commands[1], commands[3]); + } + } else { + System.out.println("Invalid Input"); + } + break; + case Constants.LIST: + if (inputLength > 1) { + StringBuilder stringBuilder = new StringBuilder(); + for (int index = 3; index < inputLength; index++) { + stringBuilder.append(commands[index]); + if (index < inputLength - 1) { + stringBuilder.append(' '); + } + } + if (commands[1].equalsIgnoreCase(Constants.CREATE)) { + applicationService.createList(commands[2], new String(stringBuilder)); + } else if (commands[1].equalsIgnoreCase(Constants.DELETE)) { + applicationService.deleteList(commands[2]); + } else if (commands[2].equalsIgnoreCase(Constants.NAME)) { + applicationService.setListName(commands[1], new String(stringBuilder)); + } + } else { + System.out.println("Invalid input"); + } + break; + case Constants.CARD: + if (inputLength > 1) { + StringBuilder stringBuilder = new StringBuilder(); + for (int index = 3; index < inputLength; index++) { + stringBuilder.append(commands[index]); + if (index < inputLength - 1) { + stringBuilder.append(' '); + } + } + if (commands[1].equalsIgnoreCase(Constants.CREATE)) { + applicationService.createCard(commands[2], new String(stringBuilder)); + } else if (commands[1].equalsIgnoreCase(Constants.DELETE)) { + applicationService.deleteCard(commands[2]); + } else if (commands[2].equalsIgnoreCase(Constants.NAME)) { + applicationService.setCardName(commands[1], new String(stringBuilder)); + } else if (commands[2].equalsIgnoreCase(Constants.DESCRIPTION)) { + applicationService.setCardDescription(commands[1], new String(stringBuilder)); + } else if (commands[2].equalsIgnoreCase(Constants.ASSIGN)) { + applicationService.assignCardToMember(commands[1], commands[3]); + } else if (commands[2].equalsIgnoreCase(Constants.UN_ASSIGN)) { + applicationService.unAssignCardToMember(commands[1]); + } else if (commands[2].equalsIgnoreCase(Constants.MOVE)) { + applicationService.moveCardToDifferentList(commands[1], commands[3]); + } + } + break; + case Constants.USER: + if (commands[1].equalsIgnoreCase(Constants.CREATE)) { + applicationService.createUser(commands[2], commands[3], commands[4]); + } else if (commands[1].equalsIgnoreCase(Constants.DELETE)) { + applicationService.deleteUser(commands[2]); + } + break; + } + } + + input.close(); + } +} diff --git a/trello/src/com/trello/constants/Constants.java b/trello/src/com/trello/constants/Constants.java new file mode 100644 index 0000000..d6a0e4c --- /dev/null +++ b/trello/src/com/trello/constants/Constants.java @@ -0,0 +1,21 @@ +package com.trello.constants; + +public class Constants { + public static final String CREATE = "CREATE"; + public static final String DELETE = "DELETE"; + public static final String SHOW = "SHOW"; + public static final String BOARD = "BOARD"; + public static final String LIST = "LIST"; + public static final String CARD = "CARD"; + public static final String MOVE = "MOVE"; + public static final String PRIVATE = "PRIVATE"; + public static final String PUBLIC = "PUBLIC"; + public static final String NAME = "NAME"; + public static final String PRIVACY = "PRIVACY"; + public static final String ADD_MEMBER = "ADD_MEMBER"; + public static final String DESCRIPTION = "DESCRIPTION"; + public static final String ASSIGN = "ASSIGN"; + public static final String UN_ASSIGN = "UN_ASSIGN"; + public static final String USER = "USER"; + public static final String REMOVE_MEMBER = "REMOVE_MEMBER"; +} diff --git a/trello/src/com/trello/enums/Access.java b/trello/src/com/trello/enums/Access.java new file mode 100644 index 0000000..704b607 --- /dev/null +++ b/trello/src/com/trello/enums/Access.java @@ -0,0 +1,6 @@ +package com.trello.enums; + +public enum Access { + PRIVATE, + PUBLIC +} diff --git a/trello/src/com/trello/models/Application.java b/trello/src/com/trello/models/Application.java new file mode 100644 index 0000000..59a89c9 --- /dev/null +++ b/trello/src/com/trello/models/Application.java @@ -0,0 +1,20 @@ +package com.trello.models; + +import lombok.Data; + +import java.util.HashMap; +import java.util.Map; + +public @Data class Application { + private Map boards; + private Map users; + private Map lists; + private Map cards; + + public Application() { + this.boards = new HashMap<>(); + this.users = new HashMap<>(); + this.lists = new HashMap<>(); + this.cards = new HashMap<>(); + } +} diff --git a/trello/src/com/trello/models/Board.java b/trello/src/com/trello/models/Board.java new file mode 100644 index 0000000..ac98b4f --- /dev/null +++ b/trello/src/com/trello/models/Board.java @@ -0,0 +1,60 @@ +package com.trello.models; + +import com.trello.enums.Access; +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + +public @Data +class Board { + private String boardId; + private String boardName; + private Access privacy; + private List users; + private List boardLists; + + public Board(String boardName) { + this.boardId = UUID.randomUUID().toString(); + this.boardName = boardName; + this.privacy = Access.PUBLIC; + this.users = new ArrayList<>(); + this.boardLists = new ArrayList<>(); + } + + public void removeList(BoardList boardList) { + this.boardLists.remove(boardList); + } + + public void addList(BoardList boardList) { + this.boardLists.add(boardList); + } + + @Override + public String toString() { + StringBuilder displayString = new StringBuilder("{ id : " + boardId + ", name : " + boardName + ", privacy : " + privacy); + if (boardLists.size() > 0) { + displayString.append(", lists: ["); + for (int index = 0; index < boardLists.size(); index++) { + displayString.append(boardLists.get(index)); + if (index < boardLists.size() - 1) { + displayString.append(", "); + } + } + displayString.append("]"); + } + if (users.size() > 0) { + displayString.append(", members : ["); + for (int index = 0; index < users.size(); index++) { + displayString.append(users.get(index)); + if (index < users.size() - 1) { + displayString.append(", "); + } + } + displayString.append("]"); + } + displayString.append(" }"); + return new String(displayString); + } +} diff --git a/trello/src/com/trello/models/BoardList.java b/trello/src/com/trello/models/BoardList.java new file mode 100644 index 0000000..9d759ff --- /dev/null +++ b/trello/src/com/trello/models/BoardList.java @@ -0,0 +1,45 @@ +package com.trello.models; + +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + +public @Data class BoardList { + private String boardListId; + private String boardListName; + private List cards; + private Board board; + + public BoardList(String boardListName, Board board) { + this.boardListId = UUID.randomUUID().toString(); + this.boardListName = boardListName; + this.cards = new ArrayList<>(); + this.board = board; + } + + public void removeCard(Card card) { + this.cards.remove(card); + } + public void addCard(Card card) { + this.cards.add(card); + } + + @Override + public String toString() { + StringBuilder displayString = new StringBuilder("{ id : " + boardListId + ", name : " + boardListName); + if (cards.size() > 0) { + displayString.append(", cards : ["); + for (int index = 0; index < cards.size(); index++) { + displayString.append(cards.get(index)); + if (index < cards.size() - 1) { + displayString.append(", "); + } + } + displayString.append("]"); + } + displayString.append(" }"); + return new String(displayString); + } +} diff --git a/trello/src/com/trello/models/Card.java b/trello/src/com/trello/models/Card.java new file mode 100644 index 0000000..80b91bd --- /dev/null +++ b/trello/src/com/trello/models/Card.java @@ -0,0 +1,32 @@ +package com.trello.models; + +import lombok.Data; + +import java.util.UUID; + +public @Data class Card { + private String cardId; + private String cardName; + private String cardDescription; + private User assignee; + private BoardList boardList; + + public Card(String cardName, BoardList boardList) { + this.cardId = UUID.randomUUID().toString(); + this.cardName = cardName; + this.boardList = boardList; + } + + @Override + public String toString() { + StringBuilder displayString = new StringBuilder("{ id : " + cardId + ", name : " + cardName); + if (cardDescription != null && cardDescription.length() > 0) { + displayString.append(", description : ").append(cardDescription); + } + if (assignee != null) { + displayString.append(", assignTo : ").append(assignee.getUserEmail()); + } + displayString.append(" }"); + return new String(displayString); + } +} diff --git a/trello/src/com/trello/models/User.java b/trello/src/com/trello/models/User.java new file mode 100644 index 0000000..897e7f2 --- /dev/null +++ b/trello/src/com/trello/models/User.java @@ -0,0 +1,21 @@ +package com.trello.models; + +import lombok.Data; + +public @Data +class User { + private String userId; + private String userName; + private String userEmail; + + public User(String userId, String userName, String userEmail) { + this.userId = userId; + this.userName = userName; + this.userEmail = userEmail; + } + + @Override + public String toString() { + return "{ id : " + userId + ", name : " + userName + ", email: " + userEmail + " }"; + } +} diff --git a/trello/src/com/trello/services/ApplicationService.java b/trello/src/com/trello/services/ApplicationService.java new file mode 100644 index 0000000..b44c012 --- /dev/null +++ b/trello/src/com/trello/services/ApplicationService.java @@ -0,0 +1,245 @@ +package com.trello.services; + +import com.trello.constants.Constants; +import com.trello.enums.Access; +import com.trello.models.*; + +import java.util.Map; + +public class ApplicationService { + private final Application application; + + public ApplicationService() { + this.application = new Application(); + } + + public void createBoard(String boardName) { + Board board = new Board(boardName); + application.getBoards().put(board.getBoardId(), board); + System.out.println("Created board: " + board.getBoardId()); + } + + public void deleteBoard(String boardId) { + if (!application.getBoards().containsKey(boardId)) { + System.out.println("The Board which you are trying to delete doesn't exit"); + return; + } + Board boardToDelete = application.getBoards().get(boardId); + for (int index = 0; index < boardToDelete.getBoardLists().size(); index++) { + deleteList(boardToDelete.getBoardLists().get(index).getBoardListId()); + } + application.getBoards().remove(boardId); + } + + public void setBoardName(String boardId, String boardName) { + if (!application.getBoards().containsKey(boardId)) { + System.out.println("The Board which you are trying to rename doesn't exit"); + return; + } + application.getBoards().get(boardId).setBoardName(boardName); + } + + public void changeBoardPrivacy(String boardId, String privacy) { + if (!application.getBoards().containsKey(boardId)) { + System.out.println("The Board which you are trying to edit doesn't exit"); + return; + } + if (privacy.equalsIgnoreCase(Constants.PRIVATE)) { + application.getBoards().get(boardId).setPrivacy(Access.PRIVATE); + } else if (privacy.equalsIgnoreCase(Constants.PUBLIC)) { + application.getBoards().get(boardId).setPrivacy(Access.PUBLIC); + } + } + + public void addMemberToBard(String boardId, String email) { + if (!application.getBoards().containsKey(boardId)) { + System.out.println("The Board which you are trying to edit doesn't exit"); + return; + } + if (!application.getUsers().containsKey(email)) { + System.out.println("The User which you are trying to add doesn't exit"); + return; + } + User user = application.getUsers().get(email); + application.getBoards().get(boardId).getUsers().add(user); + } + + public void removeUserFromBoard(String boardId, String email) { + if (!application.getBoards().containsKey(boardId)) { + System.out.println("The Board which you are trying to edit doesn't exit"); + return; + } + if (!application.getUsers().containsKey(email)) { + System.out.println("The User which you are trying to add doesn't exit"); + return; + } + User user = application.getUsers().get(email); + application.getBoards().get(boardId).getUsers().remove(user); + } + + public void showBoard(String boardId) { + if (!application.getBoards().containsKey(boardId)) { + System.out.println("The Board which you are trying to print doesn't exit"); + return; + } + System.out.println(application.getBoards().get(boardId)); + } + + public void createList(String boardId, String name) { + if (!application.getBoards().containsKey(boardId)) { + System.out.println("The Board where you are trying to add list doesn't exit"); + return; + } + BoardList newList = new BoardList(name, application.getBoards().get(boardId)); + + application.getBoards().get(boardId).addList(newList); + application.getLists().put(newList.getBoardListId(), newList); + System.out.println("Created List: " + newList.getBoardListId()); + } + + public void deleteList(String boardListId) { + if (!application.getLists().containsKey(boardListId)) { + System.out.println("The List you are trying to delete doesn't exits"); + return; + } + BoardList listToDelete = application.getLists().get(boardListId); + while (listToDelete.getCards() != null && listToDelete.getCards().size() > 0) { + deleteCard(listToDelete.getCards().get(0).getCardId()); + } + application.getBoards().get(listToDelete.getBoard().getBoardId()).removeList(listToDelete); + application.getLists().remove(boardListId); + } + + public void setListName(String boardListId, String listName) { + if (!application.getLists().containsKey(boardListId)) { + System.out.println("The List you are trying to edit doesn't exits"); + return; + } + + application.getLists().get(boardListId).setBoardListName(listName); + } + + public void showList(String boardListId) { + if (!application.getLists().containsKey(boardListId)) { + System.out.println("The List you are trying to print doesn't exits"); + return; + } + System.out.println(application.getLists().get(boardListId)); + } + + public void createCard(String boardListId, String cardName) { + if (!application.getLists().containsKey(boardListId)) { + System.out.println("The List you are trying to add card doesn't exits"); + return; + } + + Card newCard = new Card(cardName, application.getLists().get(boardListId)); + application.getLists().get(boardListId).addCard(newCard); + application.getCards().put(newCard.getCardId(), newCard); + System.out.println("Created Card: + " + newCard.getCardId()); + } + + public void deleteCard(String cardId) { + if (!application.getCards().containsKey(cardId)) { + System.out.println("The Card you are trying to delete doesn't exist"); + return; + } + Card cardToDelete = application.getCards().get(cardId); + application.getLists().get(cardToDelete.getBoardList().getBoardListId()).removeCard(cardToDelete); + application.getCards().remove(cardId); + + } + + public void assignCardToMember(String cardId, String email) { + if (!application.getCards().containsKey(cardId)) { + System.out.println("The card which you are trying ot assign doesn't exist"); + return; + } + if (!application.getUsers().containsKey(email)) { + System.out.println("The user is not exist"); + return; + } + application.getCards().get(cardId).setAssignee(application.getUsers().get(email)); + } + + public void unAssignCardToMember(String cardId) { + if (!application.getCards().containsKey(cardId)) { + System.out.println("The card which you are trying ot unAssign doesn't exist"); + return; + } + application.getCards().get(cardId).setAssignee(null); + } + + public void setCardName(String cardId, String cardName) { + if (!application.getCards().containsKey(cardId)) { + System.out.println("The card which you are trying to edit doesn't exist"); + return; + } + application.getCards().get(cardId).setCardName(cardName); + } + + public void setCardDescription(String cardId, String cardDescription) { + if (!application.getCards().containsKey(cardId)) { + System.out.println("The card which you are trying to edit doesn't exist"); + return; + } + application.getCards().get(cardId).setCardDescription(cardDescription); + } + + public void moveCardToDifferentList(String cardId, String boardListId) { + if (!application.getCards().containsKey(cardId)) { + System.out.println("The card which you are trying to edit doesn't exist"); + return; + } + if (!application.getLists().containsKey(boardListId)) { + System.out.println("The board which you are trying to edit doesn't exist"); + return; + } + Card card = application.getCards().get(cardId); + BoardList parentList = card.getBoardList(); + if (parentList.getBoard().equals(application.getLists().get(boardListId).getBoard())) { + parentList.getCards().remove(card); + application.getLists().get(boardListId).addCard(card); + card.setBoardList(application.getLists().get(boardListId)); + } else { + System.out.println("The List Id which you provided is not the same board"); + } + + } + + public void showCard(String cardId) { + if (!application.getCards().containsKey(cardId)) { + System.out.println("The card which you are trying to print doesn't exist"); + return; + } + System.out.println(application.getCards().get(cardId)); + } + + public void showAll() { + if (application.getBoards().isEmpty()) { + System.out.println("No Board"); + return; + } + StringBuilder displayString = new StringBuilder("[ "); + for (Map.Entry board : application.getBoards().entrySet()) { + displayString.append(board.getValue()); + displayString.append(", "); + } + displayString.deleteCharAt(displayString.length()-2); + displayString.append("]"); + System.out.println(new String(displayString)); + } + + public void createUser(String userId, String name, String email) { + User user = new User(userId, name, email); + application.getUsers().put(email, user); + System.out.println("Created User: " + user.getUserId()); + } + public void deleteUser(String email) { + if (!application.getUsers().containsKey(email)) { + System.out.println("The User you trying to delete doesn't exist"); + return; + } + application.getUsers().remove(email); + } +} diff --git a/trello/trello.iml b/trello/trello.iml new file mode 100644 index 0000000..6b762ae --- /dev/null +++ b/trello/trello.iml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file From f92defc2e82a1b209377279b2ec414044925c2a2 Mon Sep 17 00:00:00 2001 From: khagapati-bagh Date: Sun, 28 Nov 2021 18:11:49 +0530 Subject: [PATCH 3/7] Added cab booking machine codig LLD in java --- cab-booking/.idea/.gitignore | 3 + cab-booking/.idea/compiler.xml | 8 ++ cab-booking/.idea/description.html | 1 + cab-booking/.idea/encodings.xml | 6 + cab-booking/.idea/misc.xml | 12 ++ cab-booking/.idea/modules.xml | 8 ++ cab-booking/.idea/project-template.xml | 3 + cab-booking/.idea/uiDesigner.xml | 124 ++++++++++++++++++ cab-booking/.idea/vcs.xml | 6 + cab-booking/cab-booking.iml | 12 ++ .../production/cab-booking/com/cab/Main.class | Bin 0 -> 2506 bytes .../com/cab/constants/Constants.class | Bin 0 -> 374 bytes .../cab-booking/com/cab/enums/CabType.class | Bin 0 -> 995 bytes .../com/cab/models/Application.class | Bin 0 -> 2991 bytes .../cab-booking/com/cab/models/Driver.class | Bin 0 -> 381 bytes .../cab-booking/com/cab/models/Location.class | Bin 0 -> 1564 bytes .../cab-booking/com/cab/models/Rating.class | Bin 0 -> 1740 bytes .../cab-booking/com/cab/models/User.class | Bin 0 -> 5346 bytes .../com/cab/services/ApplicationService.class | Bin 0 -> 4805 bytes cab-booking/src/com/cab/Main.java | 53 ++++++++ .../src/com/cab/constants/Constants.java | 6 + cab-booking/src/com/cab/enums/CabType.java | 7 + .../src/com/cab/models/Application.java | 18 +++ cab-booking/src/com/cab/models/Driver.java | 13 ++ cab-booking/src/com/cab/models/Location.java | 19 +++ cab-booking/src/com/cab/models/Rating.java | 13 ++ cab-booking/src/com/cab/models/User.java | 50 +++++++ .../com/cab/services/ApplicationService.java | 84 ++++++++++++ cab-booking/test/com/cab/testCase1.txt | 18 +++ 29 files changed, 464 insertions(+) create mode 100644 cab-booking/.idea/.gitignore create mode 100644 cab-booking/.idea/compiler.xml create mode 100644 cab-booking/.idea/description.html create mode 100644 cab-booking/.idea/encodings.xml create mode 100644 cab-booking/.idea/misc.xml create mode 100644 cab-booking/.idea/modules.xml create mode 100644 cab-booking/.idea/project-template.xml create mode 100644 cab-booking/.idea/uiDesigner.xml create mode 100644 cab-booking/.idea/vcs.xml create mode 100644 cab-booking/cab-booking.iml create mode 100644 cab-booking/out/production/cab-booking/com/cab/Main.class create mode 100644 cab-booking/out/production/cab-booking/com/cab/constants/Constants.class create mode 100644 cab-booking/out/production/cab-booking/com/cab/enums/CabType.class create mode 100644 cab-booking/out/production/cab-booking/com/cab/models/Application.class create mode 100644 cab-booking/out/production/cab-booking/com/cab/models/Driver.class create mode 100644 cab-booking/out/production/cab-booking/com/cab/models/Location.class create mode 100644 cab-booking/out/production/cab-booking/com/cab/models/Rating.class create mode 100644 cab-booking/out/production/cab-booking/com/cab/models/User.class create mode 100644 cab-booking/out/production/cab-booking/com/cab/services/ApplicationService.class create mode 100644 cab-booking/src/com/cab/Main.java create mode 100644 cab-booking/src/com/cab/constants/Constants.java create mode 100644 cab-booking/src/com/cab/enums/CabType.java create mode 100644 cab-booking/src/com/cab/models/Application.java create mode 100644 cab-booking/src/com/cab/models/Driver.java create mode 100644 cab-booking/src/com/cab/models/Location.java create mode 100644 cab-booking/src/com/cab/models/Rating.java create mode 100644 cab-booking/src/com/cab/models/User.java create mode 100644 cab-booking/src/com/cab/services/ApplicationService.java create mode 100644 cab-booking/test/com/cab/testCase1.txt diff --git a/cab-booking/.idea/.gitignore b/cab-booking/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/cab-booking/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/cab-booking/.idea/compiler.xml b/cab-booking/.idea/compiler.xml new file mode 100644 index 0000000..a1757ae --- /dev/null +++ b/cab-booking/.idea/compiler.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/cab-booking/.idea/description.html b/cab-booking/.idea/description.html new file mode 100644 index 0000000..db5f129 --- /dev/null +++ b/cab-booking/.idea/description.html @@ -0,0 +1 @@ +Simple Java application that includes a class with main() method \ No newline at end of file diff --git a/cab-booking/.idea/encodings.xml b/cab-booking/.idea/encodings.xml new file mode 100644 index 0000000..97626ba --- /dev/null +++ b/cab-booking/.idea/encodings.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/cab-booking/.idea/misc.xml b/cab-booking/.idea/misc.xml new file mode 100644 index 0000000..2fc6c34 --- /dev/null +++ b/cab-booking/.idea/misc.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/cab-booking/.idea/modules.xml b/cab-booking/.idea/modules.xml new file mode 100644 index 0000000..c4badca --- /dev/null +++ b/cab-booking/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/cab-booking/.idea/project-template.xml b/cab-booking/.idea/project-template.xml new file mode 100644 index 0000000..1f08b88 --- /dev/null +++ b/cab-booking/.idea/project-template.xml @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/cab-booking/.idea/uiDesigner.xml b/cab-booking/.idea/uiDesigner.xml new file mode 100644 index 0000000..e96534f --- /dev/null +++ b/cab-booking/.idea/uiDesigner.xml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/cab-booking/.idea/vcs.xml b/cab-booking/.idea/vcs.xml new file mode 100644 index 0000000..6c0b863 --- /dev/null +++ b/cab-booking/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/cab-booking/cab-booking.iml b/cab-booking/cab-booking.iml new file mode 100644 index 0000000..6b762ae --- /dev/null +++ b/cab-booking/cab-booking.iml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/cab-booking/out/production/cab-booking/com/cab/Main.class b/cab-booking/out/production/cab-booking/com/cab/Main.class new file mode 100644 index 0000000000000000000000000000000000000000..5017b92ebd0251412970f4f520293bb88104553b GIT binary patch literal 2506 zcmbtWOLG)e6#jZLGd-C!uY`n5AlQUgLJ|f7q9(jz9xyt2U@#Ey)tTvpPI|hB?w$~Q zp@?F+WknSW%d#pvtF)+z8jFQ1%W~nGg$t_WH&_&c-|e2sgG4umO5c0WJ?A^${qDJk z{QBg_djJmO^EgzTl5skYkQh@kUWp@uSK|mHU5Nn<#xNAeFwO|eYvMB!$635CV>E_y zVtPJ?F)?0<<09S=KySwIRt#^)@Qw^Ej(VJmVO(rvs*r^q!-QB&%D5!MkPtm;ScZ38 zLPc}SsDyBjoz*35NE?Y6X6r?eR@X=>JFa>R2CYqHDFViI0puG*ClBUVncvc#=fBV2++)>4X& z1y^^59esiXET8JoM6YAa=#GSV)}N#e*ORa@NK^0(Gbt=2xFJ(;Jv*m6y}G9vCUXT` zCT5eq+puOh;vAYYDfYB{-ZV0rXV}(=?#vh&lHa{}XwncSH`%?)jTjNb$`{C@W*Li- zjAmK7$WXUZ)~orlv}cyN3(`mZ^>TiJWrenjlyba9(@hF+LAvWW|4BIUKQSb%8}YQv z^njN43xK8TSM8LHX=>g#o6++koh!rSdc-a`8NJ^SFfJx$eYhu3DRy_%<~tSL3v>6$#xq?$Y$Kht`rnmyQdu-dBhrr-uXm9Qo7 z&TFo#Ta%P68@vbwpW!COE+1FiAD@z+(SOcE<5PM@ysjlv@WS~Vmv{w~8hu0Q$_8z( z-!53$#d48Q+Z)LG z5*<38cX*go(7N`l5g3TFydP2O3N4#`hF4G~T`d%#dQ$fmi@03FyGz(h-Pvcf0=Q+A z5Bxd)XDNO{khp5%cPCd#juOYnzIjOB`rEtsjrzv**v+{TIA9OG?K7>vLG literal 0 HcmV?d00001 diff --git a/cab-booking/out/production/cab-booking/com/cab/constants/Constants.class b/cab-booking/out/production/cab-booking/com/cab/constants/Constants.class new file mode 100644 index 0000000000000000000000000000000000000000..43dfdbd635057ad32581a4f986f0cbd171697c42 GIT binary patch literal 374 zcmaJ+yH3ME5S&fy*f>wjLqdpx4k);W4nz|L3CV&YkwtqxPT?ZwEZJxNiwcQ?58$H^ zYb!h|n$gbe-OSF%=i57g3+zYeVkf|EfIWgYd$?T?;$$VCrO2gSin%L|U0xD~)52Cx zT9?Ya)*(Cs%|e8P-j%V&T@$(|rzx9Ei$_fuC&uc#dY$QVA+wy7I4P9OQ(2mZZ$!^M znTl|fsA4UY%!Jy+RN_0Z;`C@<)TPolrZF1*Y|fiQ2Z+!o9RA}#nEY0{&sJJF9HYbC z!FT`MvyU+*%m~|z9mHRh C8BI3; literal 0 HcmV?d00001 diff --git a/cab-booking/out/production/cab-booking/com/cab/enums/CabType.class b/cab-booking/out/production/cab-booking/com/cab/enums/CabType.class new file mode 100644 index 0000000000000000000000000000000000000000..10cc0bde0b58329fb495d1abacf86b6d9d44cdef GIT binary patch literal 995 zcmZ`%+iuf95Iq|^w&OaNnzWEmZl%y%N=+aCc@=3D1sw?#`LU%TsZ(%^ zBc5nj=5||y$*ra0DMM_()~fHntkvHz+-$mozU4Yy%L^y{kyUrPtxq4l3PaRxys8~A zNcK^iLEUKAnnw+r;nv%QDawfxOuP|8HkV(FlIw$a9z(L}hu*=Y-}QzqryJ0XD$)<% zGZb^pW9P)N0w?TQ_IT)ry-I#zTeCTEouKUueO_l)Ob(qs)inPv#Gq9D&>!zGtX|XS zb)MwP;}1URh}nKGbjFh*Rg!W%pjF*qmYkm}-Js!B7ZBW`Ve0l^GIYH?pX)ScL*C{Z z4cy=lm^M(tGlrFGpTj@~&kfwgJp)Ok3@r1*M2aDCIVeto-pvgLA$3XT<_R8lk3Dxx zOkT`Ot_RL&RGHK9Z`N0ty+- zPr<$-at`S;d9+1zDk3HkK7;HGUq(dS>ZV-yhUhtDj*ncy-=-Vm0);i)5pfy~p?Jp< zB>DlhP+U8M@*?#mfKy literal 0 HcmV?d00001 diff --git a/cab-booking/out/production/cab-booking/com/cab/models/Application.class b/cab-booking/out/production/cab-booking/com/cab/models/Application.class new file mode 100644 index 0000000000000000000000000000000000000000..7e05e3de74b2eafda35be72dc03fad7debec5c72 GIT binary patch literal 2991 zcmbVM>vB_76#jN{Zb?tli?k3Z3R-KMv_!EgCT#^u5wtCr0tzB>njYJOX;PCDl!xF2 zd;t5WKX69EjLtav2WNaH5x;%*Npc#)40V$1tlM6fZ>_ce`sbJ50L;Kk;vlY=xSB)^ zR}x5IRUX$&Tu;JKk{c#IOH%l`JZ{Phw?zau6OqhqG zc9+)fxh20ic}qZ4<){RU5x59d0(#ZobZY`>IWl9>H3}3_i5-}%x0WEK4BEU>(~BDJ zP~G8IeW&yd7c!VpZhWw~R>`R>%G?F4O{c!8#+);Mk*Qt2dU1J?xsx_(ZoN_V32`(d zYpfmJ8f!NPQRwzu8Ny1;aFNWxby-2EQ&)n(rrs>m?y z0icNEe6|nr@sIPxCtx5NiQ@n<~&~~cb7K>|HrdWAhN$AcJm41 zkD+x)ouomj`54wuf$ukXjzH&`f`&Bu`8kXMyoo`KQEDrXZ!)$OFOhZBJlOkb6;#Q&Jg zJDVd^5|ntP4lB4lqAbEXWR0plZ_`=GmScoekhKhc-bo?>tZ_H;&T!fsil3OY?v1tX(N8{;X4c96>G86#qpE|@e*7p#ma zjjYhf%vdcWZMSDjZmUGwEqRDj_>g4`<9os}&O*lEp-5Sr<5t2fDGeXvJmyI0-1XC# zCuN|_{rQNLi5gpYnv{hzjG2RNT7M&L;_Newm{{P~63=i*k%=ft*L<54igX}?dC?_& zGW+OaM4QoC4DJwfme+)Q$&?#$g7*yGzCKW#)#d`oM+b_V1l$_P?ZBLFqW`XxrwW=> zWVBFY$u=lex}XOtb|AQ9W%NKb+8fk)6)*%fj;jRh0@KlP85c>#ki@6>gsI9MIZ0ZA zI?qRIiIg6|_8pAp6ljD^2toxRp3}U;$E08wddr|?qwN)iW=6!UW7#dGG1KJxt+2x# zrYhg2nee$A8faorLfFL6&?|~gN&0}I(~=%0-NZ=u1EM;n)_f*}M&MG=*USF`rEF4{ literal 0 HcmV?d00001 diff --git a/cab-booking/out/production/cab-booking/com/cab/models/Driver.class b/cab-booking/out/production/cab-booking/com/cab/models/Driver.class new file mode 100644 index 0000000000000000000000000000000000000000..8e13db2804f7b33c953326381a09d745bd320abf GIT binary patch literal 381 zcmZWlxlY4C6r4521}9tzM@`2eu}!+5G(l7rO+xy$S%pRR8m;X}d=?cF1s}jiA;vaH z9L>Hrvv1}d?;o#k07lr4u!g-5gAhZ3FjdL?=}`+D#c7dCLaA+?mvY*Dj0J*AV@)*? zI5>$P)Jn-r*`=IS&e-MnbRpnRi#s~(#K!8II#0Blt0W^ch>KKZ3*}6MzevBjH|5WM zIn`Myubf$F$9}$5c`N?cOdy&SwM+H2Y3zHQ`pQPE=#9ClSieInLl3)}SINr*h`egaBy BR4V`g literal 0 HcmV?d00001 diff --git a/cab-booking/out/production/cab-booking/com/cab/models/Location.class b/cab-booking/out/production/cab-booking/com/cab/models/Location.class new file mode 100644 index 0000000000000000000000000000000000000000..e853082d89a2c626576b6f851aead7d12bd3056b GIT binary patch literal 1564 zcmaJ=+fEZv6kVsC>69`+t$+%sC|;%osdvSK*I+^dYQPZj$)QZ>Xlb#X8vO?Uz!%?q z;z1LIL=&U0ev>h-J!e`PsHW*T`&{CDZA!0TS{B&@>11{W)w>fxT@=o?&dGvU2#xMiXaIP=flS8l%SR@UUD%?}(+ULCLEr^ehE#@x_9>8M35D3dy2dnH5}yCAVJED$PfWa|^R9S@Y_Ra=^2o zx)jv>%DO_olWnV^cPS^eRBhCX-hE#@>1pbm6gD>cF<|2WGByq(qj2aSuGq+8%*F_g z+Bk-zytpey7rNW<%WEQ~yIH|`J!9iG?#OVL&P|NInV}U~8|N^oklsbmPEnM*x#?Bb z6wbB#7zx?0EhCI!D;44e>F~<0#)G(r2&MD9}3~(IeYL@4Ub6;);Di{BP zm<;hxVZtGf83IX?fo^ocMlX7Bm^-#k!x0Q|C6L1rmxp^$4etNEaY(}ihcW+YuG ziIQi{$YRtPT=O4}_{Z6p@z6YzPk$nMQ2Z_5)|<+iqJ$6kT(CZgx%+*CZ*ShK63im$>E zZgnf}wK}^sp7p|*XNuR{rBw~@RsP|R4-PWPI zjj(+;?6t&BHto3C>MNXEZFKjljc~iVNAGsOx*5g>+a)$v3f^uMuj?Eq3&qpe<^tV_ zlqwXNs@H$+Ff}4qNmXtb54)gqccX6yVVn6J^Z0W6LDYzA#jhzr_qasKk%H5Wn^8|8 zEqpE;Ei-yAG0tqoVdI;%a9Tt-S8;9V2~yorkeE?_pm+hV?l zi!8>;7Pv8JwRePFU~me;uO8qIRw?4#Y>%pIbBziW1AK^Ch3sJzqmr%*Rd>Vv{iw5} zP#IO0Q3@&O#AdSt7C$7fSLDw*4RXS(9A{|V<9UknMCl1ssr(pLDgPL$ zpR~hk9CHjLPB!008e4YdCtX6xF}q~ zTc_fjKc>&i*^6#)8!bu&Je}la?R~o|6CKv7;f8Wa) z4R4*6w`f=X#Mq4e2hKi1P?@oZ@bz_DbV(f%)i9ekSTC4upokJPnL-U^R?cGIU%(vq zQuv5sSGclqm9eJbdH&xR_fQS~!L)~W`1SdRCNCx7vcOrCbA-gn!W@;>d69raSV=(1 z<4VFjWDsexVz#zq*Ynw0Q^?=1Yt~|tv!5+Lf>#+LeZQU`%~djIkOV5l%Du1Eci0Q_ zx+5pa`vc8Y7+!+)Ox_6@Dn)Wo>KSD?v@Ioh^7$rtZZc14;=-@U+hd6t(&y6Cc&kISKin7aV`1n71lo#*- literal 0 HcmV?d00001 diff --git a/cab-booking/out/production/cab-booking/com/cab/models/User.class b/cab-booking/out/production/cab-booking/com/cab/models/User.class new file mode 100644 index 0000000000000000000000000000000000000000..55138adf7f4f941296c55f6a2377aa441fbb80ea GIT binary patch literal 5346 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 A`~Uy| literal 0 HcmV?d00001 diff --git a/cab-booking/out/production/cab-booking/com/cab/services/ApplicationService.class b/cab-booking/out/production/cab-booking/com/cab/services/ApplicationService.class new file mode 100644 index 0000000000000000000000000000000000000000..22dd14586151c0ff5c95531674a7ca0776291caa GIT binary patch literal 4805 zcmb_fi+@{X8GgPt?Mc$ptxebKI+hJqdP!SWr?7M#w(GEwt}82SD^u|_IZMx$CS8)& z4MjyzK)h0Q0wUh$-GR_js&n2@@%I0yKlFLeB~8-64}SC4U%qp`+xx!H^FH7Eoxc9Y ztJeS=z(0d*E@;RGQH2WuybHM?o4hnjGPYcYkKm$)OF;zipmaVe&BvtsPyiptC;a$i z5D(*1vicDXj|LIKgVH?Y$ESnn!e=x*rs44*+Hk>-C*=8AnSWB=J}1rR#oZUA`Jx|R zk`a3PGM=i#3ce!ES2cW1JU;2iWk0?iL@S>5;~9BA>&G|zcuvDNgLod_3Sto77O&sY z@LdhxQ>Zf*7gJW;$Xl7TLg!>WvoIJp<^~rs2{V-&9NnB9R;WE>rLFv7h3f8}lM22g zT%@pl(n_0COAB*m_FiKy#gWitCT^ro8d*#F?w~I}Z{-yB6Sri^rQa3-I%(#hdig&_$rn8;eoW_HS0u!GvN zPeFH9oFM*mQbENy6knpp1#jCnuj{SZZX^=pwq0+eyFy5B5>c(=PocFygUhsIQb^9a z!PL*>jrjRv#-dALBOM=cWAj}5z350-xyAcPFztnsW`1#|yLIhP;%wQiGGE zc-Rj3?8QNQWZJN@!*+_7XoNPLuyf;Po`!O=L7~CHxM_k?@WOEyiWG$P61xg5rTVzE z=xOAhGLwh4>~=;87}Z`Z9X$6uWSW*S#~6%Z%PQ8v^GhfpauvB`r_2V@A$Q98Y`7 z=bL?DsRWM?E3=00D_C#K+y4i8a4}1$ zvGn2+4_Q}*+R|f(TbwY;+?Qe%R?tYwf{{)rG@aRkif~d2GjGe}JJSGb?M!AV8#nK= z^585AJHiQ%CK6^s!^=8WWz!n2a7me2Q4*bb#kORt zj#seG;#Yo|5On#FDAVjt}62+~G+- z>_#8e@LL_f!|y3a9e=O#DWS{5xTe?e_}79QXLm zF3?Rz%0ROdft4AY<`++%drV`2oHW^-ln%29EXtx3Kj?G@>B*S1*0O7}wZr4ru6b_U zoafh|DaE6|LWFKcDpW}ZPQ$LqJ&^oHWZmuT9)GKS{(Q#4uTUD2%L?zc&8$1c+HVyk z)8e5hkrHXq=8fExd6C313W~s&wmY3$QF(=4*ssa)QxvzD?w$le&L z?YV~DHK^VVRL!oT`epcD;9M1=Y`1X*P!Av9w)1b8J>A)ZLl|LC;V|xW?VaPg8jdye z_VstJp{BRLui3YT+H!j#XlSCf9k#s#&K}nucjLVnb$yKC2qTfPagIqW4LHg%A4gg2 zUB8UlwlUHB5`3%B`qtsE!ZX;lfxv9v8iG-uH`DH0M_n~edHr?hRk)5oWY;R{U&OZ1 z_Ej`Uywx`T4%G6!m0sJ>fp+v_C((A&^R7bd9h{v&j4^>vhZTAAP)yjd3yKN6pRrft zZri@y*QDWB+DGLbLtFVEW6zaHRt#>LZd3 zv{94op^jDTY-egaS3!(75ngY*kEHDGjj#<%!hCkZy7&(*&_|(1n6iGN9l#K7V+!`e z;M+V8M4CrIgnXFE-Ah*PadBq~$;;pbW^CLU+>84N&X1%k!Esu5m^w)tEt~^n{i(wG z(;Sl&^RWE~LmFmrKYLX;!ym6{wsQE+@F#*+n`*1IO+@YB!p>wNBxMI8sZe%sRoHYd zbEoaSGIxp&9ETs`8$S*lhw1@RRLA`*LTYHw8um{0k0&Tv_&mz+AWvg4VCF`jGzJ_|(v<1A> z?L2kmznAUYwu%&bU9CF#8?ZwhL6F&Lph^dLj6{Pm7OQCRw! zJt0Aj@i=$bb-hfJ9|Rpic4e=Pauv232(q7EH4I$^2l{;oOW$E z-_R?#Em9-x8uqVY=qe2q*P}^>bBtAa3e7xwy9j> driverList = new ArrayList<>(); + System.out.println("Enter Driver list like: d1,1,0"); + for (int i = 0; i < numberOfDriver; i++) { + String line = input.nextLine(); + driverList.add(applicationService.praseInput(line)); + } + System.out.println("Enter passenger details"); + Pair customerDetails = applicationService.praseInput(input.nextLine()); + + applicationService.getAvailableDriver(driverList, customerDetails); + } + } +} diff --git a/cab-booking/src/com/cab/constants/Constants.java b/cab-booking/src/com/cab/constants/Constants.java new file mode 100644 index 0000000..8965e13 --- /dev/null +++ b/cab-booking/src/com/cab/constants/Constants.java @@ -0,0 +1,6 @@ +package com.cab.constants; + +public class Constants { + public static final String EXIT = "EXIT"; + public static final String E = "E"; +} diff --git a/cab-booking/src/com/cab/enums/CabType.java b/cab-booking/src/com/cab/enums/CabType.java new file mode 100644 index 0000000..68d1424 --- /dev/null +++ b/cab-booking/src/com/cab/enums/CabType.java @@ -0,0 +1,7 @@ +package com.cab.enums; + +public enum CabType { + HATCHBACK, + SEDAN, + SUV +} diff --git a/cab-booking/src/com/cab/models/Application.java b/cab-booking/src/com/cab/models/Application.java new file mode 100644 index 0000000..f674fa8 --- /dev/null +++ b/cab-booking/src/com/cab/models/Application.java @@ -0,0 +1,18 @@ +package com.cab.models; + +import lombok.Data; + +import java.util.HashMap; +import java.util.Map; + +public @Data class Application { + private Map customers; + private Map drivers; + private StringBuilder history; + + public Application() { + this.customers = new HashMap<>(); + this.drivers = new HashMap<>(); + this.history = new StringBuilder(); + } +} diff --git a/cab-booking/src/com/cab/models/Driver.java b/cab-booking/src/com/cab/models/Driver.java new file mode 100644 index 0000000..720db59 --- /dev/null +++ b/cab-booking/src/com/cab/models/Driver.java @@ -0,0 +1,13 @@ +package com.cab.models; + +import com.cab.enums.CabType; +import lombok.Data; + +public class Driver extends User{ + private CabType cabType; + + public Driver(String name) { + super(name); + } + +} diff --git a/cab-booking/src/com/cab/models/Location.java b/cab-booking/src/com/cab/models/Location.java new file mode 100644 index 0000000..be43e5a --- /dev/null +++ b/cab-booking/src/com/cab/models/Location.java @@ -0,0 +1,19 @@ +package com.cab.models; + +import lombok.Data; + +public @Data +class Location { + private int x; + private int y; + + public Location() { + this.x = 0; + this.y = 0; + } + + public Location(int x, int y) { + this.x = x; + this.y = y; + } +} diff --git a/cab-booking/src/com/cab/models/Rating.java b/cab-booking/src/com/cab/models/Rating.java new file mode 100644 index 0000000..027bf95 --- /dev/null +++ b/cab-booking/src/com/cab/models/Rating.java @@ -0,0 +1,13 @@ +package com.cab.models; + +import lombok.Data; + +public @Data class Rating { + private String name; + private int rate; + + public Rating(String name, int rating) { + this.name = name; + this.rate = rating; + } +} diff --git a/cab-booking/src/com/cab/models/User.java b/cab-booking/src/com/cab/models/User.java new file mode 100644 index 0000000..1ba869c --- /dev/null +++ b/cab-booking/src/com/cab/models/User.java @@ -0,0 +1,50 @@ +package com.cab.models; + +import javafx.util.Pair; +import lombok.Data; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public @Data +class User { + private String name; + Map> rate; + List ratings; + private int totalRating; + private Location currentLocation; + + public User(String name) { + this.name = name; + this.rate = new HashMap<>(); + //this.ratings = new ArrayList<>(); + this.totalRating = 0; + this.currentLocation = new Location(); + } + + public void addRating(String name, int rating) { + Pair currentRate = new Pair<>(0, 0); + if (rate.containsKey(name)) { + currentRate = rate.get(name); + } + rate.put(name, new Pair<>(currentRate.getKey() + rating, currentRate.getValue() + 1)); + //ratings.add(new Rating(name, rating)); + totalRating += rating; + } + + public double getAverageRating() { + if (rate.size() == 0) { + return 0; + } + double rating = (double) totalRating/rate.size(); + return Double.parseDouble(String.format("%.2f", rating)); + } + + public double getRateAverageRating(String name) { + Pair currentRating = rate.getOrDefault(name, new Pair<>(0,1)); + double rating = currentRating.getKey() / currentRating.getValue(); + return Double.parseDouble(String.format("%.2f", rating)); + } +} diff --git a/cab-booking/src/com/cab/services/ApplicationService.java b/cab-booking/src/com/cab/services/ApplicationService.java new file mode 100644 index 0000000..ffffee4 --- /dev/null +++ b/cab-booking/src/com/cab/services/ApplicationService.java @@ -0,0 +1,84 @@ +package com.cab.services; + +import com.cab.models.Application; +import com.cab.models.Driver; +import com.cab.models.Location; +import com.cab.models.User; +import javafx.util.Pair; + +import java.util.List; + +public class ApplicationService { + Application application; + public ApplicationService() { + this.application = new Application(); + } + + public void processHistoricalData(String driverName, int driverRating, String customerName, int customerRating) { + addDriverRating(driverName, customerName, driverRating); + addCustomerRating(customerName, driverName, customerRating); + } + + private void addDriverRating(String driverName, String customerName, int rating) { + if (!application.getDrivers().containsKey(driverName)) { + Driver driver = new Driver(driverName); + application.getDrivers().put(driverName, driver); + } + application.getDrivers().get(driverName).addRating(customerName, rating); + System.out.println("Driver Rating Added"); + } + + private void addCustomerRating(String customerName, String driverName, int rating) { + if (!application.getCustomers().containsKey(customerName)) { + User customer = new User(customerName); + application.getCustomers().put(customerName, customer); + } + application.getCustomers().get(customerName).addRating(driverName, rating); + System.out.println("Customer Rating Added"); + } + + + + public void getAvailableDriver(List> driversDetailsList, Pair customerDetails) { + String customerName = customerDetails.getKey(); + if (!application.getCustomers().containsKey(customerName)) { + User user = new User(customerName); + application.getCustomers().put(customerName, user); + } + User customer = application.getCustomers().get(customerName); + System.out.println("Average Rating : " + customer.getAverageRating()); + findEligibleDriveBasedOnRating(customer, driversDetailsList); + + findByDistance(customerDetails, driversDetailsList); + + } + + private void findByDistance(Pair customerDetails, List> driversDetailsList) { + + } + + private void findEligibleDriveBasedOnRating(User customer, List> driversDetailsList) { + StringBuilder driverList = new StringBuilder("Eligible Driver :"); + double customerRating = customer.getAverageRating(); + for (Pair driverDetails : driversDetailsList) { + Driver driver = application.getDrivers().get(driverDetails.getKey()); + if (driver != null) { + double driverRating = driver.getAverageRating(); + if (driverRating >= customerRating) { + driverList.append("\n" + driverDetails.getKey() + ", " + driverRating); + } + } + } + System.out.println(new String(driverList)); + } + + public Pair praseInput(String line) { + String[] command = line.split(","); + if (command.length != 3) { + System.out.println("Invalid Input"); + System.out.println("Enter like : d1,1,2"); + return null; + } + return new Pair<>(command[0], new Location(Integer.parseInt(command[1]), Integer.parseInt(command[2]))); + } +} diff --git a/cab-booking/test/com/cab/testCase1.txt b/cab-booking/test/com/cab/testCase1.txt new file mode 100644 index 0000000..69e45d1 --- /dev/null +++ b/cab-booking/test/com/cab/testCase1.txt @@ -0,0 +1,18 @@ +d1 4 c1 5 +d1 5 c2 4 +d1 1 c3 2 +d2 5 c1 1 +d2 5 c2 5 +d2 4 c3 5 +d3 3 c1 2 +d3 4 c2 5 +d3 3 c3 3 +EXIT +C +4 +d1,1,0 +d2,2,0 +d3,3,0 +d4,4,0 +c2,1,0 +E From bdf1ed8a8acb42276b17acde3382044ee73a3c48 Mon Sep 17 00:00:00 2001 From: khagapati-bagh Date: Sun, 28 Nov 2021 18:21:47 +0530 Subject: [PATCH 4/7] Added readme.md --- cab-booking/README.md | 6 ++++++ cab-booking/img.png | Bin 0 -> 30826 bytes trello/README.md | 6 ++++++ trello/img.png | Bin 0 -> 30250 bytes 4 files changed, 12 insertions(+) create mode 100644 cab-booking/README.md create mode 100644 cab-booking/img.png create mode 100644 trello/README.md create mode 100644 trello/img.png diff --git a/cab-booking/README.md b/cab-booking/README.md new file mode 100644 index 0000000..87d1734 --- /dev/null +++ b/cab-booking/README.md @@ -0,0 +1,6 @@ +#Add lombok.jar to this project +[Click Here to downlod lombok jar](https://projectlombok.org/download) + +Configure Run Environment like :point_down:: + +![img.png](img.png) \ No newline at end of file diff --git a/cab-booking/img.png b/cab-booking/img.png new file mode 100644 index 0000000000000000000000000000000000000000..fe7dd2058a4ac2633225a3d33a1852faf2fe245e GIT binary patch literal 30826 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 fUrlp!-h1uOXRWmpq^+rP<`l~* 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

g{HjyQY zU|v%a&C>MFAI7$i%zXe8FuVhV%x$SWF|o0!4Lqm=MjbZSPAO4*reAujZUJpV%_XwF z7lF`GbaMwfW^Paph@#I;tVmWsq5fA-eNFO7bIjf}cp;f(UW4w?5FAv+47;0R8%@N- zUOE8D=3D1W7NoR)5dUdPAQN#QEVDkp1T8t*l9q?$mfFe}~xSC-xv@d~Z$ z*Ik%sb;+43)*V!RbJg#<>_x|$HZZp1>I^MC42cZ%tzz_9sHIX9o@zINxPN-AWOIoFzp^%LkJ-=Sn!lAzU97e(~&y0SOr` zy?_e&|J=?|ofAb}B$@ZJQb1}rbXh;9#Usd0Xu{K{Znh*%qg7drW-+TeDsl>X{YCK` z7P&pz9Mr8+_&0;sO+J@r8^)(ckf>K_(F=Urr8#{TRmg zlzw-#L2|OuCnO~3>P9KI=rdFIWMKnfCR9ZRGpNF9{I=q1f<8)hp+aj8aVTKdx7!)c z)ZZe=FAED4e4E5uUSC-1vaTkMfCroKTXaoX7uSs* zka}-q+d8B^|Xz9@0 z@Aw1gfRB$E$-*}t*{=G9 zc-{9gaLl%oBXWWCKcuB&q$K4l$`q>MXpg;bmp@qIFWB>@W@5OrviM>RStVKkY_Nn| z6-1*OBnU;qA}>}=M%|}l*6U3v=o|__8>6yY#O^z%NDEqT?3q#CpGQJHm z0939~0I0!Cy-xdr{_gSS0G@c(jJo{{kMo`A4a%u46giVK!gm+|&>+owx_6PPkDmVz DRbdg7 literal 0 HcmV?d00001 From 014a61a06c4684c05ad2c8a356ed4336e1e1d926 Mon Sep 17 00:00:00 2001 From: khagapati-bagh Date: Mon, 29 Nov 2021 10:18:14 +0530 Subject: [PATCH 5/7] Added movie-review machine coding lld --- movie-review/.idea/.gitignore | 3 + movie-review/.idea/description.html | 1 + movie-review/.idea/encodings.xml | 6 + movie-review/.idea/misc.xml | 12 ++ movie-review/.idea/modules.xml | 8 + movie-review/.idea/project-template.xml | 3 + movie-review/.idea/uiDesigner.xml | 124 +++++++++++++++ movie-review/.idea/vcs.xml | 6 + movie-review/movie-review.iml | 12 ++ movie-review/src/com/movie/Main.java | 56 +++++++ .../src/com/movie/constants/Constants.java | 14 ++ .../src/com/movie/enums/CategoryType.java | 7 + .../src/com/movie/models/Application.java | 23 +++ movie-review/src/com/movie/models/Movie.java | 23 +++ movie-review/src/com/movie/models/Review.java | 19 +++ movie-review/src/com/movie/models/User.java | 18 +++ .../src/com/movie/models/UserReview.java | 5 + .../movie/services/ApplicationService.java | 144 ++++++++++++++++++ 18 files changed, 484 insertions(+) create mode 100644 movie-review/.idea/.gitignore create mode 100644 movie-review/.idea/description.html create mode 100644 movie-review/.idea/encodings.xml create mode 100644 movie-review/.idea/misc.xml create mode 100644 movie-review/.idea/modules.xml create mode 100644 movie-review/.idea/project-template.xml create mode 100644 movie-review/.idea/uiDesigner.xml create mode 100644 movie-review/.idea/vcs.xml create mode 100644 movie-review/movie-review.iml create mode 100644 movie-review/src/com/movie/Main.java create mode 100644 movie-review/src/com/movie/constants/Constants.java create mode 100644 movie-review/src/com/movie/enums/CategoryType.java create mode 100644 movie-review/src/com/movie/models/Application.java create mode 100644 movie-review/src/com/movie/models/Movie.java create mode 100644 movie-review/src/com/movie/models/Review.java create mode 100644 movie-review/src/com/movie/models/User.java create mode 100644 movie-review/src/com/movie/models/UserReview.java create mode 100644 movie-review/src/com/movie/services/ApplicationService.java diff --git a/movie-review/.idea/.gitignore b/movie-review/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/movie-review/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/movie-review/.idea/description.html b/movie-review/.idea/description.html new file mode 100644 index 0000000..db5f129 --- /dev/null +++ b/movie-review/.idea/description.html @@ -0,0 +1 @@ +Simple Java application that includes a class with main() method \ No newline at end of file diff --git a/movie-review/.idea/encodings.xml b/movie-review/.idea/encodings.xml new file mode 100644 index 0000000..97626ba --- /dev/null +++ b/movie-review/.idea/encodings.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/movie-review/.idea/misc.xml b/movie-review/.idea/misc.xml new file mode 100644 index 0000000..2fc6c34 --- /dev/null +++ b/movie-review/.idea/misc.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/movie-review/.idea/modules.xml b/movie-review/.idea/modules.xml new file mode 100644 index 0000000..206191c --- /dev/null +++ b/movie-review/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/movie-review/.idea/project-template.xml b/movie-review/.idea/project-template.xml new file mode 100644 index 0000000..1f08b88 --- /dev/null +++ b/movie-review/.idea/project-template.xml @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/movie-review/.idea/uiDesigner.xml b/movie-review/.idea/uiDesigner.xml new file mode 100644 index 0000000..e96534f --- /dev/null +++ b/movie-review/.idea/uiDesigner.xml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/movie-review/.idea/vcs.xml b/movie-review/.idea/vcs.xml new file mode 100644 index 0000000..6c0b863 --- /dev/null +++ b/movie-review/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/movie-review/movie-review.iml b/movie-review/movie-review.iml new file mode 100644 index 0000000..6b762ae --- /dev/null +++ b/movie-review/movie-review.iml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/movie-review/src/com/movie/Main.java b/movie-review/src/com/movie/Main.java new file mode 100644 index 0000000..5cb110f --- /dev/null +++ b/movie-review/src/com/movie/Main.java @@ -0,0 +1,56 @@ +package com.movie; + +import com.movie.constants.Constants; +import com.movie.services.ApplicationService; + +import java.util.Scanner; + +public class Main { + + public static void main(String[] args) { + // write your code here + System.out.println("Application Started"); + ApplicationService applicationService = new ApplicationService(); + Scanner input = new Scanner(System.in); + System.out.println("Enter number of movie want to onboard"); + int numberOfMovie = Integer.parseInt(input.nextLine()); + for (int i = 0; i < numberOfMovie; i++) { + String line = input.nextLine().trim(); + int addMovieLength = Constants.ADD_MOVIE.length(); + String movieDetails = line.substring(addMovieLength, line.length() - addMovieLength - 1); + applicationService.addMovie(movieDetails); + } + System.out.println("Enter number of user"); + int numberOfUser = Integer.parseInt(input.nextLine()); + for (int i = 0; i < numberOfMovie; i++) { + String line = input.nextLine().trim(); + int addUserLength = Constants.ADD_USER.length(); + String userDetails = line.substring(addUserLength, line.length() - addUserLength - 1); + applicationService.addUser(userDetails); + } + System.out.println("Add/Update/Delete Review or EXIT"); + while(true) { + String line = input.nextLine().trim(); + if (line.equalsIgnoreCase(Constants.EXIT)) { + break; + } + String edit = line.substring(0, line.indexOf("\"")); + switch (edit) { + case Constants.ADD_REVIEW: + + break; + case Constants.UPDATE_REVIEW: + break; + case Constants.DELETE_REVIEW: + break; + case Constants.LIST_REVIEW: + break; + case Constants.LIST_TOP: + break; + default: + System.out.println("Invalid option"); + } + } + System.out.println("Application Terminated"); + } +} diff --git a/movie-review/src/com/movie/constants/Constants.java b/movie-review/src/com/movie/constants/Constants.java new file mode 100644 index 0000000..c5f9f58 --- /dev/null +++ b/movie-review/src/com/movie/constants/Constants.java @@ -0,0 +1,14 @@ +package com.movie.constants; + +public class Constants { + public static final String YEAR = "Year"; + public static final String GENRE = "Genre"; + public static final String ADD_MOVIE = "Add Movie("; + public static final String ADD_USER = "Add User("; + public static final String ADD_REVIEW = "add_review("; + public static final String UPDATE_REVIEW = "update_review("; + public static final String DELETE_REVIEW = "delete_review("; + public static final String LIST_REVIEW = "list_review("; + public static final String LIST_TOP = "List Top"; + public static final String EXIT = "EXIT"; +} diff --git a/movie-review/src/com/movie/enums/CategoryType.java b/movie-review/src/com/movie/enums/CategoryType.java new file mode 100644 index 0000000..1fc645c --- /dev/null +++ b/movie-review/src/com/movie/enums/CategoryType.java @@ -0,0 +1,7 @@ +package com.movie.enums; + +public enum CategoryType { + VIEWER, + CRITIC, + EXPERT +} diff --git a/movie-review/src/com/movie/models/Application.java b/movie-review/src/com/movie/models/Application.java new file mode 100644 index 0000000..6ed4ee8 --- /dev/null +++ b/movie-review/src/com/movie/models/Application.java @@ -0,0 +1,23 @@ +package com.movie.models; + +import lombok.Data; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public @Data class Application { + Map users; + Map movies; + Map reviews; + Map> userReview; + Map movieReview; + + public Application() { + this.users = new HashMap<>(); + this.movies = new HashMap<>(); + this.reviews = new HashMap<>(); + this.userReview = new HashMap<>(); + this.movieReview = new HashMap<>(); + } +} diff --git a/movie-review/src/com/movie/models/Movie.java b/movie-review/src/com/movie/models/Movie.java new file mode 100644 index 0000000..6398fb7 --- /dev/null +++ b/movie-review/src/com/movie/models/Movie.java @@ -0,0 +1,23 @@ +package com.movie.models; + +import lombok.Data; + +import java.util.UUID; + +public @Data class Movie { + private String movieId; + private String movieName; + private String genre; + private int releaseYear; + private boolean releaseFlag; + private double rating; + + public Movie(String movieName, String genre, int releaseYear, boolean releaseFlag) { + this.movieId = UUID.randomUUID().toString(); + this.movieName = movieName; + this.genre = genre; + this.releaseYear = releaseYear; + this.releaseFlag = releaseFlag; + this.rating = 0.0; + } +} diff --git a/movie-review/src/com/movie/models/Review.java b/movie-review/src/com/movie/models/Review.java new file mode 100644 index 0000000..2d64341 --- /dev/null +++ b/movie-review/src/com/movie/models/Review.java @@ -0,0 +1,19 @@ +package com.movie.models; + +import lombok.Data; + +import java.util.UUID; + +public @Data class Review { + private String reviewId; + private int rate; + private String description; + private String movieName; + + public Review(int rate, String description, String movieName) { + this.reviewId = UUID.randomUUID().toString(); + this.rate = rate; + this.description = description; + this.movieName = movieName; + } +} diff --git a/movie-review/src/com/movie/models/User.java b/movie-review/src/com/movie/models/User.java new file mode 100644 index 0000000..61fbb1f --- /dev/null +++ b/movie-review/src/com/movie/models/User.java @@ -0,0 +1,18 @@ +package com.movie.models; + +import com.movie.enums.CategoryType; +import lombok.Data; + +import java.util.UUID; + +public @Data class User { + private String userId; + private String userName; + private CategoryType categoryType; + + public User(String userName) { + this.userId = UUID.randomUUID().toString(); + this.userName = userName; + this.categoryType = CategoryType.VIEWER; + } +} diff --git a/movie-review/src/com/movie/models/UserReview.java b/movie-review/src/com/movie/models/UserReview.java new file mode 100644 index 0000000..a399860 --- /dev/null +++ b/movie-review/src/com/movie/models/UserReview.java @@ -0,0 +1,5 @@ +package com.movie.models; + +public class UserReview { + private User user; +} diff --git a/movie-review/src/com/movie/services/ApplicationService.java b/movie-review/src/com/movie/services/ApplicationService.java new file mode 100644 index 0000000..b6a1b71 --- /dev/null +++ b/movie-review/src/com/movie/services/ApplicationService.java @@ -0,0 +1,144 @@ +package com.movie.services; + +import com.movie.constants.Constants; +import com.movie.enums.CategoryType; +import com.movie.models.Application; +import com.movie.models.Movie; +import com.movie.models.Review; +import com.movie.models.User; + +import java.util.Date; +import java.util.List; + +public class ApplicationService { + Application application; + + public ApplicationService() { + this.application = new Application(); + } + + public void addUser(String userName) { + if (application.getUsers().containsKey(userName)) { + System.out.println("User with name : " + userName + " already exist"); + return; + } + User user = new User(userName); + application.getUsers().put(userName, user); + System.out.println("User Created with name : " + userName); + } + + public void addMovie(String movieDetails) { + String movieName = movieDetails.substring(1, movieDetails.indexOf("\"", 1)); + if (application.getMovies().containsKey(movieName)) { + System.out.println("Movie with name : " + movieName + " already exist"); + return; + } + int releaseYear = Integer.parseInt(movieDetails.substring(movieDetails.indexOf(Constants.YEAR) + 6, 4)); + String genre = movieDetails.substring(movieDetails.indexOf(Constants.GENRE) + 7); + int currentYear = new Date().getYear(); + Movie movie = new Movie(movieName, genre, releaseYear, releaseYear <= currentYear); + application.getMovies().put(movieName, movie); + System.out.println("Movie Created with name : " + movieName); + } + + public void addReview(String userName, String movieName, int rate) { + List userReviewIds = application.getUserReview().get(userName); + + for (String userReviewId : userReviewIds) { + if (application.getReviews().get(userReviewId).getMovieName().equalsIgnoreCase(movieName)) { + System.out.println("Multiple Review Not Allowed"); + return; + } + } + + + List userReview = application.getUserReview().get(userName); + if (userReview.size() + 1 > 2) { + updateUserCategory(userName, userReview.size() + 1); + } + if (application.getUsers().get(userName).getCategoryType().equals(CategoryType.CRITIC)) { + rate *= 2; + } else if (application.getUsers().get(userName).getCategoryType().equals(CategoryType.EXPERT)) { + rate *= 3; + } + Review review = new Review(rate, "", movieName); + + userReview.add(review.getReviewId()); + application.getUserReview().put(userName, userReview); + + System.out.println("Added Review for Movie : " + movieName + " By User : " + userName); + } + + public void updateReview(String userName, String movieName, int rate) { + List userReviewIds = application.getUserReview().get(userName); + for (String userReviewId : userReviewIds) { + if (application.getReviews().get(userReviewId).getMovieName().equalsIgnoreCase(movieName)) { + Review review = application.getReviews().get(userReviewId); + review.setRate(rate); + application.getReviews().put(review.getReviewId(), review); + System.out.println("Review Updated for Move : " + movieName + " by User : " + userName); + return; + } + } + System.out.println("Review not found with the user and movie"); + } + + public void deleteReview(String userName, String movieName) { + List userReviewIds = application.getUserReview().get(userName); + for (int i = 0; i < userReviewIds.size(); i++) { + if (application.getReviews().get(userReviewIds.get(i)).getMovieName().equalsIgnoreCase(movieName)) { + userReviewIds.remove(i); + application.getUserReview().put(userName, userReviewIds); + updateUserCategory(userName, userReviewIds.size()); + + System.out.println("Review Deleted for Movie : " + movieName + " By User : " + userName); + return; + } + } + System.out.println("Not found any review with Movie : " + movieName + " reviewed by User : " + userName); + } + + public void listReview(String userName) { + List userReviewIds = application.getUserReview().get(userName); + StringBuilder displayReview = new StringBuilder("{"); + for (int i = 0; i < userReviewIds.size(); i++) { + Review review = application.getReviews().get(userReviewIds.get(i)); + displayReview.append("\n\""); + displayReview.append(review.getMovieName()); + displayReview.append("\":"); + displayReview.append(review.getRate()); + if (i < userReviewIds.size() - 1) { + displayReview.append(","); + } + } + displayReview.append("\n}"); + System.out.println(new String(displayReview)); + } + + public void listTopMovie(String movieDetails) { + + } + + public void listTopMovieByYear(int topNMovie, int year) { + + } + + public void listTopMovieByYearAndGenre(int topNMovie, int year, String genre) { + + } + + public void listTopMovieByYearAndUserCategory(int topNMovie, int year, CategoryType categoryType) { + + } + + private void updateUserCategory(String userName, int numberOfReview) { + User user = application.getUsers().get(userName); + if (numberOfReview < 3) { + user.setCategoryType(CategoryType.VIEWER); + } else if (numberOfReview < 5) { + user.setCategoryType(CategoryType.CRITIC); + } else { + user.setCategoryType(CategoryType.EXPERT); + } + } +} From 37674f5775ef9b0da9dde2647a2a90da24a26f4f Mon Sep 17 00:00:00 2001 From: khagapati-bagh Date: Thu, 2 Dec 2021 10:01:03 +0530 Subject: [PATCH 6/7] Added digital wallet machine coding lld --- digital-wallet/.idea/.gitignore | 3 + digital-wallet/.idea/compiler.xml | 8 + digital-wallet/.idea/description.html | 1 + digital-wallet/.idea/encodings.xml | 6 + digital-wallet/.idea/misc.xml | 12 + digital-wallet/.idea/modules.xml | 8 + digital-wallet/.idea/project-template.xml | 3 + digital-wallet/.idea/uiDesigner.xml | 124 +++++++++++ digital-wallet/.idea/vcs.xml | 6 + digital-wallet/README.md | 6 + digital-wallet/digital-wallet.iml | 12 + digital-wallet/img.png | Bin 0 -> 30855 bytes .../digital-wallet/com/wallet/Main.class | Bin 0 -> 2257 bytes .../com/wallet/constants/Constant.class | Bin 0 -> 725 bytes .../com/wallet/models/Account.class | Bin 0 -> 4743 bytes .../com/wallet/models/User.class | Bin 0 -> 2270 bytes .../com/wallet/models/Wallet.class | Bin 0 -> 3172 bytes .../com/wallet/service/WalletService.class | Bin 0 -> 8039 bytes digital-wallet/src/com/wallet/Main.java | 67 ++++++ .../src/com/wallet/constants/Constant.java | 13 ++ .../src/com/wallet/models/Account.java | 35 +++ .../src/com/wallet/models/User.java | 19 ++ .../src/com/wallet/models/Wallet.java | 23 ++ .../src/com/wallet/service/WalletService.java | 205 ++++++++++++++++++ digital-wallet/test/testCase1.txt | 17 ++ movie-review/.idea/compiler.xml | 8 + .../movie-review/com/movie/Main.class | Bin 0 -> 2802 bytes .../com/movie/constants/Constants.class | Bin 0 -> 748 bytes .../com/movie/enums/CategoryType.class | Bin 0 -> 1043 bytes .../com/movie/models/Application.class | Bin 0 -> 4531 bytes .../movie-review/com/movie/models/Movie.class | Bin 0 -> 3553 bytes .../com/movie/models/Review.class | Bin 0 -> 2753 bytes .../movie-review/com/movie/models/User.class | Bin 0 -> 2591 bytes .../com/movie/models/UserReview.class | Bin 0 -> 330 bytes .../movie/services/ApplicationService.class | Bin 0 -> 6332 bytes movie-review/src/com/movie/Main.java | 7 +- .../src/com/movie/models/Application.java | 11 +- 37 files changed, 588 insertions(+), 6 deletions(-) create mode 100644 digital-wallet/.idea/.gitignore create mode 100644 digital-wallet/.idea/compiler.xml create mode 100644 digital-wallet/.idea/description.html create mode 100644 digital-wallet/.idea/encodings.xml create mode 100644 digital-wallet/.idea/misc.xml create mode 100644 digital-wallet/.idea/modules.xml create mode 100644 digital-wallet/.idea/project-template.xml create mode 100644 digital-wallet/.idea/uiDesigner.xml create mode 100644 digital-wallet/.idea/vcs.xml create mode 100644 digital-wallet/README.md create mode 100644 digital-wallet/digital-wallet.iml create mode 100644 digital-wallet/img.png create mode 100644 digital-wallet/out/production/digital-wallet/com/wallet/Main.class create mode 100644 digital-wallet/out/production/digital-wallet/com/wallet/constants/Constant.class create mode 100644 digital-wallet/out/production/digital-wallet/com/wallet/models/Account.class create mode 100644 digital-wallet/out/production/digital-wallet/com/wallet/models/User.class create mode 100644 digital-wallet/out/production/digital-wallet/com/wallet/models/Wallet.class create mode 100644 digital-wallet/out/production/digital-wallet/com/wallet/service/WalletService.class create mode 100644 digital-wallet/src/com/wallet/Main.java create mode 100644 digital-wallet/src/com/wallet/constants/Constant.java create mode 100644 digital-wallet/src/com/wallet/models/Account.java create mode 100644 digital-wallet/src/com/wallet/models/User.java create mode 100644 digital-wallet/src/com/wallet/models/Wallet.java create mode 100644 digital-wallet/src/com/wallet/service/WalletService.java create mode 100644 digital-wallet/test/testCase1.txt create mode 100644 movie-review/.idea/compiler.xml create mode 100644 movie-review/out/production/movie-review/com/movie/Main.class create mode 100644 movie-review/out/production/movie-review/com/movie/constants/Constants.class create mode 100644 movie-review/out/production/movie-review/com/movie/enums/CategoryType.class create mode 100644 movie-review/out/production/movie-review/com/movie/models/Application.class create mode 100644 movie-review/out/production/movie-review/com/movie/models/Movie.class create mode 100644 movie-review/out/production/movie-review/com/movie/models/Review.class create mode 100644 movie-review/out/production/movie-review/com/movie/models/User.class create mode 100644 movie-review/out/production/movie-review/com/movie/models/UserReview.class create mode 100644 movie-review/out/production/movie-review/com/movie/services/ApplicationService.class diff --git a/digital-wallet/.idea/.gitignore b/digital-wallet/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/digital-wallet/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/digital-wallet/.idea/compiler.xml b/digital-wallet/.idea/compiler.xml new file mode 100644 index 0000000..a1757ae --- /dev/null +++ b/digital-wallet/.idea/compiler.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/digital-wallet/.idea/description.html b/digital-wallet/.idea/description.html new file mode 100644 index 0000000..db5f129 --- /dev/null +++ b/digital-wallet/.idea/description.html @@ -0,0 +1 @@ +Simple Java application that includes a class with main() method \ No newline at end of file diff --git a/digital-wallet/.idea/encodings.xml b/digital-wallet/.idea/encodings.xml new file mode 100644 index 0000000..97626ba --- /dev/null +++ b/digital-wallet/.idea/encodings.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/digital-wallet/.idea/misc.xml b/digital-wallet/.idea/misc.xml new file mode 100644 index 0000000..2fc6c34 --- /dev/null +++ b/digital-wallet/.idea/misc.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/digital-wallet/.idea/modules.xml b/digital-wallet/.idea/modules.xml new file mode 100644 index 0000000..119facd --- /dev/null +++ b/digital-wallet/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/digital-wallet/.idea/project-template.xml b/digital-wallet/.idea/project-template.xml new file mode 100644 index 0000000..1f08b88 --- /dev/null +++ b/digital-wallet/.idea/project-template.xml @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/digital-wallet/.idea/uiDesigner.xml b/digital-wallet/.idea/uiDesigner.xml new file mode 100644 index 0000000..e96534f --- /dev/null +++ b/digital-wallet/.idea/uiDesigner.xml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/digital-wallet/.idea/vcs.xml b/digital-wallet/.idea/vcs.xml new file mode 100644 index 0000000..6c0b863 --- /dev/null +++ b/digital-wallet/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/digital-wallet/README.md b/digital-wallet/README.md new file mode 100644 index 0000000..87d1734 --- /dev/null +++ b/digital-wallet/README.md @@ -0,0 +1,6 @@ +#Add lombok.jar to this project +[Click Here to downlod lombok jar](https://projectlombok.org/download) + +Configure Run Environment like :point_down:: + +![img.png](img.png) \ No newline at end of file diff --git a/digital-wallet/digital-wallet.iml b/digital-wallet/digital-wallet.iml new file mode 100644 index 0000000..6b762ae --- /dev/null +++ b/digital-wallet/digital-wallet.iml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/digital-wallet/img.png b/digital-wallet/img.png new file mode 100644 index 0000000000000000000000000000000000000000..57acd180a93200d57c070631d2b154c5cfee43f0 GIT binary patch literal 30855 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

)p=l+U`-b3!Z1A|u{7 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 ck1@RC!x^q)T)gYUdtAqT824eq zhe;pK`f#oi?;{~$%7^oQOyhzdA7F+%yU4{QE-rKNAs1J;xGLeA1cgBy(hSWx!QctE zO*051W=dtKiED;BkxkF4)|4`<(@HRICKY{Ju{4f176oTPvl#;Mq?wMaD7vmXk#R*c z2FX#HG($u9QhZTaRwBA$%tsQAr5W>s?nOG?z};@zW$=-^v|^;lb=?-n$+=?9)23H5 zGFgX=3Qn?)rbiM<#V}NhBG^_4D4|-*T9U46E{)PItVS-lL2uabLkUMoE{!W0H$(S{ zh9z`Mm}T&vUQMbQM>7puLXvR8%vwoxOyl*bg^J=PRvHt7?5=5MgrDJd zDK6-AQ%M2042|2($(YB23=NAEkBlWOGO#8YI?^%>m~_F2r7DhE$Vx^A*D0kbOEK&@ z)fzVqb&aY!xy+MSS14%8)=|@{K}8fN=g1~XKE||FH8rYcOj~m#STbzT{+^N$lT-pn zF&sNGvN5A;V#czfYpJFfe-sH>8OumXSdp=cH5nh_hK!r|SjH!4k#URX{wbf`#tkA| ziFaN}hT1p8n4DcylN3V9Qh`YnRcS>hOlQo@8mZztG1P}Q6O7X@u(7`J76nR%V|=S> zL9r*)Rfo5L+ZGq8W=3&gd$?`0OQIxEJ57|dGrC5h9@^^OExGKY>lO-KM=cnmhfuF) z6`kl^7JH!vgKZQ{X&KgRdOwQN^O@DZ`EQ@=}kQ zS-0J*GKyuZuTfbfubX(3sFEz98*lc_l^NwF-R6{2FuaA~{~WEFSDiP6Z6H+S?C{!o z>Xiv4P0!??(=4^f;JFe8)33IP2LCERe*v_RJU}QynvwRluY>*MZXYBmx{H3a(p)YW z;1I%uD$#~^azckI{w6yKU@xAbV&)k7WZ#jh%)>v? z6|Blb9uPu;CpzG*=odrYJhuHnj_G?yL%jX?^CzV5-~VRMGU=Q72Y+Qr$Ny=IO_J7I z>~q}i^3tx)`bZCjyus=`Y939KMUI;Y*SWYs z;<%RZb{C7jez9KUvHVGce_k5AIx!m8Y22fcqwyjnJQu%3_0Ome?#N?j4o^Enf)EV} z-smp~<*_S=M`RmZLkIUL_~s)J7L z&EWuTl!q29Uh9UoFZc2)e|L|Y*;lTtMi8}VB-xBQdhP9qqMlf?gGt!QY7k;UG_w8J z%?@BM>%cyC1Wl|T%`8Sg{WuP?1X|f89Aa0{#%9sZRCF>OUCco@TR{)Ig~RL)jG{{+4*h8uc}zVP6baZ*kvgD-7fDp8S3u2SO_~7 z`ph1fROz#K3~TK~&y3I}6!BbI*kdU26DP1>WyL;k1$;DYxh|*FGlun`-|_||IO_Qx z|777ggXM?3A3A(!;RVC$AfTQe_o!k2`uQUZ2c+kCVas(oBgZ@bNaaIHb)6I58Fl!v zKgeEvNgeN%R^|i4%Kkw}p9*a z-puh$;(Cs65#P@79pbw=zDJX=%teY1Xd-*bK*!Zscg K(GOBApz#M`c8(MP literal 0 HcmV?d00001 diff --git a/digital-wallet/out/production/digital-wallet/com/wallet/models/Account.class b/digital-wallet/out/production/digital-wallet/com/wallet/models/Account.class new file mode 100644 index 0000000000000000000000000000000000000000..bb17d31782eea0051632074b71591311c883777c GIT binary patch literal 4743 zcma)9`+r+y8ULO%C+8$Ry)0WV>Dt+1Wo_D0LhY`iMWqBfkoADiizAMZ3WI1Qz`?5c2;0F;{SQq4nviwMv zA2;JCc*?*}BSfB-7{gGLPH>v(hzk;vUYB1{D@P?STeFi+CZE&LSwopV<)jPyX;Wx2lgl`JGz5oc zhmUjHn@{ngw)spheL#6~)LzVz5}nT{?d);8kP+M?1|7PgVds1@zcT)ioz145@f9k_ zu8mJ8RbXk2Wv5a{%06o77^*i~ZVvl#U{aRS&Kx7WV`#XZnXEi^jnmLHG|WIpNbzG! z5+FuE{aNJ#vc?%KWBsvf+-=os+1^&i5;x)n@rM3gL5s%dq{h;e>u6tqbWj}&L za}tFJNxmZ%k!lx+R$L%b?ZS31tQ8MLUFYVkon0+wZg(wvL*GP2lo!=|S5Nf43#HE# z?JT3ZDboiRPp6a4#PEIWh5Y8;@s61Gyt6E=V@O#IN{g9_qCiU#dEmB9i+keZZR*&s zA?YQTqngyhh$SCbuvb<6at^5xU?%O{KCzkiE!%6$ZVTv#4$m#@V}}&dYsD-lggIF0 z=6jf_!K!v{a;+Wo&1oL2zSnf}?tq|{$z;}RIo7FU{7Al7NT&B^q{}R?ZElibWMMBJ zHLzi!gv%Dbjsq4xiQ6oE0=HVYf;J>AZa?ua;v!M z7PN-eijHH)<~WlgoXM&Dii>O>Izp4toyjE&>NS|orS3|z?5dPV8aeSePd8mRn=h&n zZ7`9mw!9Pi(Cn;?#rBjsI+~x)=ayzN^1{fRXZ42c)zx&4dd3=!1S+4ttJ&h**0DIz>p~bHtP(srNg7Md&mk`>35#PN5Gv2y^a6B5>Ky&;m ztP_{fvVqn(Iosla4Ya?i^zY{yM}%t!g6Kpm@9O4HAAPt1Js84H`qE1)`q+`Xa2Gi{ zX&-OL-I(Jpka)#H#69?oXX7k+gv*M*j@FSkuq}XlD>p{e*#Me(M@6IMYqT)WxQIqJ ztEX{X;ebw!!B?m{05Lv9vP=?DV<}ko)Mzpa8VDN~YlK@G3Uh?`!U0z?Z#G}95pHcL z%#qVTI9w~-)=-#Z$rqLwxIQ=6`rO`7nB$C*kus?cSZl5Dwg$p(_1()GIV>Ak&{i9` zXagmh4A}<4?X|+&8w%g&S5Sg(NCk!BBP{Mp?YIe#C~3D6Lw?aMNoDR;&f8|w*gRgcUIvFA&TbIQE{w)Y*sf3lJ4X5Yyqpo~AkuLKozHl9 z7xAttyqkD;nK?!zRz`Xb5bH?<$Nq)pSnxe;y8vq}7A#?B`J�PL|$8D5eWf=siR) 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 literal 0 HcmV?d00001 diff --git a/digital-wallet/out/production/digital-wallet/com/wallet/service/WalletService.class b/digital-wallet/out/production/digital-wallet/com/wallet/service/WalletService.class new file mode 100644 index 0000000000000000000000000000000000000000..258b9cd61000a2478fac93664e392bbd4420ff36 GIT binary patch literal 8039 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 Q@6rnXlRQ7gf8oD>2F6s8J^%m! literal 0 HcmV?d00001 diff --git a/digital-wallet/src/com/wallet/Main.java b/digital-wallet/src/com/wallet/Main.java new file mode 100644 index 0000000..b046698 --- /dev/null +++ b/digital-wallet/src/com/wallet/Main.java @@ -0,0 +1,67 @@ +package com.wallet; + +import com.wallet.constants.Constant; +import com.wallet.service.WalletService; + +import java.io.File; +import java.io.FileNotFoundException; +import java.util.Scanner; + +public class Main { + + public static void main(String[] args) throws FileNotFoundException { + // write your code here + Scanner input = new Scanner(new File(args[0])); + + WalletService walletService = new WalletService(3); + + while (input.hasNextLine()) { + String line = input.nextLine().trim(); + String[] commands = line.split(" "); + switch (commands[0]) { + case Constant.CREATE_WALLET: + if (commands.length != 3) { + System.out.println(Constant.INVALID_INPUT); + break; + } + walletService.createWallet(commands[1], Double.parseDouble(commands[2])); + break; + case Constant.TRANSFER_MONEY: + if (commands.length != 4) { + System.out.println(Constant.INVALID_INPUT); + break; + } + walletService.transferMoney(commands[1], commands[2], Double.parseDouble(commands[3])); + break; + case Constant.OVERVIEW: + if (commands.length != 1) { + System.out.println(Constant.INVALID_INPUT); + break; + } + walletService.getOverview(); + break; + case Constant.STATEMENT: + if (commands.length != 2) { + System.out.println(Constant.INVALID_INPUT); + break; + } + walletService.getStatementByUserName(commands[1]); + break; + case Constant.OFFER2: + if (commands.length != 1) { + System.out.println(Constant.INVALID_INPUT); + break; + } + walletService.fireOffer2(); + break; + case Constant.FIXED_DEPOSIT: + if (commands.length != 3) { + System.out.println(Constant.INVALID_INPUT); + break; + } + walletService.fixedDeposit(commands[1], Double.parseDouble(commands[2])); + break; + } + } + } +} diff --git a/digital-wallet/src/com/wallet/constants/Constant.java b/digital-wallet/src/com/wallet/constants/Constant.java new file mode 100644 index 0000000..baa82d4 --- /dev/null +++ b/digital-wallet/src/com/wallet/constants/Constant.java @@ -0,0 +1,13 @@ +package com.wallet.constants; + +public class Constant { + public static final String OFFER1 = "Offer1 credit 10"; + public static final String EXIT = "EXIT"; + public static final String CREATE_WALLET = "CreateWallet"; + public static final String TRANSFER_MONEY = "TransferMoney"; + public static final String OVERVIEW = "Overview"; + public static final String STATEMENT = "Statement"; + public static final String OFFER2 = "Offer2"; + public static final String INVALID_INPUT = "Invalid Input"; + public static final String FIXED_DEPOSIT= "FixedDeposit"; +} diff --git a/digital-wallet/src/com/wallet/models/Account.java b/digital-wallet/src/com/wallet/models/Account.java new file mode 100644 index 0000000..71c5f1d --- /dev/null +++ b/digital-wallet/src/com/wallet/models/Account.java @@ -0,0 +1,35 @@ +package com.wallet.models; + +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; +import java.util.concurrent.atomic.AtomicInteger; + +public @Data class Account { + public static final AtomicInteger count = new AtomicInteger(0); + private String id; + private int number; + private double balance; + private double fdBalance; + private String history; + private List statements; + private int noOfTransaction; + private int noOfTransactionAfterFD; + + public Account(double balance) { + this.id = UUID.randomUUID().toString(); + this.number = count.incrementAndGet(); + this.balance = balance; + this.fdBalance = 0.0; + this.history = ""; + this.statements = new ArrayList<>(); + this.noOfTransaction = 0; + this.noOfTransactionAfterFD = -1; + } + + public void addStatement(String statement) { + this.statements.add(statement); + } +} diff --git a/digital-wallet/src/com/wallet/models/User.java b/digital-wallet/src/com/wallet/models/User.java new file mode 100644 index 0000000..09307ec --- /dev/null +++ b/digital-wallet/src/com/wallet/models/User.java @@ -0,0 +1,19 @@ +package com.wallet.models; + +import lombok.Data; + +import java.util.concurrent.atomic.AtomicInteger; + +public @Data +class User { + public static final AtomicInteger count = new AtomicInteger(0); + private String userName; + private int userId; + private int accountNumber; + + public User(String userName, int accountNumber) { + this.userName = userName; + this.userId = count.incrementAndGet(); + this.accountNumber = accountNumber; + } +} diff --git a/digital-wallet/src/com/wallet/models/Wallet.java b/digital-wallet/src/com/wallet/models/Wallet.java new file mode 100644 index 0000000..422dd2d --- /dev/null +++ b/digital-wallet/src/com/wallet/models/Wallet.java @@ -0,0 +1,23 @@ +package com.wallet.models; + +import com.wallet.models.Account; +import com.wallet.models.User; +import lombok.Data; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public @Data +class Wallet { + private Map users; + private Map accounts; + private List userList; + + public Wallet() { + this.users = new HashMap(); + this.accounts = new HashMap<>(); + this.userList = new ArrayList<>(); + } +} diff --git a/digital-wallet/src/com/wallet/service/WalletService.java b/digital-wallet/src/com/wallet/service/WalletService.java new file mode 100644 index 0000000..c448e49 --- /dev/null +++ b/digital-wallet/src/com/wallet/service/WalletService.java @@ -0,0 +1,205 @@ +package com.wallet.service; + +import com.wallet.constants.Constant; +import com.wallet.models.Account; +import com.wallet.models.User; +import com.wallet.models.Wallet; + +import java.util.List; +import java.util.ArrayList; + +public class WalletService { + private final Wallet wallet; + private final int topNNumber; + public static final double INTEREST_AMOUNT = 10; + public static final int NO_OF_TXN = 5; + + public WalletService(int topNNumber) { + this.wallet = new Wallet(); + this.topNNumber = topNNumber; + } + + public void createWallet(String userName, double initialBalance) { + Account account = new Account(initialBalance); + User user = new User(userName, account.getNumber()); + wallet.getUserList().add(user); + wallet.getUsers().put(userName, user); + wallet.getAccounts().put(account.getNumber(), account); + System.out.println("Account Created for user : " + userName + " with initial balance : " + initialBalance); + } + + public void transferMoney(String fromUser, String toUser, double amount) { + if (!wallet.getUsers().containsKey(fromUser)) { + System.out.println("The sender account is not exist"); + return; + } + if (!wallet.getUsers().containsKey(toUser)) { + System.out.println("The receiver account is not exist"); + return; + } + if (amount < 0.0001) { + System.out.println("Transaction is not allowed because the amount is less than 000.1 "); + return; + } + int fromAccountNumber = wallet.getUsers().get(fromUser).getAccountNumber(); + int toAccountNumber = wallet.getUsers().get(toUser).getAccountNumber(); + Account fromAccount = wallet.getAccounts().get(fromAccountNumber); + Account toAccount = wallet.getAccounts().get(toAccountNumber); + + if (!isAccountHaveSufficientBalance(fromAccountNumber, amount)) { + return; + } + + if (fromAccount.getBalance() >= amount) { + fromAccount.setBalance(fromAccount.getBalance() - amount); + if (fromAccount.getNoOfTransactionAfterFD() > -1) { + fromAccount.setNoOfTransactionAfterFD(fromAccount.getNoOfTransactionAfterFD() + 1); + } + } else if ((fromAccount.getBalance() + fromAccount.getFdBalance()) >= amount) { + fromAccount.setBalance(fromAccount.getBalance() + fromAccount.getFdBalance() - amount); + fromAccount.setFdBalance(0.0); + fromAccount.setNoOfTransactionAfterFD(-1); + } + toAccount.setBalance(toAccount.getBalance() + amount); + fromAccount.addStatement(toUser + " debited " + amount); + toAccount.addStatement(fromUser + " credited " + amount); + fromAccount.setNoOfTransaction(fromAccount.getNoOfTransaction() + 1); + toAccount.setNoOfTransaction(toAccount.getNoOfTransaction() + 1); + + if (fromAccount.getBalance() == toAccount.getBalance()) { + fireOffer1(fromAccount, toAccount); + } + if (fromAccount.getNoOfTransactionAfterFD() == NO_OF_TXN && fromAccount.getBalance() > 0) { + fromAccount.setBalance(fromAccount.getBalance() + INTEREST_AMOUNT); + fromAccount.addStatement("Interest credited" + INTEREST_AMOUNT); + } + } + + private void fireOffer1(Account from, Account to) { + System.out.println("Offer 1 fired"); + from.setBalance(from.getBalance() + 10); + to.setBalance(to.getBalance() + 10); + from.addStatement(Constant.OFFER1); + to.addStatement(Constant.OFFER1); + } + + public void getStatementByUserName(String userName) { + if (!wallet.getUsers().containsKey(userName)) { + System.out.println("User with name " + userName + " is not exist"); + return; + } + Account account = wallet.getAccounts().get(wallet.getUsers().get(userName).getAccountNumber()); + for (String statement : account.getStatements()) { + System.out.println(statement); + } + } + + public void getOverview() { + if (wallet.getUserList().size() == 0) { + System.out.println("There is no user"); + return; + } + for (User user : wallet.getUserList()) { + Account account = wallet.getAccounts().get(wallet.getUsers().get(user.getUserName()).getAccountNumber()); + System.out.print(user.getUserName() + " " + account.getBalance()); + if (account.getFdBalance() > 0) { + System.out.print(" FD " + account.getFdBalance()); + } + System.out.println(); + } + } + + public void fireOffer2() { + List topUserNames = getTopNUserName(); + if (topUserNames.size() >= 1) { + int accountNumber = wallet.getUsers().get(topUserNames.get(0)).getAccountNumber(); + Account account = wallet.getAccounts().get(accountNumber); + account.setBalance(account.getBalance() + 10); + } + if (topUserNames.size() >= 2) { + int accountNumber = wallet.getUsers().get(topUserNames.get(1)).getAccountNumber(); + Account account = wallet.getAccounts().get(accountNumber); + account.setBalance(account.getBalance() + 5); + } + if (topUserNames.size() >= 3) { + int accountNumber = wallet.getUsers().get(topUserNames.get(2)).getAccountNumber(); + Account account = wallet.getAccounts().get(accountNumber); + account.setBalance(account.getBalance() + 2); + } + System.out.println("Offer 2 fired"); + } + + private List getTopNUserName() { + List users = new ArrayList<>(wallet.getUserList()); + users.sort((o1, o2) -> { + Account accountO1 = wallet.getAccounts().get(o1.getAccountNumber()); + Account accountO2 = wallet.getAccounts().get(o2.getAccountNumber()); + int indexOfO1 = wallet.getUserList().indexOf(o1); + int indexOfO2 = wallet.getUserList().indexOf(o2); + return accountO1.getNoOfTransaction() > accountO2.getNoOfTransaction() ? -1 : + accountO1.getNoOfTransaction() == accountO2.getNoOfTransaction() && accountO1.getBalance() > accountO2.getBalance() ? -1 : + accountO1.getNoOfTransaction() == accountO2.getNoOfTransaction() && accountO1.getBalance() == accountO2.getBalance() && indexOfO1 < indexOfO2 ? -1 : 0; + }); + List resultList = new ArrayList<>(); + for (User user : users) { + resultList.add(user.getUserName()); + if (resultList.size() == topNNumber) { + break; + } + } + return resultList; + } + + public void fixedDeposit(String userName, double amount) { + if(isUserExist(userName)) { + int accountNumber = wallet.getUsers().get(userName).getAccountNumber(); + if (isAccountHaveSufficientForFDBalance(accountNumber, amount)) { + Account account = wallet.getAccounts().get(accountNumber); + account.setFdBalance(amount); + account.setBalance(account.getBalance() - amount); + account.addStatement("debited for FD " + amount); + account.setNoOfTransaction(account.getNoOfTransaction() + 1); + account.setNoOfTransactionAfterFD(0); + System.out.println("Added Money to FD"); + } + } + } + + private boolean isAccountHaveSufficientForFDBalance(int accountNumber, double amount) { + if (isAccountExist(accountNumber)) { + Account account = wallet.getAccounts().get(accountNumber); + if (account.getBalance() < amount) { + System.out.println("Account don't have sufficient balance to transfer"); + return false; + } + } + return true; + } + + private boolean isAccountHaveSufficientBalance(int accountNumber, double amount) { + if (isAccountExist(accountNumber)) { + Account account = wallet.getAccounts().get(accountNumber); + if (account.getBalance() + account.getFdBalance() < amount) { + System.out.println("Account don't have sufficient balance to transfer"); + return false; + } + } + return true; + } + + private boolean isAccountExist(int accountNumber) { + if (!wallet.getAccounts().containsKey(accountNumber)) { + System.out.println("Account is not exist"); + return false; + } + return true; + } + + private boolean isUserExist(String userName) { + if (!wallet.getUsers().containsKey(userName)) { + System.out.println("User with name " + userName + " is not exist"); + return false; + } + return true; + } +} diff --git a/digital-wallet/test/testCase1.txt b/digital-wallet/test/testCase1.txt new file mode 100644 index 0000000..a5e5a1a --- /dev/null +++ b/digital-wallet/test/testCase1.txt @@ -0,0 +1,17 @@ +CreateWallet Harry 100 +CreateWallet Ron 95.7 +CreateWallet Hermione 104 +CreateWallet Albus 200 +CreateWallet Draco 500 +Overview +TransferMoney Albus Draco 30 +TransferMoney Hermione Harry 2 +TransferMoney Albus Ron 5 +Overview +Statement Harry +Statement Albus +Offer2 +Overview +FixedDeposit Harry 50 +Statement Harry +Overview \ No newline at end of file diff --git a/movie-review/.idea/compiler.xml b/movie-review/.idea/compiler.xml new file mode 100644 index 0000000..a1757ae --- /dev/null +++ b/movie-review/.idea/compiler.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/movie-review/out/production/movie-review/com/movie/Main.class b/movie-review/out/production/movie-review/com/movie/Main.class new file mode 100644 index 0000000000000000000000000000000000000000..907ccdce207d2f07208683cc53588ad7981424e9 GIT binary patch literal 2802 zcmaJ@U2GiH75?t-&X3oV#93#PEFsOrki?EdHaKQO?cfre1QzTVu#=DgCF7lmJ<0CO zGCS*pzfx!#NE`lt11|^(Rsw_sLK|8HqEaQKNbL*aArk6CU;5HYmHL20Tc_WhU1uF^ zI@&w;o^#Ln?)kfC_QLG%zW~sWHJ)U?Ivlw?s$)vWwA^xa9Fy~L`6}ut$=TE4>nQ7Z zP)DGnB6*=ytjgDnjuSdgYIsP)!vg9~*K@-mfp~Y%0fEG@Z#x3ZMqJO?S1nCC!Gtwg zBqufE7p&p|D{v*cs-jQS0jFl}~-c)ux z3|wz&FgmBm10?E#U4f;RZI4Q@5yzVfrv*e_z=+^?JE7$kd8BX!mQZeg#R=xb+N&fk zOSEzKZigr*C>cbH%X>QQEm@vTpw2}Mq(?=!5;nBw&=ZdBhIGsdrl^*(%H^V4utL}O z#+_isEzp}y^Ws2LB(sv;wLp;JQCzQFC0b|0|7z$Kv*QKJ^PGUYOS~xZV@IPX(Dyl7 zdduzc&?+1swaQTzGz_tJM4zr+&)8(P`?KVAqdk8(HPb^}l1SMsb=MA_qoPGB}nH~ph#ltA-@<%MSG zo4z;cTY+uh*Ep@=DFaXA3_URL8=Mwc+cKfxdzFw%mF)1`if-<*Z8M5aw}Ic{tbu3n ztbymG`73^Suq+D(L#oICQsa3kXOfZKU$(8#$?kTFPUx78jGKO7?ztyF!DP$HzzcYh z71w3pC7dzvGR_LLv$`H=R2A`F!K*CWYJ@e%CBu$TTMR>1Rg2U|NSYIVnc!OtyoT2e z4C0)DH>7z>^WKbAbZyfw%Oc}lnxC`@Cn&idO}8o83YJVbtG9Kj#wL$B1s2*oR^t|4 z$$F>~Iwkf1UlwJ$QIxKqy_5Gfq`YI5SeBg;?3HW*tt^F#JT~3E@HWf49+Nh;K=ZQn zFN3abDiL=6hSbwN=VT}w5p&wzvk-f(0;ArNXSGeqJnLmEs5m5l#31&P1p5%ZRg2C3 z!q!J_TctW#i8_?*TlxH=C+f_5^HyqHHZEj`^I+8~R`OGxA2`ESg$6Ggi^GhT>)Fo9 zv7@we+Nw-9x~`T~B5EHamWtPr z_zcRS^H4`VgLdd+=;zs}CY0UvxSpO#B)konGd9h}jX1PPUy_+* zs;iD`2HJZw?eV@$dxAshV@~S0wuXTkcGS>+C4$l0gh(7o8&Oi~*iggL8ro$(HZqL0 z+26_KCN5?9#39S)ZC0Bs9G&ISfu&f3Ww?f`UM%PTrxb2NCw5~64kAqlmecrEIF8i_ zk>PjjDx9XqGq@UWVJ+Sz?*pvECv^97bm1!^UBCuh#76Nny2Weg5$|BL_z=C~57;99 zh^^u)Y!esICoW>U_y_vMKamsv!j0nJ7!b1>y90)D5_iyaa7($f>j}gP)S8(LNOel;c0Irkp~1u4A*$p^a9p<2n6E(zca6X9(@I zXcd0OT?3zsq2{?4MHg7D^PFPfsmrcph#|0B~E}>%K>3S%+;=VP2vpmh&goHa)FpQXEY0D-?OWIru(kRw zi(f75v(@mV)ArqY^oCK#^;{!*D^T;g1AqRTcWgQf{N9O$1J3Gx>-rYf1eQKVNmP6i zSlrzkv2d7%N?^r{5_LSCj8*2#am=LYrGbn`GK;it!%}e`i5RNDS literal 0 HcmV?d00001 diff --git a/movie-review/out/production/movie-review/com/movie/enums/CategoryType.class b/movie-review/out/production/movie-review/com/movie/enums/CategoryType.class new file mode 100644 index 0000000000000000000000000000000000000000..8cc146c229df144b3a9b9a8a9a9df5eb4de6c01a GIT binary patch literal 1043 zcmah{?{5-85Pb^=cU+HOCswK0+FC8p+A9@5L7FxM6B1$#AWHmn;EC59cLolU{#Qy9 zYc!gE_Kz~oZi%JQl)Yr4T^?-};9^%HYq8jk7qjix`e-F_*zNQ7SZdZyDhhc>61aZ0W^AZq7BNwOpG)@;}&ARitV6UDF>Ai7A-n0j1n?W|#NosH@c4^36IAsM%`M8xMQdbDLM4 zoS(!lFI&ScKIxQ(0`?g)H;qn18c#K>VogIF2@OfU=}0idu3E@-F@$=K=TgR0HaDmF zxO-ytd{Xsnz6%w{9F0nIu)kBd&RRMw&})m)QvtGZqk}50LZQnRA3ci|~B9tLrizaOqeVm<=d+CQS@KOhB3uBE F{{TWa+vNZN literal 0 HcmV?d00001 diff --git a/movie-review/out/production/movie-review/com/movie/models/Application.class b/movie-review/out/production/movie-review/com/movie/models/Application.class new file mode 100644 index 0000000000000000000000000000000000000000..ea800ee248e5a384e22e609c56560d4dfc8ad5e5 GIT binary patch literal 4531 zcmbVOZF3V<6n-|{&2Ey-OCv2tc_~`4uhw@lX^Vh}XbMOX#rIHRyO1U&O;CJ6QA9_- z=qG3V0rCZBbksVdj)Q){8UKJkK!1jc&)K`X*`{HPoq^lu-gEAA?m5rdd-K~r-~R;Q zUc4X2W;iBJ#u0%NLky>6sK~G=Lsf>FiKRIIo|d65Tb2biWN6B8Muu0!@T!Tkab)3G zcuoGkF2frZ-n4Me!dn*Jws2n7-ZAm62BW!Lt}kmy7f+VXlqQ-Dr!p~9S}JIW%{ued zQlnWfYsjy*PO538RGpugZPcCWe4#j3Tbx*|opH(>Pn0Xm6Hk)3FioPUyUZAcb+F6` zrAuSh%Y?6x#|!VDwX4${b~n33aYk^ zHR)8H#q2Z$%^gS%5sN+=22bzn=%k?9r;}x!Ci?z8@7(s-z^F zUKd$N`J|V(FVg;Q2)mR&1L_I zcJ1>xT$h8#PnPEzh2dv3Xf^qK-Lr*Fyo+m%g>s#hlh1fiZYi=P+{Iw#nil0!q|H{g zVCov{{xz9Y)?l6vX#FfRE$(2c6~JHW4Mp+SlCzD{+$la3?#;v3$$d<$xl(nnWX~&R zp|rf9E-&6>`%t1d1Yq0JokZ`SjNL#u1Q>#%^PmhKT z{+AXOgJqnpHS2TbM;y5?Goc&s4ynD35sdQwYxT&ZJTWt}u?1Ug+#y-7DyR8Ft8!m*H7Fr(t7DdzHfOrc*f~%4b7-Lv901*|>oB zWVp!hb8JABX^Pp64S0p(Bsn%9-l{g7r##1CK^wMF#>=cjE4FG$icnfwDpyZv7!NnB z_pW=dL#VReVfjw1^7k7&)Yz+%D_|RcqHN}m9)tf`VrUp3if|oL?O=W@=PZ0Mzm0Qh z5X^7qoN@&7VWf$vCdV<_&Y_10m>l^I+Q<)x9QzJE-$HLeqXnZaXttpB757Il&T$J& zj=j+NlPQfGa1%D*HuT|6^rL`{xPw+(#lr+wLChZDZaK>YXL1%}{80{qXbxH0c3EQs&Nwl3Ld0mnRNW%8*Kw`F&q^?WyAW7K%9Z0Np zlJs>+3M84tlt)tJ-w10J9T}yxB3F+qm#S>sW$9NQUS;X)wcRwmm1MHAjl2U~iC`zu zL!BcS-9}K29FA}cZVe*rBHGeC2E7-U2GIqV^NxN`)v+X(7o3rEQk=t zn=*w33U6gbFTosNLGMelp3LiF$myQNl6Fw0RNin+>;!j{l{0)(Iv;gS(ZIz1P`fgD z(>1X*yj`Yi+SFOd!|IrxkUjVS&*KFqVc;TOB#N-~=kXE~?BPAJfD)08X$p9p$iOjP zn{z}_H2Bz@ATnK9{y_X17j(*^X_Nw*c8wIRc|;caVE7KckG^`zbBl)DTAuBzp0l~y zx#i!%;BB$iY-#Q4Y~x0jiN9Ht;yA-n$xB-N0a-riH)J=gpihKfL4S6m!b!n5Dx4CW hQ#dX7CWSMCZzf*BruN52^`Ckgik@T|=G`t`_!nOru+snl literal 0 HcmV?d00001 diff --git a/movie-review/out/production/movie-review/com/movie/models/Movie.class b/movie-review/out/production/movie-review/com/movie/models/Movie.class new file mode 100644 index 0000000000000000000000000000000000000000..08a781c61eabd92e76d9ed89011fb628631f11d5 GIT binary patch literal 3553 zcma)8>2p(66#u>CZ3!=F2(%CZEm$>83suCe1ym?#u?3`nfE$nY*#^_3q$%#ZB8vNh z%Q)kVAM6)q)EOHXopJOF&iFTp`aAc&ENvshOndIR=bU@)S$^lf{PoW-zX8~S^Ko=x zJdOZQ37Lo?j!7YTAt!}AEu{sZ4 zn?Y{2=8O5tb_3nnrFSfq3?1t}Y{1-E8s}wg!}(&ccXsMTP(J9NC{U6fE{*wx!+tq0 z`%q|BCi61}Ru7MrrutOOq~k$hrf)>@VAeQLnvG7_<@N!cbCT?V z=Cq^PZYG|{&xBH)I;BiLCdOg@l&}KvnWoFzTU0?Z_G(7q?cCOGC%fQwGdm zC2s7K4YiKHt;s-3;>x6kBCQU0iP4Hb_VkE9t@_DHP~ddO{NgT&+kiXi&rE7aSo;qQ zjqDPP1v9gS3NhSON827+He!lvR^M)Sg?G7?lEydtGFqA~j|IE)0<5@#$0nHq4}Cc6 z;2jU|;+zK`cX_x8H+#56NLENUavpln>tQ1{8R%#YJP$|kkcWN@c-V?<9=79N2k&`! zA0K$QQ~d4`gS&;hN63fx$iq<(v8xu(}`|`F}*}*{>tkk$t9V`u(iW58X6#`d)%=X&; z^mI@p05`T8qa{-v){OVA<;+}FeeCM$!T(odJ>TOlKKV8xf)jEPfr?s*7PS&EY9(gW zO4x8+4ue>`mGn05zCaWf*Y4a!7`aP`R1uwrnd_N{mFt~{om)2#C)aMy!_6h<5&KEG z+Dy6uE@>M~q>!ZB6-Z+>={l^$jc6xmJ8(NKw&)AE-oYKOQh^$ZlTagylVGEYlWZ+V!L z*W$2qVNux2S{~-awm9rAKJ2wT%t@~wj*!y@i~X?Z=0wZG_u>BVa6ii{J+TD@W~1M_ z+>Sckp)Kk?wG{}ZOFLTov98sRfLQ$OZ0*OsRzHF)@iT~BqymISUTX;HYxN_z6hFK1 zKr27)wfYfMi=PKERQD5Ah_`dMESRgS*I9;G{O}RievE+A5@UWBdvf2yGB5P}f%w<3 zq8EC8=NG0oSH&{5CFAw-|69>gh`@lPzvn3u794&KI$ zS;g|2uXMjflXSnGvBbu{jPx8587pHq8LjAdXtbi=%{XG@hDJ`ttr?ku?P$|HYk)nb zQ>p{(B8D--gxm2Q_VOW#kmj+EvM3H>4ExEMIK?(SOwPhHxDN-&**MR)a+I8dZ?J~8 zBYd_F@y<0jVoBK*;q46@BFaplJmQ1r~$B~){BR;c|xpu z0u}?71PuAqYB$D*3{>9GbE$!?=C-w|fl2An@fw%-3T|rO9ITXod>b|F&&nNQwLaDP z()u^fDq*VM5|K2)P4&#d%~(~mD;0aARCZm()@T*`qEzfkc*;?#wXM7HAgjkP!(^g3 zi(_gmES$lk(h_dnq3u64s za)g_R>~gS_%48dq+H4jmlXlp3lZMqoS!n1q8#Zj0h-uC^_`^##2d^_1c|(u3d@Ww|EHCld6jNY`b#A?jx~ZpM(pjDyc*|H8p7*>5}W z94t7fh<4G&qJq=(?^gYLWs2#U74NP$QS<6c6Z5TRwZ1f|U^Km!ub|2b@kM{V(yXqv zs*SqBz-ohmbKWXXtrOLHwRKV5ih= zarTs?em2~eOT%opv-o;A>2P*;PU*!KFP+uMmc@{yp*JlJp|qC&)rMDNLp>QUF0A;K z*5vpN;@#+-N9RbvY_yjBrb0ph8S4%&sqG;{N;~w7Y$)*Qu_d)zXqJP4Q^=B-Z+VqF zv)-DX1sNC+r{dMmNf+eMvbVk*jMKbyxjcK0jA;7n8?_c`5-Q0Z>$y5M7P`b~H3H5l z#O50t&5D1%Dr|@cBRwM2bny~=8(+Fu!m^7p#$6o3h>I6+*u{$?jbcP$|1(J9;xyiI zkwe}^R)UX;S`euy%NgVuyz?VCy-}?#3goGvlOnonW}q9Fj)oiQHY}tHd@u%#MP_ivjn5*)fXG9fs)=L^|k|fZ+UBLew~yr z_G9NR!gktW;0U?;%wt0B@F@WdLWj}#)1>nv?_bZR$n=%iLc3|gd#aIpDsNAN)3 zVA7~hu(k8%Sl?jMuTQYOGdSKi_=ql7$}X`_aZ0B$j3wBc^KCrTz= z5+y5RijVae=?6$;%#0OsN|tOoB}-1m7AL3UWM`Z$CquXv4G}e%+0CHp?U~)jyEw+4 zhVdPa^Sg*}a#g%XTa>>Fd2ozh%@v%-Bqb9!FpU$GEPTx`b&8UWZ#nmqlpLJmodqOp z=N}|(OuJ98&&K=w@2Dp@5Qqa|k-7Ph2AJ|zr5R-km^(j}Fy+kc@=X>kZq-m>Nkz!C`GUr7l@|dTO_|fpk&}f?B`GL6$J0WdP;B&BB&HW zgHliF-qj;w7>2p!u;pX)nmTS)$gS(S(@JOJ$3KJtidbQ(^5{+fhSc>(7)qzx*dq{f rOYaTjSR2FXeSw@1`~E;qihO`e8=0LCPcX;ey`1jAr0@}Mir~V38PC6x}zOSJFuzfl>kmi=wtk+X$j!N>PCVm9}7C2qG{|$2OQp%>(5}@CW<> z@`VrRvcaWmx%3OJtv zrON$+n{~^LQZ0Kvq^GNKrcf@_&ngU#?v6aRs-T^(tTRyGT%qhPG)il3b=g@fQj(mj zPbZv?L#aecSDe}J9hFcdXwd@}q+kK}(PhjE~)W=geXN3{E z{YO=?TIZIY00-fC>JE2o^ySfn1jGHR;S^a|7fV;y?z#E;)Ywf0Rq1X`pi?JoAiykg^8uQlmBww+4B0q@$;s~$~)y5seq%h z>C`s;mPSX%W|`o%#o758RzPf2-CCnqS1{YD#XRI^kvQIcnN_d&Bd8Exsx+#3_hLaN zBPI==lsUC=6n9N;2bFR<{cQ(mu>{6n%e&}{=w{BWnR-CrO%U!9$~KC?*RY;Cz^ zeijpZeTln1l%P;v&}HA6$$z!SF+M&A`GQ3ekzNo*q#fSQPH^u59}c|2b%duo)JM1< zPCtc8|Aa^r(QRny%r^A&4=}c2eou9Tfq?_ixh9~Ym;d^(5B&^1fLA@87Y484I8O}d zT}#5Hy}@N!?ut4+{Ufv|1b$e<6UMwSwr>!GQ8E#fjLD;rY zbGpq@F5t)zRw8XBc<{dm^PZ z(bKZ9b2?4zoRQMS#(0M0BP3FK$_N=Hawd%uIV)v~krf!3DXV3qJ!V2tZ`#7;-0~A` z)B6x_;RMSV#5Xv}iHq=m0dG?lMH+ejfS=%$UcyDZL!@IKAL3mi14YJukH|!o6MCA+ z!uz~41KYIzLa&M3a~v=+#Xn0u$3Y*)!jPf)aQQ6KS@C)fwa_Qohle^m9C|x@ojFVP zN}f4CjGCmMLGP9RsWaNNNBMC7)FuhH`ZJGUPBhVbSLAk16Gci3G?ui%S0!?~r(y>@ zCo83Us^Ps!J?mc>q!q;?J|Io}(ZDr)L=-_BS8$H0Mrm^r=ZQ2XJcJ8Gx<}jBFkVog zkv64B6_k2G^UgUUf+`~SC~ie5QmtBI1>0>V`{-7$*MvX)z%u;7n3(?MdMl!+}P5#w*v3% ze9inFT|u1K(mZrUYU-sg YGQu8f(2E`-^63!3KA9VI(5DXn00qZMq5uE@ literal 0 HcmV?d00001 diff --git a/movie-review/out/production/movie-review/com/movie/services/ApplicationService.class b/movie-review/out/production/movie-review/com/movie/services/ApplicationService.class new file mode 100644 index 0000000000000000000000000000000000000000..b93bbabfea362f5cd5ea6f1e7e8512aa874a88aa GIT binary patch literal 6332 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 literal 0 HcmV?d00001 diff --git a/movie-review/src/com/movie/Main.java b/movie-review/src/com/movie/Main.java index 5cb110f..82ced35 100644 --- a/movie-review/src/com/movie/Main.java +++ b/movie-review/src/com/movie/Main.java @@ -37,13 +37,18 @@ public static void main(String[] args) { String edit = line.substring(0, line.indexOf("\"")); switch (edit) { case Constants.ADD_REVIEW: - + int addReview = line.length() - edit.length() - 1; + String reviewDetails = line.substring(edit.length(), addReview); + String[] commands = reviewDetails.split(","); + applicationService.addReview(commands[0], commands[1], Integer.parseInt(commands[2])); break; case Constants.UPDATE_REVIEW: break; case Constants.DELETE_REVIEW: break; case Constants.LIST_REVIEW: + int listReviewLength = line.length() - edit.length() - 1; + applicationService.listReview(line.substring(edit.length() + 1, listReviewLength - 1)); break; case Constants.LIST_TOP: break; diff --git a/movie-review/src/com/movie/models/Application.java b/movie-review/src/com/movie/models/Application.java index 6ed4ee8..a60547e 100644 --- a/movie-review/src/com/movie/models/Application.java +++ b/movie-review/src/com/movie/models/Application.java @@ -2,6 +2,7 @@ import lombok.Data; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -14,10 +15,10 @@ Map movieReview; public Application() { - this.users = new HashMap<>(); - this.movies = new HashMap<>(); - this.reviews = new HashMap<>(); - this.userReview = new HashMap<>(); - this.movieReview = new HashMap<>(); + this.users = new HashMap(); + this.movies = new HashMap(); + this.reviews = new HashMap(); + this.userReview = new HashMap>(); + this.movieReview = new HashMap(); } } From 7db76fe1337fb417ef856c4fdab57cc077d4c5df Mon Sep 17 00:00:00 2001 From: Khagapati Bagh <30410947+khagapati-bagh@users.noreply.github.com> Date: Tue, 12 Dec 2023 23:57:25 +0530 Subject: [PATCH 7/7] Added code to track visitor count of a sites --- VisitorTracker/README.md | 10 ++++++ VisitorTracker/VisitorTracker.iml | 11 +++++++ VisitorTracker/src/Main.java | 19 +++++++++++ VisitorTracker/src/Site.java | 16 +++++++++ VisitorTracker/src/VisitorCounter.java | 15 +++++++++ VisitorTracker/src/WebServer.java | 45 ++++++++++++++++++++++++++ 6 files changed, 116 insertions(+) create mode 100644 VisitorTracker/README.md create mode 100644 VisitorTracker/VisitorTracker.iml create mode 100644 VisitorTracker/src/Main.java create mode 100644 VisitorTracker/src/Site.java create mode 100644 VisitorTracker/src/VisitorCounter.java create mode 100644 VisitorTracker/src/WebServer.java diff --git a/VisitorTracker/README.md b/VisitorTracker/README.md new file mode 100644 index 0000000..016552d --- /dev/null +++ b/VisitorTracker/README.md @@ -0,0 +1,10 @@ +How to Run this program +====== +You can import this to your favorite IDE and run main method it from there or you can run it from the command line. + +Steps to run in command line: +1. Make sure you have java installed on your machine. If not, you can download it from here: https://www.java.com/en/download/ +2. Open command line +3. Navigate to the directory where the file is located (VisitorTracker/src) +4. Compile the file using the command: javac Main.java +5. Run the file using the command: java Main diff --git a/VisitorTracker/VisitorTracker.iml b/VisitorTracker/VisitorTracker.iml new file mode 100644 index 0000000..c90834f --- /dev/null +++ b/VisitorTracker/VisitorTracker.iml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/VisitorTracker/src/Main.java b/VisitorTracker/src/Main.java new file mode 100644 index 0000000..a048f85 --- /dev/null +++ b/VisitorTracker/src/Main.java @@ -0,0 +1,19 @@ +public class Main { + public static void main(String[] args) { + WebServer webServer = new WebServer(); + Site site1 = new Site("site1"); + Site site2 = new Site("site2"); + webServer.addSite(site1); + webServer.addSite(site2); + + webServer.handleRequest("site1"); + webServer.handleRequest("site1"); + webServer.handleRequest("site2"); + webServer.displayVisitorCount("site1"); + webServer.displayVisitorCount("site2"); + webServer.handleRequest("site1"); + webServer.handleRequest("site2"); + webServer.displayVisitorCount("site1"); + webServer.displayVisitorCount("site3"); + } +} \ No newline at end of file diff --git a/VisitorTracker/src/Site.java b/VisitorTracker/src/Site.java new file mode 100644 index 0000000..d7842f3 --- /dev/null +++ b/VisitorTracker/src/Site.java @@ -0,0 +1,16 @@ +public class Site { + private final String siteName; + private final VisitorCounter visitorCounter; + + public Site(String siteName) { + this.siteName = siteName; + this.visitorCounter = new VisitorCounter(); + } + public String getSiteName() { + return this.siteName; + } + + public VisitorCounter getVisitorCounter() { + return visitorCounter; + } +} diff --git a/VisitorTracker/src/VisitorCounter.java b/VisitorTracker/src/VisitorCounter.java new file mode 100644 index 0000000..679955a --- /dev/null +++ b/VisitorTracker/src/VisitorCounter.java @@ -0,0 +1,15 @@ +public class VisitorCounter { + private int count; + + public VisitorCounter() { + this.count = 0; + } + + public void incrementCount() { + this.count++; + } + + public int getCount() { + return this.count; + } +} diff --git a/VisitorTracker/src/WebServer.java b/VisitorTracker/src/WebServer.java new file mode 100644 index 0000000..ea9c058 --- /dev/null +++ b/VisitorTracker/src/WebServer.java @@ -0,0 +1,45 @@ +import java.util.ArrayList; +import java.util.List; + +public class WebServer { + private final List sites; + + public WebServer() { + this.sites = new ArrayList<>(); + } + + public void addSite(Site site) { + this.sites.add(site); + } + + public List getSites() { + return this.sites; + } + + public void handleRequest(String siteName) { + Site site = findSite(siteName); + if (site != null) { + site.getVisitorCounter().incrementCount(); + } else { + System.out.println("Site not found"); + } + } + + public void displayVisitorCount(String siteName) { + Site site = findSite(siteName); + if (site != null) { + System.out.println(site.getVisitorCounter().getCount()); + } else { + System.out.println("Site not found"); + } + } + + private Site findSite(String siteName) { + for (Site site : this.sites) { + if (site.getSiteName().equals(siteName)) { + return site; + } + } + return null; + } +}