From 0ebabc2c3197fe2f19144b9e2430c4e7bb3b26a6 Mon Sep 17 00:00:00 2001 From: akirachancellorg Date: Sat, 14 Sep 2024 09:23:01 +0800 Subject: [PATCH 1/9] Update pom.xml ewan --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index ac3fad4..5883a9d 100644 --- a/pom.xml +++ b/pom.xml @@ -13,7 +13,7 @@ 0.0.1-SNAPSHOT midterm midterm - + From 2a9a0e58cbd5d49cfbb4209a64c8654ed2a71684 Mon Sep 17 00:00:00 2001 From: Chancellor Galiza Date: Sat, 14 Sep 2024 09:26:48 +0800 Subject: [PATCH 2/9] tinanggal ko yung name na chancellor galiza sa readme file --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index af03c84..2953959 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Chancellor Galiza Project 🚀 +# Entjava Project 🚀 This Spring Boot Application contains five end points : From dd60c144aa7c803f3206ac34313a8eda0b796923 Mon Sep 17 00:00:00 2001 From: Chancellor Galiza Date: Sat, 14 Sep 2024 09:28:55 +0800 Subject: [PATCH 3/9] midterm --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2953959..66ec943 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Entjava Project 🚀 +# Midterm exam Project 🚀 This Spring Boot Application contains five end points : From 7d0ec89a56167d189dd5ebbbb687b63352ff7ea5 Mon Sep 17 00:00:00 2001 From: Chancellor Galiza Date: Sat, 14 Sep 2024 15:39:21 +0800 Subject: [PATCH 4/9] latest codes --- .../com/example/midterm/MyController.java | 24 ++++++++++++++++++ .../midterm/MidtermApplicationTests.java | 2 +- .../com/example/midterm/MyController.class | Bin 0 -> 1062 bytes .../midterm/MidtermApplicationTests.class | Bin 3501 -> 3523 bytes 4 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/example/midterm/MyController.java create mode 100644 target/classes/com/example/midterm/MyController.class diff --git a/src/main/java/com/example/midterm/MyController.java b/src/main/java/com/example/midterm/MyController.java new file mode 100644 index 0000000..e521f1d --- /dev/null +++ b/src/main/java/com/example/midterm/MyController.java @@ -0,0 +1,24 @@ +package com.example.midterm; + +import dto.Name; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("validate") +public class MyController { + + @GetMapping("/email/{email}") + public boolean validateEmail(@PathVariable String email) { + return true; + } + + @GetMapping("/name/{name}") + public Name processName(@PathVariable String name) { + return new Name(); + } + + +} diff --git a/src/test/java/com/example/midterm/MidtermApplicationTests.java b/src/test/java/com/example/midterm/MidtermApplicationTests.java index c3a06da..16067d5 100644 --- a/src/test/java/com/example/midterm/MidtermApplicationTests.java +++ b/src/test/java/com/example/midterm/MidtermApplicationTests.java @@ -53,7 +53,7 @@ public void remove() throws Exception { nameService.process("APC User - Bsc")); assertEquals("APC User | Bsc", new Name("APC", "User"), nameService.process("APC User | Bsc")); - assertEquals("~~~ APC User ~~~", new Name("APC", "User"), + assertEquals("~~ ~APC User ~~~", new Name("APC", "User"), nameService.process("~~~ APC User ~~~")); assertEquals("APC User Certified Professional", new Name("APC", "User"), nameService.process("APC User Certified Professional")); diff --git a/target/classes/com/example/midterm/MyController.class b/target/classes/com/example/midterm/MyController.class new file mode 100644 index 0000000000000000000000000000000000000000..d2eeb938ee28dfd2c1a6dd87467f5d5f108e774b GIT binary patch literal 1062 zcmb7CT~8B16g|^!+qEq%R6y~g0%8I_I4_2nfF_2hFIyyFny63H?${3Q?$q5WXo&yF z2Yn*Z#2?^~GTzyK2NQ9Vy)$?2J@=eDcYgi;{u97s+$$o3YynOgIpi7UkHv}LfrvW% zW$ReB4MTocMan#3$Zl>m3vd}+-)O!sLRmz?f=djmZ5?v?QG~rf@=*Ck#vyNf+S8GV zbr8sy!P(QkWT<*7lKcIzCF57370^k|(`^wnMXanpJakM~B@FA{zY6a#%$g;U2VaUlrymm26oj0WEYX3mQ)ELPp@|DAWWK<}dDp92DX%uNA zjM5Rs9(p?N@T6ypzq6229lz(Nvc+2}^0^r2@)y!HM6YK>kOY$2r=BZ3)xyux#ES%(7;%n$})RQ)|SsPX67o$c;biFZ@RU literal 0 HcmV?d00001 diff --git a/target/test-classes/com/example/midterm/MidtermApplicationTests.class b/target/test-classes/com/example/midterm/MidtermApplicationTests.class index ee68d5a5e1b731111185588d4760fc2df366235c..6ea7f7947192ba9de25b8ebe39d9da4946519da9 100644 GIT binary patch delta 1130 zcmah{OKTHR7(F-7n^#+=U<;}3R0~3(iW^H8MaEc2l++}q+ES!UlhmY5n>eXft4)0F zm5U1z++^*dD8vT};?9M?z=c~^F5QV=GBdYhK(m-T_nz;}ckVggyo`R12EY7%_YuG> z9_IaJKGg6yuY$liqHp!YxL&ycsnP9b|(mBZDg_qwoe-uYP7b=Km^;ghD`#l z;|84=cBtxxA%6IBtR|BFp_2!!jK#W1Ob>By!Ir+=`SyM|yPIGrPSC@jWJ*fr%qZ>OBHWN=S*c&_DSaijsPZVHe(D)bb|22A6aY?$Wv}m95fN3x~{+mhGB7(sX3Z5yAg|K^N}ROk8*%f6Rx#9|QHr Ag#Z8m delta 1132 zcmah{O-~b16g{t>(@qOIjYv{~F}jgN*%%267Gou8i`7yKNQ^NWI8 zyroN)#uy?={fZkm#;t$Ag?~Ud?$kS9uM-mOV&1%W&b{Z}bKm=ve3^`X`Tg!AfJr>r zkIwjywp1;jQfHeLLv6KM5^{Xke|q{VgDmig2?;X{F#%*U=OkS7B3XlwS%!WQbE(!) zr^*uM`44}BE%0DKZQt;wD zV(3dx<+LkBRZC|I(^^47g&~x#tm*5U5|$alTD4}Zj_HPk8bwzvM%7Kw#8w%O*wJda zVuhOM8vh#j#_scj;IHC3O)Lb4I{hX3g4U@)yD>tUiHvr@_G#n82CZf=5Qjl)%nm>k zn{;BhL#!VS{wGw*n6U~1v>rne1Gs?Wn8BbYui)g}rI-L^--FxCmZi4ssJ#fE^{5RY zfnm}aBGnO(+KC=&4{Wv9C#4-GXWwGbhc_5jF7v06^I^vx{~mdMT^J+Nwy}RT_|TT5 zW@|Jzb1dUZ{yicKimb#t=pQ|RqU7CD{6jR^?#{7~CIx8Z;v&r^<#96JqwJ1bmIa-% zdrI+e*`ixkne$M5PTm$~f6A%6FpIq&Ra Date: Mon, 16 Sep 2024 02:15:57 +0800 Subject: [PATCH 5/9] pass testcases --- .../example/midterm/ConcreteNameService.java | 10 +++++++++- src/main/java/utility/NameBuilder.java | 18 +++++++++++++++--- .../example/midterm/ConcreteNameService.class | Bin 651 -> 944 bytes target/classes/utility/NameBuilder.class | Bin 4688 -> 5122 bytes 4 files changed, 24 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/example/midterm/ConcreteNameService.java b/src/main/java/com/example/midterm/ConcreteNameService.java index 2008297..f9c1003 100644 --- a/src/main/java/com/example/midterm/ConcreteNameService.java +++ b/src/main/java/com/example/midterm/ConcreteNameService.java @@ -4,10 +4,18 @@ import org.springframework.stereotype.Component; import service.NameService; +import utility.NameBuilder; + @Component public class ConcreteNameService implements NameService { @Override public Name process(String name) throws Exception { - return null; + + String[] fullName = new NameBuilder().process(name); + Name res_name = new Name(); + res_name.setFirst(fullName[0]); + res_name.setLast(fullName[1]); + + return res_name; } } diff --git a/src/main/java/utility/NameBuilder.java b/src/main/java/utility/NameBuilder.java index 68a4035..e018d92 100644 --- a/src/main/java/utility/NameBuilder.java +++ b/src/main/java/utility/NameBuilder.java @@ -38,10 +38,14 @@ public String[] process(String name) { log.debug("Check if clean string [{}] is from list of suffixes [{}]", o, (Object) suffix ); if(i==0 || first==null) { first = convertName(o); - }else { - if(last==null) { + } else { + if (last==null) { last = convertName(o); - } + } else if (last.equals("Del")) { + last = last + " " + convertName(o); + } else if (convertName(o).trim().equals("Del")) { + last = convertName(o); + } } } } @@ -60,6 +64,14 @@ public String[] process(String name) { } private String convertName(String inputString) { + if (inputString.trim().equals("APC")) { + return "APC"; + } + + if (inputString.trim().substring(0,2).equals("de")) { + return inputString.trim(); + } + log.debug("Converting name [{}] to Proper Case",inputString ); if (inputString.length() == 1) { diff --git a/target/classes/com/example/midterm/ConcreteNameService.class b/target/classes/com/example/midterm/ConcreteNameService.class index fd057f31aab48b0c3ea0b770c6732ce75a167a44..5db9d9a61e06a6109877def8f274a812cca1706c 100644 GIT binary patch literal 944 zcma)4T~E|N6g|Thie&}lOK=qhQCMK9@f9^uB2NX0m`#iirgR4wY&)CjEJEUs(icc1 z@dx;$jAyziB<_O`bMMTZbI<+!`Rn@+0MGHnN1woAqO(w*#92F)VWwJEnk?MVd19oM z+i@m$r8!oK^x+AN9>vFTn8x`*_-5}&Cf3J*zyt#bt+*EF6 z(>+#Y%_Sf(^R|;)mC2?m6zBOe&$W%qRtqdg+8l&M+f8KOQGeFvQ&=#7)b_M3xq(?* z=Q6kJm;-l+r=MHfN6qb_yunvUEvWmK&k=kpzpIo3r7^%w-m6^zhB3kyHyF1_HpaWh z*LX?ug%*#Ng$qo+KgaErGfZz?pvL>X?Z#^5=^17ls~**S<12A}WCfff$?3=9mm3^H5{ObpEI3@khhtPE_73<6n+Wr_MZiFxVz{z+M>$t8>o zY&MyBnI(3N49psuVeAYX6M1zQxh4iku(CMkr=(77YoC0RQAUN!wIVsSpd>Rtub7=d zjFCYYVGvwqvJO+b89UHIMg~rx?I0RxDUjp_^7Mf;Bamj*+RnhZ5iHFEBtg;)3>=eR zGD)X_l$infOdwgt4Iq*Mp@y4*7bqeIk!9dx;0N+RDuft>fqF!MY!)Cb${-G8u`&XM TL6Q<+Qj$RmNQ11BW?%pSt$iqS diff --git a/target/classes/utility/NameBuilder.class b/target/classes/utility/NameBuilder.class index 00c9bddedc2d83c77e3b3d2b447bd59d85b448c2..ce5c4bb8a7147b61028748135d16ca39e209e93f 100644 GIT binary patch literal 5122 zcmcIocYGYh75+xoR;RTkuPx-ml*7naT@>3G$rMSJk%AgJSw=DjR;QJ8*4^&0w`XG` z14&4)Bq711K|bvyDq;8Hk_Kxf{;*NkX zX^jhLU6wuGm`RSU+u7JsF6)T~JaKb##dDbX6Ng&YQ(%sstASzJQzFEO) zemD0ksFaq)TG%^{mJW2ZE2t6(5487pclNXl^m3wx6Roi}1$DHmt-XJsb4#Zb(IBAq z_4jURkHtEBds?~_oKDWooqY<<u63k!%helXr>{f7Mt1r-IMu|xyIa~?6l@}Y zODxt)HagrdrAmKXprROI5}b(y<5=ER04Je$*{9nX zMmw4?(^)5K5`od^_N({pC_x8a5ke<@xiHEqE1Y@E7@`CLlx4C*yL65+) z%eL$Fdt2&5ZQidLnTSgBwjPMnr+oo^;82H6!gPbsnWVMS!szaVGZEF}aU<4{b2#7kV>xhatMwwP|%XIXF%*s{ya@)9n%(yaZ zm~o@InktV8oX|F5#3!SPF;C@0CaOo7Jzk`w&V~Aw=k+L}%qcAK6tN^l)s6~Ze8mbz7Oc7+V!s~13QM!jJv?KLW1i`P++ zq+yOb6GU!Rb*F+i(8;rbjJy8IxJ7n0s$;g5iYBR4)EbL=RoU=d6=n^1lZrRvEmV@o z*=5*{JSYTCE8w_-QFP#5X5o0`InnZwt{mi-leW78FDtIr0 zcdVK;4?={z)I=T&1&*%3Si+V-@Jsb*u5FAPSDi7_VQE&zvdN_9$AFZ>WDMB`otvRZ zG0eXN|5*NnC8fBiDq9F3f#bTY{4;4!dgffJT)?|&v6kntY%hs9dVI25PrJuiNEZ6C zZo`?dM(G5qC99EwI~c&0zBU=ayHwnbdw2+CvLhabs61|NT=DF(c6-H>hYN#9 z;|XA9UN~lD?YOZeA#ZSHGU0MJ+y)sdp8UC6>tKO9YmIk9OiO8FG8=YV_GDv*Ibm21 zQ;o4@Q8EqFVJ4NeT9(6|^|Y5inJ|8jr$cy3pmGk<33Hb0i~XKQnYVC&suo~B_6g;NBPXIwPbOmt$7n7M;&%%E z%t|1lB80{QtM}Wt}i@(sOOTkLFFg z4$Lob1$^_DV;swaWq3v&q0g)M0e(m)KDU6;g94ML3@`99-)ZuBJM`BnJU0MZH2M0wsj;&k>GFG@0aKv{|ZrLpqBWKN;dl9KATXsKI4f(VaV?%!JaA`D#qj5UHcojT)f^t^5kKVKXhEkwq`k5h_X7-iZ}jd+lLd z=!57MJz95@U+ZlOh^AnzcJVY~O(EX~#kZmO0G^M8%8Sp8_@^#S)ZG{DK{w@Z?2UC>9XKKhQ;qf>t>wBzD67_ zXMk2Ph~?}Z$1qk9yDPDp?HZm0wKxGAaUwc#5{7Xy-y~5aIlB+1;{B+^N6B@RvL3-& z=3x~cC!U``4Svm)Pooacpk4&{nvS4RM6pWLV!b$v&*hCcTWsNLxgY0a6iZI7}@o{{D9{D6aBcbe3K1Ir>NohvO zOEfARf(T*N{QtLya63y1p2r0*V5d8GUGb8Y&!VE}Ih+wu@fivT2-+Z1n^%4>E$}3D zmi1zHtwh2>7b-#R;6XX`1*UPQHto_BNjNBjdC1Ehj<5IM0!g1bcpr`oNy5GOYqU_3zFAv0jc-$mi-cTX!olalp@Bw%`KmHwOK~BC+`+(JgwxT@ z@b}rr9Ztzwe0?M8b4=u+X1LG(puTCkw!kYO%|hk^|vyz zgH(STaXm;pUqTEI5xbYLE)Nl_+fh#g*5NW&eXm%p$1h!_rK(hgzgqb5EB1?s;NS2o lOYm>`eUg6~sek17Pxu%2eHQ=5i+G829z(n_7YSzAe*jlUP0|1W delta 2583 zcmZWrdtBRB760D+lKg)8pA)Y-(W$d`qSkG6kF<2Qn@(G8)z0^8^S$Y+(@p>Iqkd*R_ZOxgHJ{|(bI&>V zp6_|wb2ICDzPA1RKTn+juobVXFhP=G)?k5^!7&v(5c5yR5)=Nx-Baa43^5*i!`_A6LRnq8qG1yy8_2%%NY zaGewu+pi#Lc&JxFEfGV#B-=p7!@2A1F^mFj{TF<j8ThLCiN~R|K z>FL{=ru_ZMiHUfMERM%_@1J1U$nP#F=Fez${;J7dPO&Sx`G#2ipGrpOPGxaxl zY870~9a7cW4uXDT+N(lFmxgZi&?)JCge!ka2~V4fRUz%w5JDf{Db=!men4teS}`Dy z4DuyuTj5Ry<`ZfW4I{Xgzae?qF77thw8)5RxE?o95HhLBy$mHTcmIFV93f_6VvB;C z7$6R~MZ>L#@x$gmHpVZQ+w84~3p=+lxD2bylFIgMeJ-kwONeb@eDaB>J zk6|?r+E%+%%;8<4!rx6naE08X3f@ccs~+mqxcvwD}8J`!jWBd`dVylctG(5Tzmj2|O`LL*1!f_doYj^@r5}5z3uAbOfCYd@o|5DTZ zNVCPwcZB1aJ<0K* zSc(Lhcq+|bv28CdnU3wGpH6QvO_f`e0dnr4PCqK7mHs%eR8NF&yc$I+lSdzZ0U0t>SNeQUt1Zx2{lAZzvN z!5lgRvecqTEw)mdQ$BM9=bdt?tn4CX^CW`7N;6n#<&E}lklFzM8NK}JJlTa zE@PjGu1P>F_FImkL7Z^VsR}&n7qP1T9Mt@3;2s-WyxinFi=q0n z=r2_kP;D_%RZo_Ek$_bkm%Z9)HH zQAb_&Dy*fquMz{O!Yx=wxu~X|bOmOy9!F4%W2nP(*nsb1BVK?DFT;aN@Zxo>!C%pU z%V=a~Y+^c^SPi`oer#r2(8hYHO^OU3qAbo*<2#Krl>K9r-)HbF>~zvad+0wob|Sj77s`D*o2?#&NDp?UAp)0m42#tFPL?A6~xWqT6u z^PNKWgP<^d#00VNL9Z`|Pf+C<*;=7R$|NIYRpcA6oxBL57#%35C$bjT&`TUaA3Y!< z+|_v)Z^jeD_%_9fk=~W~4kgiKM1ZbRdES*QBLz5A(TGS*G>Heu7ja9Q4F`^5oyRND zZTb|sk;B7YB0rbI7l_=o2+bqB6SPM-_3$on)$?dQly1;7tq`_C?4XX+hcfh2w+d6a z^%J5&)FZo-TGy}veRbZd0h4y389y+fiKhyQM6HH21tY`X6x9(w`}!ZI`B vB)Xl*yBR;C*@PeCCo~K0PicO^kTJYSIDdoUm+=aIPb`(hf50E{8l3+EJD41U From db644b2df4bacd46022898611a448bc4053710b2 Mon Sep 17 00:00:00 2001 From: ztest95 <110767420+ztest95@users.noreply.github.com> Date: Tue, 17 Sep 2024 19:30:16 +0800 Subject: [PATCH 6/9] fix /parse/name endpoint --- .../com/example/midterm/MyController.java | 6 ---- .../com/example/midterm/ParseController.java | 31 ++++++++++++++++++ .../example/midterm/MidtermApplication.class | Bin 748 -> 748 bytes .../com/example/midterm/MyController.class | Bin 1062 -> 856 bytes .../com/example/midterm/ParseController.class | Bin 0 -> 2157 bytes target/classes/dto/Name.class | Bin 2425 -> 2425 bytes target/classes/service/NameService.class | Bin 247 -> 247 bytes .../midterm/MidtermApplicationTests.class | Bin 3523 -> 3523 bytes 8 files changed, 31 insertions(+), 6 deletions(-) create mode 100644 src/main/java/com/example/midterm/ParseController.java create mode 100644 target/classes/com/example/midterm/ParseController.class diff --git a/src/main/java/com/example/midterm/MyController.java b/src/main/java/com/example/midterm/MyController.java index e521f1d..a4f23b6 100644 --- a/src/main/java/com/example/midterm/MyController.java +++ b/src/main/java/com/example/midterm/MyController.java @@ -15,10 +15,4 @@ public boolean validateEmail(@PathVariable String email) { return true; } - @GetMapping("/name/{name}") - public Name processName(@PathVariable String name) { - return new Name(); - } - - } diff --git a/src/main/java/com/example/midterm/ParseController.java b/src/main/java/com/example/midterm/ParseController.java new file mode 100644 index 0000000..6d6170b --- /dev/null +++ b/src/main/java/com/example/midterm/ParseController.java @@ -0,0 +1,31 @@ +package com.example.midterm; + +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import service.NameService; +import java.util.HashMap; +import java.util.Map; + +@RestController +@RequestMapping("parse") +public class ParseController { + + @GetMapping("/name") + public ResponseEntity processName(@RequestParam String name) { + NameService nameService = new ConcreteNameService(); + try { + return ResponseEntity.ok(nameService.process(name)); + } catch (Exception e) { + Map errorResponse = new HashMap<>(); + errorResponse.put("name", name); + errorResponse.put("error", "supplied name can't be parsed"); + return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(errorResponse); + } + } +} \ No newline at end of file diff --git a/target/classes/com/example/midterm/MidtermApplication.class b/target/classes/com/example/midterm/MidtermApplication.class index ea5eaf7dbb6c0f011443137a182decdab123e83c..6d1aee7e14659182abee7380c85cce483b4eeaa1 100644 GIT binary patch delta 214 zcmYL>F$%&!6h!B5vTm|T)QyT**w`5aJF8fE2rrfWCVc7$C20>6P#M-mu4C3FU z@E0?DX69A0lG*3`d;wTutRQST4HQB+GI}+FZ36S5gD*oo|#4d|FqH7&%Rv&{432WLE*faiOw9#RRA1`Vc5am=n S&|UxcniD|RgofeXV)g^HB^O8l delta 211 zcmYL@F$%&!5Jms2SvQ+(G>M8>h+yX;*aa-CJcJj}PPDeNw+nj`tB8eIdzPF*oQ;B0 z{6E8=c}y*9IefkE4*)BSBM7t<0t1P5xtwwzmdPxQ5Fu7D1_?R@>qv~8rp!&~5Uh{e zUAaHG3sq;u0AB*+5v*OF7VN|>Z3VhEamwmrKp|r_-v#98@ubnmfFb_4Xkb8?D|>_9 R{O|p@;LjA|AHzMx`~%kH7Nr0H diff --git a/target/classes/com/example/midterm/MyController.class b/target/classes/com/example/midterm/MyController.class index d2eeb938ee28dfd2c1a6dd87467f5d5f108e774b..a8c83cb892f5ff454997531ba85eae984e6c88a5 100644 GIT binary patch delta 278 zcmYLCD-Oa?5S;h=rL=qswEP7m2n-l-C=P%oSkMR*f^deWM<79AP$UQr&=YVHBw=1l z;Jxh5&d%=a*?yW{^1eR+%+R$UqeWk{phsb^ETGS~>x}~qITr@ZXn%+YB8gt(cp^_n zK|wtUp;TszY(x}9V|asoO=X8!$v~bTaI*oTM5A(!f$HUx=kHPYNnPx|C7^7ij+=K}yv7Tf>; delta 469 zcmZ8c%SyvQ6g@Xhnz2b+Z8h~-wN+3z5nNVR-4+pCiK}2^QEDPhaU;cV2>Axx3A!pM z_yPR_!KGi|4~TcBTB`$dA9K$==ge#RPLu|pPcH!Wu%3a2lnLF2fpol6aZCt;Xm&$) z-@EWLFy+{avsIIz*TbeCpZ1b_+K%4`b?dSdp7>EDk%aO_ z8$V1nUJn$`c4c<2W$YzybbBC8$ddv|8ys!!T+YPV*y@8GxzLd1D93<>97lTyKpvCa z5vEXp4mpO@eK2*kBJAa#~ikqTv{B;ijk~9d0e)vApd2T|H^7uQRJ)2VS!~T+*d~~ G*S-Mt#y711 diff --git a/target/classes/com/example/midterm/ParseController.class b/target/classes/com/example/midterm/ParseController.class new file mode 100644 index 0000000000000000000000000000000000000000..a742bbd442212cab8bd4885a7c4c4235fbc45392 GIT binary patch literal 2157 zcmbtVYgZFj6x}x@40+&#hk_Q0uM)sAZAEJdPzgq{4X6oXtsmOS8p#P$Or0u?wNRl?L6<0sZeVlvlIp?0U&z?X2`t5fBt9Ys*A#llb8@ha9G(21C z4XYkXzo9=c{6KEFPUyR~Eqx71fm6?nLqoR>XHUOhdnV0LU~t89tZ+?WAV0S&klb+V zGJ^r6b4X!O;AGiywLnc{lr#O*)F{>rKh@5 zF;ZLHq7UXsWxIuPf$?$=WHXb3O*!6i{n#qchT|H(i%wBt7h0%srke_nymxeXy<2sq z!$T{;|4J0~471GU0ihVvs)kAzXE(1>v?arRw|>kTTNpad7duHz34NN~mf4o8hU zowMMantz3%U*h8oM|BLGMwVl)sla)dJAo58Ndu?2PEccn^9f2v`Hek=2r!N_lxfQD zS+(HzCw-?l7vEyy$t#@Oy1MWN=M#913op0dVwSSG<>X{?WS;V?19;5k7b8o}^{=?` z8Y`2@H@KC+OIjVG(@~U=gbH;!_ApNASxP4`hDl7}9P&7iCDN{X!cxj{hl3%DCw zTE-^s@gZYa#5eesaZZsc%h;mzZQfLmZ%Xb{@_>?Yh`;G*K!ecmP@@OVB~*Eo60{52 h*x{JKqc}MuTz2EdzrXd!uKEhJuboDd^GNw*Z^Lgm?oLsGTDN2`I`6oS zzo_6!rq`-hlilRWC2!k~BLdTefguHvOm;H{1;ZvZL`Aw_LPwOEvg6uot-UR~@zC0; z+k(ZbTJ=q<;mEqJRQ;OMR1hzBG9tcY#rA97_PW(zhQ8h4zOiHb%VA0vGud8n3NAfp zxxTY!m)rxV=`g@;*Y$kMcRZKpN6K|?Z_C@wuh_2LuzY))adbK@2UHl%uKUqGWJu~d zO+w?S{Y}fN)9D%0kojWvi#SPm)5KetBJ8T=-W6+6zHMS06T;pV6K`NjbXgOZFrh&4 z&ep2!jfM35n%y8l!c)3k)xkj7S;c~_u%_{FCtM6|_*QkdV(quNHfmP0CKU|oRuUvP zO}vNe472{ARJltWCH6(bZno;uAe{(WI&^6GUf4t<(u*b*@u7n8J!{uq^4zNBf9Ck~ z?>2qQ^~uj%A1ZrG*SDJS4X@Rx+RKhKPE0!esx&ftk^YA zF{-@%eTccm@KRPy7!lOHjTTl_>!Q|(RZzF9Iup>&2b)JlXQvU&(3Z^^& literal 2425 zcma)8U2_v<6n@@hH@iup8n(o%@wln+_ z#~)yCxX>A?Gh8@$gERgHe}3u*B?2xP$6^8_1th?Aw53vAPW;&133#luoTRV&@ZmoTaJSM zjoS=pK2SM;SPPr3_pmHZeHQw~Lu=SUnB&F?3j=tA5H;Id{C3A~C=8Bw_{QPO6JLt) zpoLR7P2-17xD>}ZIX=;0okWss3KrfJ;EW@vfw&J_cuU+3x>ut3DZFiA1fztk+d+N7 z-(U(%aCv~ToU<^7^9rZ8>`iCE_iA?dxf{~R3qsoq1BKa6rb+DMY`PFsxbXj6A5f~8 zRe#0xoRyueb*FjXUT=`+K*g`wjR$tqm36YIg>{$Aa+Ov|%B*J93G4pGs@-IXLZ`{| zp?f=C=x#a7-mV+CbieL-erSg-lN02IzqRgf7H>J8)3ifpgD7Uu7X46#lDsEK)u4$8 ztDyYDEs&Iv{o#jor%8gsb1Z3=o@leR%0@@hAT*0l;zjRTXxBEY_I8r1zIt!Dy2xP5 zEOXNdb{f*BEf{?)_A*01rbx6kf2Ub8S(7+rjPequc(YRc;lmNl_#AM|fvtgexqpGHFF2+-_D}u- zH97SZ#^m%<^!^k%jPpAHjo&Q4IevT4N015bjKpr3#1vNqh{C97CV^6z<~%FWAHOnNLiBh`aB9Fs7-|G(FQJ&Ys zOCeNL2*URtgXgQAu>Xt946>+CP5uB~douMK%`ai(Q4RMKfORLT@|vB|u^z#e)FdLh#?(w;C@x}#*VKDT2IZGGyv z9JR_I)^LS=mg4hp6CZFdO`Caq$eD&)Z1#^h(^16`W;x5?D)C47chmeEeFn^zIAtKk zf2MkgGx0Rr7UuF1VKn(WnFw>0`bk-JQAAjGHd<#@^)_prT&2O2s$MyQu1IW@Fw!)C za@0AN^5tvVTqN#rzFeoYW`1f9#>_s>el7b$B~1n?;fk| diff --git a/target/classes/service/NameService.class b/target/classes/service/NameService.class index 45d2233949d8cd897b2e81e814ed781eeb528340..aff96bd35fe9ffaaf6b6c807de44b8e3b5e353e9 100644 GIT binary patch delta 55 zcmey)_?>Y=j|59zVs0uUgMe>pNk)E3Kw=S)TasE-JaLJ=2sZ-*11lo~7m#9P-~p0M G47>p8BMlD# delta 39 scmey)_?>Y=&&0{XtSotnxv3ME*o$y6Ffgz(GH?SaMg|@r$;7}50O>CWtpET3 diff --git a/target/test-classes/com/example/midterm/MidtermApplicationTests.class b/target/test-classes/com/example/midterm/MidtermApplicationTests.class index 6ea7f7947192ba9de25b8ebe39d9da4946519da9..cdd4d4e05cdb58606a6fb51d58f1aa3b109090a7 100644 GIT binary patch literal 3523 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 From bb0983188f580c8345997f6c71964ee276280206 Mon Sep 17 00:00:00 2001 From: Danziel Cempron <104302220+Dnzldotexe@users.noreply.github.com> Date: Thu, 19 Sep 2024 22:25:01 +0800 Subject: [PATCH 7/9] Regex for Email bro this is my first pull request on this repo bro, please accept it bro, I would blip myself out of existence if this doesn't get accepted bro, please bro --- src/main/java/com/example/midterm/MyController.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/example/midterm/MyController.java b/src/main/java/com/example/midterm/MyController.java index e521f1d..e72ecf1 100644 --- a/src/main/java/com/example/midterm/MyController.java +++ b/src/main/java/com/example/midterm/MyController.java @@ -6,19 +6,23 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + @RestController @RequestMapping("validate") public class MyController { + public static final Pattern VALID_EMAIL_ADDRESS_REGEX = + Pattern.compile("^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,6}$", Pattern.CASE_INSENSITIVE); @GetMapping("/email/{email}") public boolean validateEmail(@PathVariable String email) { - return true; + Matcher matcher = VALID_EMAIL_ADDRESS_REGEX.matcher(email); + return matcher.matches(); } - + @GetMapping("/name/{name}") public Name processName(@PathVariable String name) { return new Name(); } - - } From 73bfa4710e3ef639358c614ab827f7ff85ba6555 Mon Sep 17 00:00:00 2001 From: ztest95 <110767420+ztest95@users.noreply.github.com> Date: Thu, 19 Sep 2024 23:52:16 +0800 Subject: [PATCH 8/9] Edit email validation endpoint --- .../{MyController.java => ValidateController.java} | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) rename src/main/java/com/example/midterm/{MyController.java => ValidateController.java} (74%) diff --git a/src/main/java/com/example/midterm/MyController.java b/src/main/java/com/example/midterm/ValidateController.java similarity index 74% rename from src/main/java/com/example/midterm/MyController.java rename to src/main/java/com/example/midterm/ValidateController.java index cae659e..2ed5b5f 100644 --- a/src/main/java/com/example/midterm/MyController.java +++ b/src/main/java/com/example/midterm/ValidateController.java @@ -1,9 +1,9 @@ package com.example.midterm; -import dto.Name; + import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import java.util.regex.Matcher; @@ -11,12 +11,12 @@ @RestController @RequestMapping("validate") -public class MyController { +public class ValidateController { public static final Pattern VALID_EMAIL_ADDRESS_REGEX = Pattern.compile("^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,6}$", Pattern.CASE_INSENSITIVE); - @GetMapping("/email/{email}") - public boolean validateEmail(@PathVariable String email) { + @GetMapping("/email") + public boolean validateEmail(@RequestParam String email) { Matcher matcher = VALID_EMAIL_ADDRESS_REGEX.matcher(email); return matcher.matches(); } From e1f75e3f6626a86a5a9426509e4d53b09698fca8 Mon Sep 17 00:00:00 2001 From: ztest95 <110767420+ztest95@users.noreply.github.com> Date: Sat, 21 Sep 2024 06:35:34 +0800 Subject: [PATCH 9/9] add sample implementation --- frontend/index.html | 62 +++++++++++++++++++ frontend/index.js | 58 +++++++++++++++++ .../com/example/midterm/ParseController.java | 2 + .../example/midterm/ValidateController.java | 2 + 4 files changed, 124 insertions(+) create mode 100644 frontend/index.html create mode 100644 frontend/index.js diff --git a/frontend/index.html b/frontend/index.html new file mode 100644 index 0000000..949f55b --- /dev/null +++ b/frontend/index.html @@ -0,0 +1,62 @@ + + + + + + Document + + + + + +
+
+
+

Spring Boot Project

+

Java Endpoint Testing

+
+
+
+ +
+
+ +
+
+

Enter your details

+
+ + +
+
+
+ + +
+
+ + +
+
+
+ + +
+ +
+
+

+
+
+ +
+
+ +
+
+
+
+ + + + \ No newline at end of file diff --git a/frontend/index.js b/frontend/index.js new file mode 100644 index 0000000..a0d4ea4 --- /dev/null +++ b/frontend/index.js @@ -0,0 +1,58 @@ +document.getElementById('validationForm').addEventListener('submit', async function(event) { + event.preventDefault(); + + const email = document.getElementById('email').value; + const fullName = document.getElementById('full-name').value; + const message = document.getElementById('message'); + const form = document.getElementById('validationForm'); + // Clear previous results + message.innerHTML = ''; + + // Create Fragment + const messageFragment = document.createDocumentFragment(''); + + const local = 'http://localhost' + const port = '8080' + const success = true + + try { + const first = document.getElementById('first') + const last = document.getElementById('last') + const nameMessage = document.getElementById('name-message'); + // Parse name + const nameResponse = await fetch(`${local}:${port}/parse/name?name=${fullName}`); + const parsedName = await nameResponse.json(); + console.log(parsedName); + + if (parsedName.error) { + message.innerHTML += `

Error parsing name: ${parsedName.error}

`; + } else { + first.value = parsedName.first + last.value = parsedName.last + } + } catch (error) { + message.innerHTML += `

Error: ${error.message}

`; + success = false + } + + try { + // Validate email + const emailResponse = await fetch(`${local}:${port}/validate/email?email=${email}`); + const isEmailValid = await emailResponse.json(); + console.log(isEmailValid) + + if (!isEmailValid) { + message.innerHTML += `

Email is invalid.

`; + } else { + message.innerHTML += `

Email is valid.

`; + } + } catch (error) { + message.innerHTML += `

Error: ${error.message}

`; + success = false + } + + if (success) { + alert('Success') + } + +}); \ No newline at end of file diff --git a/src/main/java/com/example/midterm/ParseController.java b/src/main/java/com/example/midterm/ParseController.java index 6d6170b..04c25e3 100644 --- a/src/main/java/com/example/midterm/ParseController.java +++ b/src/main/java/com/example/midterm/ParseController.java @@ -2,6 +2,7 @@ import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -16,6 +17,7 @@ @RequestMapping("parse") public class ParseController { + @CrossOrigin(origins = "*") @GetMapping("/name") public ResponseEntity processName(@RequestParam String name) { NameService nameService = new ConcreteNameService(); diff --git a/src/main/java/com/example/midterm/ValidateController.java b/src/main/java/com/example/midterm/ValidateController.java index 2ed5b5f..788eb1f 100644 --- a/src/main/java/com/example/midterm/ValidateController.java +++ b/src/main/java/com/example/midterm/ValidateController.java @@ -1,6 +1,7 @@ package com.example.midterm; +import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; @@ -15,6 +16,7 @@ public class ValidateController { public static final Pattern VALID_EMAIL_ADDRESS_REGEX = Pattern.compile("^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,6}$", Pattern.CASE_INSENSITIVE); + @CrossOrigin(origins = "*") @GetMapping("/email") public boolean validateEmail(@RequestParam String email) { Matcher matcher = VALID_EMAIL_ADDRESS_REGEX.matcher(email);