From 0b6855ad8a046105b1415e3bcf769d388c5244ab Mon Sep 17 00:00:00 2001 From: AntonioFrische Date: Sat, 26 Nov 2022 12:36:38 +0100 Subject: [PATCH] implment de servicios --- .../service/PerifericoQueryService.java | 19 ++++++ .../service/PerifericoQueryServiceImpl.java | 62 ++++++++++++++++++ .../service/PerifericoService.java | 60 +++++++++++++++++ .../perifericosAdvisor/config/AppConfig.java | 2 +- .../dao/PerifericoDaoImplMemory.java | 2 - .../service/PerifericoQueryService.class | Bin 0 -> 578 bytes .../service/PerifericoQueryServiceImpl.class | Bin 0 -> 5160 bytes .../service/PerifericoService.class | Bin 0 -> 2043 bytes .../perifericosAdvisor/config/AppConfig.class | Bin 1212 -> 1217 bytes .../dao/PerifericoDaoImplMemory.class | Bin 3773 -> 3933 bytes 10 files changed, 142 insertions(+), 3 deletions(-) create mode 100644 src/main/java/com/antoniofrische/perifericoadvisor/service/PerifericoQueryService.java create mode 100644 src/main/java/com/antoniofrische/perifericoadvisor/service/PerifericoQueryServiceImpl.java create mode 100644 src/main/java/com/antoniofrische/perifericoadvisor/service/PerifericoService.java create mode 100644 target/classes/com/antoniofrische/perifericoadvisor/service/PerifericoQueryService.class create mode 100644 target/classes/com/antoniofrische/perifericoadvisor/service/PerifericoQueryServiceImpl.class create mode 100644 target/classes/com/antoniofrische/perifericoadvisor/service/PerifericoService.class diff --git a/src/main/java/com/antoniofrische/perifericoadvisor/service/PerifericoQueryService.java b/src/main/java/com/antoniofrische/perifericoadvisor/service/PerifericoQueryService.java new file mode 100644 index 0000000..aee5cae --- /dev/null +++ b/src/main/java/com/antoniofrische/perifericoadvisor/service/PerifericoQueryService.java @@ -0,0 +1,19 @@ +package com.antoniofrische.perifericoadvisor.service; + +import java.util.Collection; + +import com.antoniofrische.perifericosAdvisor.model.Periferico; + +public interface PerifericoQueryService { + + public Collection exec(); + + public PerifericoQueryService anyTipo(String... tipo); + + public PerifericoQueryService allTipo(String... tipo); + + public PerifericoQueryService color(String color); + + public PerifericoQueryService titleContains(String nombre); + +} diff --git a/src/main/java/com/antoniofrische/perifericoadvisor/service/PerifericoQueryServiceImpl.java b/src/main/java/com/antoniofrische/perifericoadvisor/service/PerifericoQueryServiceImpl.java new file mode 100644 index 0000000..e55c7eb --- /dev/null +++ b/src/main/java/com/antoniofrische/perifericoadvisor/service/PerifericoQueryServiceImpl.java @@ -0,0 +1,62 @@ +package com.antoniofrische.perifericoadvisor.service; + +import java.util.Arrays; +import java.util.Collection; +import java.util.function.Predicate; +import java.util.stream.Collectors; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.antoniofrische.perifericosAdvisor.dao.PerifericoDao; +import com.antoniofrische.perifericosAdvisor.model.Periferico; + +@Service +public class PerifericoQueryServiceImpl implements PerifericoQueryService{ + + @Autowired + PerifericoDao dao; + + private Predicate predicate; + + public void init() { + predicate = null; + } + + public Collection exec() { + + // @formatter:off + return dao.findAll() + .stream() + .filter(predicate) + .collect(Collectors.toList()); + // @formatter:on + + } + + public PerifericoQueryServiceImpl anyTipo(String... tipo) { + Predicate pAnyTipo = (periferico -> Arrays.stream(tipo).anyMatch(periferico.getTipo()::contains)); + predicate = (predicate == null) ? pAnyTipo : predicate.and(pAnyTipo); + return this; + } + + public PerifericoQueryServiceImpl allTipo(String... genres) { + Predicate pAllGenres = (periferico -> Arrays.stream(genres).allMatch(periferico.getTipo()::contains)); + predicate = (predicate == null) ? pAllGenres : predicate.and(pAllGenres); + return this; + } + + public PerifericoQueryServiceImpl color(String color) { + Predicate pYear = (periferico -> periferico.getColor().equalsIgnoreCase(color)); + predicate = (predicate == null) ? pYear : predicate.and(pYear); + return this; + } + + public PerifericoQueryServiceImpl titleContains(String nombre) { + Predicate pTitleContains = (periferico -> periferico.getNombre().toLowerCase().contains(nombre.toLowerCase())); + predicate = (predicate == null) ? pTitleContains : predicate.and(pTitleContains); + + return this; + } + +} diff --git a/src/main/java/com/antoniofrische/perifericoadvisor/service/PerifericoService.java b/src/main/java/com/antoniofrische/perifericoadvisor/service/PerifericoService.java new file mode 100644 index 0000000..a85463a --- /dev/null +++ b/src/main/java/com/antoniofrische/perifericoadvisor/service/PerifericoService.java @@ -0,0 +1,60 @@ +package com.antoniofrische.perifericoadvisor.service; + +import java.util.Collection; +import java.util.List; +import java.util.stream.Collectors; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.antoniofrische.perifericosAdvisor.dao.PerifericoDao; +import com.antoniofrische.perifericosAdvisor.model.Periferico; + +@Service +public class PerifericoService { + + @Autowired + PerifericoDao perifericoDao; + + @Autowired + PerifericoQueryService queryService; + + public Collection findAllTipo() { + List result = null; + + // @formatter:off + result = (List) perifericoDao.findAll() + .stream() + .map(p -> p.getTipo()) + .flatMap(lista -> lista.stream() + .distinct() + .sorted() + .collect(Collectors.toList())); + // @formatter:on + + return result; + } + + public Collection findByAnyGenre(String... tipo) { + + return queryService.anyTipo(tipo).exec(); + + } + + public Collection findByAllGenres(String... tipo) { + return queryService.allTipo(tipo).exec(); + } + + public Collection findByColor(String color) { + return queryService.color(color).exec(); + } + + + public Collection findByTitleContains(String nombre) { + return queryService.titleContains(nombre).exec(); + } + + public Collection findAll() { + return perifericoDao.findAll(); + } +} diff --git a/src/main/java/com/antoniofrische/perifericosAdvisor/config/AppConfig.java b/src/main/java/com/antoniofrische/perifericosAdvisor/config/AppConfig.java index 65f389a..de39738 100644 --- a/src/main/java/com/antoniofrische/perifericosAdvisor/config/AppConfig.java +++ b/src/main/java/com/antoniofrische/perifericosAdvisor/config/AppConfig.java @@ -9,7 +9,7 @@ import org.springframework.context.annotation.PropertySource; @Configuration @ComponentScan(basePackages="com.antoniofrische.perifericosAdvisor") -@PropertySource("classpath:/movieadvisor.properties") +@PropertySource("classpath:/perifericoadvisor.properties") public class AppConfig { @Value("${file.path}") diff --git a/src/main/java/com/antoniofrische/perifericosAdvisor/dao/PerifericoDaoImplMemory.java b/src/main/java/com/antoniofrische/perifericosAdvisor/dao/PerifericoDaoImplMemory.java index dc5dabc..fcddcf4 100644 --- a/src/main/java/com/antoniofrische/perifericosAdvisor/dao/PerifericoDaoImplMemory.java +++ b/src/main/java/com/antoniofrische/perifericosAdvisor/dao/PerifericoDaoImplMemory.java @@ -5,7 +5,6 @@ import java.util.Collection; import java.util.List; import java.util.Optional; -import javax.annotation.PostConstruct; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; @@ -21,7 +20,6 @@ public class PerifericoDaoImplMemory implements PerifericoDao { @Autowired private AppConfig appConfig; - @PostConstruct public void init() { perifericos = UtilPerifericoFileReader.readFile(appConfig.getFile(), appConfig.getSeparator(), appConfig.getListSeparator()); } diff --git a/target/classes/com/antoniofrische/perifericoadvisor/service/PerifericoQueryService.class b/target/classes/com/antoniofrische/perifericoadvisor/service/PerifericoQueryService.class new file mode 100644 index 0000000000000000000000000000000000000000..ae362a5449229c45e5ac59f620dad779d5ab1c2e GIT binary patch literal 578 zcmcIh%}xR_7@Q9mR!|ggCcXe%?9l_p#E^I*@n^lLr&`MTkbB66Zw&~2crdOPkxr%hn8UBinQCcuP$IW@tT`-F>cc#8`wkqAl ziEw$WT(LB?31qGq3r5Z|?AhGI(^q8C*U%v_dJ9|#Y$zFyz|lfWW8O#vn8Goz4;oHh zVEehM?VDwJ-t^3AOODvK;~T!|*q*?Vg5%ESyozhuvoo$ymRB8jJ~u55+sn-uMc;83 z$x=-rH&XSTtEMYUG}~F>(<~ak6xdY=7^wQDm7A&BMP)sArnawyC(K#f@T)F`FSZmu zw#G=yPDxs^So6o}rsJ4toBnaK)<1Awply^wX>7nI9X-eh^b|~6p01Xsr8{Ym3xVE( zQ#7pehHI+tXtB+oGfB=^Yba|^5+Z9;z&auDZXI3FxgZ~xMS*So12H;A9m`_+kUgrL zTV?BiU`PSjtwY0YUAPnbH0%{Pyw1$hu^&4Hv>DSbjaXI}`p~c8Zh_5>Txi6jV*ptm zkmtM7C=2XZ5nQ;Mn+P`ZT^Phc4fhCaZJ1giq9ccUX>G=|eCe`0`eP&}Bw(E56^8O@ z3}INqAtGw>6`^-rPse?@pZ3j-z-l`6-5HDsXQcWQ3xj6G4nM z5vG7<*o%{9g$>}*{zt+P0|64ng3S-yvIOmAYdo&w{dj)q>z(Xuj!!8LNkJFN1Gk$gn+X`>M(53`}1a7O0)F|AtveXwVwQ}D$;Ty&I zaibEHzlKwac*|16_p)HvPC90#?Mk+UbcLyYGWuxe(K^h&%TWaXucJv}QXS2Q1%?tm zwW69y)Z3gm0_~Mc(r`6gT5)@Yc_pyXH+@TvI<{|^w%5xJI!O|2r#!71cz0zozAZ47 zoGL9F%i6jp>r>!kI`TNC-llbo_LHKdIv^&MAMhI;L=rS!5aI>5{RZJ?C^% ztgY*?emghaSp!pP%%iNqsvSdcg^swcvB;(~09)YT3Wwo*!OCwO`i%{(0-oz*0{6G% zV^vT(Jh1$=S?PzZXLGID#q(R;stY=<;&HM=(NW9rSRb2K$Oen~UbJCS_4H5Z_#{3> zd3LpN!!OPW-1*;%e@fL{efm-Z%le{X9n=nSNMU(W$7e$5iP$xGvh__2l` z3G59LJ4iLtUU24Rt`O871&wGT)$tSjl<}1tO9KCjhZ1Rq#!vB@v81=Z;5hTuNg+G6#S(? zzJLA6nZd6ki!bT;OknZF#@Z`7K8L61<>kiOl8&ziYp;cCJ?(ftqtaL(vu&oE>IBl$ z@TS0BO^2CuBpTl0NYz@D*H3tUoLf0L@YjwMhZc^qeDCC22cKy^Q)<5E`^MnCn}a{+ zeq{LnF0SPG6nwU4Uq|mNfyie5D`imZcK$163SbMi^2rgst~^ZRYOff=b~=Ev zl{(vE7CPz{c3>wZLO^!}FfK=y_GMqiu4U{ISjJrf{Mx>Z11Y?L_blUZ3U8tBWjahj zf!sm|z#WWs7rL>V@b+LYzZ;hFrKXP)E0Q^4mA46?%nj!A9&akT8TW+9!}yEeQ4N$F_M!ejbkNliqt*LmnW#7ORhU8pYLiNIREP{RF<0-rp#M5Y8eL;j_XZ@9)rI<3{0(no`+oqyg&R`< literal 0 HcmV?d00001 diff --git a/target/classes/com/antoniofrische/perifericoadvisor/service/PerifericoService.class b/target/classes/com/antoniofrische/perifericoadvisor/service/PerifericoService.class new file mode 100644 index 0000000000000000000000000000000000000000..7e3cfaa9ff62869f2e82d141d622f5663e4bd531 GIT binary patch literal 2043 zcmbtUTT>G;6h5g)X}Jo5cn@B%1;+J3N1;ryAox-hX<^3kDc#M|z;05r* z$YJWlA-J_b;O15+jqv%72t>`}B`K9*MkpB&cvV(<*9sb1$X!=6pC2f_Z`C-Hf#ovW zDBZ&Bjy71O(5M5Uxr4AnUqY^1ojeGvpUtqh5+6^%AZ-7#kirxRT*>8k2=uKfho@nb z!053`>sl*40M`io*_N6I%4>3mqCySfwKJm)tuR$TSfbg?X56O^H>fQJI$@M9HLV7x zLZVY#+I)#_%YCU1B;^r0Wd_%p%8v1rOI?J1#~QhfP}-4t%PTYp(I#3k5!}KGdK)(J1m!{BA}skxGN-*bMb70L2Y(1bT$hkFfjy! zaGk(pu6!&+yk3Ze8ZG1Y_n}|oy2>zj0^?<5@9i)xqH$-k&(sC_{`#VBb^J!729d8* z^1P~OV1Z8O@-eT_2+vwmo`+haN*I`_h+WA{sFBk`kFe#_NfmMHNOZ<(t0Y@*IT}r1 zKKJ=_WY3fN`JJ15=*LkSdr>=pEkFjc|IMXwJP1ShAIA0P zxSL>`{Q)DN#>c+F_%9r#U=sfk3cxLx!haNxQE&sMvBj4c=TmSS`zg3{38X`~3-`K6 z_q#|@J~1bnz-cyt(;+;#0MbGN5`l;CsLSc`IXOK`M4G(-(u+i-CnprobvYe-m!#8T Q0#XX{ZP(_yl`;?T54X1*$^ZZW literal 0 HcmV?d00001 diff --git a/target/classes/com/antoniofrische/perifericosAdvisor/config/AppConfig.class b/target/classes/com/antoniofrische/perifericosAdvisor/config/AppConfig.class index 05fe65544d8c2fd4162e437a4c1faf3c272f3bf3..ae0d40529529b386b2ec3f141d1e59876027dc84 100644 GIT binary patch delta 35 pcmdnPd60910<)NUa!z7#aY159hLwInYEfny5GUtvHe~K*1OVT43}*lU delta 30 lcmX@exrcLu0<)k}a!z7#aY159hLwJ9epzPfW;5n)MgXD{3R(aF diff --git a/target/classes/com/antoniofrische/perifericosAdvisor/dao/PerifericoDaoImplMemory.class b/target/classes/com/antoniofrische/perifericosAdvisor/dao/PerifericoDaoImplMemory.class index b1f937c830b964d7bc9f66dfa25fbf0ae2e433cc..ca6e8a3da1c89f82202690c7a24b7411ace1de4d 100644 GIT binary patch delta 1454 zcmZ8hTTok76kX@uOKuV_AuyE7BbV^7<=p_5B2r$ZrKKRH(1+HF4JFW2nqZ)`KB-!) zwrbT=we1i3)gQ;Pqh_QtI)3}7jx+u^S%l^CQ#PYJaI0%7L6=L6N{0V)l@vO*r&o8Ei@@ti>@=V4{H^q}Hdb_)bDs&hsQkDyn6thajlEbKwQ{6TN`4Pw~Dkbo_x z47UW~{FTc5yVa?98y4uA2$xFNjVIA!4}%*qW< za$pi?EX;!?D`4Vd^8$KP^O&EdW>L=~F5p-9iTT*2!wUjN)1l_ELUiL93rjdJyUbbQ zty;K%HF?WysOZKe3(sMVIE+)CFIadHG5M4Ev*#+_H1US~%-g76!*%(K_qWp5gP2up zH!Q5R$bL_M<;fu4<0FkF60y|CQgme{wqoJ~f$ehGXUiUc(D+E8CUcncUtABu zKq-n5L>1e|A|AM}Mu@9`!@WQW_v7?aHm9ZKOVp%M>n=OorTJ^LeFgg-9W+$(>*oqo z5T-H@*vSER;o%JMG;kFzl<<{7>UFkp!YS#1xh2L=3gG zrm;S^k;X!QNZUlQVhEAqobFP%X_say6=8Wh_-37i?#fWrx*$2KP?pNiw@n~PAUSjCE!`4vMHTsq^iE%5>B7R!hl2afFgIcu#!zLpSznVyP0AS%F&z0ZRfacxW)Id zZxpxwA9uN+5{`yU7S*1ZQqm41bUI2v+sG|=Xu_*$9uky zhJO9$(GLLn@sSFNVU+jDaXu%7AD-!vN({|s*DNQSH`CU7wwRsInWL6vI~gZyTSbQ8 z#A&1-PGpOYjs$x6L8aUKw2nUP=Sxb$o5V9J4)S|SMDE8S{*5y3 zOX9GOK|IS^;=j|tD+8>oQ_c(<&&NyJI3!yF>b4&FTeB5Fkc*JbezRB zZ&K}{6kgDA9v2uq%chfFWRSaJX$=f7>Uas47&KwG7R_r@OAJcaiCB6E;+WHs!94#( zy+n9f9anIbCw%R@;>hc;aFuWv&Ve8$9LjluNk5^Zq~UUkhPc zu-(+*U@hpyJN&XX()ccep0+HrkjiC>MYE{lHbV!$;qQ=De83-TcT06p@FW$x4ox&F zI$;1IG$TSMLzM0k_R!r+UoCXj(Ju+P;-`HJ<9vPF*Vy|bStabQ`T@JPp=mX=PIOV6 zK)6K+3Z3oa@vjixM2x^6p%>W10g3(w7$y^}j3YlG^#%FK73?Nb0aBsRg!s{looFL_ z3vspcVLjY8hUW;siQdL>oMO`CEi!T~Cn~B>VuFX zcqAfyilAVK5XEKLrEt@(uav5fsP$YhKVV!#CmeB(#FhZM)SIAw$H9SG5Sc>a(zDhqaXm1hN U+t{G-evd3-A>YRxe2Cru0fIH{MgRZ+