/* Ċ Ġ* ĠCopyright Ġ 2 0 1 5 - 2 0 1 8 Ġthe Ġoriginal Ġauthor Ġor Ġauthors . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ċ Ġ* Ġeither Ġexpress Ġor Ġimplied . ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ċ Ġ* Ġgoverning Ġpermissions Ġand Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġorg . dock side stage . app . web . l ido . product Ċ Ċ import Ġorg . db fl ute . c bean . result . Paging Result Bean Ċ import Ġorg . db fl ute . optional . Optional Thing Ċ import Ġorg . dock side stage . app . web . base . Par ade pl aza Base Action Ċ import Ġorg . dock side stage . app . web . base . paging . Paging Ass ist Ċ import Ġorg . dock side stage . app . web . base . paging . Search Paging Result Ċ import Ġorg . dock side stage . db fl ute . ex bh v . Product Bh v Ċ import Ġorg . dock side stage . db fl ute . ex bh v . Product Status Bh v Ċ import Ġorg . dock side stage . db fl ute . ex entity . Product Ċ import Ġorg . last a fl ute . core . util . La StringUtil Ċ import Ġorg . last a fl ute . web . Execute Ċ import Ġorg . last a fl ute . web . login . Allow Any one Access Ċ import Ġorg . last a fl ute . web . response . JsonResponse Ċ import Ġjavax . annotation . Resource Ċ Ċ // Ġthe Ġ' l ido ' Ġpackage Ġis Ġexample Ġfor ĠJSON ĠAPI Ġin Ġsimple Ġproject Ċ // Ġclient Ġapplication Ġis Ġri ot . js Ġin Ġl ido is le Ġdirectory Ċ /** Ċ Ġ* Ġ@ author Ġs . t ad ok oro Ċ Ġ* Ġ@ author Ġj fl ute Ċ Ġ*/ Ċ @ Allow Any one Access Ċ class ĠL ido Product List Action Ġ: ĠPar ade pl aza Base Action () Ġ{ ĊĊĠĠĠ Ġ// Ġ================================================================= ================== ĊĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAttribute ĊĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ========= ĊĠĠĠ Ġ@ Resource ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġproduct Bh v : ĠProduct Bh v ĊĠĠĠ Ġ@ Resource ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġproduct Status Bh v : ĠProduct Status Bh v ĊĠĠĠ Ġ@ Resource ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġpaging Ass ist : ĠP aging Ass ist ĊĊĠĠĠ Ġ// Ġ================================================================= ================== ĊĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExecute ĊĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ======= ĊĠĠĠ Ġ@ Execute ĊĠĠĠ Ġfun Ġindex ( pageNumber : ĠOptional Thing < Int >, Ġbody : ĠProduct Search Body ): ĠJsonResponse < Search Paging Result < Product Row Result >> Ġ{ ĊĠĠĠĠĠĠĠ Ġvalidate Api ( body ) Ġ{} ĊĊĠĠĠĠĠĠĠ Ġval Ġpage Ġ= Ġselect Product Page ( pageNumber . orElse ( 1 ), Ġbody ) ĊĠĠĠĠĠĠĠ Ġval Ġitems Ġ= Ġpage . map Ġ{ Ġproduct Ġ-> Ġmapping To Bean ( product ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġpaging Ass ist . create Paging Result ( page , Ġitems ) ĊĠĠĠĠĠĠĠ Ġreturn Ġas Json ( result ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ================================================================= ================== ĊĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSelect ĊĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ= ===== ĊĠĠĠ Ġprivate Ġfun Ġselect Product Page ( pageNumber : ĠInt , Ġbody : ĠProduct Search Body ): ĠP aging Result Bean < Product > Ġ{ ĊĠĠĠĠĠĠĠ Ġverify Or Client Error (" The Ġpage Number Ġshould Ġbe Ġpositive Ġnumber : Ġ$ pageNumber ", Ġpage Number Ġ> Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġreturn Ġproduct Bh v . select Page Ġ{ Ġcb Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcb . setup Select _ Product Status () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcb . setup Select _ Product Category () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcb . specify (). derived Purchase (). count ({ Ġpurchase CB Ġ-> Ġpurchase CB . specify (). column Purchase Id () Ġ}, ĠProduct . ALIAS _ purchase Count ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( La StringUtil . isNotEmpty ( body . product Name )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcb . query (). set ProductName _ Like Search ( body . product Name ) Ġ{ Ġop Ġ-> Ġop . like Contain () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( La StringUtil . isNotEmpty ( body . purchase Member Name )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcb . query (). exists Purchase Ġ{ Ġpurchase CB Ġ-> Ġpurchase CB . query (). query Member (). set Member Name _ Like Search ( body . purchase Member Name ) Ġ{ Ġop Ġ-> Ġop . like Contain () Ġ} Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( body . product Status Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcb . query (). set Product StatusCode _ Equal _ As Product Status ( body . product Status ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcb . query (). add OrderBy _ ProductName _ Asc () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcb . query (). add OrderBy _ ProductId _ Asc () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcb . paging ( Integer . MAX _ VALUE , Ġpage Number ) Ġ// Ġ# later : Ġwaiting Ġfor Ġclient Ġside Ġimplementation Ġby Ġj fl ute ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ================================================================= ================== ĊĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMapping ĊĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ======= ĊĠĠĠ Ġprivate Ġfun Ġmapping To Bean ( product : ĠProduct ): ĠProduct Row Result Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbean Ġ= ĠProduct Row Result () ĊĠĠĠĠĠĠĠ Ġbean . productId Ġ= Ġproduct . productId ĊĠĠĠĠĠĠĠ Ġbean . product Name Ġ= Ġproduct . product Name ĊĠĠĠĠĠĠĠ Ġproduct . product Status . always Present Ġ{ Ġstatus Ġ-> Ġbean . product Status Name Ġ= Ġstatus . product Status Name Ġ} ĊĠĠĠĠĠĠĠ Ġbean . regular Price Ġ= Ġproduct . regular Price ĊĠĠĠĠĠĠĠ Ġreturn Ġbean ĊĠĠĠ Ġ} Ċ } Ċ