From 726c0cc21f644dea2377ef73ff1efd8ab32fbdb4 Mon Sep 17 00:00:00 2001 From: synapticloop Date: Mon, 17 Aug 2015 11:20:35 +0100 Subject: [PATCH] added in generated source files for simple project --- .gitignore | 2 +- dist/h2zero.jar | Bin 303488 -> 303522 bytes dist/h2zero.zip | Bin 3064894 -> 3064927 bytes .../h2zero/bean/FindGroupNumAgeBean.java | 25 + .../h2zero/bean/FindNmUserDtmSignupBean.java | 25 + .../sample/h2zero/counter/PetCounter.java | 144 + .../sample/h2zero/counter/UserCounter.java | 412 + .../sample/h2zero/counter/UserPetCounter.java | 144 + .../h2zero/counter/UserTypeCounter.java | 144 + .../sample/h2zero/deleter/PetDeleter.java | 161 + .../sample/h2zero/deleter/UserDeleter.java | 163 + .../sample/h2zero/deleter/UserPetDeleter.java | 163 + .../sample/h2zero/finder/PetFinder.java | 276 + .../sample/h2zero/finder/UserFinder.java | 1277 ++ .../sample/h2zero/finder/UserPetFinder.java | 262 + .../sample/h2zero/finder/UserTypeFinder.java | 260 + .../sample/h2zero/inserter/PetInserter.java | 86 + .../sample/h2zero/inserter/UserInserter.java | 89 + .../h2zero/inserter/UserPetInserter.java | 83 + .../sample/h2zero/metrics/PetMetrics.java | 94 + .../sample/h2zero/metrics/UserMetrics.java | 122 + .../sample/h2zero/metrics/UserPetMetrics.java | 86 + .../h2zero/metrics/UserTypeMetrics.java | 70 + .../synapticloop/sample/h2zero/model/Pet.java | 209 + .../sample/h2zero/model/User.java | 246 + .../sample/h2zero/model/UserPet.java | 198 + .../sample/h2zero/model/UserType.java | 83 + .../sample/h2zero/model/util/Constants.java | 47 + .../sample/h2zero/question/UserQuestion.java | 304 + .../h2zero/servlet/MuninMetricsServlet.java | 633 + .../sample/h2zero/taglib/pet/CountAllTag.java | 32 + .../sample/h2zero/taglib/pet/FindAllTag.java | 33 + .../taglib/pet/FindByPrimaryKeyTag.java | 45 + .../h2zero/taglib/user/CountAllTag.java | 32 + .../user/CountNumberOfUsersBetweenAgeTag.java | 49 + .../user/CountNumberOfUsersOverAgeTag.java | 44 + .../taglib/user/CountNumberOfUsersTag.java | 39 + .../taglib/user/CountUsersInAgesTag.java | 44 + .../user/DoWeHaveMoreThanTwentyUsersTag.java | 39 + .../DoWeHaveUsersBetweenAgeExclusiveTag.java | 41 + .../taglib/user/DoWeHaveUsersInAgesTag.java | 40 + .../taglib/user/DoesUserNameExistTag.java | 39 + .../sample/h2zero/taglib/user/FindAllTag.java | 33 + .../taglib/user/FindByFlIsAliveNumAgeTag.java | 47 + .../taglib/user/FindByNmUsernameTag.java | 42 + .../taglib/user/FindByNumAgeBetweenTag.java | 47 + .../h2zero/taglib/user/FindByNumAgeInTag.java | 42 + .../h2zero/taglib/user/FindByNumAgeTag.java | 42 + .../taglib/user/FindByPrimaryKeyTag.java | 45 + .../taglib/user/FindByTxtAddressEmailTag.java | 42 + .../FindByTxtAddressEmailTxtPasswordTag.java | 47 + .../taglib/user/FindGroupNumAgeTag.java | 37 + .../taglib/user/FindNmUserDtmSignupTag.java | 37 + .../h2zero/taglib/userPet/CountAllTag.java | 32 + .../h2zero/taglib/userPet/FindAllTag.java | 33 + .../taglib/userPet/FindByPrimaryKeyTag.java | 45 + .../h2zero/taglib/userType/CountAllTag.java | 32 + .../h2zero/taglib/userType/FindAllTag.java | 32 + .../taglib/userType/FindByPrimaryKeyTag.java | 44 + .../sample/h2zero/updater/PetUpdater.java | 32 + .../sample/h2zero/updater/UserPetUpdater.java | 32 + .../sample/h2zero/updater/UserUpdater.java | 32 + .../h2zero/util/DatabaseCheckerHelper.java | 146 + generate/src/main/sql/create-database.sql | 98 + .../main/webapps/WEB-INF/tld/blogslicr.tld | 1184 ++ .../src/main/webapps/WEB-INF/tld/insityou.tld | 16692 ++++++++++++++++ .../src/main/webapps/WEB-INF/tld/panl.tld | 1326 ++ .../src/main/webapps/WEB-INF/tld/sample.tld | 953 + .../src/main/webapps/WEB-INF/tld/tester.tld | 7245 +++++++ .../main/webapps/admin/client-findAll.html | 1 + .../admin/client-findByCdClientUuid.html | 1 + .../admin/client-findByTxtAddressEmail.html | 1 + ...dByTxtForgottenPasswordInLastTwoHours.html | 1 + generate/src/main/webapps/admin/client.html | 1 + .../admin/client_blog_plugins-findAll.html | 1 + .../webapps/admin/client_blog_plugins.html | 1 + ...ent_payment_info-findActiveByIdClient.html | 1 + .../admin/client_payment_info-findAll.html | 1 + ...nt_payment_info-findAllExpiryIn30Days.html | 1 + ...nt_payment_info-findAllExpiryIn60Days.html | 1 + ...ayment_info-findByIdClientReverseDate.html | 1 + .../webapps/admin/client_payment_info.html | 1 + .../admin/client_plan_event-findAll.html | 1 + ..._plan_event-findByIdClientReverseDate.html | 1 + .../main/webapps/admin/client_plan_event.html | 1 + .../main/webapps/admin/country-findAll.html | 1 + .../admin/country-findByPopularity.html | 1 + generate/src/main/webapps/admin/country.html | 1 + generate/src/main/webapps/admin/index.html | 1 + .../webapps/admin/media_type-findAll.html | 1 + .../src/main/webapps/admin/media_type.html | 1 + .../admin/plan-findActiveByPrimaryKey.html | 1 + .../src/main/webapps/admin/plan-findAll.html | 1 + .../admin/plan-findAllActiveOrdered.html | 1 + .../plan-findByNmPlanBraintreeActive.html | 1 + .../admin/plan-findByOrderedPlanAmount.html | 1 + generate/src/main/webapps/admin/plan.html | 1 + .../main/webapps/admin/project-findAll.html | 1 + .../admin/project-findByProjectSize.html | 1 + generate/src/main/webapps/admin/project.html | 1 + .../main/webapps/admin/server-findAll.html | 1 + .../webapps/admin/server-findNextServer.html | 1 + generate/src/main/webapps/admin/server.html | 1 + .../main/webapps/admin/static/css/style.css | 587 + .../main/webapps/admin/static/img/favicon.ico | Bin 0 -> 4286 bytes .../main/webapps/admin/static/img/favicon.png | Bin 0 -> 3900 bytes .../admin/subscription_event-findAll.html | 1 + .../webapps/admin/subscription_event.html | 1 + ...va-create-taglib-counter-count-all.templar | 1 + ...java-create-taglib-finder-find-all.templar | 1 + .../template/java-create-view-model.templar | 1 + .../global/java-taglib-do-end-tag.templar | 1 + .../global/java-taglib-do-start-tag.templar | 1 + 113 files changed, 35331 insertions(+), 1 deletion(-) create mode 100644 generate/src/main/java/synapticloop/sample/h2zero/bean/FindGroupNumAgeBean.java create mode 100644 generate/src/main/java/synapticloop/sample/h2zero/bean/FindNmUserDtmSignupBean.java create mode 100644 generate/src/main/java/synapticloop/sample/h2zero/counter/PetCounter.java create mode 100644 generate/src/main/java/synapticloop/sample/h2zero/counter/UserCounter.java create mode 100644 generate/src/main/java/synapticloop/sample/h2zero/counter/UserPetCounter.java create mode 100644 generate/src/main/java/synapticloop/sample/h2zero/counter/UserTypeCounter.java create mode 100644 generate/src/main/java/synapticloop/sample/h2zero/deleter/PetDeleter.java create mode 100644 generate/src/main/java/synapticloop/sample/h2zero/deleter/UserDeleter.java create mode 100644 generate/src/main/java/synapticloop/sample/h2zero/deleter/UserPetDeleter.java create mode 100644 generate/src/main/java/synapticloop/sample/h2zero/finder/PetFinder.java create mode 100644 generate/src/main/java/synapticloop/sample/h2zero/finder/UserFinder.java create mode 100644 generate/src/main/java/synapticloop/sample/h2zero/finder/UserPetFinder.java create mode 100644 generate/src/main/java/synapticloop/sample/h2zero/finder/UserTypeFinder.java create mode 100644 generate/src/main/java/synapticloop/sample/h2zero/inserter/PetInserter.java create mode 100644 generate/src/main/java/synapticloop/sample/h2zero/inserter/UserInserter.java create mode 100644 generate/src/main/java/synapticloop/sample/h2zero/inserter/UserPetInserter.java create mode 100644 generate/src/main/java/synapticloop/sample/h2zero/metrics/PetMetrics.java create mode 100644 generate/src/main/java/synapticloop/sample/h2zero/metrics/UserMetrics.java create mode 100644 generate/src/main/java/synapticloop/sample/h2zero/metrics/UserPetMetrics.java create mode 100644 generate/src/main/java/synapticloop/sample/h2zero/metrics/UserTypeMetrics.java create mode 100644 generate/src/main/java/synapticloop/sample/h2zero/model/Pet.java create mode 100644 generate/src/main/java/synapticloop/sample/h2zero/model/User.java create mode 100644 generate/src/main/java/synapticloop/sample/h2zero/model/UserPet.java create mode 100644 generate/src/main/java/synapticloop/sample/h2zero/model/UserType.java create mode 100644 generate/src/main/java/synapticloop/sample/h2zero/model/util/Constants.java create mode 100644 generate/src/main/java/synapticloop/sample/h2zero/question/UserQuestion.java create mode 100644 generate/src/main/java/synapticloop/sample/h2zero/servlet/MuninMetricsServlet.java create mode 100644 generate/src/main/java/synapticloop/sample/h2zero/taglib/pet/CountAllTag.java create mode 100644 generate/src/main/java/synapticloop/sample/h2zero/taglib/pet/FindAllTag.java create mode 100644 generate/src/main/java/synapticloop/sample/h2zero/taglib/pet/FindByPrimaryKeyTag.java create mode 100644 generate/src/main/java/synapticloop/sample/h2zero/taglib/user/CountAllTag.java create mode 100644 generate/src/main/java/synapticloop/sample/h2zero/taglib/user/CountNumberOfUsersBetweenAgeTag.java create mode 100644 generate/src/main/java/synapticloop/sample/h2zero/taglib/user/CountNumberOfUsersOverAgeTag.java create mode 100644 generate/src/main/java/synapticloop/sample/h2zero/taglib/user/CountNumberOfUsersTag.java create mode 100644 generate/src/main/java/synapticloop/sample/h2zero/taglib/user/CountUsersInAgesTag.java create mode 100644 generate/src/main/java/synapticloop/sample/h2zero/taglib/user/DoWeHaveMoreThanTwentyUsersTag.java create mode 100644 generate/src/main/java/synapticloop/sample/h2zero/taglib/user/DoWeHaveUsersBetweenAgeExclusiveTag.java create mode 100644 generate/src/main/java/synapticloop/sample/h2zero/taglib/user/DoWeHaveUsersInAgesTag.java create mode 100644 generate/src/main/java/synapticloop/sample/h2zero/taglib/user/DoesUserNameExistTag.java create mode 100644 generate/src/main/java/synapticloop/sample/h2zero/taglib/user/FindAllTag.java create mode 100644 generate/src/main/java/synapticloop/sample/h2zero/taglib/user/FindByFlIsAliveNumAgeTag.java create mode 100644 generate/src/main/java/synapticloop/sample/h2zero/taglib/user/FindByNmUsernameTag.java create mode 100644 generate/src/main/java/synapticloop/sample/h2zero/taglib/user/FindByNumAgeBetweenTag.java create mode 100644 generate/src/main/java/synapticloop/sample/h2zero/taglib/user/FindByNumAgeInTag.java create mode 100644 generate/src/main/java/synapticloop/sample/h2zero/taglib/user/FindByNumAgeTag.java create mode 100644 generate/src/main/java/synapticloop/sample/h2zero/taglib/user/FindByPrimaryKeyTag.java create mode 100644 generate/src/main/java/synapticloop/sample/h2zero/taglib/user/FindByTxtAddressEmailTag.java create mode 100644 generate/src/main/java/synapticloop/sample/h2zero/taglib/user/FindByTxtAddressEmailTxtPasswordTag.java create mode 100644 generate/src/main/java/synapticloop/sample/h2zero/taglib/user/FindGroupNumAgeTag.java create mode 100644 generate/src/main/java/synapticloop/sample/h2zero/taglib/user/FindNmUserDtmSignupTag.java create mode 100644 generate/src/main/java/synapticloop/sample/h2zero/taglib/userPet/CountAllTag.java create mode 100644 generate/src/main/java/synapticloop/sample/h2zero/taglib/userPet/FindAllTag.java create mode 100644 generate/src/main/java/synapticloop/sample/h2zero/taglib/userPet/FindByPrimaryKeyTag.java create mode 100644 generate/src/main/java/synapticloop/sample/h2zero/taglib/userType/CountAllTag.java create mode 100644 generate/src/main/java/synapticloop/sample/h2zero/taglib/userType/FindAllTag.java create mode 100644 generate/src/main/java/synapticloop/sample/h2zero/taglib/userType/FindByPrimaryKeyTag.java create mode 100644 generate/src/main/java/synapticloop/sample/h2zero/updater/PetUpdater.java create mode 100644 generate/src/main/java/synapticloop/sample/h2zero/updater/UserPetUpdater.java create mode 100644 generate/src/main/java/synapticloop/sample/h2zero/updater/UserUpdater.java create mode 100644 generate/src/main/java/synapticloop/sample/h2zero/util/DatabaseCheckerHelper.java create mode 100644 generate/src/main/sql/create-database.sql create mode 100644 generate/src/main/webapps/WEB-INF/tld/blogslicr.tld create mode 100644 generate/src/main/webapps/WEB-INF/tld/insityou.tld create mode 100644 generate/src/main/webapps/WEB-INF/tld/panl.tld create mode 100644 generate/src/main/webapps/WEB-INF/tld/sample.tld create mode 100644 generate/src/main/webapps/WEB-INF/tld/tester.tld create mode 100644 generate/src/main/webapps/admin/client-findAll.html create mode 100644 generate/src/main/webapps/admin/client-findByCdClientUuid.html create mode 100644 generate/src/main/webapps/admin/client-findByTxtAddressEmail.html create mode 100644 generate/src/main/webapps/admin/client-findByTxtForgottenPasswordInLastTwoHours.html create mode 100644 generate/src/main/webapps/admin/client.html create mode 100644 generate/src/main/webapps/admin/client_blog_plugins-findAll.html create mode 100644 generate/src/main/webapps/admin/client_blog_plugins.html create mode 100644 generate/src/main/webapps/admin/client_payment_info-findActiveByIdClient.html create mode 100644 generate/src/main/webapps/admin/client_payment_info-findAll.html create mode 100644 generate/src/main/webapps/admin/client_payment_info-findAllExpiryIn30Days.html create mode 100644 generate/src/main/webapps/admin/client_payment_info-findAllExpiryIn60Days.html create mode 100644 generate/src/main/webapps/admin/client_payment_info-findByIdClientReverseDate.html create mode 100644 generate/src/main/webapps/admin/client_payment_info.html create mode 100644 generate/src/main/webapps/admin/client_plan_event-findAll.html create mode 100644 generate/src/main/webapps/admin/client_plan_event-findByIdClientReverseDate.html create mode 100644 generate/src/main/webapps/admin/client_plan_event.html create mode 100644 generate/src/main/webapps/admin/country-findAll.html create mode 100644 generate/src/main/webapps/admin/country-findByPopularity.html create mode 100644 generate/src/main/webapps/admin/country.html create mode 100644 generate/src/main/webapps/admin/index.html create mode 100644 generate/src/main/webapps/admin/media_type-findAll.html create mode 100644 generate/src/main/webapps/admin/media_type.html create mode 100644 generate/src/main/webapps/admin/plan-findActiveByPrimaryKey.html create mode 100644 generate/src/main/webapps/admin/plan-findAll.html create mode 100644 generate/src/main/webapps/admin/plan-findAllActiveOrdered.html create mode 100644 generate/src/main/webapps/admin/plan-findByNmPlanBraintreeActive.html create mode 100644 generate/src/main/webapps/admin/plan-findByOrderedPlanAmount.html create mode 100644 generate/src/main/webapps/admin/plan.html create mode 100644 generate/src/main/webapps/admin/project-findAll.html create mode 100644 generate/src/main/webapps/admin/project-findByProjectSize.html create mode 100644 generate/src/main/webapps/admin/project.html create mode 100644 generate/src/main/webapps/admin/server-findAll.html create mode 100644 generate/src/main/webapps/admin/server-findNextServer.html create mode 100644 generate/src/main/webapps/admin/server.html create mode 100644 generate/src/main/webapps/admin/static/css/style.css create mode 100644 generate/src/main/webapps/admin/static/img/favicon.ico create mode 100644 generate/src/main/webapps/admin/static/img/favicon.png create mode 100644 generate/src/main/webapps/admin/subscription_event-findAll.html create mode 100644 generate/src/main/webapps/admin/subscription_event.html diff --git a/.gitignore b/.gitignore index 43b1a863..28ebbf7f 100644 --- a/.gitignore +++ b/.gitignore @@ -2,7 +2,7 @@ build-eclipse/ build/ CVS -generate/* + cobertura.ser .DS_Store src/test/java/insityou.h2zero diff --git a/dist/h2zero.jar b/dist/h2zero.jar index a0085266c44931686f2e1f64d04607bcff32f067..b183d72252724f47c19a82043bec3818e1e29656 100644 GIT binary patch delta 7155 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 qen|YHP5LMbp}#U?}lQlP?*Gep0B@%{&>CD`Tw delta 7130 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 ZCKEbT0CV=44&+q;H4#rU^o2|4{{V$M5CQ-I diff --git a/dist/h2zero.zip b/dist/h2zero.zip index d5c3910e54d28b5128937893a8151b885b40f6c2..b43f225add408de8eb677d3977969fbe4cd61f26 100644 GIT binary patch delta 233023 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

BP^IlmKoGBu(#4Wa5W#O zN4JDKe3bt(C)&yjzcmaXC5@2CNP|{p5RpDSYR_Po%bIO}<}922OxlHQ%)MD6tOMR{ zGY-egNFy!TcedOUH0Pg!XJTQHk{+!-N0eh$m~BCKSdcFWUo(s$J&FL8nLn$|SyAB_N(mjrW;L(S>vH0LGs%?v0Ap%8ccS3yhAw>qi`xO~K$` z!;QL!!7%cQOSkJvaHcX$0c$*17Sg$*OYZ>Hae|_2=vrzJ{|E)%YFLWUU(Ry37Znyf zQJ*$}Y!SI1} z2J|gOOR|clwA8^wb<(M(RM;#YRp9Y<1}XnaM32ffzznjQB$?amw?p+Ci=gCS|dA28AG<hL$%s4VDJr-OpT83+1Ea7U3P{9gtPpn*njW0C!)9II1-AO#%q_Ak6uDRRD) zplGy{hs%`48ZrWD-TWzub2&jUG6|d+P|F|<)*_uKo(GI_S2iplH`zc^+}6nrIyg7F^lsj0+pK#r+hIt#fD{B*^G|R zg=`U@;EZzMe^lqZg|^%vA8p5a4T1N{R}b2ee;3ew$qYqPEo8bR;Et=+2rGo zD{0E~Rl&TU%F+4?-{Jv3^8F*qj~#6P*_7oA)G8AeHMOK3{ml55Se+Yx1XV6@xRIky z+}OmS_%Psff_7Hq^^q`xW(4QCc3ZIa9Q!KCy*lwRvApt1fsu8jMYAGxV zIDS!}2vc~5n}kpco~$u{$jc5heuB5cG02PIhcIctm@#~M22i}5F$tnb9c$Q-Otdm5 zV70@lDElJ=7W0vOxq07@?lIBAg#rbO`7+>Wxivy-)2?3LR(C(l(f4@UTU~8v*2z9o zj%Y+Gu&C$Ul3C;EXN3*|vEsJ56X0l;yn0m0aM-e>*@fjQ$u-e`jm8D`6w!TWvS^vS zdJN_o&}b{Cy6IzC!TmREizvs1RZz?gfql`rRR;WM=fa}Jwp-;U2Qc$Z2uwHsk*(6A zXe=5V=X7R3Q`$JTINGP5L%Nix&q~4WeWHZ=@!;yjfTtbgs!TO8SPgOVppLVj_znQX zxPalIV8ro9Ik1R-pBd&Xv(^e{LAZHmQC8B}B?5a08xbPQ|G17?F3-JlT-Dc73C&c4 z;8ADgPXMylqE;p}0$dv`M=z#V&leBSX64h}QznM*Tau}&th)nj6R6&A1KQRmBD#rx zmpY=X6=sjpj1lX&XH9d@a8Sgm_3f+NxWjPk&iadS2aZ;MTX5SJ(zV}$Gse!79p1va zf1q*y28rG0xM^bz9Gzjt)hpSEem45exvDof7Wq+lEC5-}F3v)A(-TS*WkZ3ZcFZB( zO!c(*((zIMZaxsfIg3D93E}=UKg7?AmPotivlq?(#hbCo{RF-RoKI0;!j`<^;r^gq zbFb6@A~(K&l~i`mPku&QBq$y%--w)XOnVRVj3@V(2wYhYfF zT|4!<`mU@|Ga!q$7d?7N+4Zd|k-an+Ix7T;DhA1;lA<-2E37(nh^pPMCEZ?)zWu{) z-6ExPt~c>2;gA-4OQ&QLH;K~_Ayo_Eqs=?+?F9aR$iV~oQs|+LI+pPE&=GFt9e469 zcDGt80$*gDC{~f*BtjA;B2|XTF|ODk^L8TW%uRDdwb=7mh~gA!LsK?m1|m6g3dRQqc^;#MxNm; zf5{x4dvtf$ie~o1x0SLxPy|}(gH=*DanDZD&h;Lmoj-hvS74yzGu^I>SC^!Rre&1J zWfZk6!TRew*&RNZA^>@+WUx5lWl&rc00S&(4?-snz_gkfebHxjai;M*>X-$teU00H z=w-;O_ggo%Nfz?`MJ6M@Z$`VG&h8)&x#^^r>q@(xtb+lV!!VEUz@b0qRv0Ij>14(5sKRG2{$9LlU0Y4{SyBPXAER0DYb6kuS?oaFgFN)QxMrw z^vfuyq4nBfCT%ljX2k`7_9A^&VTv$-7I=e_veHkl%UUlxUJsW zcIbwVE=&-y+x&6Xs!vQ7(}~ql`Ay^x3ziO;Q->OQ^PHleZk(8pg+A2oa4O@;rqCtS zo~TC>jJR+ry|xCRN@|fp#@yNLzXz5J9(cEr0dJwyU!)zv?Q7OwmNV&Ry(c$xbaVCLaj4;orD@}L5Kj4KZiT0yy!9U7f=r0l8 z9m%t`AVgrH zU9E(#e7|biE{M{IMAitztZae&xEZCq9vpVXvem3iB`$J6l%&XdqqPOO%m&M4QF&5n zBfnma?AbWq^OyJ6P!Sw|5l|U{O0dWDb>@4=@uo-jvqw!<3t#&~aH#S)dMA@aa!f*) z;&~FP;<1QU8hJ(GHgN^-{4Qz?i~CSjM%Z1bb-E++tW1OT@(EdKMl7C1m6#^aeEA^q zr52{l13aZdMq+D4!L8Xh6X_ah5q4thnR~NnA__?U?P$8+6>Z#qVEaunMsk>6cC@Xf z5C`JYO!M4Q5AAwMAXpEu&9^wc1UmvV^w{ z(K@ay468`6Ch;d(wJb5#bp(lPX9YmW6Qg9aEREeqNl#VTsyTHM zSrfe9OYg1GZI%zOqKc3&*i`KLu$&3F5>aQ2dw$zhd)~{lrj%tA2UWR!gYFyruLr@( z{Or_NjMrM>hB1ThU`XrMl(J7@;-*CNEm4#kn&Sy2x3g=1m=dWaYfo<@{kL>JwiC{( zzfQ?%+l{KHh2>hnhRHi6>)$*m1T1C*@`)Akm*g?8^>PKDpT|(r&JxBH5946@%oC#c z+T_ADymEM`lql7Q>#54R(~6$Q$Z(hFhxppm_^uP&G&5>4g4#8VSRKt%rX(e;QI;j4 zYP3N}6PO5p=!{u$SFEHSJjd3>lM2M3Mh3Lwgx4{ql7j@DMcx)dvNaXCpvE0A)J!#c zw)8V|N{bMOw=+M@;P8Oq|=(5X6pk)TNoE4Nc zo?=MPapW|ZWHw?2RkRgpa)j1}hjfwMYjGD~Xm4FyOhPCB? zlC2Kc;278v9z~P8v+}LU?wyH(2}+v=wdIzr4!7Vq*q9@td<$^ZElt2KjTVWjJl9WF zWU-4cdsifS=pHECVK_s5*uQvBJnAk-d;mTP-Uy8p@t6fH^tmGerr~yIdgV*%uK z@EPeoEWkU%w65lMOt9n`Z5I=N#CRty$U9)}`{lkrk5|4>Zcz!)}yo=(UCD=G?D(`XP&^jhP^I6Lp>duj@6PcAM z3MY0Qg%uXv7?mxj$DmLJaLJX}PQ$gB6|u+Q@kLxx!DZatZ_bog7vdIwlIv2475i+7 zUqCLHdvpyrk*!fMH=UBI*qFN~&=|t}MsFHYbLQ*U_fHzzuYeFS*Ux)=+Je4Pd?uQ?E=`tx=bC$eX<{ZvxG1xjBW%6EPEhF=4SXD1{mw~)>d1htapz7vR%AF4|z*ne9y+~BQx5PI&YH+yhmr+fLekJ!HkPDEv@D2IY!CQ zAcG5;1gFqrg8WF$2Ejae(0p)-N#mO{v|yiC=FAv*y!V8=`*y^CRzH=yr$F4qAL-Tc zFz!q1qQ5hQ*)j2SE%a-7MX{kH8T=?TlL5z5SoYQvXnWx{oUvrFXRaI?1qoIRq&8M;GqZM8@Jvk<)fzd ze%qAoy01>n2-h8dn~BCJiS~~D&Lc#lbAqQ@9B2pN6Ku{U_ge63zz5+Q@d3Rqt2alO zKg=7-P4w&P=J}_o3#|je(*9~Q$1awmDCe zOiCSS8olAGVOQiQ@CLZqw~^9E1d_KvjE|7@cV6Om7ivm>-D`pF@Ex=6Fkj&(J|Vw9 zR(13qQ}eESO5MkXwbIUT3ZqC~qSPjp*j=I)8AT3C*{yv`I>mFjgkmL>5!V~=Nkc3u z!Agz2G2bWJ+_kx=4a4V)LMJ8->7RD$Z!(Z{m{_h;RFV^yM8e4r~GeRUhhb5O*=+;()bFKQ4Ut6yE*73nqM3l zSjpSrxLr5y{H{?wxIQS)nbkZ{KV~y2->iJy``WS)BvKmy=EX7G62L741xf} z01W;B#2|kLLsH=usC%7+ndIdT6`u+_Q~V`n%8B)hU8pANjb?MoHpSh*YVXC4Zo(%$Lz9b$+sZMl|;ccl^n~K*d^{sRj;%v*C&`n zyhb!QhaKiq38jkGD>q?Q>(gDi2y0sJQ>g8Z=P0_T%z76;@c&=LIqZ2z{HqX9?S6z{r@*f6Kz3j2o-*imAPU|6Bn@k7kZv0ZXiKB zfy2&ai%c2q2!c2nQkUOd@v9BB4{JH;7g;21v`jQ@utPOPMsO49c=hRO#>5K7Dr|6d zpkc>+?NPG68_~=A0>5*Q=gTp1@NA}ehJALPmu2Q6FeEvDImUFcv{t3-5U#>DgELLM zV@W2>9G0-`aXAA4bn%2O=@H(ls6@KPgq@_j{%;2b=Lg&YR4%vsUL-|1k7o0dAesyf zcBQx>On**tN|J#$^%-xZH()Z(+Fxu$p7Yvcv^Mt|Kf(>55$KcA3iT2u+g~r;4GWKV_`XotC;qJ?0 zn4kkl?vFY(h1VFO>3fw2Yw=W5vua^;3B^UGne`}bjS7kg30JVEiJ0!^1QRNhgo17Z z6VUl5ckC0aA3?+6_=(XK*_Or@)tqBh1>(w{(K91|F%63+iqJ%$+8?^22~;dOCDg=G z7kH;{eYT#Xw}>NF!K3@$s`BtkDjZj~p3?b|2T2Y4?Pd9RW^?@uFi1ur*?pCKMxMf!JJ#74s{8DBQs*4%WV4e8}n4ypg6RFD1YYTbfFW8hTuf z1%noUfn~#qjt_pPu&}jDY3FitVs690Hc0)XCmyrC-PuUie?h5|5Sq(ZXEC2zvaVNW zRi++hOgTN7sBlvJ#6O_MYK}ucDwnfvw+sR8=euD2BaqZz(b#WF^om*~M@S_%q zTf~uD&IXm-ru{`K0ZSU0Z$D3w6qse0ie-V9cT1+w1iIuwlqLPBVf9e-RQuFeD}I}} zIF{f4*i!sQ=eTYU!?-T7Lk5|-ItKaMrr&)tFa)!NcY>fIjKyjaRg|t7ZC_X41#IUe{L61 z5N1bD@seYJ9%4jrr{I8G*qZ-`X^V4cwOMGgP$uW#+V$64l-cx<;G8@zY|I@NY|UKY zx!E*zx-IXN;f@NbB#f!q<)35q=Yg1iIqqP^;TOvmoq{+!WiBg}c}5{w@ZKI0o<4}~ z9xMNcM&+pq@+9u{4E!m*Sqd4H=9h^ z&jBD~@A#Ky#t3%t;af6uIfQcmoU%Rom750E599tGkrxV}8HQfFpaZLD7nAIN{F3&8 z4sX;AiVqG>wqv!YuD?IU@xL2Ag8$BH{U3WE!VgO~L;(Q+Z2qx(4F3c4U-3v){l6Dh zNB!+xs;uTlm}YxQ3WEJ8X93Y$!TjOC49G&Prd9B5*^LAyj!9_~S?pcl5Abh4a0vlq z{0{*B5qO3x<}CT#pcjVspHJ(5=apU4X*)hXUqH3KLoo9c#dF|7K^myP6(8ogw(E^1(};C{T3o3H^^8?C z%Ntooq1ev8LifrpJNUVXfdnC_aSUC{LeYDOs1PCV5!e zVl9!qznOJ9E1+?^yw|!CX-sSCN+;ktqYDC^UqxU-;rU7NbVi9O{2C|dqUltGylYru zQ&o$4#WsBzk9J3_|7^sh{ap?GSBsZGeb)2D0(SvMDVFGP_ z6O!ki*9M{;hw`Z~+SGNLVGfqahQcOT6yy7vU|_Q7=Y+La4#83Jaa*@h>r&JvM5mGm z=37^^VsP1fQdR8I+S9#8ypeSi;iSn0U6VO3HYl_1qN6yC9rul zCA_(`Vzg%whhPP1KLb|7Fg!y*7JC{p0h4VWO&g2Z&+o58?vi z5y+|&J_OC9yJ5zC-LOXtEHB1O?)bJteTv$Fbkc2{Fif6-^cZz=K^p9SqtdL&A{(d{ z;w`c$sBHO*9oZ#+vVo~MX3sFCq=i;w)E)vy>AWb7UoR(uPJETqEr<$D>6F+@c`kM} z5vCuRrdHW=Qm%`v6xr{tvju4{d!Xrc*;A8&rTzT>S}}|KB|ete3u* z??1qOz<<*p^zT2QZ0zc&`nTDCre);oWCs`!ywC*&h4PAjfVr{d%S1IIxO@ju>g0`G zkP5Kc?2ZaiZ`7p4VLSowgIWtwAjACD=U=xwI$Y$wUOYX(5eyOZ!MhMX5yS#_6;s-? z5kyNQ9+k&MsvHb21t<4Sk1A6)1TpPuk|+n0Di>uEqGlBReWpkS>F0{twWpbnikX-v zVURMU5+qB1us>wp9;MX+UuH-#p(B!5+GCrX49fA&9Rr2~Wt%mmF|7CE5w_NfCNP`3 zy-%a@4kexU3{!0Ds>;5jJ{sARZGmF=yEz9_p6y{UWKy4BV5dWBa?z)G0&xnGw+_1D z#CBb`hA4ii09_Pp{K9Qy4$=KblDdp`Q_uY&Cm-;Czj+Ps?{tjD#UuH60_A}y<9<{j_UjzbG#K3WFp3^R`za6oMd*b@ zBybCkZA?(E`jb-d_jqU!-fD1* z9##2&+rG8+8+e}4#{3KVi6mZjvv2wH!Z_r-sA0THB+K~YJ4igdC!^xe5D#JUnhSN) z+lYhn6bv<7f&E}55KGO`OCbpd)sp<<)`R4a&Pd~>#7b7(_XC2?xf&N4-|?w-gJlY& z4J4>p`h^Lu+GDA#F-M%kb}29}ueU%D6U0$}a_P@x`kv$odvnPb$8R5ANmhKDFbOwX zFWh4iSoS4jav#*c9_6#g0r<`Uhvnhq{l#2)?`#9pe;~z0J`XuR%Lieiy_Q9Me8JHN zHz7LIy4VdT$_YTcSZt^QEd6FJ)oAr!_}T66VU9h#wu}kE;1fNvEEc3i?a9Pzd7uJ+ zY-wcnqH~kz5xh&e(t2UK)g*e)y}40Sin(KEm4&SR(cRJL{xy$rLp6fR(}1SF>zVZl zLRK|zE`3V|oUSyZ?lvvQ;W#6)zr2>ItIjJBCy`|nL!5N6mpB9;49bbN*H-oG1MnZE zMDA06mGO^+?1TT074QF7y1ysPk`gt4i)y*W`b!1skIka$NahM@TUl z5Cwy8a|!twq#0}w&b^$4%);*`(3ALv!T<5(6K^-4{F#eL;w8SGA2t^pyq_~SUO$hI z=>bq_$ny-y{A4!|75D5TCamaOS~q3(@va=)Vh3q{qfAn}j>eXrR^LvtRKf;-+b@02 z&OY-rSg$>0H*3F|aWpqu*kB|#j|nvfCG2v74LPnjP82?`atU2GUsbcvO4Vo#*B`9H z3Bk9aT@DwYUO>sQyOoO?PHb31x>>Wpj8sC$@Yt|PUn34U?g6n3v4WY$HB%TbSz=I6 zZKdyZ9x=e2mTRw6v2HQGHrPskZa1GYDHBE9WShNz*tVN;udjys=xsK(>={n_XtaR?c)C8;@JtEqso)J+f_C3q^hs zb)^XL%~R!V+E~03(`d+lmH&g4bh%NT*Uk!k>4K%&3l$}i^>>J$X2a7$U2Op1{DM^b#_O4zxwaiS|(*}h8n8T7AQ zd|+Q2JCnDBUe<6}aXw;M{@l^=omfg-BIigc-MAY!IRE28^wOfcMaFpHe_@4vK1qH; z-|**I#0JM!9Ji2CTfh1HyMZ733wI(g^L+PJ`t=4Fgj#|$DP-3acR&*Nh(BaFgg@R- z$BcJ4PfAn+0OHd1VGj0>H0CtgSbE_R+&xN*=5EAAP6fq1A zaY7S)DTDT|$<6Ic7MN@#Crrf>gGe}GvEeUbxz zjJ1-Xfnk&8YzKSOY*KiMBs^5MKf2Uah7l?ChUHq}(3@H|2)ws1e?F;f{v!e2qIPQ5 zv&nXbpO=@1Hz0#B{UBC5pfk_~(uafg$uDUP9MPlt*apdx;q|o95cqKo#-=o;eO2m& zFldeP3NCEiA&~2MsX*&OXeZtrvT+$BgVa+Iwj{D-*_D@shw`5(ferW}B$hO2^C!}( z%aF;%ZH~9$7>Mg*f4|uBzC%PH_oA{o67{==wq4HqvVM-j@l+zqe%E2`9io?qwbyi$ za0o>B>DCy4O>*qS@r<` z>%$4&e@k6+W0!wAmuR1t^ltvau>Ro;&A-K}{u%ym6r<$&e}47LBV@8N)|pr4`Ro>% z!Smg$@Avtarb_XXh3#vrlJZFfKqOkYg)f9c4Y0tkWN(KKrF zw4ESix@4W&3)i}ThU)pG(uMat(qa}e7Qs*C=HzSy zt5G16zWKxDKbpS<8H3=ySbQ0Raqc`lc#LPqLNbY0fQYGiOkbu`Oz{PtPi5KF_(gbs zJLiXVj{Qof{|;qGo)kza!mi8dPHoQ$}$l zf7XZW{5Q@q*1urnKVQ}PO8^oXg`7?QFdqQ)UmL&w!2P9K3QorMZgK{{j13)0RQ^}t zyqm4@-x`lu$t}pEc+*`jS0|!RWLocXpRpy5SC9|~LYgH{%4`v6d^o19D9k%awZ!e# z#K(osnY~=ZFlB3@F$H2Yu>JLPQ}%o2fAMDa*W2eMxvyKLa4wNCK@=t|Bdi>3q=71y z)=26P2`!@R)6`gRSuy1|H&|#G_gfiGH5#LPn7B){ny@>4C5BYa8RW0v2`$<=1NHG1 zINohbZk3ifvvrUAoWPyh^CS#_PU8H9wf`~YM|3Pl!M)WI`Ncr4I^|2iqJI) zm27yxZT%=bT;$oldKoMvF&5OVe`@aVcFTG@6S!Luk5TyL_)+e9D!w<@Q`=A< z9(HaIU`U2mSE!$+ukUL>Ms~Y7sJ+R|2sSYo$fBSQQ-JQF4}n-meng_=<(17Cf4JzA zQi6HibEJ32tmgF*0mXFg@IW0k?^9YmQl#noAv_~igfBO$6$c?~3(Ve!e^7G5=k|)B zT}zL_6?B(I6b!Ov8ykV_jiki;K@{w-J)pRti^vs3bt{B^(=wWFO0hYdMIg5#uF5p| zBM*Ico>_?;0{`=%RrF4r3lAjK{KQrKNjfxF^f2KQuF1fB9P+_X*uPgkK#v1rQXU~P z&_}+|(Oi=H7y3YvWNAd)e>~&roLi5oKw2-vV@7T?z7k=P+6SV@Jh>h1NklQ8978wW zH}F47FYzV88X^(^Kr0;p0R8`s^!|s;R%t?eDjy~Bn=++&nA+c`^XLiaxr*Zjk^oVG z3A;%m0Hp!|<;%ur80j$~ANL7aXwi08G^?Czp+uN3Q4xSpSY1|M5*1WmHd}X8I9au9 zIcs$+|M{r5EGhxO5gi|+OTBS&Gg2@B0F_w(`pVGXqf1JLX2w?f|24d~2|NK%2?C7L zms&*uB@p`OVE&^%>Z-1K>cMq)_l>uZMFIQ*f6r_0x(^=MXYhZ3LcYa70Msw!Ad4O#)j+Q^vtR|q2ARge!$w?p4x&H1 zTHbB$+BZA1%WK@qLmFn4y?+`Ib7r4w7R|c$Mf9aqmX2#2fndTTThM@h{0N~uJ$X10GP!>j8 zB&IN$gk5GItuAY&G$%OB-KXQVXt_BdKSgimt)9;pJ0?EQ3W?K-EQmv?qi`fUPNZ{_ z%5U7;XlVV?T&uJIv?Liy$Ohr+3; z^^BK)q|&_!Cz5HTkzt$CGc|L{^QalNvT^1;D{k7Twgz=nFOHrx=4yz^?K0C$8UtBK znwgu$XBq6{2|BpntmLOckAoXVe}*gr$h}QG{1YY@xdz_-YhUgVA|Z5u#hQ6TiGoqNvDUS+-uFJNudfH;VG%5|Krz3h|bQYrD`gGs}e<81&iQ*|r zQV`vtt&WMsBn6c@G2!kWt0ZnuqTyuIg@Hy2ZrPuZ!cmjpf>_L40cy)kyZ3O@zElO( zzf?Q-=90(q4V(Hjhxpx7;jdUQR=A?walp5)ki`7MK*;aw3fkZM(1kxz$b<)p5pfUD z3nIg&I>--H{6(V)){q6(e;u7#z)8i)+*%Z;hs>!*8f9mi$7H;rPBEAm zO0GT`Ml=Xc;Hc;J6liTZ1OC^i)L;swqHPsy!;)na%t~Bt0(69eU1kB2_68ukHaV=$lP&~ERTkF-`FvS9&t(EX zps;W(RRiRnSx>4ff4bJ4tr(x(7B<*z%3csQyTK^H0x||H>-XVcVt*IiL*TuZ%@TD1 zV-kiKjB6){gs0NJ@#*XteZv9bW(7%)QSKH=rG=$vpXke^P?o>INk z$r>_4M0OiVS6wjeT;K3sq^f%Wc~`!%qy(03sa$vYU(6;bf6ivlYVn=SXST`SG~HK{ zpmaBUormOK;8^28G`2)-`OL1{*Tj6W%<3?w&N@Ph_0wXpIzvQ#1=ATd`G8?|@`l~B z_Q*?+?a?q&t2ft{rcBT%3;sKUwcF5ILy_0*c`#>TWr3LanycgptJM)N#c*L(Wh?UY zD>%xMVtO&?fA3WT>{UaqN=0!gJ&_CTC_j~b)-T2gkhuaF%=4*hVk^dAt*;;;KM5p% zq7Z>d0{?_%-4IO@98DVb26om4-*OXOivn%;`XLK52(1O-HUbIciMqlS3~75~Gx3kR zeWuQhNHD*V-`B)fa9?3N79zha%SCy($NdVC2*wB&e}~Pz8{)c;n!Y&&Rd^(~ezo5v zyoZ7yK%b+{gMUTA0PkGWlY>8_eFgvY9oS&bYex>Tw^azAdx9jOY1`^0X&sV^{pHD8 zp0Sh;wmI^Ppc33nRY87U*iGn`&hC(Q<5Q3lfUuZWJ)Bf+5UlK(6Nflm7^`N2LZ-Fw>)*=?`UcpsS%*SX5kl0IYOf|?H)=~Kq z;;)i;C_g*z5|GZ3gMlmwn3&KrGk5FFcqbR|fA{@H$PXw1>x_>iiL4Gfz;bdtW?F=X z$27u9c?=3_06T2Q8fwpGAalT0H)^NmSVJjRj6UcL!iBM87OlG~yb$Pa+WzyL zX{g!Ss^vj~Cu6NaGdPd&*7yrxI#pq9U2AH^veGfR{g_$qIWmnR;vLzHg^=Q^tnxM5 zf9L=L8fLOl>1Z6u)49zNdb3-3%M5pYP-pU9N|8-05{`-Uau*eQAV|jwo4|x;3!VO4 zNl?e<-+$B3I6h1V-iD3huD=HMUN5UY02Zu-xjWb?ciXj;@rdI;!4{n5T64+OsackV zqB`YnWh9-3v_gJ~Tv1+#n?x<$K9qlhf3WlFLIT7=vnq4EdQ>XW5&2R2Ge}|KuDU(e z9E6SDM45!Bj)gXyOdpM|J_4$O<@E#3esMJla3BrgniRH3gh@=AHB*|yt4dIMKzc%J z14v*Q8IYD6NsfSEP~Do5CjarZ9**D8HBam^+QppxFq4|SRu&7Z#b7h0Y;Hu&e_C0* z#mr6I|K+aJpeh{3kBdEC#v1}4a(h1gfnnt zP-SC#;&@FrYu5Mc=a>a$Vivx92$xe(`H=`7m-89A!Nv|Wd~c})`FY+0e+MQ;B!XDP zt_e#tb{F|_SMjnP#Os0;JxGu+7Lw@95rhJ|TqmaxchezkRjPi^1Vb@iX})fsb^_wu znqo%iV>SU3BP69vQ%fRIVi%lAhG;>Mm4H)a=%{pvJsWY9^>!gUzlqn>`qFKW@P9n9 zPP63(fdvAB#`<@|ny8_Rf1%O;|JC#Vto(oOZ0wmme=#DNikg6t!u~1}(i9fe6z!)q zAjYz3i91e!lQk=CLP9~m(sBf@(on2&mDjd}g^6UU(a^T7+OfvG+O@K+YN@GdDY5w2 zYa?Zu2nmgQ-R(Kceabt@b-vBv{X3B)4_rPx#!owPnz@DFA=m^CtFZ*^*0@16-V=#)J>fVI^UU z-#2JKY6*d)DgpI-SVD{gH}F1{`$9oKX>Gyp$$@nXVF;umyLsLjMe?O)lLTth@$WXK>MtTeEzI?*a;@qU{e-0~YnxvaOjG`;^8Q6BZ+=+< zEH86dLcE>FuP7cd8Gp+NQHKq{B|}Wjkf#O6L#~+_4F-*`;U@Rj6Z0)KeFx4uK1ZptRe}s>F4?p3xQ)m3Kn#k+D(~q%iQS==}MX{0Dc}f#AXW>Z*+Qxr^mNiHqRaNuHJmj-A?$> zRn4MGb4b+oHcP=MbnSsZkXuU=D)n+()sQXwfp)k zf4XC)at+T=nsl2e+tp%=oq!#;%$pLTbeu2{&4I(V_esOI$HogG(_PR!m8dBX)@apn!^f?&L6^JY^A0 zJz1>ykikQJz?=F9&;}k$nA;MybRZcue+vRjD>p`RU`8j#3XPV$80JpBJGPguFfst& z;L=>eTW$|sMyaJZfb@-zPyG{!sPcu{29xdb=10cJR(3H8ZZQ66DY4LG692=7lj}%P z|Dd81g{Zkk{Syd`?EIdvTm zKQF39(xjKq{>pY%4}hGRbzH|dd5k-)P{WIsMxo?#!n)=Oq9~NmHhs#~Xf$e;jG5r4 z-7s%SO*I@{$82}CAz>Zm&46jFf89xrDx>0K2-iU6_uIVxWc_zZRe}-8!^EEo6QSBTkPAbJXC$JqXcQzR_u-nua%H z>#+R!=&0G25v{Cmxs>Sok(%sCUz?OOn{Kjq1aZS{x(s)wx2VW728-1*f8#~Gg2jUP z&HE{wJUsE0)1KU?i~bX2!V}itkO81*;yP;w=rnmTz5`dMs~%qtNU7fX$y&m+dm~prA`PM5KOdMt zuJVUf0LvqmPQ1HNthyOzACrAhC2sle4@1`W;RP+j9r%olwp=-#Y(Hh1$u=QqpZj+pV_FmclgJOy2_}; zImecbqdMT0JA>X5f5(ZcMqJ*EZI?C%EJk^X)B}Kd^p&8meqA?tXHc%lE}2pe|K5)A ze&2~nd%)?-i--yh6K+t|p=f>RlDS6h`Rb+AL#})J>?PS_3iJ8R3OpD-B0E~)z_jt? z05ZBS8cS}>{aYAHNW~C`Ek{_FY?(c{LVH@2eyEHI)iynpf0KGXbjbmo+7b11KGUms->Wr#|g4xDnYZ zfLw=?epKwaREpI&C!#>S*fDY)MouRj!>dhiI|AMab949`D#|xvekrC9F>AP~xG$jH z0~z`OX7QPqe`;4W+=DRZki>=S(UGgjp~9G!-Z?u0VN69Q&^3DamzO_1>=UsM0J$>` zjmv2v+~~uHN#+@d#08ok6wz0qz;Pu8QuFO<0S@!Keg3$JwX@w?N`A(toEVE zuC#0F9bqo)a|5X~#Z zD5Wg_AF~GpcBkY1-wmKyNQMvgBSRKv<0DurB$ElaOfY<5QlQ(UWkKyhbB_WcL85*S z?ZDB&*721@mb4Kf4iWSSFbIQmV}!;X4cRybS{*F!p}&aUA_L zjYKouf4a`kH2AX?1~_o3pVDyNU8nfl#?CurJ;NkX>R4N~*|4hvplv3ouJP!7RDU1* zRtqu?sW)%GU*QUwK|N4fq@RK=goErbQ;DCF+R8*7=D|DOR1~Tuidi$G!I+CbO!c2h zxqU7Ga11{3-#7Q53L#X6+SIu=t;fz)J4FUue;E=0)$;9t)&clNM_IAy!pw1N!x6XI zYdGphw#UhxQMD&#Y)E(gwI42Uu4D{vT-rG!QYPdSXLPzq(ZKT%@ zxwT$Brx25z_^6mud>sgaR$r-7 W#YvKn?kJeOfEdCgzO>wnKdStHI~4sC!uMrS`G@ru=6 z-UgX-i_L955@Y_8A@P_Xoyp|jpvHgLaPN->^aQ~ z?P|AEN6(}8zcZ<*ZMI@Vb{vmjI#ijy9I?)x^nLl!9v-y5Im+%>zp)>GiuT&GFuMQz zkGK9@0mcD;zXm-Zke5pPpMc9j0s)c#uR#~Lv@`i{gLu{dlq(FBrO|8@A7Woyi595! z`f*i|i=7%G&hA^2(Sv?fbd?5teKxeW8X^#69Yg zjIC5)%m)t+s%^qZ>(2_e?Kq{0L6D={gh$gp;J~B*fQwKEsW#)b)7hcrMa8?O0mJ4xPp5nT0z8=F$(d(KpzH6g@c73&%^7T;;u&8o8TN!O9nz*wgLYhi~ zde^TBVsL@-jWebDn=!-DYBRBt;h0wP?f(`8+h$`7lmdNKAhPl`MD;#Otxxj>9ZF|b z81MyMN@rq>3JT=nWsFZ7t)QIh^>4{3xPL{M3mvo;g{QOg$H8)fo-wB+3q?}gnu%P0 zB&IU!IE$LmG~i4)UN(t2l!xl7%@no8b=K8(Fb~{n-1~kXhTh(M663<815B|a`a0d( zWm2UBPNoKC*zY`F($vPY-j-s`GN;{EcDyW}1Vzb{wq{5Wuwm&aYMe(pNlqBl;XU9%KDGT7ySrtdW|4iz2?wAA^8K)TV5@aqSWxl zZz+34wj_!rM?tY0_cUW96tu(zAQqs8Q#GJ+ z1}#1F1pnfuJEARRlx*@v_)IC0hJtiJQds=;Xe7-YRFv#NIKkEIOW`gz#)LnA<_eHP zpt#7-k(FN{8DddAsy7OxX86-LR@(-M+QmS9Boq$1wbil-Dm?}-a_)pZw;y3zAy6Re ziw*6_AHS(JRkD>kYoar!+j=2C<$jK;YQ5l2kEj}PWS}_A95(HK3tnFFcu@aQ z=*B~b_R`x(^8@&Y&U`A^gL>$daRn19~~h9F6A+~Pduz{&cr0|;z?9+LC1n3HyB zj;VIBar+d3K}iFyd5iDU@9 z2~&*h57fL~K@S6f=^B$CF=A|M$`KL)u#$svi}JL?e2aYUJu>8L)UH1Y%1n^#C^;$u z^0z)(!i1OlfC)N|C8TbDQEtc9*do@Q%eXYv@g><%GsC3QQJ}5nID&0F#-xtj;C_{U zia;8HCpBYxyQ#!`s-IE5qb8C+OaZb0>(upv{O*r9MEea5<8Wtnve~m`D}63Si1VvO z*civ^avm9rE-=!6ja<;S)9W_*3YMIo z9JIaUqnFm27$z08(qoy4ARBmC?7gx2a-;@BeSk7vs#JM=)+&D3i8*xbl1uxIQ`Wqx zUHo^Vre!JIGjvaYaoA+xGRyRZW6SdGRdaOR#oYxeN^bIfa!45&uZZaYQVv{ZVMNc`L_2PQZ|8V2~po2?1JnuseEp_-iB%IN?60h;hSzx@TM+40L3}7Rvz^m z+!(qKJ&2$90H$#E2sC)xenbcZdNvxO{sGj`;Gt^yezHM91;@;a&P+KQc}^vcsx#Fz z@Z5=&G>e#j4yXO0Q6y^jUK z5W+@^^U7qs%O94Bcup2cmpEI3wlOD)daqRFsrvkXapaO+_ND>GY>uAPS)8e6gfWMg z4Xu{`m*Pbq(X4Y6^XttgwxRkzfPIc7ZSLw=ivvH4ALPxc)N6wD;Hk+FpQtD1DwV6Z-#iPO-bg&79%!i1}QV%_WDKY_(#B{36YgQr4 zg`eYphWQd65acIW-{m7dPyEQ=GNY3oVW*GT`7CWo!AKqjIA`dZj*7r~2v&c^mp*yiiOeobOQXXatUxQ@RBR{mYmlyta6i(2Y zVy!Y`+a(T!6++C-JBZQNvZ31{s}AH!S~4GhLjUdxf49L~Y5uPiEB9Jgmt#_d7K<6Z!uLjX8(pir3hG20fSVOJJJbZ z%Ip0yCan|XtI=wJ!Y?OwVcS`y_PwAjnENWZuZM$#dV#Sz52h5_Luz>ghJS;9rn#p% z@GCm}z)w3sq^=fd0MH4dYRh8!;+O2ivDskRUW*w$a&oWFtq0Ide9A?{-zc&cWB}%a zV=*2H$v^4Z0ct3}5DeirkqR{k2DGY+&i@k4yjYZ>qtlIewUk?G+4hT1Dpl7GkW=6O zMzIfZ%7jaiUZ*|Kg4XRH^hZj6aKQhBv?giz)WN-Zz>upV_ zLDH;y_Pj1gh($1+3z0}3rT<(PP!C$KXV^TZCA@Y)y|J0SRkMv%zpBac<79@ftC-r ztMLAM^;Mb`AmjL33n)7oe+7Bt_sc&Fr_P1mmw0OcEw8wPK_r6y;^9V|WIJHP&N-XKF=%+eoFkY??V+Buhg#D)ax0^vpCj zFTn3VD{wWN3WCR|Om4DE=Xy2G4roIpRkTa>en81SDzl2&9M;8*NhPmFkzS<-teTtX zYL$h>hPd%p4RN+%#neDeC}Mzj^(csfXks40*CeIN1X>i-%0kaDXlpjoXEc7wh;8># z7SrE<$ek?3yNz$8v!!3Ksgs)aTfF00Bm-D=0<_thi$s8MxCf}2D$o>YVr&RylEa+m zM^Mt|Ai`q8{EyJZP2ZE3?+L%uhpIf}hORtB27bYZLsJo3*9i5@ty^7MPOToDil+v& z+ZBgDE4iJ+d#x_EWppMmy@ZUQUbL#FpIK0Ump~Oj$Cc0D`?)Z=upOZD!xIjmXWqkx zCR9VCb6816NQW(I^kYd&K!amsJUvT>(^^ise*5&CEB1(^0xOP?#LwSb%0(ajG3rj= zr`6oWn5x0<0lQi#IZ#&eDNNSUpck43v5=#|tUcN3hL5AV?l_%jPZq0y8_7nq&fl(uQ zX+(vJNA4`v5mPa`Q&YE#u`$V#66%rx<3gHda7Fu(&99qAst+Db;N$XAbVg_}rpS=*Gd5dHCjtF&4@;6O zaTvuZ#y_)gtT7yvE_L>kKM#m9Sr^&JaB_i=nX+3z&lo#O#WBR7_3&rX1u%)BQhnl> z$r|%9F=0=m#ZoyD&2#btHjA}Ao~-H2^lI`%;Do6cT+~{ESj>sZGJK%0#HvSsV5hsH zeMMr)XwTi3Q_3-=En`2UMME{(+;lcWlS59mTS_vu$$Eup$mETB>8_>9Q4sO--y7QJ zouo1ru*wy3P zRO@KC0bBTS}W~Pj|8aZ5)Q59RHo0Gn$vVO^>%*gEbp3TTT;_MF;n5v zze=Al57$3(9hz-Bp0fk=5aiV>W;oSZy3(oWL^`VE+OG|FchJp00=9pDWyhXD&KNZ) zdhSY+lLWq&O}h-p?r52ZK^GAj<%nistC88E!Q#H1mCJBZb<$O zn2~+V(uRmp!Ek<4MGv)kCD?eA@-#Ve-@Sgi#$pP;6=$10X%~zesw3_j9cfGOuZz-` z@~ermC+nLXsUz~wjf#tZ_s@$GAOzl+*ZqVvfpmRPEoKN1@&bjt4aB4-(z1RPURK*i zl(&tSx4!{?TfGha>qlAGLth@7-{_0g8@to;GEfOXwoq#1=cJeP;yt+vMipml5MkYp z%Xn7Ud2&VdES_x(wQn1GTW2B{L-_*9Lot+f)$)uZqzoCA!6^9MNQ!lEt z0ur~MZYID+&@Wq?h0f~+)>QTF0~U8=4EDi4UGYcl^YzH1W9mSns)tL}kL$Eti>RWT zdZfgvR;46bjm_t+f-ha2CkXY=ktm|wKqRC>Q)@l3C>PFEiuLK)>b2O-5Llrd*o*f< zeb)Z$piZ{rde1q3*|9pKNzgfS=y2$ z`LT^+BPiuD=4VF}Sdjyxu&ETd0$fgS+@U+6u-zlLUJ5LrImYYUq9T29S;}(^;Ag0? zObvjm5x5BXZyI*tA9KNeQdJ@Nr-XfJfi=7{1ppk_ZEA6UbuqhP6K`C(2mmcu9_pE7 zrbYXnmiG3vgfGq@pgRr&j#y+ejyCN|tm3vXSvR?nicPWtyqs4S$|Gf?(g63b;89zY zh=m&Cu`g;9x=#6iAqNsaSjsRJEEGt2JlF4F4*`-9P7Jy2*|Cf%(VZNuKFF8>@(VeW zi}a+;tEU8igH=qBf+9mg3|4Qk7Iz99D!u!AVXqdU&Q}w4mleliC$Ok6rZKXQ+@SNr zpmVCBaQoexbPB${_z_@PaY9rFV)z_s5p!p9QGM1$$f)yB`orE_4}D=D0ZEgRGz>?v z2(cq2ui~J@oHwAeZk;~tG-TyCUb6w2V*X8n!HPz^}npG;K}g zwgv=yieVABS6Jxdkz@J-RQeHBm(ek)9np9~;%5ejZ!l0+&S@&RQPe$zLAnFl7t&_J)-~am*a_ z+#yF3OObU(D_1I-(vX313#=6Q8a%wQm(&*(++(&~*&hsZH)Ti`CC#2%zpE{TQjGJy z4m*H3PE%UAd6A}9E-(ff%RRymYSvYUnaiH2CCXBhX0MXX9|l++Xe*9O3l~efl?YRR zyhbLm72-%R`*oqs%jHZ!h8y2h$|M_rlyA58qp%T?mSRZ-niJ3jgVjtyflkC zN>2)7@p{ungl5&^ic_#Md{suE-ZCUHJu?G$O&(EqKrPpUJ04Hfmw$o(l>=f!t~dXH z00CWs|2q*((bd%X|9d9JsB9^r3L)`{fMkV$lLmn3X~fH*&{qkefuTcb0f3i(iO_oG z22~o{uSa_V9wfd%^Hv&*m#KYUiOZPj2SVfky4Y7B1!!kryYc#sAvB8&G zr@W}X#W`Dht?glz_0K$&r_F4C%gXQCTT2+uR@K%Xc?$Pu$T_eEvAIX)Q`u-6F7Hl5 zQ8^iho7@7kaJQL?eahjy$%ag^c**vZ_1kj|wVU8#^j50=%6h=n)FFIVu48px3Y%F> zcy`}Ag{Fbd@_R&W)!U;j86yC4Wm`d+vNSe975vmNb=;wJTcS6m zD?3Px=x!@BMSF(1^pqDu==-Pp2>~d!9Y^*uvDmGNbZyt%`C_s@yAQ3%dMQ|IWANm7 z3LUMrokPxeQq8o9k!+`bs=xg=^%&tH%QDRbA2olx`Gh6 zQ#J)ZXNiDCByu8IXmdvGGRV{^BX#{G<544bXXTc5(;`zRq*B#?f z%nZ1KmqgUkR@2i}*YRx`rE?d>cP@~Bo%|J=K%)L!PP-UJ z)?2F-D3u~mpXky(6L%qtwKhHCo^;#b=%8Si87zP$nYOL0;&Bu%TaeGIP#f0=Eg#{O zxN}R~B^LEJ;AP`>14{h}3G;X(!RgDV3X!9txto84PpI*D25KOzXqdD35k&YkYsY3+hv=&1EvLN%xxo+k=^(oi(e*Fr$oz6J zQ4Gx>q*Ne`>M2G~DRFX^i)qn_PqiAEl}_UuGclX0Rw6L4E2TE87B%e_dfnz$wXUs| zl%F#?7W=TY;kSY9lWy->zSq99T<6=FrMzqZ_y{w~q%Rj-21U<`JTyD{(z-|H82Mzc zj!~Loy9A?u611vf4Z0B=DlJvLt1_i1>m0PJ5>6?=oK%AlAVw*hcI2#tQw*T2$}d;+ z`sKqNUeYI3bc1sV0sO`xFu8 zWPSOt>=iz;3)CEGm%LS?wMjj&DSlrqeuOpmY7XulZk4>)#@r!2y2ae7c!uY(Kj;>| zyQ}DJ%AW(^`E-6}rRT7&0$;tDt@0iXm8gGsh9A zdxWL_n_WS=i7ZbV(~26ii>Cbk$TDaihU>k!pmFqQLCu#{(T+|sc#&H?z{+&@gjYof zJH~^fy)X1^c0ytZjOvop?KjiN%?UAhFvtt&PI#(00bIBr4i} zLxL6IB`Ca+u_9sCf!VY;qgk?0Mg>I1(wwt}H~X4V&5nC0VjtJu1SX&z%cwyQDs1sV zw0kAO;3TR@yc*tS48QS5#h!ONCsy1jQqd%7#Inl>OC(r3DUQa-N)aZ_#pp{fWyNtiCceS7TbS5bs-c!a|*M<0`&6_qNqx zQ?k^l&9WZ7uBm-GGOFkyIicAEj}HuchCPc)6m$fulYl})CzT*Uls5$-D~lhE4`b6N zl>m8td;Uek!co)9r(jI7q$r-7l}~NUrZm2gYr%t+FU?YA=25h<=pkB#c(=WO+SN45 zbfl@Q*8GtUEDw(}J0dl=R!-c>)|WY! zwD6K6sD+tyfRf+BAeZqtw%iCjtU1QVPqoCMZQV~reB>Qx|Y!Wi>dBIO;VS(<1Q;nSsT@fQvqhh6wrZTa8 z*0>#u*gR;SG)L=^zO(WJ`#5st3)h_;aV6RAHeB!9s4Q)LquVg!(GfFy>}qf+m_-7X zDG%feutgA3&~eas5TXx%l6#WVBbyNv{HURe`V$p(scyqeup#2H zNf{K`HrW0U9!AX$FeI=`4Mm7(H#hzxh%u_PYjXJq4{jr z$CB6~cMX^D_^~F&tN1DAS+1dDg-2HHbjN<+ElhLPrcckN>ecv;efhk~H)geyhJSNN5)+uf8^L7+k`)V6K#Zm+GZ@>nN`_&rq2wR}ZaZH?m|K zH8t^D*)%9<_>8|8VwGDrVq$CqO<(&rQs5DocWf(-`#Mv9%Hs<^uGpZ})y_l?Uz5)6 zWu8lk2c(o=aIDxOJ#h2M#tCj*-)6lhqzCwTNtN-OUrE{)K6n(`CjH*J_#L6&=JwFQ zeUs1Q+8NbbyX1b}#qBE(=qmB9t5-1*6Yly=s>SV_XSZfqhSp`W?W=U1S||_rXGuE* zrXoP2iuule3Zc?^q@m?Us_L<}A5w3+q+bz&=q}xwExuV5=Q$2?t-wIQ`1-!{H?J)PMCwNKmv?^`)PE z)ZLAaap&l+@b1suCtsh6_%@X7+t_>ch3p@_Eqf;aMzpjne^cucinfXlPM(h@d4Oun ziFjIoCfyccr;e_w&RU|O{^i262;45MOLf41QIE4UW%v?&vfEi`JTP6&7(+nxIXYt$ zpN*UGuwUU8E51wRc8fFzhP#&f>v*LTML}A%L{@#WL8T;UtXx__J&cCL#k81NT3whI zVxgvj8`(XUdMSwNrM}(72-c>ev&>tDb0gKt!lJxxRCl^{djL*GwO*zuWynzHFCxdz zBioNBvNknX-S(p@5M3*0B9h`HYLeHbJ@jHygG*&)l2aFZ?#aaz1SEhNne`(zyXH`m zbJ0=*S({_)pVra(-hhQLN+gdI0rDMx7k{)1W2tLM;R|JEY`~(1$Nm&u32gt;KV=O; zvp%3p$7XaI)2OmYwZvD8IOdhV4s&OoDensUJjrUstBf*NmRy*Qd?)FinU-$0pLO1< zDiTm(`IG#Va!Q_$gkdM5#j#xz_VnD$6nEP>VYL7^PvX?5We$2wz7+{Kzn+w$d_pbB;yRaWv={7Yv`CHgcUL zsfgu@$HRN0eA4TNLWEd+5mNN0SV$wsf4v1jYbivG%rbaS*4u)sM%Os2IQziUczP^C z+HUIAH(X&pNu{$vuhzD}x1B40Yv*Vjg-%Wqh8La02e&m<4Kh3A%Q9_VMfy6^xa5?V z$P;~%dW>VF-(D>v?0hR$I!vnRZ{R?X&m8y6gb(#PPP00m?VR3Xa~6~+6Xwr$r!m_z)(drtV%z2`+NZXO zb8{JsJ%x&oFYZ*RTEj+o^>rJ&ix-D0wS;pVfl-^;SBk#MGW0ab9lyQtC+LQ@d2~wW zq+H_~L+6{2>6H}ex*Lv}t^&K$e{2`QHMNcOwacf^pD=wzUKU3-|GnF8$0h4%7F1X$ zJmD?|l3AEV5JysNGn->w<(c-KMwGRsyozT>=IFf21s55fq;GpU;sW=a>RIkNfx_ft zZ}cuU`wpNJJo5*ktC!}Ehkn@X)7#Cr?dp^7Z6|B(Z?APP;eH!ST_278f0wW4_fG8( z!Pke*chB36^UK|seP5M7P#@$!=RADPulkE5C;n;Z1$ILi7*9-yj`CpH;_4k~Jg|FCjVx)!gODWkT(yJ9)unBFZkxwPpR?P$wtZ8P_##y74i+2kz z!8Uf9UBWc0V6$`IVpk&kf3ARzl(V*e_Y%yh+RE#~ z+m@xUFZ%032svT6&sGIoQItsUr)8lqg|1RR4?^!Kk?M|AASkP)h{K~^=HonlWk+5q zbBkfNcf(h#-*z5qGk;6W<7EoToKtFvuw0;VhjCwMNGqb|NHkqI`Sb+F4!O;SauFbc zav?u4l;thLc;%=q+*z=FBWK?!()bEmXIS80HHQT^Cm6QTM+cJR2uLh!m8aTSlj>%AaFnE!~~td0{-! zJmZZYN%29cygVe?gJ{4`c5XWLev;>87np zTa|X^Oxw0?+p4r}+cqj~+qP|^GP}ODy7ylH+Pk~|vl%mD#5lQbyidF%o~Hy+GvM1s z3)IEx5~ups2cV}nzh{sPF^oBA=X&S>TS^0ZKxGB79A`>J@Xp|KvS9!$!Yoai;X*|F z?j>(VqakE+e{vuD%bZu7U~o)0EfUH= zXfVSBN`@C#S%Cx#9}P@7vCL(X9@N|OoZ(v?7z#Z+>&sk2Tm-Q@aRjescdRP21yS{F z=wd@YVQYg+pdCiFMx|e|Oq4%bQTf43^zrdH=j3BF#rO z@8(sW7bD-YTz6+sHe73+K|*yZrrr*mBpeF;r$>4U#4@e|rGxIdT0xS9!t zDRz_eU*kgK=~?1ZX5=Y?l)ETgK>ULY1s-7F~nuS&G!gDrARK)?&_eTAZ zw&5yIe=KCtLRo4|k-K-Xwn6m*ocON>6SPan8ALG(f;f8HHHbtZ`|q;@c5IYKnkXwq65Yo^`h)S;k2zb>piap68wug=)E`&dB0(Qq1?%7D z^dIJYn+w4BB8ZMGJcEg+V%*vIM;ecq^u^@vv^+zZrxw>GX0L{xDYbdI_baCy-GMnL ze>(PbhzptOSM;wAp7DD8IM+dXC8=+;O*ktG{eGa!+O(Ua>cfsHWSgC@kAQw8 z(*!=n_e1fHWH!go+gTu(^@OZ$*&Ags$IEjg6bPIKen)wn&8wgN3Rrf2ZR(ldVX&kB z#w^>0);Ul5@rbyf!$y&O?~Gu_qC;8g+pmM6(9AUCc%i-{u0);d&NNb8Xwv2)f3qg} zJ>L5C%i>S~Q%GRA8m02_CLuQL4TV#%_&e=8R}aB(m(W#v=KXt8tnsr}@>}W5`;)w4 zaU>PDs1*#NwvTBDvQp(8sVDaK1G7i&maA3Mgi{=?O#p)N_$QTUSost@V?<~EI?*xA ztQYdBtHSzoo{RV5f|ywZ%7f$FazjFpve^65czK1+~yG2pk6Np&Mh zx4NP>?Ot9$&g7BcWuT!?vJTbgT-|6m4ZCk}LhM|HwK2y;1Wk8}^f}W)1TilK*CkMP zS3c|EhSUlBbW_2YSxB@~u;-_cDbvHE?5G>J2%7A*^`fdE6DX_nss+4Xf2x66z@wh} zYbfRuqfC+9sk&(tulPuP5iP;IBpt&_J8FumM1zAh9pRuTZr%g!Al<0gWj_&N2+u;@J`-I& z;j+RQaK%1T#^@1$Rf4G#e>f7XBH)zT!<{cI84io_58x*{CRBYSgrM~+aQmv@WrEjW zH#_Q}C~*CNpE?>64*cLSNWBBUH8)Zw*dQ5DeK@~04N~SjqG7R+Xw@a)rz$U!VJbq< z>L{r5T1Z^2E4?=*LH$H%fI2NwC8S|Azcn^eCc9;h^FM!>J_V`| z#r=TwF&(6W6ugY^N5XOOt7)>ntoZwWZqz|^ka`h*Yf2<7xWN?Q`Xhd8a3n48K~29^ zNy6W7Vby1l^#($s)~{xw)`R?EIy^{*`Jm3x!K=-0VcsSbVcz&**)W6s{Flsx=)i^$ zNLG-B3WUqRgPi{Ae_&xY*O2w`e;-~n6OQ5lD_V^@#wbX^ItPOXcZ#&#p2Xp{lZhss%is44e=+|#Crzgh6F=4QSRH!I0#vTt$#p#&Q?{PeM zs^9*2i#Lr*VGeAI7+F1ME=ZBrqnJVB8$E;)5j@mg*=m?Ye;?sqPSlt%U6^2Sbq%>CVj(hk(W5N) zCm8G@SetVfe|_c_RWY6ZumLz2H@w#*{R2dCGEs#p)hTP~0#Tm12F>j%|Ji*MjP-gYd0Fgs{ftytFruuRD)0Wv{n%St|_%;eIjaC4Oq)1jj{NnSMrmvWZ4X z@!FQfeI>^<=dN@#z}vDU*85TETL>_1{M>0qzlly^>P|oNq3tvCbZPf3{Rb`&zlD3% ze=iSbrcjE1G}xBSvyPtNW9~wbpy%h(7#J?vZ3Seo`&97C8(ka2 z;7c7Oc$j^#BX11R_*&?j%AG#gNZT=HPYjH_&a8G=hkd^g*cNyoUz&Em<6e=U5{N8- zy@k5M@LGTM7!lj30+lVz0LDcckV{N6=%$i%iH6Y#F%l))>=ZMYKW+@DMOVL1f7_Xd z<(W1JG9_WO*P%+sP_tATIb5?5CcuQ0!YgkV>#8OIn-m#jMUPyQ21EMlJy4%MIF+*R z_mjr<%XI1B5Qt()aC|}*%T;kLT_vcz+oVG_lw4azAj9BUKW;<(8kLEPC=ZZ<(Fz*Y z*wD$5NWUtqCGH+AQ}D?Mu4qc?f9wvUh^ZW82Q%4ckknU!CzK6Y$Gh&;an_hgmq-R| zC8f2b8{h)oQo>-}#dA!LkqE+DqhiMZKXP|rguGcd z9M?yBbKZr7Pvf11rrD?K9BV48Q;;J^Io-~cLRf4v&>~-zryk>%4|u7se}78zcHDa< z6W8ox3&|dd{>aS_obaM6KwJUeM7jgFjd(>?6ZQ&zKz071=agf|{-&jErXJtbi+Nu< z5l*bkOAz=cM^s>}vg!$M!8tdKCr@)`Z?sz|JM6|oJ4m^qtUHB9G^8Tf!(HpD(b$_t z$LB~YiF)9k=1D?_ujd6be`RWFut5Fzkyq%$@MqM+Q%LBM0_74htZbtpCHjJ_!)^AX zWU=M#oT*SFY?^08hQWg`f}%(dk;sv;S({nb5Q0jw3zgSEoCk(;bI`ihd;1F_6En@8 zxaw8snOVN^XtWmUMfDffR@So*ez7HQc!+_UoF3#6xwyRr_vC2ue-59ou(C;R*>qZ! z=#)XgL2bdhb7FzBr_>)j4Y6qI49j03$5kO;Gvxl0ikjJq+;o*ib##^e;2}UGhL#KV zjbRDbCV=suWtiNK!Htwbf)T>U=Hg;sNKagdlEY@T#Z=@p9Bc7sM7-8#<%tZI^9`qDgmT1e=>c_)1eMo3L$C91~<0&6*&e-!dJshAk&StHLJ?vhC| z1u+qUo@n?SD`MbYJ}&@T_MnzLS0)8qIH)VG017;*0xGgnE+D)KC?nL) z7lO3P)`RSzC+DPmqOa)e?=rxDGLqC?yI7_y}T?2TxjHc zT~T?^kW4o=79nBon* zq60>UYjTHVP{_^De-_jdRnH+D0~~-xpHw&NwSrGZEfU|a)WgS4P>*q)*DrKCWjaE) zJ50k^CQ1;-6iU|LZ!hhqCq();Eu78XLDRVR}_r zTDZn4GT9Ix%oa%IvVbbd6 z-xf+88_q3fhE@-9Gk5N?v89i0JDL8#_!_clf4_QOw(L4~TyLhvzIpDL{W!B!W&;pW z^RWm}2SSa#)CG`U!ee8D7z=g_U(;UMk%r+7zgnZ@MqiCFa~1RU7Yw|}qN)SV8x5MM zNM5rrdFeywM_&s9id*TUKF}6-rI_%c4g~z)8!)?(Lx^q>gB|4i*t@9?tYB1O-fJV@ zfA$#ge>||EDj#Grb(0>%0TCqMr3Kg>IADbaOQaj(_RSgM4xli_P`4t>jk`~2yP;t^g(Fi$E;wN*BF~RiY#~na@FbymR-rf0O)VS>ZBtY0yto%K-fEz)QED|& zRFRmMEPA~+=if96jq09%u0Ay9f`-8^rq*WGvYHn)6W!L=84R9ic$ zb<@;7f7gewh1FCtrk*UeV2b(fXUe<=diG<>`F`yF%Hn{PWkJH+&_=ePs>)qkuJ}HD z`OUp%YI9=n2iR5yPoCUD)g$?3l9Lrv`37<7Z~}3$G@G<;{voocTV8gDM+rCd-tg>F?P9>s?m0X}YqCNElPbU>2F*fg;H& z-S9-E@om^+@vSUdIpX0(JKV5q?(r_wiXs!r8_>$C^><0fafw}GL?yJz)ti3>k4lcw zUe$z0p5H-e-`r1#hIgu5e~-piVLlX1lT8WGYF;F~P>$oSEr8!J{^TD*bWj|E`d!uv ztVOc;W+OB+#J8;35*e1s!c{Cs796y?`OA$ZQhlc=wheqtx>&8U9rEc^R}-%qsZHs} z5-w*C+tuk@t7%3G%GFY#={kdDa2uathAiV@`x{5PPm~gsE41FHe=r>Vu1AQY>wSG+ z`$2oK9JEsKr}^};)ht;|?}GV)H@cc9ZS9Np)@3x&sh*)5 z64Z9elKq!fv7yXce@L>WsA*Dzd^vKpJF!oR{!dCnMEZjnD&2lP%m!Fld$gB>sHmQb zSDY`p0|F}DVZOHDhh}-SZ)Ah^M_iqx>@RMfB%7O0Jm(C?uRl(l;dU>F0**hrl!mBZ zTY@HLye}ooax(edTO+RwgeO?m-T)}WHl&>>Rga1LXg@)Be=2Znzv=S*@%3U&i`FDK zKkcx1S1@yVFBc>*K3FdCYZq9wQu3`#Rh_1SEw_(c$IGdM$KLf7^-=~l3tldM+YUeR zvSD?22o`txWU4(ScSDBH>5w82tTeydD5uux?@(tU*13KGOt z=K$Kq3_K!}*^dKwWbO^bbI(tOy&QQS^r@2+QB~8kWC1 zpyCa79>}|iO2*_pV);`}8yv&JjbVVr5EBP23!{7L^P6ib>m>H=pTnhaOCAAlPS#^R zaOg$|f6{~mkWvgWX$MTyVIQf-9GAfWtF2B-v;#%EFUO z>?KCnB{{eL=#V{QtSWc22Hr#7H7FA#ox>Ktf6uPp!_n0uCI=Hw0K%3bp+`X|aK$XT zE*om>vsKW&pb%5RWA|bFbtOnEi7Nr>N}~5H@h}Kj%J?EG-mNsaUNB2spz#?saLdaW z$!K@Kwx;l_#C{$_7T7!Q=ZgF~Oh z1p9_Q;fM~5J^i7rX?jOO+LI_=VZVrG7_9gC$opF(9BYdYE9;R~7X?tz+@u=HN3-ceEtTS%Yi52E(y1kA@AUu z)6}aBw4H%36Vg&^(x@c;zNHpfKNheYg7|vyxc#v2S zC~>GE1$72MNd>o}uqx>$4f`ZXGXMeCG8-2Wj@c)z5J{k@!+IdgIj{fem@1~oK_Yvr zazq9DwP74}-xAxy_;tO1L;Km~e-Z!zQTpolJ^x(pm~_k9nSJ2e!h+f=qC=d}ag3P( zgSov*)KVDE4HJ*Bd7}K5DxKmReu2iz;lOr1HXhlw!=G=i0T|jmi%{SRsKSK4>E&vq z1>}1Ckv823UAyRfL2e_+e0NabKiT)Q*znIU;tr*Z0|f0^#`$O2Ey zy2+lx${OQ1pLpYax%l%9`M+OwO!$B7X{Ht?*2e#B<#7b|IXCFvhKI!Pe_I;+pHKg@ z+(Y!AU;kP7n%Otlx(8rkk&6VX<8;SfS0;E@$Ueh{BKois1 zVZq9|B07fJKiY8Qg@b{Je}KVLE2`JqZ+@>Y7gtx?=ydz!s=Q6N-AozZ--Eo4yiCxa zZ2#I`yZ&bx@^$Cy!B-%Ve8>)`0bYuPdjg8JdI|!bJ5!(%rnC`5c3(N1tPw+CpEN`x z=AlG;sGO54!M!=e{fk8<8gFjj0;vPK9}((;lW$yHpKuPzHf>@#%?f{`w!j8U1Vr_ zlMXtgM>6ss+S6QJ{o$E+lH|Il5D7ymG%e+ObVvTd?`W)PypYhBO= zsh4m+o@{H9+aC%$gT%jw_t(}aE)SRds1D=H1p5}0njxm;Zn5DmsO#}}((Q`j_VMFe^kiH|G!Wt#1K+Ce?MT|%=L0Z5MChCEFb7}aYl#0IA z5Qg8I7u9;If4Y0sw%QG45l6}@zbY-%HLrCPuY@q!FaZpeWN;zb~r%MW={j;0&R}no5G#Ln!)ZQSt2v$BD_)Rb~(dY|74&rMS#E(KL(r7`s0s%fY^6jcMPrwM7`94gk>fXeHSf~ zBs&Qk5^d~AznM7^tzZe;lo6ls>SYnyA(?M$f3#A-CV(0VX7HHs5KVKq%$zc~m}ztH z;}$|tQ>W9W8J*Gf_&(&1rF}Uz^zAx-iO5DEa00hi@{&hmt;wGlbt}L9t2?#QDzAl#`x5R$Y+^foX zPnF?CX)A7m9&JrGxAzUdZzdHJ7BR(}fBGAzzh@nlWj!eDJx90`Qp7la`GsNTf0`qVDTohKeC>XA~BiCNXR$(l9)UxDvKA0*sU* zEe3l#_*zw?TfwuDN+Hd~N}%(Di`WYNg z-QC@nvO*rvpcXqLZt_*jX33nZib%D^YL5C>7wT$Jqqt=PG8*E{-U5eJf5b+jnW$~D zx0y!$F-y6$5)u>mSRhgsV^4jj=EB*|)$_ss5OSP61|R(3vk7=>NN6^tLZQAzMOUhL zfu@cXUWCu;gV}^{p|(fdtnBr!6Y>AR;_lrQI91lCwpQ9D%Hf%8z3TJ|>O+8tWpa<| zJAiX#S{-uMfpZ0H;16FNf0?iadc%2QJ~FM&>;eUnr(Yvk$JdGV>2A{R0fXoEN`vPb z+sE}0c}ez_-eJM?%q3Iaf>HLF-KBadV5+H{?Ix>R=h#_r#)S`aSL`~yc7i}Y$$V?| zVce=M!lBPX(@@CYuDo(jO=nc}I=vDLrYAeo#+Md9OsFCo#$$(De~ulBU~-5P6=#Pr zv`NfJy)u~?`gf>Ax2v#O)Ve6qAL#C2-?p@G?9ZkBYCc8?+N@Wd+M=QQ&9!-%W74D( z%_y5LdhK>1EkissRrnL_6TVX-9Vl1oRSR6NPwngywe^oB1!_$Eyh}z6OG_^vBKVnj zV*!)}b5%TCdeRX1e|4R$XcAaQa7;N&_wc@5Kqje|P9NK?Owd8pRM4pPoJRXlyndsE zzK=k-7Cgkj#hU#e*g4TAEL(7&zWP>p+tgcHaH(4x%MMg8$Ze%t9j{nh{6;P`F9JUK zTOm{~FU`IkgOZ>gwcDSc>iv8auVSBxAbP-9$vKWzC8gTwf9j(|uR&y_k9tMD+59fM zO5l70GiaZHFOj~UeGKF;8Gkl)1li)BbcYmap}wUbi^`#=y&B9RFh1emr!Am(a-?E? zzWY5$5ixD?dGoGG6aExbZC3V9QGb3!)5*CtEVsR7?5*FT1)oE)LGk#+y81r;tncP| zPgLK=bMC?Ye{-By^F_XilXT#%65AfG>WQo*p{spmrLL{C#&4mcaa~DMTR~P-+uo_xs3f?npcRK!~Uc#BV#@{8g=Ip1g&|-!rxNfa_ zlF&nQUhA8%9Yw;nd&06NAAihIvdx+|E?*gz^B%GUf1i-Bo89JE4N1Vb-hKf-**Zge ztCIb`N&KhCpi|ZJiapANj+F>I?&9LC+>suouH@b`7@tljI$nC7BsrCLw0#Bm9Ai5Z z54Ij2%U~2mRe3#$BQ{@t5@aA0xGGPm4x$k(n-C&p;d5TNIN(7 z60w&bfAZY4GI)qAFP~Bse6vrl$zVV6b+WRXxNMJJ=_vMiY8v)#s&fy9{{9ItjHv2& zNv4j5@s_xR^VXsT9^==Z7~G%S^|9RGOVsVcmjmxZOC_a!fw`3cSf6n$NBpI2_ z_&>x+=DS03m=(U&>%=}-;-rkT0F-8SG>M@L3Pu@UaWr&SOrw)t_0 zf0MvO9NG-7HoKpnv>?9J)#WdeH8*)IEJ9;XI*-0?JvXdA{Ii>Vc2NEudQk{I5@GT9 zD27EZL6`(g%ZNBTEjX`YQ4XPuyp~b1SO*8gtqYiLSf4tE!ah!6PxuEPx(B~n7_R}B z7mUNYpglX7h?oZ`f-%v#q=ww)vjoUSe^?d;tclArKt&>9+raueYMqF6uYareCFqB) zJ?eq3xDi8;{~$kI3F6sMOxNzA2E+ksjtSGKVce8n=)E;2C`RC(bm{&Oun{9pPYTFRY}A&=?f2erzYhL1C&_Wn)Zz zI&$p?KgV2TDl@AK>r1E1(9mY1Asf@#JrJR1zHO^we{b(4fes5rWbx!zbEuV zuSDG!pRt|Sc!Rcn%jw5n;jCJ{@W*;%U$&?X0Dq9N8~0%3H1L7RZMY3II^+6E_yP^> z66ze?;&LOh7GNUKf6wY(X_M`#-C6-L{)&H&x<#ff;XgKDS|sb6K>mavy!cg?u-mdD za6Go~1v){_@QQB?t;_MnRnbu!K@}}eNp)xCNm_!mst%r7>}_v*XHJ#dA-q;{Dwy*6 z2vQX9L$1-Q+U{~6B*MHvyT5j!{Qf~*;KnDQsx0|aso25we_FZ%lQ^yxW-dZjKTOn} zdQ97tVZzgrp7o(8rJtVsZRfW#U1qvoi}F`Yv11#gGT<90Wqc?2g(iv1EiG-QN%^b0 z_$Wf-K`UjFK;3eh*~(`l;Y~>Dm66{3UgqZ+iSflg<|q3xA9y zY-4o3e{hPve`&Jsqh}vGOPRpIEzB%a^@x}v3J1Ws^DqA4+hpvTp3c`~{H4Tn*epD? zqwQrNo=tpHlno|&CB3L~VC*CO_RMIUu+JM#C$ujWfDV9u3pZiKGn+1%p}BfrOz>z* ze{+&Lo`I?bti&^3J}L|i%M5+wbBz}62rVk73q74Af5}HnhFGHRwLl4dB`{B#vD3`h zt3x1q$v?3QvUFU*I&SRfQ+TBtI_dhhz>^;8(YocBZNI6daD4|b!_g3U@YJnOem9%E zy>=AedjTHUQpS6Nd@(0Wv1-OxlNzIJZ!?FyGKtBwFb?=%$=7-hdZO;AjXpE(vzELP zo9gG}e*xh?8CA-!it13lzp^!_S>Ghpy~% z2bTHpbPu-;IGU+<6Z@{1*AC#wr*NXbw5uYTjTI17zv4(CyVxgx52Wm;&_7W7dPO0#U7cwPxm0o(1#b zf44M+ITA58yLC6>q6(>OL_-->NvN`*nU0*WOjGX_hgN zNj5Wn7*T5F?akst{~-T6R)v>Cxd7ITG)u;g4S!|6BYFh>@%+F6piMEHxkt>%e+z^W z>42eah#TUhPx5Aqo!q3%!LSdrq&eWRTE6917a_&zxEbu>Nain`xAXYZJz zY+b#VN7GbeZ+Vk{gWymO9b`43DL}<=jLU8Idg+PnFjxa_O=@^<*xJ1Sf628{qSv+! zG~w_taOp6h#WPzWUU}4Q-JV9Z(phP> zoyF(~dRSwl9{UMYXu*w*R0%H7k=7|<& z7Pij+Wulm@*k`-IkK}C?$}S_c5Q45LZXx(fJOjN@JJOTFk|;TunDm^8ZA2q0THCG; zPxy@t!Me{h7u#s zHCOy)oZwD#>OpWLs_qvX3*ziKNlH$eUxT0)+i{6z-6)$l>1O?CKF;~~C?N&sS_si+OWEVk!v{X-n#Sq)A=v`e;2z_<|ETW3z;$|o(;Dt zT~w%@VhAhY^RAb#Tg5!ChfXjGYJD2B?Ne@N>)_L9vNeofj_B;4f@OGB^q(6}OC?~S z;Am7$gi`NxHeXc_?F(0crY|D}xT&6otGLolSM=0x-Tb!_9>U#fydbY`wMBrxc5&&*O2+7K@cDFYwV*>d{a%f4ALBXsh`CH-7&3RYJV}<%b^Z z-<(HV+Zp~BdZHC&?EazWB8}ZeNKsHrlj09ZQ4uiBk>;Y10=1$Bv|eG^2;Rw{=$;p8%{bJ=Pl84$H4 z7v}sphjvsJFy12_aP^t+-g<~2Xbv3A_J6`se-$I{-qm|Ono9E2u4UVV&c+=Jj9-Wp z;=@$%hl%&hJ@VCsa5hye;a34QVo4lm96i9MT*NW%5q0Ns^k7GJtF8NGiSD_-xgu0P zN${b%LOUQRVaJk@+CATQmBYlGlC#dFjUOJhF@6xy;lW9u=?%hr&w%_ubO3~S8akH? ze_p~B;*Z9eEzeAW9-Gmk&qoQ+U$7-Flc`YA>@^)1#6m<#C8jD%Sin9a8xjk*qII$< zF&e;oMi&fDxNWj-D^lcGR$O6D3nd*l08h%9&0 z0?z+JbOicuLS$!W{Vx#xKNjR71d<<|0+AtzD51nK-dq-1pxV@cT%^o%_}d|6aBdmL z8d9PAKOq8rr5LQT5kz}K(#pv8_}I?88}0f2`~=Sn^u`h4UfA=1?jU8Rxzup)f0OsR zfb{X2tXpzcVRtQwhslccsolVl4aOj7uEB)4Srlhb*5O0idV7)&O7)_EE^iw@xQ__! zt^w2`$$f_9Ux~5-=MHs~CueXZPOJT(I?2c?dYHp-Jj|jXopE*@)W7JqkP4aFln8Tv zA3`}S3mEN}3c31>hx9yV;p0R^e|Cdl)mJBod=2nDPGtjRI25iqmMU{3KpK@2g!(X) zK%fyn@r`|V!ktbROZ!(qkXh1+mBx>-7_w>^+r2DtKMtnXvdL?Btyygq!NHQ^S;D1s zBXj4mWIuY+30WP{R`(ypkG5uW*Sxmyop_t^_d?=}8rCac?&1F-e5VXJf6F(}kFGG{ zgpbB=vg`AaH|;GkCqG3fKUXikbofip3m_Gy;_%V$9wZwPWkvJY6CqKzm(zU3&VXj) zI-xUul~r-Q|3Bb?!Wrz|&`%uJmk3mIwoK6g^w3X6LO139FL3N~#WdAZ@Q)>1 z?wAwtP5;94yU5E)%;Im$f0t1ChW%G;+}C|IuK!|l_ZJ(ce-j%M1Ka;ycnJx?(!w*- z@{rh+Db$E00~Hq}CleN*6SYJ)lEnPp*5?Ylm%-gt4hJRZ6(cgWK`9tT)|YAo*zNoR z;J=N`*zEu}*~<&#$GW&H_Syoo!2Uvi#=58H-iegO`h6Y)Bl=9Df86aocj4L|7;ayf zIE*HA-Tc>n8V=t6!+v)Eu^%+Cw!ik%yWj$ITu_g}gv+%TJyRNgB3WGW-1;N|Hr`D} zZqf4)gu7mwlo0S?*3ND~alR~}7BV$y5VrVr3d5x0W4=c@;QGAi&GQ_AkwbnBS2a_| zi984X-Aiv*!h9^+f3+uF);8Ae^lRYa(aGY~XD2ze_H`|3If$Tn4*W@h>{BPzC?ld;Sw0*MEA?f1<M0RIS%HWk7=zo=GBpKut#bDEl>6G7k&YGB4 zcNUl%pfhnN~4PdK~qp}3!H`n(0D3$*^XkPz91Nb+gakj8A`4`XmpWp=j1qU=g ze;8d+JTJ6}faY&nArlA`IW9=Xc#hf}(1iaSLHPev9?5?S^H%zQRGzEY+?{SvbAu6n z;0;R;^}#}7OU`pnd;n?=R}Kmuqcy8EALgCJ>95aK&Z`^*viTT<%oDgbwJ&+5B$<)K ztv6@Fz#PohAZ6(t^y@Y#+~iVyUTiKRe^9moSh-2!5m#^D;gM=NrrWoqEbXu9`0KbH z^!TW(a<9S$Aqb%**>NUoV^^V~XECjW%9~)$90qHXmMt~!T6Tkx$So}OTmu)9LZdr@ zM>^BR6VE~mS&D<2ThYx3kP#dOe->hmo2{Kr)YEAlHsEm>%nv8GRRo*-IPF4-f9H^+ z8PLocl-T3g4IY(X$yo(usbI~EIR(t{GwGr1#NSK592|%3Z}o(X%)g?)6@%0^RngUS zqZ4~W2=x=`p5NBQ$mMpbPn;ff8*DZ)c;$XwN}r|t0S)UvsYJOt>tlO=*=S54L0YVviDc5F_E%toL*QJWI-yRZgml=v$6a<4BPZ#cC+y}QW5$YJT{~^T09Tv`8 za?G{jJjY7w+|t9_#@j6Re_~tPGm)stSdCrCY^?58)7v+c3uiq>BFA`anZ-%T3C`c! zY;=P~J4AYnr>-f(?6kyYWpV41{Cf4AmooiaD=-tyCH(@tKA*~v*yiU?A-M^`u%>&3 z6B2VRTd)VXKh@OR=%g(;wsQ&RaMqdmh2vc+SAoABB@6@ZZO@$OD;*#2`bZrG(U0Nwy_b1Oqx(rm=heouMToT0l6kJ-occ^K~ zxJH;RA<^8dyEHcJpJ#~wP@Y$|tFm6f%f^74n;Wz!9S(BEU5Q5}8=6&Ruu%}P_b>_1 zf1xi2f3v`abr+qIf8TeH!RV(!9v`YF**arSVI0lVcCmyz`&PhUN&VRLqNd}^E`4X} zk%?K!IJiHKGodz5GEid8vZO(twPdl4-z{_W2uKa}T>eN>{9JJ;=yx&F14#MQl$o(n zU>4Mt!0w0pg)jf~!wEt+ho8lsHkRw{o~84%ZD2f;nPX%1f5TtjvaU0~N~SV+%+F1- zo#Pe0uqn^DSBZq0muh2LTZ9I|FoC4>5+6rkHJ4cnqo;NSZ56tFfWAh~9Rn+Df>C9_ z;d`<$3zzam}^9okgfU?j>@Fly1%B z8TDLUE=>Fk3;4lJQbl-`n*Lyi3FXsm-}mN(0mn?A7Ekd3`LBWz_cMAv`zx3Y z@PDuC{S}Objlq9CB_u1`$SugD`dmX?U>?{6_#ylie+>@ma3n?8J+>H3S``1G*4nx1 z<@%bd=qLFnB;S8XhG5r@Y1qkbLS4VRd93Y)<0b2a`z5Ps$Jgf#f-v$4sy%+slshV% z!5BL6N0VU%yv}F{<5V9UTcg3G!$~2-F^3P$UU(3A$ZUb_`8DzYzhM1kg4dyXNoV@b z+BOIGe>}{!pkr*l$r6<%oKA$TdC5d zWsNQaO(j)oBLVY90`;KrXsyc>#kiHGKyBGD1Y{9Oztk@ktN>0xvA_3>i2S^#7w~9t z+J*SKQHE9RC*ahr5-tv(HMKYL@K^i`K|4(W`vKUooAP=-bxiDs!|M zsbXpLS}cXF*Qm<6#A)IQ+v3|5Yv49QCpuRam&;%$u?3Kfw)=3^I3YvH;#L=xZPg~h z`QL2F?tlFY6e+h+83|$g94T!YL`mU>Dy@kMRR(E94}2)b;$O60A}-8)tQ$0{9ck5{ z#J~7sQY)^^pZp_#&#DWBnDd@Z{*bR!nIh@G8+@|RCAdAp-4EZ)jp2&eUPA3rU2X0} zikekhg#QxP_X303g~%t>1Z@gYJaej(Yl6*7wSN|NKX{yi&yRIw>!Q&70GEOS#Uv@w zYO>3J`mG=RQN;mvR;*d>{E6#d*))*EOKcw6RmWL{}>>7mSk z&Rv}t8g$W37~?s@%UJ069hYIA!MRS-d}L`^VsYN(c^vBEkSf(GG4m3Od{$A6?R5K`XW7Y9!y67Ei}jxn?_+rYZZy(Rec z3-=dB@%8H&!<^}&HS&L3COg^w8#Or(n@;mS-)~1aez>Xyr=lsDj93RusL&`1O@ub+{Lh1Iy}p*M^>f=I%h6lWGTiIcKN%kW69vQbX)QDZ}CH5C06z2)6?cz>j% z1xG98s$q7j2rs2qi+6cGUGm#1fxKp&bZT=RH}If$ZT||3ZXoR(UsH1lAX#FgmfW=o zxmBMGYRHtl5@MT@Y|usoiQ^9G*&}qu>sd0>I#*ypLJ)fgSm!QQQ2A;(*VmWaV z1h`sriIx~wN;l`|=q^W&D4yo?thKNzH41b}IZ(5~?1KoiM6L|yGrso~45?p55Vk4A zJh})_s-J6)A&9tEc1v~|h<_tYe^v9Q(DV$Q0`<pw6VVc?C9HLk3WUTYms|&j8#9htOW~ zQ*QLd&O<2U1{7oRx0{4<83nr%#t1Bmv|_g!1M@e2gg+|f9BvY`W&D?rrlgxcvxKSQ z(&23}VSGFPrcDTJ$T@~IY|%H4R!nn-e# zRwB%6RW&-GRew*dTysaWoNxlE*@5A~l`2@w5_cR!T%(v!KTf~Yak9PR#AcH`T_DT< zlHoy#*;V^@t_?O*=}4E6#40HfX1RKjWOY@BvV>i{wPGYVOj=2U=>0o zm=n+o9Yt4I!^0V}@HIkNUf{l=MOy8`q5NuWlY&*Fygs{DfC8K64+cByQeH2{XU)Wv z@SQY1<$u`Cz0nj&j41MpBSxjMUPl#na2()Jg#ude@c0nGi-=~+>(#<<7OsL@)$4Th z{Q~;Z>x2*!W$U}QW&cUZ<|Inw(ziUs0lW~gQl;JuJSHH zeWJk^Vv$S9NnGk(m_yhGIkI*sFH%IQxk(Kl_J3dUnp|XB&%t(u&KHo360X5BM#D38 zKl1z|^HyW>p4ak1b#m^vXCIHg^ArCD%;C?axt*YGa-#o;Mc5i0@RYGH3@!l1-Cv9Q zc|<-8PrxbclKw?bz6tYag0i0)80GGPIt5F8og~Ps^dACE3-1Z~9uWsohTt$M?a}7s z-hcOxKpS*KefUM2ib8h(H-RQ+KuGxdr!u|*`S&Us@qcoWq80zMD7GxIKP!eU#FZ1n z_YcTy)JwFKhs#A)P$wslhihe@+Os-X>ve%YWVQEGB>wRMvKKn zX7u&;d!N*gCHrjVhA$+PctO%E@kXrQ5P$X^W-z4>^_IS0yB|tmIa9>nHv4JX!?b|h zb+6!vU2xZ#?g$1T`O?AKjdp9N7t1A3uClYT)rt+JZmNf$9Tt{nES%EC9T~h2+B=ci z*nLAsM>{gg$O~~5Jz0&LGjb5dpJF{91GC;52w!%;x@&~?5*I=W)BcJCcQ{f(aDVm| z&Iy9aP}$1G^NV*ia2!3l#h9szT)Eivy?QlPaJPLyFHr1v?3S($*uznF3NQdtDxj71 zN+^aJVbLtUa|`Y$uU|GutLN=8k~@Waj7(oSL>eqQ+b$)Ps6c9|lmA%ym^<*cd)&b6 zGxBXL#%;*@*#7kqW3u@Y|J(Hi-G5%>X1+gxH~Ae!!02usU&&djjBtKcAZ6`!BDq>Y zDXAGO<%(cheO6+y^PdR;Y!H;JC!(HIl2m7;S)x*G`YmykYV)f%RV8%9tt=_7^{I?o z88-!68*E$E267@B2bwxbBx@*lQ~y^xcQ}pyHw61!U;V;J($$feYI0F%>wlbQOO7}k zV_CkBwnA4+o)XHKhQj6Vzqv_@d%5)(*&B8Ax=@_hp5<}lKhEIJ;3_*Wv6v&P zQ#?v=a!&u%UwL1?#^wFSbbm9%_YKp+Q+>b$L6f7&xx;|0!_}LWLr<+roxyHGpUnHd z(tC^J8a5dFa+wq6m2edm1~C38Z0WU#)JuHr9;8HV?pV_gqIyW48VhDKqNlN2H7y!v z>8TJi!M`5~QRpr#ll?jh(AjP*ycXIc;gDbD3Cyz~HAYWnY{#Fwjen*dQGUydS%$G( zwRTnBcC=Y}Fmwf5GEQ|BavI{jA74j!Y*nhz6daR^eUDj<0bX`3-vK>Mh1=+?dj7p2!H0$_m=lYu5d#HMRfyinakP<@?|7YPKqRknk%1IjGH6X0vqFq zj5D`Xp6cRa%ip^s0W8pkPy|+CavoR(5kePgOSTS z%!ydBEggSyS|Z0-Vi`iV&{nZ5`HQ1qBUQly>F^$$teG+C-2Q0~?w?U**n5s={D+#7 z{~(L`-$0eLv5~p6wZT6-l}T}vGJSmT!=`yn3h?mXdfjF+`1Xc$=&_g(=>bx7SS`Pd zgNchI*9;b#?|+2$dckk{)_?Hoz1W**{mC$fILsa`F5xPgXSMK%Dt2=ZFRJ**%X>A6URf`+4=ccALvn=(jHt+=uW1@P99$FS7ks>og;Cf~HaSXRqH~*O}Q* z|Dc0UB}_=ll?qq1`cNBP zx2pSZ=kEC z==d2bSSyb7?lrmUd!9=<2h@0}kqJ%Ac8hsrS^HDZlqLGp7orJi2jWo9i zF#O_JO@Xw1BY6hfd!mN2W__Ttr&_cqXMe2u5OJmz5Y-8W@{V?c0PA$Lvv+f_>(%=> z#y~&&Qs_AD5^ITOs&3J)wVyjdw437Am1_RO2)SQk+8n7EI2cEzYbBNPQ8vq~qVAeSEuUU(VTajxa7>9|yZERTLL(|F@^*h9RsWS|?ojDeB7%vNQd=^q zdQY6dJ4x)<#WMQg5OxuZa`mQQYgV~dY4f|x^77c%8>6MtEkRcJ+0e3K9^XR10V{VUb5td7(LUgC}Yr)cp4 z`pW^5CW|BPNp>;)%K>s}-1hbQ4VLS_$yL9iFy4UGL#IG-2A#Z9Z*U}oD5q*u;LQq{>Mq3fo-;~HMU!jr|dx`kFb+kel4E&f}- zJZFpjD^p_AzPqC1!V8(#bmq?lLmkOon2GAlFua3=(=v%z^t*C5trUIkU)Ti9yek1# z+^lr9{k3UZuCmNsM1jeet&Fue{daOfrXSqbTT*4Szcf0zizl2~IGL(uQm%eNRl<*Y z9Df`U^O+v8(aS0IjAXC}nt$jy1{+y8*H3G1O*9XdDH*E$zV`?%SNI0zU_mZ#d+!Kn zp2|>pUVJ6)-~Eb?&iiETwZsVvS{K`o&;?=MX7Tv0<-iMnPhJq=`Czq>0;-7W7eYKH z^H(3g*%$gLm;lyY;~qhSWDzBq+yl8muIKlFF{rSE2Vb4cd;iF<#DA8ipLw`+Pfz2` zGbq-SL^UE!NvSN&%!rzRDud`1SLn(=35Mb(z-4eOks;^!Xcb~DItu#M-eBV9MYr&m z(y2&~N@!qHfXyvir!KjR2Bh7IueKd_*c%x&ENzJ5yE z7LgyBy8%y<93`@0Wgzn87j!ZvkvhVB62o_w)3}6^+P;G|!1567I*h zPqO_i9ZA`cVHnND z;wSJavYBkh*)A*XCy_qbSPNB{Q^ieGnBd|EAxno%B%jb{WPkj@Vwcvoy)GtanBx9C z7_=W5y$k#Ma%~dlb&Qq1C|xeqqvGt>MRMLHgq>v%eU6G)^aoPs>Z&1=1Nvc3Pon^% z^3I+i$B@f|vUZaT06J60NS41dx(YZ!#}2N$DMv9qYx%FEFbYw7+nq*1T@Mh8T9Lvh zaOd$z|0SU^bbmRz9ywX1FDkoMeuYJh)#Ejfz4kq=bmB_d&yBp(gwW_pNMW#dAxq*G zQT38pk7YAww5KmqZJ1x(v$Ae@1~%N`l%G^{?uyrlH_7k*skW$qjl6M#Y?xGZY!sDJ zj^cTSldCP*71lAT1F|E6Mxk=-N`)uAApsm$!xU!Zk$+R1LvxO0!exVtHNFU)o~=#F z%^r;=>Vyu&)nwDg)++4v^a~!Au+EjgmNCc&f^fi6Doc51WtbA27#n5gc*p#w5uHr7 zDe<#7r3gHH&YCNt=)G=1!dqRTOG8e>@o>MC;y2hogNSu*j{W8jh;IH(5UJ=p7@Fxj z{1b@AWq;QBkh%9;?CHq;fk2_CW9!BI49GSA(!758atMjSE=Z>7Y#3a>P%zLr_}UxRwt<<)v*i+|j@Od_t>2pe}XM1@+aG%3_LZf&ys zjAx$s{rcQqH?MSeT4f6}r^`IyeC)0VL|M<-Kea=hY;wSl+t>|iot@&xYBSkk;-+}o z0;G~~HQWYklewKWW4ZT(Q+zI_de&eXxDm8(;Xa=9#SCeb%OAfv#~k=fn~V4#Ka=Uj zh<{CbzJ{g%N5>^X%FXfVMjJg-Ikk#7BvGucOEW`h*9e!=($u|s-EyZEudg@%kaZCnAa-sPn& zS6^xqb(|MZ)24)(p(f?8#b#kD1WyLNv>`qF9!m~pO4TWE^o(OeGkO*p65o;`7|JgK z?a{<)6R}D2Q;%XN*lER6{=Zf-D2`1+{!vra!<$32|NV|~ihlz?F8WsHM*2>+4u5}Z z6^~ro7#{x_uk{Cu-2bEB`D>TC%6~omS!we8?=)cSoALWhOFguQ#AX z4=!ngbkw5Rs=>H{`b5_qk?ZA~PhyMu_g4J#{ZTV=Mp63?as>fRAou^_7@0{FMpnqlIG`BHxgj*kdm5QR9%>#9#R2l`oo5w+8{_hyRfOnLEqk15exs~paKPZfPXH>cv zWl(1{=6;PO?DXR9#3GX3?(c|a1`l_zUQg1zKYiXo=>_Qr0JYOU8Nfiyf~sz4AqEue zXTs~W&cTDBtD3awOhtFkI)74*`5Zx6J6^UP>Kd$2wU9(LyyeYRgg~EfNKlK!4srfU zlvdfSuPa(J8!xiSRBae?bWZWTr^iog{Y5*$+>8n5GbwxhC{hA3OPcxhj?%Zf-GHQ> zkwf%jHsRVL@?eDXJE4C0KHt{?`U8!$kJ-V_A5>IwZ}pC=XGE#(8W+YSUuZv z2o4wdxT=x6M4)vpGZCuO1(TeRxTs8Ef#F6EMxwJ68dsHBDpM`au~R0i++ZS@YA9)8 zI+gCCeJQLn6VnUW6=GL07ww3{Y!9&(%MDXk@%}kSSKe+0Sby7174r*A_UvtC2Up3y zJ1ni)OH6=Hy?47FD^{?zVDxyk_C4ib`SGFyQhScenU2jECHvxr;l0*xDDmZN0#^^S zxh}oq@+Qrx=(ooR%_DWqP4fk=W~VVlx}naug}ewwYG&l6&<*Ksg-KXtjINs)m9gqe z)^nvM)79JTb$>pDU#)_1SD)X?B`(Wa0KR@63>CNfBNZu*39!?X*x1}W4jpu-$iF|c z=bbKr&;d)Z%37v{?81lRWig}m~4mg}m4NqDezXc&qsXp#K- zm!-C-({Ss*dPIH}UR$`u&4JSburY46(yeOTf0-;kWq*-%WH2^Ah(D7AUuY35D-?r9 zH)fP_?n{lfoM1xUwUexfx~&u0`7;M&H#@4SIRqjwGFL!#ixO;#nrrFzE8xAKJHI>d zj%O!T?|Nc%)#N5&^M0?#pGVTPFbdm{6{TWbUhaX~E2*St*nJ^IJ$E-WA%=mhRoCe= ziSn5Ah=0413~vk{;z3}%#nWM^1L-7j$)6Vb;SGfy2^5G2A%WC>qYg`(;RaemaS_vh zAyhVwz2%)8gyhn>OLd@_ckOrCmTe0-|4}hePi;TlrglqOX=A=^a~_~=&5_J%(>iIP z+!IaCWrtZ7Jfwrq5e72RGZs`&9hm4S(`mNH+<#GBOWyUVrcjp*9dikG)LCrn96Hv9 z-iEsqO5ziQYw6ZMAbX=2%$Z_pQmbB;oXO!Y4pzyxWDpH)g~Z#RL9*3H4$I4W3msKA zD)oWbZSeFYs!gW#8M0`_R-{wG2Lnv6r2LSs1^vUHWm5r-5FI>OC?$NdvT2U! zp?`bn1{2A4A3M0}U2s{DQgJfGR(b`Mh``@q*QBxi$M+*p8EFRD`6&TED$RUZ810Il zp3x4pw$jz>_XG5?xoC7Y$;RMtxfAur#vQaVG0{O_xOAbRVf_+~go&nxYXQuXB0NCI ze(26vb@b_e3nXE*w<5FY-W#vY&$^q67=O(tQea=Ux1}k{h=4|R$HHTj`>&%HZJU=L zNQrun0d3d9=x1T_laN{o%@pm5u_9G{ zTWXX!M?5F(n}E(t?eaYDQ+QLp3kCC4wwSB-hL)7>-1-mnWT8kH%_|L~EwJg0kAH-F z09Ix1=eNQZUwAnCFFJBovb3Fs)GYt8@^iB|Vth#k&d8-Y^ulVv@vEN+TaDG9ek|rAMur}QpygX5#fE(J!Prt~(I)5UijweHQ1(~C}N8udB1uSCHa zRwPi{PK0o^U$}O!NgoV@xFmXx$$!*)2tR;SAkw(p@m9jmDOMg0;j}#y-+wet$aCfC z^Y!b%zWZ^ODi{o&XG>)s=p$=@iCZR^O&D-{6QHLUyc>=@5Z6J;)f& zbG}55kt%m7A1YGRJldoUWxXnyQgo^l#LIr-WHq!zT3pHanqX*hBxn`aIe%k3JCS@v z8N$d!&Qx|3bNqU)m4*=leii{feHSRh^H|QE%(tvm%;;@;uImIft=2<@1zW|7nOY)S zd#2r$oy_Ij(@j|hiHWk~%8^q&!fBJZcCHk}z(hOf-pBO{fpoBEUG~Z58N2sBK+|J; zHh?BviXKjF3zVA0FFuA&NuWgQ+%zX<&=w-Gy8u zpP5s9L1Xz8_Wlwf7dvBvS)(gG#*_Er>Yg`07t}a23~|{5Sv%kF2DH-!_DeZMEY-|@ z%A2)-`w~Xv=JGoN;fWZ{2FgF2Z(k%UH-g6&4BsCT5O6e!6?G2udx&msNQ2$~Ry9(-PmIOwR|x zuc2;>CF+))%u>?NN%2x zZNMhIo;i>EPWt%p@X%fmM>PPyfqT^HxxMk|`Mml3`MBNv34hW9v=y6&n;eorPer&K zP@pz@^OLTLt^z~GoQ?W}co!SiJxv=nkinB$tsj~mSuQH>(U5Gn9!Axug`&R=hPM2r zGGuzt4k$y$jIae1D4_zS~aGRkCw(5nQ&L)_VIe@bECPx9T4}dp{pZ*xyhPX*hpOiaI44=pieE-WCdZiF zZiRXWrE%B9so%=(8|*t2%vz)Jl005)Xezx;NoIyquYbMntJLdX4O#P3vI>Qp)!D|y z!@|RSaqJ~<^Zp^}sorUZMZbMXiM-nga5P4?odBLLt-aiqe$&b~}3_aZj=#b-KpKRjT=tUY8`x)hc~4zTj=eDW2Y{IVaeb0}ui z8cDiKK3|UbWdsaPm1R*^Z|0E93s9Qhs=gXoD}U%gO1{<%u2;i+Jq^fe(4Hr+Ini?W zu&yGgRisjZPEe!YMq8dsIzxUPtpY9@aBFE%F6x`I1z1=uQ34n?km*}1+5qC=s>AS8 zWiMSZfASlLi~-+pY;E2?K3C=b@Jo2iyjxHzr@u9}=}lM+KTPRMSxnCEF@;awe#%Qy zjDJ1-gC+L#jyg8#ZAXl-mq;jiKVr5r9lSD!3g|vE95brPgurY$@N_?2vjMt;0c>)Y z{#Yt&fCS^+QQNLZSDnx|f#gIjp8`GK-#k%?R-~2)VW4$`^H#@_?gg1MSt>QDgFP0r zckeKt$XhOf0xVLjmMg-q#xL2kIZQ_LFn_kIVka-uTMD&=y<}U-MxleM(dzA1i%wYA z5lMhYx(gn|G9gDqbz@E87Tz*EVwQ63<1HYvlQo-Tz0KtalJR_T_EYgVDKMPW38G@; z!g-zW&w-RoS&=$Gl2JFdVr5>?PMX{;CwBKRCsdRtwl3%;uD#nT(3Q87@(2I0bALz0 zeyp47V2)D<>7zRo9OX)9k={hOahnaS5IOsWs!ssYf+YamV7)i!5eq)!;6HO})SRL{f?Ev1Ul=Qqt zAiXqqFi+h92G9L;yBN*oVN06fD}QTUV%Jt^vw~Hl>%_ zbOx6t>sDOXt$wRqKF2KAD$KRKIqM|D+p0L&^sWHI^$5-miJ=RDSvY{}^0?iyH|PZbJp4A`94~c~;7l1_bU9F_O>cTUNK=9ST9nSAH-F-HvGJbZ z(S?5Z+^l&I4@0hG%`NS4`&LroT*1gV1qZ(m!|0+A@N(zeGUa3A zZ4SKfM)asAb}&ric;%<`kbj;*cWn)9;crNuKxb|CKJgZ$FHAF=!QH;6qvhUyJNfQH zi|_r@&INvir*Bo3tQnY79`@pUcF*cM@H+mp2|L}P6U60qQg(OlEp?-h9|-Cm+{QpJ zT8?0fxuhAjF;3A`v~96ev&9Th0Puv8BSIK=ul&AtA8eCD;!87%4CkQ z{3PUmps1(ct0nwcD5gg<@f`wcR={)dsCVFTN4Oj zkwFINvJSk(Hx$LUBqpyXIsMx&L8X4K(QmSdO2T@O`k4?G_3T@nzSF)xwI)BU(JN6P4VN9k@ELYWuR65#c7H~K1yn~J#Gbwbi z>~z3aa3@E+Y4Yfah#O1eqj=~2@0&9J?;_UO$=vF1ofv1-!vY=33;+95wT)HV``xf!@6y|3dUgBrou%XD z{P`G&p)|w}0Ugi`;>H@}zF|M;`K{ynto@sjb{4e$w|{2=wE+bP+!h0b@hfxn!H6EW zypP8-jiOq4ooX8%_%LMGM_cErGEGj6LGz3ynV6KjrbTC^?2LVcVe4f(DxuQGbHE>K~fH43(9?{6m7 z%cY#H2}y&p_P!?}Gdf^~cD^NxOxVRfr;+l~P#iYi#@;#1IzLTMS6HLO1-mi)PZjsZ zXb@~B8bdxvEr!bx#IpXB{LeQK)M}h(`gdB~Xn!?q9^N&D%|_`IcN8khm1U_4bu@OZ zd9F~uJ5-}%S`ANQHc?WeqECJw1Ls9-S}#Lh-R+Hq`%kyX=xg;E`>)>D2Olt1QO!de zf@q*U%frJn>U)L7e&^D?QxXyvW{;Bgnz-nH`3|Qhj|Q+qAc;IcvjIe*?FZ^#-Ph&PY$6BP1;8KZCc5%HsM1zp?l zW90sdk6Gy;l#M>3`tGU4QHf zkURGnb=3RS7@g54BMqY=UhqYPPw${m#uz3${BV7lZtz?Gz)TzFxN?ZB-^j({>F4$m ztneqkFhGy34Y>X}Y*@MLS-lOn!G-!8QqwUq=iDk$V1c}2ijBuWcMvxFBZ|(Sl?^&c zmVKk}0nuH?)ipZWq-T>x+!VJ7WnQVIWsS`ZhMGxfnK9|m)9u$8^9g_ z2@oe&RJh9k`+=^G?gRS~-h=O`99lWd-9fwEY6w?vx#mah7*-FV+)R5%wUDr85q*J^8 za6O@WH@KtYSX*rDr0LsPoUSaRzF+spx>+K z*MLnnWFK4Mf`p=;Sc9Ws>whC+t&%PgN9y6WB?f0iGgYd2ns$y$%fuQrnN=$wR;F~( zkoCs1A1CI8DQDCrX)Zr<>&-LLyb3j9ELj-9POPkxqoo9$lI8Nv*`#lP#>J1%rA(lh zDXgl}U>g{9#Da)W4<#qX$wU;^Yc=N!g$h8IGfl8$#uBXx4h?KY=YJXYXWAi*C9{HJ z5F{wu6J{pmPwTe(W6oeJn;P1x=HD?657uhVAN)lklRWwx%VkXag|;kGfKtVHMVj%i#^%zq4AFf(-zkz>xodJ)<(Xr{<)=hs|0)l<%%wnwc#o<4Yc)cs0N z)0u`t3tKN&i%yr}Ef#BcdV{p2%PK$Ao0zUQoHW~sa(WZ4UUMjSur=njUhuJ3naV(3&$Yc`EFez>y^2L1)o# zih!J_m`$ypXvu;TpfUvLO3Bbb;Li8yz&p&|+w0st#e|NG(aX}c7Vz&48jxKZ(o~SM zP8&4!8`ZUzt{;PhlnX9(_IfZNk1qq6w+i;g9v~fpJAa^MRFd+hBlPyz7MUiqjGvYj zlX9coJX|CT`1}lm_k{f5M%WXj_OiM58icTD}5k)iQ6OiXxtjRsoyf*G(_YC z=BR!Ef8_6_?4$r{dQ_3SfpwKXC_d5+Ky;L~0>&exTk>0=YRH>*oCh&$t6IP~BhGJ% z_blxM>!4Wy%{xtd)Guv&)-TS3wzvFwgZ1B#jf1g^v5l$m-*imE`91{WA04v_3Is&*FGfo1o7?=u z_E6GxoL7P8W=*En93f((XL_KVfkOt*Uosc86TpZ^6tka;otbcYn`y1PX3MWXkYFJG z&41{9kj4WvKXn80Rv=Tu&IeYM%{`FydO^!aiAYzlN{#*y075orIy!sGC> zf0#HORp@=7w?wVcevuzRlBJs6u2xB?Aj~*ahLWXvT}_#+^1J*``BC==KIB->vI7^_S3wjUk33jvJ>7& z&QaY}fo5r4+7iJHThEi8Z(UD<*v=oDRFL^o^+qo36Ij*Hfwk6%!D|)QT)X4#NeJ+? zHJcF5=~n}*CL6J9thkLZ*WsW8t$B)XiYM1Tn_TV&r-l6rB%-JDXxnUYqkRKRQfC79K;z6}Vt8-bHK?_I7(-^R!7mG-^oA z`}m^5sFPWI5v027_z*hp$|6>M~~qEBM*-ArbvO;uG5E>ok=oxcOR0DAx{O z*P}0WBScveHYvvW!*PV?v{sG>ID;=r4pSKVHcG-7`Z#f?p-*Y|hJp|y2cg`6%>?Zc zh6+L`c(VP@Jl@a~n|w_M!y|q^vgBsw_E2cAXHq=b9}-8w=R~eNMfnrU*?)Z8`3xcC z)xmiP%GFoUzp19=lW)L^LwnBPZ{5;?%$`6F^w1i@)QPw4iM zC*t30l61{KaDl{vQp0Z(*nd;g?{PdbXICRVQWGR|bm?~tuiU#OEK=Qmp==$s@yu-P zj!E3mn2?RDkr<&faTu;)A8AzHxy!k6R%LbBurhG=GSNR)4_$ZQ)#N z?VReL(xK(Yf8X`{Uw^y5RDyuBxs}m>l?_=c@2beh=sqUusru-kOK5}e4T!Y0TFK?i zhxuT3(qVq-!lm?aKgN$4Ok7Q}vOq_R%rVvrrRO50*Vb50JBy#qKqTl=wlJqpZC~?_ zA5uOrxk-l~UQLog5q~sdOsBn4o;|x=x1QZ|p0hfA_Agz(T?{XT9>kIT7L7375_KqL{vLSN8Q6VJ1hg^SbA%(0@hh?#$ zx5-qIjeDPzdVffUYw2>`K}!QIt1-IzvQ)7(Cno0hYmnVVDj`Ww5@KBxH_2Qbzj>P> zE_ISjszE%hc{ePjV8qg;a6uF!=hG7sChN}Ks zZH?5raaOT$+dDE=c{kwKdIA&7Y%fliD8F%zdAPrqiGLCs4haLR%bXY-dJOq9sQwH# z>#6&Lug4ZG_w`i9DgExut=xx|!i#?COK?Oa)RM`i6_0gGmpTSjSxQ$>e3Nl_p^|d# z)-$Us3HCX8gn2c`d06FcSY41L2)aJP%^K(?p`3#k&G22nyN#Ij3JrM2S8Czps7}yjfSCYGbK5H07%s* zI(D1QblCV$w{Kh#Wrum~q=&w~ZIe-_1b-964Idc5(znu)fMhK;Nnb#g_6n#CH-qUxQMyBwTV{2&UDtWJN^wea(^`; zDIW1^ujSqLetfo8fU=sRaZmWQv%_rCL`k zIJN!KV;5=cjDtn*-IMa}x;@gjo|?-B?cB zXoSR0%RXeLn)fQ`~Tw9>^ z2ytE9ubw^Ly}h1j*S4oat2Q)UQIE3wymILpwjF79v%qigo;x=>hrP*<-5#J4Pq2W8 zYjTY+dV`J0Q;fCB=V$Vx=gDGOqzRF&vqgj(N!VbyJB}!pe%$*U5??dJ*?(K{gATXD z3o%n5n9wnQ?5jtTU5UVC)L}l;)pE3X({8Ru2rg`0at81`fNYhIgYZ=wiG8yr4y3qM zVW`9dYoXa+)yLW$p-sR|Re(+^={a{S&3|6py@6R0-WFglxxvOVsm)%8;(1fvSY1Zj zVv9@%ddmnv4mPPP`!3zkB7fP-cTZ&j(CVqX*__;+Y-l0%Ll>gaqXbAE*B-hRbj)H^ z-^Wz%Y^htp>b>ld;>zJ<_BRzltseunS`LVX2%4}Dv0QIdV^x^wR^>%Dg^bee1KfCo zPc2st@d1y7lz6{D62$a=iv8;Aqla-vc0=xep|Zv;5dlcpF&8Z<}_LdwR{dr-Q5ZAX57XWNhwVv5{eTWMx ztoIsg<8a2weTMLYY=2xz4^HyB_klTP>*|y?>Fv6xP+OP_tCRzcU{fnqj(GA^168&o zmv6eCCt{N(t-Hq5M7=!a*{YRi<@M?%`mPxTkpd%9`cgkY|KX@vK2Ep)U;hF5v~ z1dPvMqM_7iK{r6a7HG$ZweTt|mSUWOQj~AhB*ny6?w#SngnzB9pPGAIPY6P&9}FDZZMQ#fK5xEXvD|5XdG1RCVZVgJh1SUhhT3P3 zCP?uN9RMf9GP*~MlBRmaj|!9I7~GkY$TGTzjG7v8oe!JdvZLpiezNms4?{C__4Luc z-4J`J52+ey-R)Mm$qz{~bdea!4;iEDKJQ`jFzNFTv46V%PL8r2fB9kCO}X#M&_%ls z4pT?8A4=6purJ#2sWvpu;Il{QscQU@xSTWU7QAf9P(ALZJY=b}akGmTxNVe^+}UzC zc#e3sU+2F+njKy+Yve@0&Vwu|1~D{kcCS&Whn^-T(9A)+Kon)J*Z{?@-BHW$}l@xu9 zC4ERu!5H1whP08eY*Iq3jwO015m%NfM=e-IT(Sw7Gj@I9Xw%UKdTLWT+8`Utp%F=l z;d|&}7E|;xDHcxDv{Sa46TSK><8{^D@%6U+n8q zS$|&uDDev|2~t9J#_K^$WO~Z=l<9PtY6!{&4e~($j!sSmItFuY(%ov#!~uCyz_0Ju zjW)1sk9_Thhjl9VfS?RPSBxVymP$djNom2ZcqTq_odgNHV2!c?WPuZH$)b4O;WojN zm8k9H>Z282?XgkqvZxVu{P=p>IO+q1H-Gv->}SrU^;J*Mf>hO+=mIDMshHiC034Fe ziKpG50Jb*(3?2GGAU;XI7e^mauNC4jx*HwO8ZR9^{AH~C74pW=H2MADl=2Ne*WMs4 za!0tX#LChp5_Y%?sUacK@7aXT-vz&sWNIj106v$4w#XkS-36pkj??d+NJts*CvI;rax!u2&J~0!4Hf<5VvaJ+uL_fka zZFX;G97@ZAubRkS7|HHFJEf^nq(Mb5e!)2Q(v@WcO0LB{^k~0z1b6?8a>AxJXFSmz zWsFZVNQF4v#wtrC{9)(!-Ek_c?tj-8 zbefsnHLZ);J4P2;kKMHv@DFl zsS+-~BA=DciXyx_Z5kDeO6rS?&`r83aj|1LS~FUj-63pe>X?Eomt`$E$$yw;z)MQ4 z1-+{PA@1xju2^xtLzu>6{>{9mtC{;vww;;h@^NT=9VYMTG zTGxk_X6gXW0el~@#x2#8KEkCN`uk`vh+Bq_&?nNfVJ4Ney+Nen3!UCIPQNJGXNmbX z&~m#|>sTZtEe`k=e}6Y726l_Me*C9`7*Y|D@}*rok#V;kU#a}iGLn!eARr5EkgV2+9BfL zJNDrF61k5ZLR|h3NDO_jx5vyX07pQ$zxY^xDUT8DfDUEy99k0e4W1E~(4Z4M0#?4r zMZOR(Ox71PzqL>J+B?9a&zK^+xh(5Ty6OYhV%v3=)_V9Sa$oI2bm2m%yg3eO5wsH1 zV0|1-M15S*eGnV*Sn+?4t*-!|TIuHQKr=_j(!c}8iX;J@8Pc#Ni|Po)0?0cudv3}74BUY49Mki8`;Fhz><|8IG##%vr@vOz=twi zId)uYcG& z)YWU_vF@LjCy-QMs%(VP!L7XIS?i6LRRVE zgKY&ErZ7b#c{Qaj4#qGYlG@+zq@7D&8DlI{M9+ygK)F_2JNY0NR7+iModpk8<}g+} zg^NeBC)t0KI$^5LAJCW>-;7KfBbj5cnuE7Tr_vj@TNf8(_{ z&Ce7qrU=WvxyKs-5rS#YR7sSet|E(aZiVA=pqOQey^~D~6evu?5dI+3GjsfO&M3z< zNYlUB-q%xWv$6JdA{Ykc4o{US%BH(`I3{J}tvr8ce+e!Va0&vjHNWt_yrQUWL2MgGLW8F#)FHDHA(z%}dW7GOkw(nvAu#(d%cxDjjh zeLbnVM<-@>!No3k-=WqDS2>Ssm8s+i`65%QQDbURo-cp>ZJ*oWp>}!VAIWJB4+KR0 zZ()BxN#DTA_#cfRRZTUeKPr)R!tO`E_`0}sKA&XfpmV&siXRA zeJ6Hc)0y;oYb56Lp4M}g7U@mq3X%z128eY7EYkBN=GOCF2k&wPb9VAJ&vy|o9;x#8<4rM!W_Ny;2PSTl5ZD}(aFh#lW$q~M_};wjm?S2%*E=psAT zjqguU){?sgjQR>pcD_)Vj(TmKjP5VIqA)lg(PE2Zt$ylH_EQn3ZmRRRJZ|Dy}3J6mG%Yo;gp> z%`BZdjUsM-Nc=>hqo7GL!z-+V3k836RB=7aWXiB2NU_Z^71ULmvAZf0r^Q*n3q{(L zQAl8*<`kw1i5dDajAIYP597CJC%S_bn=L`b@j~!8HP@C3;sxx}Fk%i3I0hb$dYhPC zc7F*F<8}p;u`NN-vpe9`1_zLNrg#?$Lzd~q^zqe|@fJZRX+3!+V~n~Dxg39e=W}m! zK@zrvh5635r1*Q_hB*cq^kjXKXrE9d$9R>4Bf<&C@yV!F!{Vtifw27twj2%rx8Rb9 z&(%P36~ldCC#=}gJ#m>5fA~~ZPGE~}n{#iE1FFoxFh8aN`tkKBFpFibZzTfdes42` zmD(N&$jk{0bC0W<=bU;5!Oy)yUJSnSIklS<$Rk0{AB%~ zMFEhoHM{8{x}#Vh7&U(lK^Q)P6>}Sy!2cg*?-Zu#lcoKpZQHhOylLC6v~8P}wpnT0 zMx|}r&Pwfn_sqBVbkEn*vyYxQS#j`0TzC8;V#U2q%tr?VR8G|*b3G=%ZY7|k8(@CH z!m1A16KCmZw9#*($Au2OqlhQrY!BUlrA}*R8|e<-+@*%K-lcyAu=56axXZYcZR11x zCI?NObRKfsa?EHqZuIUsXcTvsT&zM2(2i`cphmkq&!)NGLc;qGxx)JoxIT|<^rck~ z&Fl;k!26GMUh4UsXpr)H$R+iLan)Gv?i-k@r=npfl*G9Br%qBreLx7Hou+~OqGWVb z9u$Dy8E(CvSlEA7OenCF%S=~Bc9`TubaD`2J5oBtOANk?TO~GeIrlS`Sip;4SEeA{ zSLJ3GuV^=VrU<7~$j};`SfH`R24~3_&j5#RS*cnO{NX9EghF#-=?6kU^&qHivs`~y22!18@nf=vowF~`l} z9>hs;!acDcVOYSb&-ogOw$R%05t-l2X{^Eb18j!TjY=twNuy8C$h5Qpbo%RZ`IKYv@qE_Y9L zDZuw`v$ubyNaA?huw*%gu>v%xymVAvx2ZscV-p8Rz#Ui05)yF8qQt`9_ju4&xKYdu z;P??=A7a{JtLH=i-gQSXCs*X!;WyDAe#^yvNb&Iy=4P`ez1P9#0gLC`UU*>YO$Nt( z_nU_tYeT>!Cz^lKAU+>PPhK<-J*%&D&O1-=ugvqdSZo{c3w-h|qVJ-cV=EbZl4?OF5Fc{|>p6Q4&l%B2&?wF!wtrxq5+WD;oi&%Dyx{h{7oL@C+n0wG3 z7saOsB23pS`4F<$7>$A;^E8Sa5#mROB?wuO7m9aLQebR|k7;y_8*ga`G~E zJkPUvcq#p^4`Y?`<8ZpzsNp11~Toq+x>7zCIo7(_jkjiQxz###Bk}|bRBb_CmHTCgNhzlg8 zc)|Y{;*$M^xOD$3yivC_bN_!&zEzr(2Vq9z5B-S^KoghP>QEYzKy5+d6w~-?XK!Q> z24NM3VGiN*kwS}#=@&p~)`bs+E7c_DJ;VRvn(623?*n47KPG|v&H#c530KlGPt*Cs zVr3AL8I#X9#>yzDO2(OFN-{mUR0!N{NJZdZR$_0<-A2B791!d*gq&5CuPTL}W!M z1&X5q*~A~2`SB4Nv-0q>Xp99}@p@(z0lS`wpuiwsOWi1r0j*@;WQ;Cw>G_=(=kos%;FnBgh*&hm|gJ(OD zlP8e0Z(HvU0PzWho4i7hm7#W-&U(tUdQ5>=`GI@dwoa%F} zDm!{g&xKne$Uuo$=@y6}R1=qn#;#;;dh@dC`QhRdR47g=iWmVEj~okiAJ;^#jT~-f zIxWQFoFIdVA?C>QUA4h~){Jz*agSz;u9*}68@;HGMQ1>*-nYdIRd$K1RjKkLv|Ab@#hZAV>e-rt`)$Z@V`=17`mj$Vc9t;S`@vkn0|F?f#0RFR~Z06`{>15_CW$R$? zzn zWZ+_~k5>B8M0YHoxjl9W`ZGJ&uw3y;%nRSu9c5b^`#~I~^Fr_5$$|Oou8?Capvc&BoxCv*?2u|Sp}SvlO#E`5hS%6SjP0C3@Dzw z0?vQaSx7whsdcTakmNA+Dm3?U`HGdG-f>%5b~rC?k`+A|mslM~*eGyCwSDOgnW=m) z7LjRIT66VNhEvxkVp5TE;W(D9`$t3BCCVI&Jg^5eRYdxun8KT*FoR>gE8+5RB(X7Z zOGL}J<53x61+x3EIveTmHJEDy^8c5!}JeC^s$6# zw2-w&7SipEqX_CZQYDUIff=dyzGUwjskJJ!P|`_e=UT%fm>>1ZsXx@y?Y5JX-JDrb zhE`VR@8pmW6AC~ghNhrIxf;+}AMA$L1o{=TlD}JbUEoP|4x&_2_m(TgQn>nY&D(#r zm3Luz6wf?Qick3s^3c3o^!edGI|mx?As1pzFhUziVd2trwpRDxJC^3F&7)cX;X3>h z)kRerp7<7OvD9zBAq(w(x4DbwYS=_w`8|I7Ge8t#2CIcIXv+5^)JKri3*9W?F`M393+9IY)oz){MD zT7&%^`5R}uRB(>yGozgB4#yWx!(us%_)mI=%3_aHYF0D%E}^9$$a~5014c8%lMv?m z9DEX>zXNlxM@6(d%6&W-X_bfV)YO}WMO%D>*w3^=$zUJcC!EP5!7Ik@{MUc1vBF#~ z&JxP6yx9>e0*%3S*jGemwr9Ma$mhCeyf0|~HvY?65&x*ZnVH%8FSwCE$ULHYYA)eE zYLDeT8th*qhbZhOY9aE~q0LF2gzRdMghspWp_m<20JMf$0K4#E020V4>H6m)LV{*+ z8{mpdie228Jn|gGvo;Y(5ZQl~e4M{9r`UJJA;(l(h?0b?DUZod2yHM#AdWv~R#N4j ztyrZ)2w9T zO7tT;5EW4~Rb*W3UVMR;EAyt94!wxp9lE;E1g8vth?q+yoRlFoWssuEg%vatUh2Wv zeyxu90dlp1nHwYPpKAFs$o71QYsP}hnT(IM3`0|n!V@hZ@nwJH6wgD5?ZLP&_Ekb@ zvz7eBqV^>@0%mPEw3LN@SsXMvC#p+oIyPu(SYLng?r!G1a2PPnRT1i97LzrV z!`8wHASoh@l9Oh@{bz11_?kbKx3qwL?}i~!+3%#g#FzrvD2Bk~QpMl|UJZkWEDG-u z^P&4Kgb3K?sPxa>f3z-WMWsO+T$+7-f1JF3KYX5K+aDhi+UEexhJ~|F0m`Dh*%l3( zqZr^}mdk%ND~W^HaXRLT3NU@|>*Wz{)avySEZ(h|1K?>mtkT1#sW_xMwFc28rR<}_ zs#h_FeQ{ihRc%)4Kwm1Ez({21Hk{I6LNawYV5n%biBg}=8s2?nrOuMUp;aoVp9MpH_V5m)b`Jy-(R^hV1)|lbe9Icv3 zn%1R{r+WrwR^#KD$$78hBO~d7{9?D^^>miZ@2_20YPGUopBnc`g*Cs7Y1i0Y|K;k1 z-@1Q5y)G(TY|M>_Mq2Y3#JHl4X_)D({(eKCe}zIEH;K=^y&t$J3Br zWYVf@K4KOpV>rD-kO-p_9=yp_)HmmXR(+Y!Me1z&Bk8J54m$(ae%%%WW~6SdX_Tso z^UMRt6Cb>dC(1#MuiPZw#?ei~AgOnnTnfbbTMLfn`Fu4zyzK^c^ACi3re!OQYAJv2 zrJzUX5B+PanBeY@z@J@>WpqnnlT`BO)?UudrCn)2uu9~6$JO}si*g85tTzEcxLC=KL@nC+^I_r&{e zc#B-PlpE}oj3&pxqcutSxP~qfSJZzq+G4Wwe(+_5d67wjg)XuFHU#FL(IbV38^;MS zkQImIV)UlHWfLTcv&CI)0aATMiKLfDAUfu>7K{}WeQxeY3PErjB9}Q*ulOR0VUhwj zaWB{sOaTOPbd@;bO=rBHs&qbZRyQu-_7WSUcbdh2u{*~T`XagUPsLzuk*j~x)i*Kd z%m~6T0!E_=s)4I0NxZO$+eIZjI}Lziot`JC>nJn5E8N1xg-klKigdb^j)*9<#+TW1 z-4sF9gk6>C%%77>j12x-er@n_cp$DQ@g44o+6^F%hsn|d0aL>{n$zIluL~Xoj1C_t z2u4jPf+Fw40wZNjc?WPkHA8RB5+74<(IjLfO((ZGn24U{&%hXW z+)0$HeK4`Q_89&qe9dbS4}F+-Y-x9BEB9dUv(l-K_p*tWL9!c6l4208Nq5z&p}cK> z;Kz&vxSJ9^vp17W^N8L#@W`H#>WhYY0GG&geHRuKGwN=r=7Lgg$%cOtwy%k+tV4cs zmz+bnq{rUIeq_hy#tbN|Vd5kq8*59|B+|U#?q2S-Azsh**|NutWm;7Y0s86awZ~TU zU1c&%!A}?>W{8GMV2+(WjH5mFhdeM^@uT_=-7DPQNhiM7qdj-s(df0QF*Lbd7i}3n zd!Es!cS#Ivn*-Zc`AC1BxZGi@^G#Hhd`=49jA7KFIFdnLYPbhR5 z@uuLJ6q?j4xVTjH*lU78)kXEA`|vv<=;hk>;vTeHCxgD3204yUX6oHPn%2-7Pp{`{ ze7|W>GvP-~j1(G?6&m*xMGwCVw3=a%s^@LkO1(0>!#hq(N|%3$Lv3>*cnz7ps0aoR z@B|}2J?c>eh29yq2c_0kUcvIz_RHE+APDX*fwONfwS1xyaZeg!1eU64FGx^W9 zN)QMZVAM53sZWc&G@R|=Z#)srz3Y>+dFmqJR1Vu>f6~WX_CajUj3JQ*uOcMT)=J=f z>iVNXEth9?B(qMyn@8euu8lLw*OZ zFN@@snQ9%%raT5=7DReLW$s0KpuHmWac1+h|8;hlcdPpAwzq1Y30+g&GGuD>sd?*V zzDGLm(S-4RyRt`G;jNz0=SE~WI&rjZ6!tg%gDTAqomo4|zWa53nKB8b>YrrQGaoUE zibugji$|2VPuNhHsz-sL$}g~gT;j}bS7jVQfPf$&{yOdV6wx}_q2tM_SckT;Qulhy(#MW2;O1VQ3Ctx^;iEPFNXT9L zEM`#pWVvoJ4>y)o^w7pi?wM%W?n}cH&HtU;vtkc)!XIcat8Ygq) z!o;#V*;kmW-1Io#UHmvTT5?){mJ5h%%han?v+%c_I4AKxHCJS}tgQV!pb~rGn1`<7 z#)cKJSc)=Q<+Zb6n&_jH!Om5fi$!UPcoE(z6!8ZNukU=j?K=V^Dl#iu5!|0@%wf3Y zo`24|x7a#u!30IEsI8B2Vqxhmecw{-;xV6qm`H{ea+WVA9>wXHQyUb2@|-DKx$Riq z*^0u6Ij!EfI*NtDi3gSLGv_i*g};cE82QrdWkj8L6zr4hGxN2LNHWVJUUXPk&=mVY zcrtmxt!=W8N@2JBgdo2}d$K%Etbm)ZcWCTTh;oj-{W0XTQ9GtHz(V%NYuFwId5@%A z?Xh@n0!;fA<~f4{x!fgx-ZMXhx}(w$2t{(9#sr78e~&aO4yH=+BWTRi?1~R6)+p$U zL@7vJ(IF<6OqvJ<<1|6+f=+o`2isZFyLmi)RE{w`2JVWa?Fh4xeviY*y$%V0&tFNG zttZScA(?r~Vxq(trpO4sxD}xNRNiakM8qfWSaca3LiclR64dQ~2+_^8uLfaN&A6A> zl=1EIg-SHyc2zLM99oOKKD0h$=Uax$mwQ{0@1HZ@XOh!L7Qldj?x2ByX#b~qD{o|L zX=nZqEU!MJqN0KJWp_UyV@!kug@*JlLkuQDqiy{O9I8so{!t!KPIV8Z;K6Zdrccn) zc3ODQ63yUxAj>&_?PA6`*TQPUd)099g{kKfGk5X`Z*$4MB+J549!h7QL(r?e` zzYfL}(P`9V%oPzIgavJamO&(dKpF=ttegC5qk+f9$7OP$s81Y+DbBoYrnsf4L?R_TPAJxq@Cf*8x@S3q=6iiTAx z(rCE_n%znshnaH(Dl^-+i?xjX&?_{HNvycF>=Hgrbi&tby`N-JeHTbRNA5pI!`hhT z>lMUkE;tB@t3>ap0_$Wem>_Zb_ze}}Tp4C^s9Q>Zyqh(1N@U@&uJ7(tOa{B$)EN!R z0syo12;Sy|jQC061LoXD5df8VT6EJ^7@s#`77WLoM4n-b-TB&I79B-)o;li+)I9F+0i=w-!(GU6q+3;X zE=2l&LZ-y3%ENf-p(f43iyw!2HWTY1jO%c{ksThoiHtAj9IgZH)kzuB%Zc|Mro*jT zA1=AMw;X(*LG&nwE3Ur3HT5*7EIrdbfQ4OaZi(i~xSX7&d-2sszBV?x^)16X^aFZ; zatWdb2YO$F2tGRy!-A|f=@CJbe_PE^BBgdV z((Cf6+z)Y4zL0?8{O7mCm0ze=9tGiv3HxHYKHyfj?1s5;T;8@mCLyYkQX5hRxU>p? zS%*>=6vYC-X!NdnxC~>#?gZL+SrD#>=koe!+obe%J`m_xPIFyh7CP#E=$PF`iG7CV z=_9m?h&WA3Cn$kVurDDUlrZqZI>5}RpHC=Px}V-JyM|+oN;<3vb1|LBmLkV2%RnfTFb@|&%g-9zyxOJ0LE{W z?rVPyR#zn!%UF%`bZ!O!mN42XS&y7q<+~lj4V1-({lumrX0^?~yfQCTV136`8RL^X zlaOSS5*IJ$BDxWY-Wl;@>N{RQEjBC%#RV0=P0FhEH5cR6$$p_{4AW3?h-bub3*iN8EUGbng6su;EPYos-MBKj&c{?G0lh;RSp!iag9*A7KWzr zHT0&DA4A<#6;u_|3%GiJh8l2^7OJKR0hCy}0hCyVD}Ff6<0F70SAGqLFLHfaz9QGx zNpXHRR->}St5}(jk4|aPbpKYW*<+TGhXaf zCRUD=69H#1qtYp{?c+KQ_UetS@#2i}1(lHrtqNBh*dY!TWC1~Pz4#5SxD`n1nNo3Z zS^l;$Tw6gJ^-LdsLRQiuOzGXIMS}UOKd47m)JvN?g^~N}p#YZ*?oUZk8?t&0KAJF^ z;dA*hyT!?+oZD0JXBY~rjbZ5;O~wZdD?*LtHiP|k|104#9U6_vSTp$UT54i}%%Y{( zEtZ^Z+cfuI!+=Kl3~dPy5jtCq#r@NaX7%Rw-pAu+Mipj%g3jeC`!r*-8XgA@r=SOK zqdNuuV{uS9d;HXGz-&;_pYk48y8I*z$} zy*-{de0?c@P8Zg?*JmgpBUGXmqFAFEqnx82qF|$uO+ytc0)|X zxG8pjQ&5te3|rm+#f~h%%FLk-{-2mbJp`UhpDfV49DDcO)`t$!-sdidS+f&(oO9w? zO~OEkcW67vG^j-|4Jdqs8k8=C8e|^?J0u=_IOGq6FzB#gC6T^8bfl}P3!XOlKswmlIzXs|M~C^3v}=*FAgQcBA`@P zRR~VorKNUT5hMWqDNJ^o5#vpxN=Geu|K*pUy4==OvkQD9m{wn~&tI%+vk!}|v#Nfp zD2`)re}*scnGz!bXEi_mBX;0eY1?pr7Nx}&EtRfYlPwCaKl{sfzOL~a7*vKyGO{_v zHB9kd(Z6t%Zfkl(*{;8-u@SCXCQi@Abz^J38l^q41(RbL>thlZ_X2mZmd=KO3>(C` z)V9MB!obuax+yiAU)fG3v!z~r;tD0A#~RxQk+Mif$E*MF;Jo;dAU(vDRg15G;i=2| z2i@rSD8fj5Y!E7Kdnvk1Mthf;st5_yno|R`_l}WftnO6#HywWCZzCturC&0uuNU6r zzp|C+&b3(lU%$(TguB5O^6DQCOv0WiKBcu=o`QboCp76&afL>;6?S%rn~Rc&^2}ep z*^(^dB&)nh+s*p|22$%S@%l~-(#RM#p--{IxE}MdSZz+{^r6{DW7GmInzlx zG^XD8KFGF~6aPpR2jZ4^urHLONCobJw#*2p)suD5{B=0-t~t#9mR{7{q$-+xVf~<` zC+9W*0>2Z-Yj&~(4jFSWexRwZGq5m>AL;mrmGGi795Av}hX_Mixd&8#8Y2oHFYM~r zJl%FI3Xl(m7aioogLfWdjp?>y_#RB)q3Hm`fjCGrh)Nu>$x%KB3^-Fuiq0rqgL({vZ=|zV!KJ8)M~5ima&N60W#60L>r!TK^>Qf>Tb}Sc!YQE4A-SNO4mS> zHVy6~(yncC@!$7fwRY zBa0byC9q=Dg{%c|cFJ)fEjBecQ!O_QIMwr&WLg7%*v-qvc#V8Y?!ahllVdC=yE?NlEUDm3(FiB?#OPYXxM0o!xKet3jc_X>m zT)2h)h^+yHRyv4R9Meb|T`8BDJ* z{*c5%d2+Omu||h$hc1elR^?&3N67@=*Fs~Pi+aJ4>jI!+o>?N#r{}9P>2$6r4C@F@ z_3SvDf!%CJQ-teJz3=mH2^txeoBIIH6QRmtYN-9g^DO*-!{+xWw+MYM(-wNU6BK~9 zh+6XnYf(C+&I?Y8(+JWp9x*~JHwdJ44CrlrElL{BN?HqHb3jy4N|+TQ`bKx-({9jg z6HGTt2#dG|%8C(?zk@6=ElG1B0a-1(pPhRDAC3L@`znHeA#MN4sJqa1+o1*&2*?u> z2#E9F#{SKJoLkh!$o0Qjbf>6EIpd0>eQ9ru6-8cArD85a%aD0y4TXVq{ao!I5>ADN zfuXRWub_{`o+dhEWT|Lk}= zN!sy)tPA)R1+A;<2z?{@UG)beXt5jEGC@N0l(nh0kLs?JF znU?fQ6lpDGBlXx3<>*tMpKq8&TyMNy+B<^u`)Crb9=?nM3jk9}A5|S3q ztJ;(6h-P zUL#I_n10%fgn>+sHq$*4s7)BS2bxCckGrCuM4{;HFp|89(%WDQRVxxZfgJv+wQT|Y z;!xJW_{%T9WZM=>1MIp1{QU!glg@4>Ht{CYE$5e_Y$wI_)g^NseHd|uMYsSf(QVg84%%?dA^?_MvdxFOOjNKU7v-Oittr1wdVo zMN6-Ex2SRUn%61#RhL_C`SdXx5;iEyQ%uayo^k>{#QG1Ll6(W*AbeT>#3={@y{BLx zcS&*}2hiw~REC0e#b^Xz4OY%t&NyJyhLYI)e3csT%eEwKkfYGf_NJQ9<-0 zDy6%{`OLwl+IQ^|4%Ho?*jjgg4mmmn9!rd!oFBLkRwGzY^}yRP3gaUw_Qz~YFPffq zUq>f_AU=V{7JY=Chhd=7RIGdDeEue33~LQ?>;3#E2{1Juk-YtjjDlePbpe}ylmHns z&wsX;SKo405l8#B&HRz{DAKC~LM8mO2|N*`FcD;4IU$t|U6}^Fw`Dwkans4$eyp1s zO#I^u;A`fiKFWDVEbHo$eJA$~lIQazZvHq zM$kv#gEE8>1I`?W8byYd0YwriHO#*il*F|ZgjTBUfU^+AH|R(aft{_^;fyx}QAaQX z9?3UzCxUbZQ-ja=hxj9ZU5zTqulRF}sse6bI9r22OVG*h6wetC6UztEMa3O~neFLG zfz=~k6MK9%b5<^cZhB^7AUT~~a{g!C{6IPexL$RoNNv)BZCHPZ9*g+)+(MYykx4th zhG~BkJ(TDS)F{mmAcS6FZ2mFPFrwdJ2}QE0w&0x)+_vQkS)b(VU>nDKQ@TCj_HvqwE{%o!uS1py5+$_Ci~e}s0Rh4YQg$P~^LR6_5qbkNd1P!EMbac7hnAxvcSPw)GRkv*Bh*MU zZP6>ci~6dCrYtLeuCNHV9{Q)o+X}vxVzc4tFQquO64N;q1Bdl8?MK!pLrC?Ny&e>g zi04adBxz6|vkr!%h)3}Co!E))-w>mGPf+3GMvjLS;#8H?m70>1CLJ){-bZpVG&b-? zHstQ`m`byTgL8^QAfx2)X-kD6v|zvX$h)Q-)du~#M0hQK+QKy0yTVqm*VRWP3oJZ9 z?X5gu?O89o<6|s5AcJwXhrQvtY40SWI)45{yLx{O=tqrXs-qelk>oOw;$cn7?I)IHN;$YQEs(wdQkOu+>|q z^Rm}d_;hf8568LqVn2xiv6-cJkvM0dkqcdFt*mjG^wT zd^y$u00k^U8F@s?5kR-jnbtPQ(+RMObHu4=Q`8(|(av$8jv=Ss)1a7dO&$0~gcUj{ zU(nTm<0O)>!SLDvaVOFE*Sb=ed61+^Vnl1qaa$UeK^OO87u0kel%VJ)<~==0p982M z4a3+isP?{(c|=;l@Mpm>lEDxUqSVSLDBa;VUQ$8diUobq6+{i9N3ZCl>_V$WUVCVq zo|%iA3o^7P`ifkL+oh6EZKBh#Es-*SN^N9+gfT%;GfTH>kKM#pf5a;v;$qq_g}OGY z0=WrUPvOn7M7OB`6(0&YHXpZhE;#sfSji@zu`2dat{EEJX2e`Is z;m{X}b1oj(;r-+W5$_%K*KyOhSZiZ9UXg&yS6pOzx?HB<0nR3)DsWJeRGiV#?UJ1^KE9fVGl@&8h zR=C;2niF5pjQE`=A5OoC5?>r6)vGbu(wLZo$g@GzF7%qemYttCjE^#hLF}$|ga0oO zgHcY?2RZPasND@@KE1#j$?BaHm>$gjm!enT+(<*Zpd=;jC(-urA}Bw)cgmxJJh5Aq z_J^vVJZcYl!>_xppSV{7UQ?2P?cGIMqD0G{vV`+V*jwic&u!cb=k~~&4ome6zOxP< z3xa9xzhxUn9X!jsMlV}kIP;2<*E2e^PGGhMaHF4OM+lbVf5dci7tP>NN9a2&9my~J zY|xm}?g;A>Zv>kt0@?drYSy6x_UrsuU#D4tX!S=K{8^$Uw%%KR5uiqYV#UlXnal%iU9^rIp2%_h=E5niaDjlKDRb>HcfTf*|JDs#(c9d zGxU${r1?VeXlwrbU9#;=Rz}lL)QFk-qB`=W$2PC?0)DUMXkt{!e*NRTpp%LQtmJpH zakDY7WdlZ@+?dogvXr_M!aNLQC*Kab&H}Q)(?$Lc9sVSjsR@vOJGZR{CGrI^92~+9 z4keDws?4=w>KoQr+4Yy6c^5tg`MDFK?#udz_T)J`Y4cwvhZ03-zl?G973+aN(6b!lqpDZScg4{KM`1w}9i)dDZ)MKy73V_JR6k%C zD_`0DigsIR^oMVM(7Q_a*+#(Eb?AR%O?4ElqwO?RnfGv1@oMMgw9dn?-v(sh%*skM z+N=m#6yxIJvM&qhkj$0u#zZxyBWXIp3&1Qkl`dpkm$GZ5ZIzL$cEve^1d0_!2}%a< z^o2w{c&H2$-lYo3r175=?pX{1rm5B|6f7kV8(HQf2e{FH?GHdAYxfmAWQOzZFx5BL zQkC6<0gEUwUlZ~wcbr{=;<2zdzg~IukFAP?^h9LVQY*7ki_Wxz{9VDu*t4s0S=22n zfceYHbV(%yzXD&1lR2?hLWUGp<~=E#qDmcK@;nUkxeK^K-2{@BoglVwm+&-Z+SlvO z5G-2EBrP_7fzJwD^t?14yD}iYU~izw?CU9Dt9tHYE9FN^GggFKKZYB4#=ksSRpP;k zQkY%r7-^K=(&^|D#H%<{Jkq3#H7j_ssGf>bs>Xy7AhcvJq$i-w;VO6VZ?lb340K@7 zzu7q<8?lQPu5UPcF$m%yvo%vHm-BneoX^+0JMtzZisX9%1jAm9DE%`g2 zWr+%Zv}3_625BY#$d&bt<{W6W9w*z+QdgHs)7*|Aq)Emf|;Z zhQiDG8+G!U30K@Uqd{y3%4TXCpj&zGl9N1K#_vSwg>NDWnIQs};h^kx>th~~gvbET zeh3nxN(>Kjc7WR;rQ!`^y4CAMM0X=hy=8-c8+V^E80h`aA6BHNeYU@rS4Fp7xS%rR zeWs}bCmiHXjXD^|%U!!>Mtt5m1P@Zn zYABe^XuaGe{MD-s6px@rCn1~rldF;;J^1gJn&!@NS%4Sv5b4A(lwNN^3@f95?+i z2-BkW_n_(E4ZkB3xLl9K4W95pOe`2DDhs+Gb^;XF!W`7N2nvBCJ<4e=vGa$}ahSs1 za=A)~7-Sv4si|JB-wNLZ#$i!4DO{U>Cgz;_U+P=9mC*@A#re>5gx{Y>Ma2g-qz6go zZ&P~qoHkJXYXk`Pvm?gGl0AQ74=A^=$25m|YEEMeR}71t3xYjBkeAauE`|s0b(P)V;FJQ zgP*41cux+T0p!NmUfeXIu@MIWanHR zAtN$SzGNDRQ7M?n9Whqm;UPhPkd)m;n2~@4Wds#WZfXQ2^@s)rCWiv(P3qa*&{}Ib zVvm{Hj3_-Of*A4&F4hl;OcT%g6dMd38~wXCVg0*Ya3eB*AwJpp3P`uD z&`$_AJ_#qeBgi0x$%e8e58xuTlR%Cx$ww3cXrt$g6BspPigW-66j;7w@5uY`RmY!0 zk1{HmEbx!$F!N-e8Q8!S1r!e{Z2FUs6ByZBZKQwE%2iVl+%wBI^jD7^LvERh~D zTDT{H_xpwM+j7WaXqyb~n($6UCk=DooNA9V{GbHOUaLnREPQhrjq z07_@Eg?lA-fK;4;DA*-cF^FD~X~^H2WT1S;yn*o^m^{a#)sx)``ww2XT3-LTh=??c zOY93c5YRIm5D@eKij@ADlGGPTUOV7>&Ks7~$ zi`BzTp@PR{vt?DA9t-F?uL>)37hg%i2-!TU~}WlfAYEEfRG)ox8a$Uz=y6Q?|FeR0T_vv5&n(y(x5^ zVO+1CuMNcXM0RRHB(e?-wG8?cMoaQ5ehRN%t|-xz_>!SgU0ep+bEV{%0A>|+GF_dx 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

${fn:length(clients)} results found

Actionsid_clientid_planid_countrynm_client_firstnm_client_lasttxt_address_emailtxt_digested_passwordtxt_salttxt_forgotten_passworddtm_forgotten_timeoutcd_client_uuidtxt_braintree_subscription_idfl_is_activefl_plugin_installedfl_is_adminnm_blogurl_blognum_serverdtm_signup
[DELETE]${client.idClient}${client.idPlan}${client.idCountry}${client.nmClientFirst}${client.nmClientLast}${client.txtAddressEmail}${client.txtDigestedPassword}${client.txtSalt}${client.txtForgottenPassword}${client.dtmForgottenTimeout}${client.cdClientUuid}${client.txtBraintreeSubscriptionId}${client.flIsActive}${client.flPluginInstalled}${client.flIsAdmin}${client.nmBlog}${client.urlBlog}${client.numServer}${client.dtmSignup}
\ No newline at end of file diff --git a/generate/src/main/webapps/admin/client-findByCdClientUuid.html b/generate/src/main/webapps/admin/client-findByCdClientUuid.html new file mode 100644 index 00000000..62dabd89 --- /dev/null +++ b/generate/src/main/webapps/admin/client-findByCdClientUuid.html @@ -0,0 +1 @@ +<%@taglib prefix="panl" uri="/WEB-INF/tld/panl.tld" %>h2zero

'findByCdClientUuid' for table 'client'

${fn:length(clients)} results found

Actionsid_clientid_planid_countrynm_client_firstnm_client_lasttxt_address_emailtxt_digested_passwordtxt_salttxt_forgotten_passworddtm_forgotten_timeoutcd_client_uuidtxt_braintree_subscription_idfl_is_activefl_plugin_installedfl_is_adminnm_blogurl_blognum_serverdtm_signup
[DELETE]${client.idClient}${client.idPlan}${client.idCountry}${client.nmClientFirst}${client.nmClientLast}${client.txtAddressEmail}${client.txtDigestedPassword}${client.txtSalt}${client.txtForgottenPassword}${client.dtmForgottenTimeout}${client.cdClientUuid}${client.txtBraintreeSubscriptionId}${client.flIsActive}${client.flPluginInstalled}${client.flIsAdmin}${client.nmBlog}${client.urlBlog}${client.numServer}${client.dtmSignup}
\ No newline at end of file diff --git a/generate/src/main/webapps/admin/client-findByTxtAddressEmail.html b/generate/src/main/webapps/admin/client-findByTxtAddressEmail.html new file mode 100644 index 00000000..2f9c932e --- /dev/null +++ b/generate/src/main/webapps/admin/client-findByTxtAddressEmail.html @@ -0,0 +1 @@ +<%@taglib prefix="panl" uri="/WEB-INF/tld/panl.tld" %>h2zero

'findByTxtAddressEmail' for table 'client'

${fn:length(clients)} results found

Actionsid_clientid_planid_countrynm_client_firstnm_client_lasttxt_address_emailtxt_digested_passwordtxt_salttxt_forgotten_passworddtm_forgotten_timeoutcd_client_uuidtxt_braintree_subscription_idfl_is_activefl_plugin_installedfl_is_adminnm_blogurl_blognum_serverdtm_signup
[DELETE]${client.idClient}${client.idPlan}${client.idCountry}${client.nmClientFirst}${client.nmClientLast}${client.txtAddressEmail}${client.txtDigestedPassword}${client.txtSalt}${client.txtForgottenPassword}${client.dtmForgottenTimeout}${client.cdClientUuid}${client.txtBraintreeSubscriptionId}${client.flIsActive}${client.flPluginInstalled}${client.flIsAdmin}${client.nmBlog}${client.urlBlog}${client.numServer}${client.dtmSignup}
\ No newline at end of file diff --git a/generate/src/main/webapps/admin/client-findByTxtForgottenPasswordInLastTwoHours.html b/generate/src/main/webapps/admin/client-findByTxtForgottenPasswordInLastTwoHours.html new file mode 100644 index 00000000..f3c86989 --- /dev/null +++ b/generate/src/main/webapps/admin/client-findByTxtForgottenPasswordInLastTwoHours.html @@ -0,0 +1 @@ +<%@taglib prefix="panl" uri="/WEB-INF/tld/panl.tld" %>h2zero

'findByTxtForgottenPasswordInLastTwoHours' for table 'client'

${fn:length(clients)} results found

Actionsid_clientid_planid_countrynm_client_firstnm_client_lasttxt_address_emailtxt_digested_passwordtxt_salttxt_forgotten_passworddtm_forgotten_timeoutcd_client_uuidtxt_braintree_subscription_idfl_is_activefl_plugin_installedfl_is_adminnm_blogurl_blognum_serverdtm_signup
[DELETE]${client.idClient}${client.idPlan}${client.idCountry}${client.nmClientFirst}${client.nmClientLast}${client.txtAddressEmail}${client.txtDigestedPassword}${client.txtSalt}${client.txtForgottenPassword}${client.dtmForgottenTimeout}${client.cdClientUuid}${client.txtBraintreeSubscriptionId}${client.flIsActive}${client.flPluginInstalled}${client.flIsAdmin}${client.nmBlog}${client.urlBlog}${client.numServer}${client.dtmSignup}
\ No newline at end of file diff --git a/generate/src/main/webapps/admin/client.html b/generate/src/main/webapps/admin/client.html new file mode 100644 index 00000000..ef11dfaa --- /dev/null +++ b/generate/src/main/webapps/admin/client.html @@ -0,0 +1 @@ +<%@taglib prefix="panl" uri="/WEB-INF/tld/panl.tld" %>h2zero

Add a new 'client' entry:

'client' table schema

nametypeminmaxnull?defaultprimaryindexuniqueforeignKeyvalidator
id_clientbigint00falsetruefalsefalseLongValidator
id_planbigint00falsefalsefalsefalseplan.id_planLongValidator
id_countrybigint00falsefalsefalsefalsecountry.id_countryLongValidator
nm_client_firstvarchar0100falsefalsefalsefalseStringValidator
nm_client_lastvarchar0100falsefalsefalsefalseStringValidator
txt_address_emailvarchar3255falsefalsetruetrueEmailFormField
txt_digested_passwordvarchar032falsefalsefalsefalseStringValidator
txt_saltvarchar032falsefalsefalsefalseStringValidator
txt_forgotten_passwordvarchar036truefalsefalsefalseStringValidator
dtm_forgotten_timeoutdatetime00truefalsefalsefalseTimestampValidator
cd_client_uuidvarchar036falsefalsetruefalseStringValidator
txt_braintree_subscription_idvarchar036truefalsefalsefalseStringValidator
fl_is_activetinyint01false'1'falsefalsefalseBooleanValidator
fl_plugin_installedtinyint01false'0'falsefalsefalseBooleanValidator
fl_is_admintinyint01false'0'falsefalsefalseBooleanValidator
nm_blogvarchar0255truefalsefalsefalseStringValidator
url_blogvarchar01024truefalsefalsefalseStringValidator
num_serverint00falsefalsefalsefalseIntValidator
dtm_signupdatetime00falsefalsefalsefalseTimestampValidator
\ No newline at end of file diff --git a/generate/src/main/webapps/admin/client_blog_plugins-findAll.html b/generate/src/main/webapps/admin/client_blog_plugins-findAll.html new file mode 100644 index 00000000..570c0433 --- /dev/null +++ b/generate/src/main/webapps/admin/client_blog_plugins-findAll.html @@ -0,0 +1 @@ +<%@taglib prefix="panl" uri="/WEB-INF/tld/panl.tld" %>h2zero

${fn:length(clientBlogPluginss)} results found

Actionsid_client_blog_pluginsid_clientnm_blog_plugintxt_version
[DELETE]${client_blog_plugins.idClientBlogPlugins}${client_blog_plugins.idClient}${client_blog_plugins.nmBlogPlugin}${client_blog_plugins.txtVersion}
\ No newline at end of file diff --git a/generate/src/main/webapps/admin/client_blog_plugins.html b/generate/src/main/webapps/admin/client_blog_plugins.html new file mode 100644 index 00000000..7280e0a6 --- /dev/null +++ b/generate/src/main/webapps/admin/client_blog_plugins.html @@ -0,0 +1 @@ +<%@taglib prefix="panl" uri="/WEB-INF/tld/panl.tld" %>h2zero

Add a new 'client_blog_plugins' entry:

'client_blog_plugins' table schema

nametypeminmaxnull?defaultprimaryindexuniqueforeignKeyvalidator
id_client_blog_pluginsbigint00falsetruefalsefalseLongValidator
id_clientbigint00falsefalsefalsefalseclient.id_clientLongValidator
nm_blog_pluginvarchar01024falsefalsefalsefalseStringValidator
txt_versionvarchar0512falsefalsefalsefalseStringValidator
\ No newline at end of file diff --git a/generate/src/main/webapps/admin/client_payment_info-findActiveByIdClient.html b/generate/src/main/webapps/admin/client_payment_info-findActiveByIdClient.html new file mode 100644 index 00000000..b1d7cecb --- /dev/null +++ b/generate/src/main/webapps/admin/client_payment_info-findActiveByIdClient.html @@ -0,0 +1 @@ +<%@taglib prefix="panl" uri="/WEB-INF/tld/panl.tld" %>h2zero

'findActiveByIdClient' for table 'client_payment_info'

${fn:length(clientPaymentInfos)} results found

Actionsid_client_payment_infoid_clientfl_is_activefl_sixty_daysfl_thirty_daystxt_payment_infotxt_braintree_payment_tokendtm_payment_info_expirydtm_payment_info
[DELETE]${client_payment_info.idClientPaymentInfo}${client_payment_info.idClient}${client_payment_info.flIsActive}${client_payment_info.flSixtyDays}${client_payment_info.flThirtyDays}${client_payment_info.txtPaymentInfo}${client_payment_info.txtBraintreePaymentToken}${client_payment_info.dtmPaymentInfoExpiry}${client_payment_info.dtmPaymentInfo}
\ No newline at end of file diff --git a/generate/src/main/webapps/admin/client_payment_info-findAll.html b/generate/src/main/webapps/admin/client_payment_info-findAll.html new file mode 100644 index 00000000..52245ed4 --- /dev/null +++ b/generate/src/main/webapps/admin/client_payment_info-findAll.html @@ -0,0 +1 @@ +<%@taglib prefix="panl" uri="/WEB-INF/tld/panl.tld" %>h2zero

${fn:length(clientPaymentInfos)} results found

Actionsid_client_payment_infoid_clientfl_is_activefl_sixty_daysfl_thirty_daystxt_payment_infotxt_braintree_payment_tokendtm_payment_info_expirydtm_payment_info
[DELETE]${client_payment_info.idClientPaymentInfo}${client_payment_info.idClient}${client_payment_info.flIsActive}${client_payment_info.flSixtyDays}${client_payment_info.flThirtyDays}${client_payment_info.txtPaymentInfo}${client_payment_info.txtBraintreePaymentToken}${client_payment_info.dtmPaymentInfoExpiry}${client_payment_info.dtmPaymentInfo}
\ No newline at end of file diff --git a/generate/src/main/webapps/admin/client_payment_info-findAllExpiryIn30Days.html b/generate/src/main/webapps/admin/client_payment_info-findAllExpiryIn30Days.html new file mode 100644 index 00000000..3e1262e0 --- /dev/null +++ b/generate/src/main/webapps/admin/client_payment_info-findAllExpiryIn30Days.html @@ -0,0 +1 @@ +<%@taglib prefix="panl" uri="/WEB-INF/tld/panl.tld" %>h2zero

'findAllExpiryIn30Days' for table 'client_payment_info'

${fn:length(clientPaymentInfos)} results found

Actionsid_client_payment_infoid_clientfl_is_activefl_sixty_daysfl_thirty_daystxt_payment_infotxt_braintree_payment_tokendtm_payment_info_expirydtm_payment_info
[DELETE]${client_payment_info.idClientPaymentInfo}${client_payment_info.idClient}${client_payment_info.flIsActive}${client_payment_info.flSixtyDays}${client_payment_info.flThirtyDays}${client_payment_info.txtPaymentInfo}${client_payment_info.txtBraintreePaymentToken}${client_payment_info.dtmPaymentInfoExpiry}${client_payment_info.dtmPaymentInfo}
\ No newline at end of file diff --git a/generate/src/main/webapps/admin/client_payment_info-findAllExpiryIn60Days.html b/generate/src/main/webapps/admin/client_payment_info-findAllExpiryIn60Days.html new file mode 100644 index 00000000..9a792edf --- /dev/null +++ b/generate/src/main/webapps/admin/client_payment_info-findAllExpiryIn60Days.html @@ -0,0 +1 @@ +<%@taglib prefix="panl" uri="/WEB-INF/tld/panl.tld" %>h2zero

'findAllExpiryIn60Days' for table 'client_payment_info'

${fn:length(clientPaymentInfos)} results found

Actionsid_client_payment_infoid_clientfl_is_activefl_sixty_daysfl_thirty_daystxt_payment_infotxt_braintree_payment_tokendtm_payment_info_expirydtm_payment_info
[DELETE]${client_payment_info.idClientPaymentInfo}${client_payment_info.idClient}${client_payment_info.flIsActive}${client_payment_info.flSixtyDays}${client_payment_info.flThirtyDays}${client_payment_info.txtPaymentInfo}${client_payment_info.txtBraintreePaymentToken}${client_payment_info.dtmPaymentInfoExpiry}${client_payment_info.dtmPaymentInfo}
\ No newline at end of file diff --git a/generate/src/main/webapps/admin/client_payment_info-findByIdClientReverseDate.html b/generate/src/main/webapps/admin/client_payment_info-findByIdClientReverseDate.html new file mode 100644 index 00000000..de04aae2 --- /dev/null +++ b/generate/src/main/webapps/admin/client_payment_info-findByIdClientReverseDate.html @@ -0,0 +1 @@ +<%@taglib prefix="panl" uri="/WEB-INF/tld/panl.tld" %>h2zero

'findByIdClientReverseDate' for table 'client_payment_info'

${fn:length(clientPaymentInfos)} results found

Actionsid_client_payment_infoid_clientfl_is_activefl_sixty_daysfl_thirty_daystxt_payment_infotxt_braintree_payment_tokendtm_payment_info_expirydtm_payment_info
[DELETE]${client_payment_info.idClientPaymentInfo}${client_payment_info.idClient}${client_payment_info.flIsActive}${client_payment_info.flSixtyDays}${client_payment_info.flThirtyDays}${client_payment_info.txtPaymentInfo}${client_payment_info.txtBraintreePaymentToken}${client_payment_info.dtmPaymentInfoExpiry}${client_payment_info.dtmPaymentInfo}
\ No newline at end of file diff --git a/generate/src/main/webapps/admin/client_payment_info.html b/generate/src/main/webapps/admin/client_payment_info.html new file mode 100644 index 00000000..0e6ce646 --- /dev/null +++ b/generate/src/main/webapps/admin/client_payment_info.html @@ -0,0 +1 @@ +<%@taglib prefix="panl" uri="/WEB-INF/tld/panl.tld" %>h2zero

Add a new 'client_payment_info' entry:

'client_payment_info' table schema

nametypeminmaxnull?defaultprimaryindexuniqueforeignKeyvalidator
id_client_payment_infobigint00falsetruefalsefalseLongValidator
id_clientbigint00falsefalsefalsefalseclient.id_clientLongValidator
fl_is_activetinyint01false'0'falsefalsefalseBooleanValidator
fl_sixty_daystinyint01false'0'falsefalsefalseBooleanValidator
fl_thirty_daystinyint01false'0'falsefalsefalseBooleanValidator
txt_payment_infovarchar016falsefalsefalsefalseStringValidator
txt_braintree_payment_tokenvarchar016falsefalsefalsefalseStringValidator
dtm_payment_info_expirydatetime00falsefalsefalsefalseTimestampValidator
dtm_payment_infodatetime00falsefalsefalsefalseTimestampValidator
\ No newline at end of file diff --git a/generate/src/main/webapps/admin/client_plan_event-findAll.html b/generate/src/main/webapps/admin/client_plan_event-findAll.html new file mode 100644 index 00000000..c1525780 --- /dev/null +++ b/generate/src/main/webapps/admin/client_plan_event-findAll.html @@ -0,0 +1 @@ +<%@taglib prefix="panl" uri="/WEB-INF/tld/panl.tld" %>h2zero

${fn:length(clientPlanEvents)} results found

Actionsid_client_plan_eventid_clientid_plan_fromid_plan_tonm_plan_braintreetxt_desc_client_plan_eventdtm_client_plan_event
[DELETE]${client_plan_event.idClientPlanEvent}${client_plan_event.idClient}${client_plan_event.idPlanFrom}${client_plan_event.idPlanTo}${client_plan_event.nmPlanBraintree}${client_plan_event.txtDescClientPlanEvent}${client_plan_event.dtmClientPlanEvent}
\ No newline at end of file diff --git a/generate/src/main/webapps/admin/client_plan_event-findByIdClientReverseDate.html b/generate/src/main/webapps/admin/client_plan_event-findByIdClientReverseDate.html new file mode 100644 index 00000000..084ff41b --- /dev/null +++ b/generate/src/main/webapps/admin/client_plan_event-findByIdClientReverseDate.html @@ -0,0 +1 @@ +<%@taglib prefix="panl" uri="/WEB-INF/tld/panl.tld" %>h2zero

'findByIdClientReverseDate' for table 'client_plan_event'

${fn:length(clientPlanEvents)} results found

Actionsid_client_plan_eventid_clientid_plan_fromid_plan_tonm_plan_braintreetxt_desc_client_plan_eventdtm_client_plan_event
[DELETE]${client_plan_event.idClientPlanEvent}${client_plan_event.idClient}${client_plan_event.idPlanFrom}${client_plan_event.idPlanTo}${client_plan_event.nmPlanBraintree}${client_plan_event.txtDescClientPlanEvent}${client_plan_event.dtmClientPlanEvent}
\ No newline at end of file diff --git a/generate/src/main/webapps/admin/client_plan_event.html b/generate/src/main/webapps/admin/client_plan_event.html new file mode 100644 index 00000000..ea8fdf82 --- /dev/null +++ b/generate/src/main/webapps/admin/client_plan_event.html @@ -0,0 +1 @@ +<%@taglib prefix="panl" uri="/WEB-INF/tld/panl.tld" %>h2zero

Add a new 'client_plan_event' entry:

'client_plan_event' table schema

nametypeminmaxnull?defaultprimaryindexuniqueforeignKeyvalidator
id_client_plan_eventbigint00falsetruefalsefalseLongValidator
id_clientbigint00falsefalsefalsefalseclient.id_clientLongValidator
id_plan_frombigint00truefalsefalsefalseplan.id_planLongValidator
id_plan_tobigint00truefalsefalsefalseplan.id_planLongValidator
nm_plan_braintreevarchar050falsefalsefalsefalseStringValidator
txt_desc_client_plan_eventvarchar0256falsefalsefalsefalseStringValidator
dtm_client_plan_eventdatetime00falsefalsefalsefalseTimestampValidator
\ No newline at end of file diff --git a/generate/src/main/webapps/admin/country-findAll.html b/generate/src/main/webapps/admin/country-findAll.html new file mode 100644 index 00000000..6e4f3f15 --- /dev/null +++ b/generate/src/main/webapps/admin/country-findAll.html @@ -0,0 +1 @@ +<%@taglib prefix="panl" uri="/WEB-INF/tld/panl.tld" %>h2zero

${fn:length(countrys)} results found

Actionsid_countrycd_country_isonm_country_isonum_order_by
[DELETE]${country.idCountry}${country.cdCountryIso}${country.nmCountryIso}${country.numOrderBy}
\ No newline at end of file diff --git a/generate/src/main/webapps/admin/country-findByPopularity.html b/generate/src/main/webapps/admin/country-findByPopularity.html new file mode 100644 index 00000000..819d1d96 --- /dev/null +++ b/generate/src/main/webapps/admin/country-findByPopularity.html @@ -0,0 +1 @@ +<%@taglib prefix="panl" uri="/WEB-INF/tld/panl.tld" %>h2zero

'findByPopularity' for table 'country'

${fn:length(countrys)} results found

Actionsid_countrycd_country_isonm_country_isonum_order_by
[DELETE]${country.idCountry}${country.cdCountryIso}${country.nmCountryIso}${country.numOrderBy}
\ No newline at end of file diff --git a/generate/src/main/webapps/admin/country.html b/generate/src/main/webapps/admin/country.html new file mode 100644 index 00000000..2bb4cf9c --- /dev/null +++ b/generate/src/main/webapps/admin/country.html @@ -0,0 +1 @@ +<%@taglib prefix="panl" uri="/WEB-INF/tld/panl.tld" %>h2zero

Add a new 'country' entry:

'country' table schema

nametypeminmaxnull?defaultprimaryindexuniqueforeignKeyvalidator
id_countrybigint00falsetruefalsefalseLongValidator
cd_country_isovarchar02falsefalsefalsefalseStringValidator
nm_country_isovarchar0256falsefalsefalsefalseStringValidator
num_order_byint00falsefalsefalsefalseIntValidator
\ No newline at end of file diff --git a/generate/src/main/webapps/admin/index.html b/generate/src/main/webapps/admin/index.html new file mode 100644 index 00000000..9553f906 --- /dev/null +++ b/generate/src/main/webapps/admin/index.html @@ -0,0 +1 @@ + // h2zero // \ No newline at end of file diff --git a/generate/src/main/webapps/admin/media_type-findAll.html b/generate/src/main/webapps/admin/media_type-findAll.html new file mode 100644 index 00000000..49a328f8 --- /dev/null +++ b/generate/src/main/webapps/admin/media_type-findAll.html @@ -0,0 +1 @@ +<%@taglib prefix="panl" uri="/WEB-INF/tld/panl.tld" %>h2zero

${fn:length(mediaTypes)} results found

Actionsid_media_typenm_media_type
[DELETE]${media_type.idMediaType}${media_type.nmMediaType}
\ No newline at end of file diff --git a/generate/src/main/webapps/admin/media_type.html b/generate/src/main/webapps/admin/media_type.html new file mode 100644 index 00000000..e2876e61 --- /dev/null +++ b/generate/src/main/webapps/admin/media_type.html @@ -0,0 +1 @@ +<%@taglib prefix="panl" uri="/WEB-INF/tld/panl.tld" %>h2zero

Add a new 'media_type' entry:

'media_type' table schema

nametypeminmaxnull?defaultprimaryindexuniqueforeignKeyvalidator
id_media_typebigint00falsetruefalsefalseLongValidator
nm_media_typevarchar032falsefalsefalsefalseStringValidator
\ No newline at end of file diff --git a/generate/src/main/webapps/admin/plan-findActiveByPrimaryKey.html b/generate/src/main/webapps/admin/plan-findActiveByPrimaryKey.html new file mode 100644 index 00000000..7988778c --- /dev/null +++ b/generate/src/main/webapps/admin/plan-findActiveByPrimaryKey.html @@ -0,0 +1 @@ +<%@taglib prefix="panl" uri="/WEB-INF/tld/panl.tld" %>h2zero

'findActiveByPrimaryKey' for table 'plan'

${fn:length(plans)} results found

Actionsid_plannm_plannm_plan_braintreeflt_plan_amountfl_is_active
[DELETE]${plan.idPlan}${plan.nmPlan}${plan.nmPlanBraintree}${plan.fltPlanAmount}${plan.flIsActive}
\ No newline at end of file diff --git a/generate/src/main/webapps/admin/plan-findAll.html b/generate/src/main/webapps/admin/plan-findAll.html new file mode 100644 index 00000000..0d65c3b1 --- /dev/null +++ b/generate/src/main/webapps/admin/plan-findAll.html @@ -0,0 +1 @@ +<%@taglib prefix="panl" uri="/WEB-INF/tld/panl.tld" %>h2zero

${fn:length(plans)} results found

Actionsid_plannm_plannm_plan_braintreeflt_plan_amountfl_is_active
[DELETE]${plan.idPlan}${plan.nmPlan}${plan.nmPlanBraintree}${plan.fltPlanAmount}${plan.flIsActive}
\ No newline at end of file diff --git a/generate/src/main/webapps/admin/plan-findAllActiveOrdered.html b/generate/src/main/webapps/admin/plan-findAllActiveOrdered.html new file mode 100644 index 00000000..596b1893 --- /dev/null +++ b/generate/src/main/webapps/admin/plan-findAllActiveOrdered.html @@ -0,0 +1 @@ +<%@taglib prefix="panl" uri="/WEB-INF/tld/panl.tld" %>h2zero

'findAllActiveOrdered' for table 'plan'

${fn:length(plans)} results found

Actionsid_plannm_plannm_plan_braintreeflt_plan_amountfl_is_active
[DELETE]${plan.idPlan}${plan.nmPlan}${plan.nmPlanBraintree}${plan.fltPlanAmount}${plan.flIsActive}
\ No newline at end of file diff --git a/generate/src/main/webapps/admin/plan-findByNmPlanBraintreeActive.html b/generate/src/main/webapps/admin/plan-findByNmPlanBraintreeActive.html new file mode 100644 index 00000000..e7fff21b --- /dev/null +++ b/generate/src/main/webapps/admin/plan-findByNmPlanBraintreeActive.html @@ -0,0 +1 @@ +<%@taglib prefix="panl" uri="/WEB-INF/tld/panl.tld" %>h2zero

'findByNmPlanBraintreeActive' for table 'plan'

${fn:length(plans)} results found

Actionsid_plannm_plannm_plan_braintreeflt_plan_amountfl_is_active
[DELETE]${plan.idPlan}${plan.nmPlan}${plan.nmPlanBraintree}${plan.fltPlanAmount}${plan.flIsActive}
\ No newline at end of file diff --git a/generate/src/main/webapps/admin/plan-findByOrderedPlanAmount.html b/generate/src/main/webapps/admin/plan-findByOrderedPlanAmount.html new file mode 100644 index 00000000..388c1a24 --- /dev/null +++ b/generate/src/main/webapps/admin/plan-findByOrderedPlanAmount.html @@ -0,0 +1 @@ +<%@taglib prefix="panl" uri="/WEB-INF/tld/panl.tld" %>h2zero

'findByOrderedPlanAmount' for table 'plan'

${fn:length(plans)} results found

Actionsid_plannm_plannm_plan_braintreeflt_plan_amountfl_is_active
[DELETE]${plan.idPlan}${plan.nmPlan}${plan.nmPlanBraintree}${plan.fltPlanAmount}${plan.flIsActive}
\ No newline at end of file diff --git a/generate/src/main/webapps/admin/plan.html b/generate/src/main/webapps/admin/plan.html new file mode 100644 index 00000000..3a3a6025 --- /dev/null +++ b/generate/src/main/webapps/admin/plan.html @@ -0,0 +1 @@ +<%@taglib prefix="panl" uri="/WEB-INF/tld/panl.tld" %>h2zero

Add a new 'plan' entry:

'plan' table schema

nametypeminmaxnull?defaultprimaryindexuniqueforeignKeyvalidator
id_planbigint00falsetruefalsefalseLongValidator
nm_planvarchar050falsefalsefalsefalseStringValidator
nm_plan_braintreevarchar050falsefalsefalsefalseStringValidator
flt_plan_amountfloat06falsefalsefalsefalseFloatValidator
fl_is_activetinyint01false'0'falsefalsefalseBooleanValidator
\ No newline at end of file diff --git a/generate/src/main/webapps/admin/project-findAll.html b/generate/src/main/webapps/admin/project-findAll.html new file mode 100644 index 00000000..bd237763 --- /dev/null +++ b/generate/src/main/webapps/admin/project-findAll.html @@ -0,0 +1 @@ +<%@taglib prefix="panl" uri="/WEB-INF/tld/panl.tld" %>h2zero

${fn:length(projects)} results found

Actionsid_projectnm_projecttxt_coords_xyzdbl_importancenum_sizefl_is_fixedcd_colour_css
[DELETE]${project.idProject}${project.nmProject}${project.txtCoordsXyz}${project.dblImportance}${project.numSize}${project.flIsFixed}${project.cdColourCss}
\ No newline at end of file diff --git a/generate/src/main/webapps/admin/project-findByProjectSize.html b/generate/src/main/webapps/admin/project-findByProjectSize.html new file mode 100644 index 00000000..b679d73f --- /dev/null +++ b/generate/src/main/webapps/admin/project-findByProjectSize.html @@ -0,0 +1 @@ +<%@taglib prefix="panl" uri="/WEB-INF/tld/panl.tld" %>h2zero

'findByProjectSize' for table 'project'

${fn:length(projects)} results found

Actionsid_projectnm_projecttxt_coords_xyzdbl_importancenum_sizefl_is_fixedcd_colour_css
[DELETE]${project.idProject}${project.nmProject}${project.txtCoordsXyz}${project.dblImportance}${project.numSize}${project.flIsFixed}${project.cdColourCss}
\ No newline at end of file diff --git a/generate/src/main/webapps/admin/project.html b/generate/src/main/webapps/admin/project.html new file mode 100644 index 00000000..fe2c45a0 --- /dev/null +++ b/generate/src/main/webapps/admin/project.html @@ -0,0 +1 @@ +<%@taglib prefix="panl" uri="/WEB-INF/tld/panl.tld" %>h2zero

Add a new 'project' entry:

'project' table schema

nametypeminmaxnull?defaultprimaryindexuniqueforeignKeyvalidator
id_projectbigint00falsetruefalsefalseLongValidator
nm_projectvarchar0125falsefalsetruetrueStringValidator
txt_coords_xyzvarchar0125falsefalsefalsefalseStringValidator
dbl_importancedouble025falsefalsefalsefalseDoubleValidator
num_sizeint0125falsefalsefalsefalseIntValidator
fl_is_fixedtinyint01falsefalsefalsefalseBooleanValidator
cd_colour_cssvarchar07falsefalsefalsefalseStringValidator
\ No newline at end of file diff --git a/generate/src/main/webapps/admin/server-findAll.html b/generate/src/main/webapps/admin/server-findAll.html new file mode 100644 index 00000000..f9667ac2 --- /dev/null +++ b/generate/src/main/webapps/admin/server-findAll.html @@ -0,0 +1 @@ +<%@taglib prefix="panl" uri="/WEB-INF/tld/panl.tld" %>h2zero

${fn:length(servers)} results found

Actionsid_servernm_servernum_capacitynum_clientsfl_is_active
[DELETE]${server.idServer}${server.nmServer}${server.numCapacity}${server.numClients}${server.flIsActive}
\ No newline at end of file diff --git a/generate/src/main/webapps/admin/server-findNextServer.html b/generate/src/main/webapps/admin/server-findNextServer.html new file mode 100644 index 00000000..0c37c42a --- /dev/null +++ b/generate/src/main/webapps/admin/server-findNextServer.html @@ -0,0 +1 @@ +<%@taglib prefix="panl" uri="/WEB-INF/tld/panl.tld" %>h2zero

'findNextServer' for table 'server'

${fn:length(servers)} results found

Actionsid_servernm_servernum_capacitynum_clientsfl_is_active
[DELETE]${server.idServer}${server.nmServer}${server.numCapacity}${server.numClients}${server.flIsActive}
\ No newline at end of file diff --git a/generate/src/main/webapps/admin/server.html b/generate/src/main/webapps/admin/server.html new file mode 100644 index 00000000..75db47be --- /dev/null +++ b/generate/src/main/webapps/admin/server.html @@ -0,0 +1 @@ +<%@taglib prefix="panl" uri="/WEB-INF/tld/panl.tld" %>h2zero

Add a new 'server' entry:

'server' table schema

nametypeminmaxnull?defaultprimaryindexuniqueforeignKeyvalidator
id_serverbigint00falsetruefalsefalseLongValidator
nm_servervarchar0128falsefalsefalsefalseStringValidator
num_capacityint00falsefalsefalsefalseIntValidator
num_clientsint00falsefalsefalsefalseIntValidator
fl_is_activetinyint01false'1'falsefalsefalseBooleanValidator
\ No newline at end of file diff --git a/generate/src/main/webapps/admin/static/css/style.css b/generate/src/main/webapps/admin/static/css/style.css new file mode 100644 index 00000000..c12d0c76 --- /dev/null +++ b/generate/src/main/webapps/admin/static/css/style.css @@ -0,0 +1,587 @@ +/* ------------------------------------------------------------- +====== RESET +------------------------------------------------------------- */ +article, aside, details, figcaption, figure, +footer, header, hgroup, menu, nav, section {display: block} +audio, canvas, video { display: inline-block; *display: inline; *zoom: 1; } +audio:not([controls]) { display: none; } +html { font-size: 100%; -webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%; } +:hover, :focus, :active { outline: none; } + + +html, button, input, select, textarea { + font-family: "Open sans", "Helvetica Neue", "HelveticaNeue", Helvetica, Arial, sans-serif; + font-weight: 400; /* normal */ + color: #555; + font-smooth:always; + -webkit-font-smoothing: antialiased; + font-smoothing: antialiased; + text-shadow: 1px 1px 1px rgba(0,0,0,0.004);} + +body { margin: 0; font-size: 13px; line-height: 1.6; } + +a { color: #0078CF; font-weight: normal; + cursor: pointer; text-decoration: none; + transition:color 0.2s ease; -moz-transition:color 0.2s ease; -webkit-transition:color 0.2s ease; -o-transition:color 0.2s ease;} + +a:hover { color: #000; text-decoration: underline;} + +::-moz-selection { background: #0078CF; color: #fff; text-shadow: none; } +::selection { background: #0078CF; color: #fff; text-shadow: none; } + +p{margin: 0 0 1em;} +p:last-child {margin-bottom: 0;} + +a:visited{opacity:0.9;} +a:active, a:focus{position:relative;top:1px;} +abbr[title]{border-bottom:1px dotted} +dfn{font-style:italic} +hr{display:block; height:1px; border:0; border-top:1px solid #ddd; margin:1em 0; padding:0} +pre, code, kbd, samp{font-family:monospace,monospace; _font-family:'courier new',monospace; font-size:1em} +q{quotes:none} +q:before, q:after{content:""; content:none} +blockquote { margin: 1em 1em 1em 0; padding: 1em; border-left: 1px solid #DDD; font-style: italic; color: #999;} +blockquote p {font-size: 1.1em;line-height: 2em;margin-bottom: 0;} +blockquote small {display: block;font-size: 1em;line-height: 1.6em;color: #bfbfbf; text-align: right;} +blockquote small:before {content: '\2014 \00A0';} +b, strong{font-weight:700} +small{font-size:85%; color: #999;} +sub, sup{font-size:75%; line-height:0; position:relative; vertical-align:baseline} +sup{top:-0.5em} +sub{bottom:-0.25em} +dd{margin:0 0 0 40px} dt{font-weight: 700;} +ul, ol{list-style:none; list-style-image:none; margin:0; padding:0;} +img{border:0; -ms-interpolation-mode:bicubic; vertical-align:middle} +svg:not(:root){overflow:hidden} +figure{margin:0} +form{margin:0} +fieldset{border:0; margin:0; padding:0} +label{cursor:pointer} +legend{border:0; *margin-left:-7px; padding:0;white-space: normal;} +button, input, select, textarea{font-size:100%; margin:0; vertical-align:baseline; *vertical-align:middle} +button, input{line-height:normal; *overflow:visible} +table button, table input{*overflow:auto} +button, input[type="button"], input[type="reset"], input[type="submit"]{cursor:pointer; -webkit-appearance:button} +input[type="checkbox"], input[type="radio"]{box-sizing:border-box} +input[type="search"]{-webkit-appearance:textfield; -moz-box-sizing:content-box; -webkit-box-sizing:content-box; box-sizing:content-box} +input[type="search"]::-webkit-search-decoration{-webkit-appearance:none} +button::-moz-focus-inner, input::-moz-focus-inner{border:0; padding:0} +textarea{overflow:auto; vertical-align:top; resize:vertical} +table{border-collapse:collapse; border-spacing:0} +td{vertical-align:top} +.chromeframe { margin: 1em 0; background: red; color: black; padding: 1em; } + + + +/* ------------------------------------------------------------- +====== STYLES +------------------------------------------------------------- */ + +/* -- FORMS +------------------------------------------------------------- */ +form{margin-top: 2em;} +form li{margin-bottom: 1.5em;} +label{display: block; margin-bottom:1em; font-weight: 700;} +input, select, textarea { + border: 1px solid #DDD; + color: #777; + font-size: 1em; + padding: 1em; + width:60%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + box-sizing: border-box; + *behavior: url(/js/boxsizing.htc); } +textarea{padding: 1em; min-height:15em; height: auto; width: 100%; } +input, textarea { + -moz-transition: border .25s; + -webkit-transition: border .25s; + -o-transition: border .25s; + transition: border .25s;} +input:hover, textarea:hover, input:focus, textarea:focus,input:active, textarea:active { border: 1px solid #999;} +input[type="text"],textarea{cursor: text;} +input[type="radio"], input[type="checkbox"] { display: inline; width:auto; height: auto; margin-right: 1em; } +input[type="checkbox"] + label, input[type="radio"] + label { display: inline;} +input[type="file"]{ border: none;} +input[type="date"]{ width: auto;} +select {height: auto;} +/* Placeholders */ +::-webkit-input-placeholder { color: #BBB;} +:-moz-placeholder {color: #BBB;} +:-ms-input-placeholder {color: #BBB;} +/* validate.js */ +label.error { color: #0078CF; margin: 0.5em 0 0 0.5em; font-weight: normal; font-style: italic; } + + + +/* -- BUTTONS +------------------------------------------------------------- */ +.button, input[type="submit"], button, .toggle-title { + color: #666; + font-size: 1.1em; + font-weight: normal; + padding: 0.6em 1.2em; + text-shadow: 0 1px 0 #fff; + border: solid 1px #ddd; + text-decoration: none; + cursor: pointer; + + background: #efefef; /* Old browsers */ + background: -moz-linear-gradient(top, #f6f6f6 0%, #efefef 100%); /* FF3.6+ */ + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#f6f6f6), color-stop(100%,#efefef)); /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, #f6f6f6 0%,#efefef 100%); /* Chrome10+,Safari5.1+ */ + background: -o-linear-gradient(top, #f6f6f6 0%,#efefef 100%); /* Opera 11.10+ */ + background: -ms-linear-gradient(top, #f6f6f6 0%,#efefef 100%); /* IE10+ */ + background: linear-gradient(to bottom, #f6f6f6 0%,#efefef 100%); /* W3C */ + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f6f6f6', endColorstr='#efefef',GradientType=0 ); /* IE6-9 */ + + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + -o-border-radius: 2px; + -ms-border-radius: 2px; + -khtml-border-radius: 2px; + border-radius: 2px; + + -webkit-transition: 0.1s linear all; + -moz-transition: 0.1s linear all; + -ms-transition: 0.1s linear all; + -o-transition: 0.1s linear all; + transition: 0.1s linear all; } +.button:hover, input[type="submit"]:hover, button:hover, .toggle-title:hover { + color: #333; + text-decoration: none; + border-color: #BBB; + -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1); + -webkit-box-shadow:0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1); + background: 0 100%;} +.button:focus, input[type="submit"]:focus, button:focus, .toggle-title:focus { + color: #333; + border-color: #BBB;} +.button:active, input[type="submit"]:active, button:active, .toggle-title:active { + color: #000; + background: #F5F5F5; + border-color: #444; + position: relative; top:1px;} + + + +/* -- TYPO +------------------------------------------------------------- */ +h1,h2,h3,h4,h5,h6{margin:0 0 1em; font-weight: normal;} + +h1 {font-size: 4.1em; + letter-spacing: -0.075em; + text-transform: uppercase; + line-height: 0.9; + color: #555; + margin: 0 0 0.5em; + font-weight: normal; } +h2 { font-size: 2.5em; margin: 0 0 20px; letter-spacing: -0.05em; color: #555; line-height: 1; } +h3 { font-size: 1.75em; } +h4 { font-size: 1.5em; } +h5 { font-size: 1.17em; text-transform: uppercase; margin: 0; color: #555; } +h6 { font-size: 1em; margin-bottom: 2px; font-weight: 700; } + +h1 a,h2 a,h3 a,h4 a,h5 a,h6 a{color:#333; text-decoration: none;} +h1 a:hover,h2 a:hover,h3 a:hover,h4 a:hover,h5 a:hover,h6 a:hover{color:#0078CF;text-decoration: underline;} + + + +/* -- GRID https://github.com/mattberridge/Proportional-Grids/ +------------------------------------------------------------- */ +body{width:100%; } +.container {width: 90%; margin: 5em auto; max-width: 1100px; min-width: 300px;} + +.grid-wrap { + margin-left: -3em; /* the same as your gutter */ + overflow: hidden; + *zoom:1;} + .grid-wrap:before, .grid-wrap:after{content:""; display:table} + .grid-wrap:after{clear:both} + +.grid { + float: left; + padding-left: 3em; /* this is your gutter between columns */ + width: 100%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + *behavior: url(/js/boxsizing.htc); } + +.half-gutter {margin-left: -1.5em; } + .half-gutter .grid-col {padding-left: 1.5em; } + +.col-full {width: 100%; } +.col-one-half {width: 50%; } +.col-one-third {width: 33.333%; } +.col-two-thirds {width: 66.666%; } +.col-one-quarter {width: 25%; } +.col-three-quarters {width: 75%; } + +.divide-top{border-top: 1px solid #ccc;padding-top: 2em;margin-top: 1.5em; } + +.mright{ margin-right: 3em;} +.mleft{ margin-left: 3em;} +.mtop{ margin-top: 3em;} +.mbottom{ margin-bottom: 3em;} +.halfmright{ margin-right: 1.5em;} +.halfmleft{ margin-left: 1.5em;} +.halfmtop{ margin-top: 1.5em;} +.halfmbottom{ margin-bottom: 1.5em;} + +.fright, .fleft{display:block; overflow:hidden} +.fright{float:right} +.fleft{float:left} + +.alignleft{float: left;clear: left;margin: 0.38em 1.62em 0.38em 0;} +.alignright {float: right;clear: right;margin: 0.38em 0 0.38em 1.62em;} +.aligncenter {margin: 0 auto 1.62em;display: block;} + + + +/* -- MISC +------------------------------------------------------------- */ +figure { max-height: 100%; overflow: hidden;} +figure figcaption { } +img { max-width: 100%; height: auto; width: auto; } +a img { + -webkit-transition: opacity 1s ease; + -moz-transition: opacity 1s ease; + -o-transition: opacity 1s ease; + -ms-transition: opacity 1s ease; + transition: opacity 1s ease; } +a img:hover { + *zoom: 1; + opacity: 0.7; + -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity = 70); + filter: alpha(opacity = 70);} + + + +/* ------------------------------------------------------------- +====== PAGES +------------------------------------------------------------- */ + +/* -- HEADER +------------------------------------------------------------- */ +header#navtop { margin-bottom: 2em; clear: both; overflow: hidden; } + header nav ul { float: left; overflow: hidden; padding: 0 3em 0 2em; border-left: 1px solid #ddd; line-height: 2em; } +nav a, menu a { text-decoration: none; color: #555; } +.navactive { color: #0078CF } +.logo {margin-bottom: 3em;} +.logo:hover {background: none;} + + +/* -- GENERAL +------------------------------------------------------------- */ +.main > section { margin-bottom: 7em; } +.main header{ color: #555; margin-bottom: 3em; } +.main header hr{border-top-color:#999;} +.arrow:after {content:" \27F6"; /* html unicode: ⟶ */ } +header .arrow {color: #999; font-style: italic;} +.arrow:hover {color: #0078CF; } + + +/* -- FOOTER +------------------------------------------------------------- */ +footer { color: #555; margin-bottom: 7em; text-align: center;} +footer nav ul { float: right; overflow: hidden; } +footer a {color: #999;} +footer li { float: left; margin-right: 1em; padding-right: 1em; border-right: 1px solid #DDD; font-size: 0.8em; } +footer li:last-child { margin-right: 0; padding-right: 0; border-right: none; } +.up a { display: block; text-align: center; margin: 0 auto; } + + +/* -- HOME-PAGE +------------------------------------------------------------- */ +/* Services */ +.services aside { color: #999; padding-top: 1em; border-top: 1px solid #DDD;} +.services aside:after, .services h5:after { content: ""; display: block; height: 1px; width: 1em; background: #DDD; margin: 1em 0; } + +/* Slider */ + /* Browser Resets */ +.flex-container a:active,.flexslider a:active,.flex-container a:focus,.flexslider a:focus {outline: none;} +.slides,.flex-control-nav,.flex-direction-nav {margin: 0; padding: 0; list-style: none;} + /* FlexSlider Necessary Styles */ +.flexslider {margin: 0; padding: 0; position: relative;} +.flexslider .slides > .slide {display: none; -webkit-backface-visibility: hidden;} +.flexslider .slides img {width: 100%; display: block;} +.flex-pauseplay span {text-transform: capitalize;} +.slides:after {content: "."; display: block; clear: both; visibility: hidden; line-height: 0; height: 0;} +html[xmlns] .slides {display: block;} +* html .slides {height: 1%;} + +.slide figcaption { + position: absolute; + background: white; + height: auto; min-height: 3em; width: 60%; padding: 1em; + top: 3em; right: 0; } +.slide figcaption div { text-align: right; display: block; border-right: 1px solid #DDD; padding: 0 2em 0 0; margin: auto 5em auto 0; } +.slide figcaption div p { margin: 0 } +.flex-direction-nav{ position: absolute; top: 4em; right: 1.5em; z-index: 10;} +.flex-direction-nav li {display: inline;} +.flex-prev, .flex-next{ text-decoration: none; color: #999; margin-left: 1em;} +.flex-prev:hover, .flex-next:hover{ color: #0078CF} + + +/* -- WORKS / Home-page and Works-page +------------------------------------------------------------- */ +.works figure > a{ + display: block; + height: 100%; width: 100%; + overflow: hidden; + position: relative; + border-top: 1px solid #DDD; padding-top: 1em; } + +.works figure .zoom{ + display: block; + position: absolute; top: 10px; left: 0; + background: url(../img/zoom.png) no-repeat center; + width: 100%; height: 100%; + *zoom: 1; + opacity: 0; + -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity = 0); + filter: alpha(opacity = 0); } + +.works figure figcaption{ margin-top: 1em; padding: 0 0.5em; white-space: nowrap; } +.works figure figcaption a{line-height:2em; color: #555; font-weight: 700; } +.works figure figcaption p{ margin: 0; } + +.works-page .works figure { margin-bottom: 3em;} + +.main aside{margin-bottom: 3em} +.main aside menu{padding: 0 0 0 1em; line-height: 2em;} +.main aside menu a{color: #999;} +.main aside menu .buttonactive {color: #0078CF } + + +/* -- SUBPAGES +------------------------------------------------------------- */ +/*Separations*/ +.main:not(.home-page) > section article h2 { margin-top: 1em; padding-top: 1em; border-top: 1px solid #DDD; } +.main:not(.home-page) > section article:first-child h2 { margin-top: 0;} + +/* Work-page (single) */ +.work-page figure {margin-bottom: 3em;} +.work-page figcaption {text-align: center; margin-top: 1em;} + +/* Services-page */ +.warning { + display: block; + background: #F5F5F5; + border: 1px solid #DDD; border-left: none; border-right: none; + text-align: center; + padding: 20px; margin: 20px 0px; } + + /* - Toggles */ +.toggle-view > li { + margin-top: 1em; + position: relative; } +.toggle-title {padding: 0.8em 2em;} +.toggle-title-detail { + font-size: 0.8em; + color: #999; + font-weight: normal; + text-transform: lowercase; } +.toggle-title:after { + content: "\25C0"; + float: right; + color: #999; } +.toggle-title:hover:after { color: #555 } +.tactive { background: #FFF } +.tactive:after { + content: "\25BC"; + color: #555;} +.toggle { + padding: 1em 2em; + display: none; + overflow: hidden; } +.toggle > ul li { line-height: 2.5 } +.toggle > ul li:before { + content: "\2714 "; + color: #ddd; + margin-right: 1em; } + + /* - Tabs */ +.tabs { + display: block; + margin: 0; + padding: 0; + border-bottom: solid 1px #ddd; } +.tabs li { + display: inline-block; margin-bottom: -1px; } +.tabs li a { + display: block; + text-decoration: none; + line-height: 3em; + color: #555; + padding: 0 2em; + margin: 0; + background: #f5f5f5; + font-size: 1.1em;} +.tabs li a:hover{color: #000;} +.tabs li.active a{ + background: #fff; + position: relative; + border: 1px solid #DDD; + border-bottom-color: #FFF; + color: #111; + -moz-border-radius-topleft: 2px; + -webkit-border-top-left-radius: 2px; + border-top-left-radius: 2px; + -moz-border-radius-topright: 2px; + -webkit-border-top-right-radius: 2px; + border-top-right-radius: 2px; } + +.tab_container { margin-bottom: 1em; display: block; border-left: 1px solid #ddd; padding: 15px 15px 0;} +.tab_container > article { display:none; } +.tab_container > article:first-child { display: block; } + + + +/* ------------------------------------------------------------- +====== BLOG +------------------------------------------------------------- */ + +/* Article */ +.post {margin-bottom:5em} +.post .entry{margin:1.5em 0;} +.post .entry p{overflow:auto} +.post .more-link {font-weight:700; color: #0078CF;} +.post .more-link:hover {color:#333;} +.meta {font-weight: normal; color:#999; font-size:0.9em} +.meta a {color:#555; text-decoration:none;} +.meta a:hover {color:#0078CF; text-decoration:underline;} + +/* Sidebar */ +.blog-sidebar {color: #999;} +.blog-sidebar h2{margin-bottom:1em; font-size:2em; color:#666;} +.blog-sidebar .widget{padding-bottom:2em;border-bottom: 1px solid #DDD;margin-bottom: 2em;} +.blog-sidebar .widget:last-child{border-bottom: none;} +.blog-sidebar a {font-weight: normal; color:inherit;text-decoration: none; } +.blog-sidebar a:hover{color:#333;} +.blog-sidebar li{padding-left: 1em; margin-bottom: 0.5em; white-space: nowrap ; text-overflow: ellipsis; width: 95%; overflow: hidden; display: block;} +.blog-sidebar li a:before {content: ">"; padding-right: 1em;} +.blog-sidebar input {width: 90%; padding-right: 0;} + +/* Pagination */ +ul.page-numbers{float: right;overflow:hidden; display:block;} +.page-numbers li {float:left;} +.page-numbers li a{ display:block;padding:1em;text-decoration:none; color:#777;} +.page-numbers li a:hover{ color:#444;} +.page-numbers li .current{color: #0078CF;} + +/* Comments*/ +.section-comment header{overflow: hidden; clear: both;} +.comments, .leavecomment {margin-top: 3em;} +.comment{margin-bottom: 2em;} +.comment p{font-size: 0.9em; color: #777;} +.comment h6{margin-bottom: 0.5em;} +.comment form ul li { margin-bottom: 2em } + + + +/* ------------------------------------------------------------- +====== MISC +------------------------------------------------------------- */ + +.ir{display:block; border:0; text-indent:-999em; overflow:hidden; background-color:transparent; background-repeat:no-repeat; text-align:left; direction:ltr; *line- +height: 0;} +.ir br{display:none} +.hidden{display:none !important; visibility:hidden} + + + +/* ------------------------------------------------------------- +====== IE Fix +------------------------------------------------------------- */ +.lt-ie9 .works figure a, .lt-ie9 .works figure a img { filter:inherit} +/* jquery filter opacity issue IE8 */ + +.lt-ie9 .container {min-width: 780px;} +.lt-ie8 .container {width: 960px;} +.lt-ie8 .grid-wrap {margin-left: 0; } +.lt-ie8 .grid {padding: 0;margin-left: 5%; } + .lt-ie8 .grid:first-child {margin-left: 0; } + +.lt-ie8 .col-full {width: 99.95%; } +.lt-ie8 .col-full + .grid {margin-left: 0; } +.lt-ie8 .col-one-half {width: 47.45%; } +.lt-ie8 .col-one-third {width: 29.55%; } +.lt-ie8 .col-two-thirds {width: 64.95%; } +.lt-ie8 .col-one-quarter {width: 19.95%; } +.lt-ie8 .col-three-quarters {width: 74.95%; } + + + +/* ------------------------------------------------------------- +====== MEDIA QUERIES +------------------------------------------------------------- */ + +/* -- Media query 1 (mq1) +------------------------------------------------------------- */ +@media only screen and (max-width: 60em) { /* 13 / 780 */ + .mq1-col-full {width: 100%; } + .mq1-col-one-half {width: 50%; } + .mq1-col-one-third {width: 33.333%; } + .mq1-col-two-thirds {width: 66.666%; } + .mq1-col-one-quarter {width: 25%; } + .mq1-col-three-quarters {width: 75%; } + /**/ + h1{font-size: 3.1em;} + .slide figcaption{ width: 80%;} + footer li { float: left; margin-right: 0.5em; padding-right: 0.5em; border-right: 1px solid #DDD;} +} + +/* -- Media query 2 (mq2) +------------------------------------------------------------- */ +@media only screen and (max-width: 48em) { /* 13 / 624 */ + .mq2-col-full {width: 100%;} + .mq2-col-one-half {width: 50%; } + .mq2-col-one-third { width: 33.333%; } + .mq2-col-two-thirds {width: 66.666%; } + .mq2-col-one-quarter {width: 25%; } + .mq2-col-three-quarters {width: 75%; } + /**/ + header nav { width: 100%; } + header nav ul { padding: 0 ; border-left:none; line-height: 2em; } + header nav ul li { float: left; padding: 0 1em ; border-left:1px solid #ddd; } + .slider { margin-top: 3em; } +} + +/* -- Media query 3 (mq3) +------------------------------------------------------------- */ +@media only screen and (max-width: 30em) { /* 13 / 390 */ + .mq3-col-full { width: 100%; } + .mq3-col-one-half { width: 50%; } + .mq3-col-one-third { width: 33.333%; } + .mq3-col-two-thirds { width: 66.666%; } + .mq3-col-one-quarter { width: 25%; } + .mq3-col-three-quarters { width: 75%; } + .mq3-none {display: none;} + /**/ + header nav ul li { padding: 0 0.5em ; } + footer li { float: none; margin-right: 0em; padding-right: 0em; border-right: none; line-height: 2em;} + .services article { margin-top: 3em;} .services article:first-of-type { margin-top: 0;} +} + +/* -- PRINT STYLES +------------------------------------------------------------- */ +@media print{ + *{background:transparent !important; color:black !important; text-shadow:none !important; filter:none !important; -ms-filter:none !important} + abbr[title]:after{content:"("attr(title) ")"} + pre, blockquote{page-break-inside:avoid} + thead{display:table-header-group} + tr, img{page-break-inside:avoid} + img{max-width:100% !important} + p, h2, h3{orphans:3; widows:3} + h2, h3{page-break-after:avoid} +} + + + +/* ------------------------------------------------------------- +====== END +------------------------------------------------------------- */ diff --git a/generate/src/main/webapps/admin/static/img/favicon.ico b/generate/src/main/webapps/admin/static/img/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..7b625cd587a707c72f7544d420e1c7c0d6522f9d GIT binary patch literal 4286 zcmcIoU2GIp6dqHt7FuZQ`U6pHHGwK55E9~pKk-2m9}Gkd@<4o%h8Lrl7~gy_8sn3t zrQO1IDJ>PT4Or_BijhJ!K^~-?o!Q;lwe)A%HgvmN*6nuxcV|A&opj4~cBY-O@ow(U z+;hHj&fRoGcT0CUn=q~`s)vWrBf+oCrYqBl}cEaH|uvZ*`pezzZP+h#ah z*MmQ{0nY9{@b?Xe^uq8*4C2!|3hn5N%IF zJiZ>DbI;?pU`I|)F7fj($>fovql&V!)G936OD-Om8us>fcHrXYv0pAOPG)F9xn8R2zp zr{*W%?sx)H&mPFx;=MLfrlrS&PVx^6ymW5X(t_?YaMF33{_9H;Gh91UD&2jrk-t2E zL}b(yo`J@GJ_N_Hayq}$re%zPp_@NKXez^$`df@p%juq;-56 zhG}Jzy&g{cb~?8?(=x_DnPO8FJm0)z4AF2rT|3qIs?ZEdX{xjw!${LQxG%hJTGi;l znf1N_ik{);u!FIe5BuKtb>d-+|8l61 zW$JzW*CP~vs}LUh-V|O7V)kzhzOTmLp!BVlz3Mm-8Hb}~16*CZR>kT8yQN=ZZKZCiDIHoC~g#k3sr+FXbV_JYJ+C zKIfsD!2);pu99Pz_riWP58wIce32a^g75Nsbna@XR=l^|U8pw|^~2Ft3*NdJx%9t< zEZz55hzH+N38Axr>Lv3&r>ks{I5XS~S6emt(Yufp<9w`;J+bpys+lSg4-S_Yz3Vx@Jj#rVZ{G@R0h;fYJ+j}=rCKBKEFmkxn%vw&}{MKbEs z#gt0)4IYKFtqQ)YAFFkBK0nI2G^BGcsx^AZ+q+gXx;3CyiA;5TIu@XP*sl6kVoqGz z-+-f?;vB8}4+p5;&T2(h8Z+C5_bola$gM%jXB7}nZKM1gMJ(u0=fhL1WA}|UHuXM6 zGUkH|fv2y34maINM*H_c?06ai`Nq8e>KaX}Hr2Zz2^!wN^pwikINUwY!DZb@^Vo#R z%SZKKtI_oCfTq?#rsS4Qh9I_Yf%DAX)$C~b%*Ha?`MW654ew)GB`m*21H(wiXSJ-A i#zpt<2*+*maa{Qj$CZ7`{wnyN8?!M)wtQrh+5QipX|zQE literal 0 HcmV?d00001 diff --git a/generate/src/main/webapps/admin/static/img/favicon.png b/generate/src/main/webapps/admin/static/img/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..77ede9f0fcbf766dc48053afb498b501f8f1b3dc GIT binary patch literal 3900 zcmV-C55w?@P)EX>4Tx0C?J+Q+HUC_ZB|i_hk=OLfG)Jmu!ImA|tE_$Pihg5Rw34gb)%y#f69p zRumNxoJdu~g4GI0orvO~D7a@qiilc^Ra`jkAKa(4eR}Wh?fcjJyyu+f{LXpL4}cL8 zCXwc%Y5+M>g*-agACFH+#L2yY0u@N$1RxOR%fe>`#Q*^C19^CUbg)1C0k3ZW0swH; zE+i7i;s1lWP$pLZAdvvzA`<5d0gzGv$SzdK6adH=0I*ZDWC{S3003-xd_p1ssto|_ z^hrJi0NAOM+!p}Yq8zCR0F40vnJ7mj0zkU}U{!%qECRs70HCZuA}$2Lt^t5qwlYTo zfV~9(c8*w(4?ti5fSE!p%m5%b0suoE6U_r4Oaq`W(!b!TUvP!ENC5!A%azTSOVTqG zxRuZvck=My;vwR~Y_URN7by^C3FIQ2mzyIKNaq7g&I|wm8u`(|{y0C7=jP<$=4R(? z@ASo@{%i1WB0eGU-~POe0t5gMPS5Y!U*+Z218~Oyuywy{sapWrRsd+<`CT*H37}dE z(0cicc{uz)9-g64$UGe!3JVMEC1RnyFyo6p|1;rl;ER6t{6HT5+j{T-ahgDxt-zy$ z{c&M#cCJ#6=gR~_F>d$gBmT#QfBlXr(c(0*Tr3re@mPttP$EsodAU-NL?OwQ;u7h9 zGVvdl{RxwI4FIf$Pry#L2er#=z<%xl0*ek<(slqqe)BDi8VivC5N9+pdG`PSlfU_o zKq~;2Moa!tiTSO!5zH77Xo1hL_iEAz&sE_ z2IPPo3ZWR5K^auQI@koYumc*P5t`u;w81er4d>tzT!HIw7Y1M$p28Tsh6w~g$Osc* zAv%Z=Vvg7%&IlKojszlMNHmgwq#)^t6j36@$a16tsX}UzT}UJHEpik&ja)$bklV;0 zGK&0)yhkyVfwEBp)B<%txu_o+ipHRG(R4HqU4WLNYtb6C9zB4zqNmYI=yh}eeTt4_ zfYC7yW{lZkT#ScBV2M~7CdU?I?5=ix(HVZgM=}{CnA%mPqZa^68Xe5gFH?u96Et<2 zCC!@_L(8Nsqt(!wX=iEoXfNq>x(VHb9z~bXm(pwK2kGbOgYq4YG!XMxcgB zqf}$J#u<$v7REAV@mNCEa#jQDENhreVq3EL>`ZnA`x|yIdrVV9bE;;nW|3x{=5fsd z4#u(I@HyF>O3oq94bFQl11&!-vDRv>X03j$H`;pIzS?5#a_tuF>)P*iaGgM%ES>c_ zZ94aL3A#4AQM!e?+jYlFJ5+DSzi0S9#6BJCZ5(XZOGfi zTj0IRdtf>~J!SgN=>tB-J_4V5pNGDtz9Qc}z9W9tewls;{GR(e`pf-~_`l(K@)q$< z1z-We0p$U`ff|9c18V~x1epY-2Q>wa1-k|>3_cY?3<(WcA99m#z!&lx`C~KOXDpi0 z70L*m6G6C?@k ziR8rC#65}Qa{}jVnlqf_npBo_W3J`gqPZ95>CVfZcRX1&S&)1jiOPpx423?lIEROmG(H@JAFg?XogQlb;dIZPf{y+kr|S? zBlAsGMAqJ{&)IR=Ejg5&l$@hd4QZCNE7vf$D7Q~$D=U)?Nn}(WA6du22pZOfRS_cv~1-c(_QtNLti0-)8>m`6CO07JR*suu!$(^sg%jf zZm#rNxnmV!m1I@#YM0epR(~oNm0zrItf;Q|utvD%;#W>z)qM4NZQ9!2O1H}G>qzUQ z>u#*~S--DJy=p<#(1!30tsC);y-IHSJr>wyfLop*ExT zdYyk=%U1oZtGB+{Cfe4&-FJKQ4uc&PJKpb5^_C@dOYIJXG+^@gCvI%WcHjN%gI&kHifN$EH?V5MBa9S!3!a?Q1 zC*P)gd*e{(q0YnH!_D8Bf4B7r>qvPk(mKC&tSzH$pgp0z@92!9ogH2sN4~fJe(y2k zV|B+hk5`_cohUu=`Q(C=R&z?UQbnZ;IU-!xL z-sg{9@Vs#JBKKn3CAUkhJ+3`ResKNaNUvLO>t*-L?N>ambo5Q@JJIjcfBI^`)pOVQ z*DhV3dA;w(>>IakCfyvkCA#(acJ}QTcM9%I++BK)c(44v+WqPW`VZ=VwEnSWz-{38 zV8CF{!&wjS4he^z{*?dIhvCvk%tzHDMk9@nogW_?4H~`jWX_Y}r?RIL&&qyQ|9R_k ztLNYS;`>X_Sp3-V3;B!BzpipJdPzh{+(w1qbw4G_Eoy$4P2WWyYW6x>*ANN^%uW#ShK0jP15ebOM z7O^Eu{=6KK&|q8~Xp4vhNGB1g6p@&{+@^F7C1uL?I$5-{UK}bWB9$X~^+ zF%y>WZe&0-jRTt34z}PxUZ83OLSI{wZB9n`@I)t#QFv&whk)B;=a~qH+afsBHW3ME zV1wP60~~7YXY27WMOh|aFDqrwiXbkfSY6Z1rGdE9mDr$x<#wV)EJA|`)*rk?jz{zT zirdKb7?c;~uz7JYN#$nap>|T1IDuHMfdzIVmD0Rh+et@Ecz&Lb`32dGqy~9af zKiolHmWyv!+?qBf;4#>Ae+jtUymh3*_7d0v`0{iQ?J;;_x|aok%;&YTd=e!diyxW> zIN2QoWc&ba(Kwrrh488*A3QPxtulAVOLaIjkx36G|9-{#V!70R-VxPmJ1din;j)%Yyl~_x0t4MHrSvb;A|RQMMr?fI{){ zi4c*5u)e$iuS?qom{T}`ikV(c_odib*EKeP=KdjeosBRnSF!evNlwcwA1)12;1)Lh z9%9%uoddjgtP`yb-d-|=vB>9AJUz!xR1AJ>yy6U?XE@2x%L%4VG}`oU189lF=^RQ??spOJ>M^EQES~0LqBc3wHb^2v!A(2*udM^blETW_e!I0Qtz1e` z5%kd>v#9Ne*atY;9!1O)k2$z{nY41Q9|R6GIRI$vH7U%}whGTEk2rTt&O>AIcX!l2 zz+g(q^%z*=p1;DYAzLdVacv(UFH6xAOJbnLjnJPIhAb%bIyi)71#Y62rrp^uR$Bdb zu?InOZ%M9wfTg8A48!27`tZ27Vf)E03}vxuUZH(}CDVKqW@~nzkB~@>9igE+#)+`S zqDfw6<#{s#)ZN%v>dWH3VmFQbCe;nyV@hr!yi?nWsT9x6%XppZG_W__mroxrr8vvt z%_AXp)OR@s*m$UwpPFObU7)EfFU}OUcf=3I(t5wpfK2cMu+D)hBN<762`OrY}L;poL*veY{o$C-DBmGczsw5b&x}s`_fFy1|}bvubao>v^_!n4g>b z_@$|jQ{gyqG@$Sq7Wb5Rskps>2d7Tt7GGAT<%@taglib prefix="panl" uri="/WEB-INF/tld/panl.tld" %>h2zero

${fn:length(subscriptionEvents)} results found

Actionsid_subscription_eventid_clientcd_subscriptiontxt_desc_subscription_eventdtm_subscription_event
[DELETE]${subscription_event.idSubscriptionEvent}${subscription_event.idClient}${subscription_event.cdSubscription}${subscription_event.txtDescSubscriptionEvent}${subscription_event.dtmSubscriptionEvent}
\ No newline at end of file diff --git a/generate/src/main/webapps/admin/subscription_event.html b/generate/src/main/webapps/admin/subscription_event.html new file mode 100644 index 00000000..309914bf --- /dev/null +++ b/generate/src/main/webapps/admin/subscription_event.html @@ -0,0 +1 @@ +<%@taglib prefix="panl" uri="/WEB-INF/tld/panl.tld" %>h2zero

Add a new 'subscription_event' entry:

'subscription_event' table schema

nametypeminmaxnull?defaultprimaryindexuniqueforeignKeyvalidator
id_subscription_eventbigint00falsetruefalsefalseLongValidator
id_clientbigint00falsefalsefalsefalseclient.id_clientLongValidator
cd_subscriptionvarchar0256falsefalsefalsefalseStringValidator
txt_desc_subscription_eventvarchar0256falsefalsefalsefalseStringValidator
dtm_subscription_eventdatetime00truefalsefalsefalseTimestampValidator
\ No newline at end of file diff --git a/src/main/template/java-create-taglib-counter-count-all.templar b/src/main/template/java-create-taglib-counter-count-all.templar index 861eadf5..2b79cff6 100755 --- a/src/main/template/java-create-taglib-counter-count-all.templar +++ b/src/main/template/java-create-taglib-counter-count-all.templar @@ -27,6 +27,7 @@ public class CountAllTag extends BaseVarTag {{{\n} {\t}private static final String BINDER = Constants.{table.upperName}_BINDER;{\n}{\n} {\t}private static final Logger LOGGER = Logger.getLogger(CountAllTag.class);{\n}{\n} + {\t}@Override{\n} {\t}public int doStartTag() throws JspException {{{\n} {\t}{\t}pageContext.setAttribute(var, {table.javaClassName}Counter.countAllSilent());{\n} {\t}{\t}return(EVAL_BODY_INCLUDE);{\n} diff --git a/src/main/template/java-create-taglib-finder-find-all.templar b/src/main/template/java-create-taglib-finder-find-all.templar index 244935ec..f2997ed5 100755 --- a/src/main/template/java-create-taglib-finder-find-all.templar +++ b/src/main/template/java-create-taglib-finder-find-all.templar @@ -30,6 +30,7 @@ public class FindAllTag extends BaseVarTag {{{\n} {\t}private static final String BINDER = Constants.{table.upperName}_BINDER;{\n}{\n} {\t}private static final Logger LOGGER = Logger.getLogger(FindAllTag.class);{\n}{\n} + {\t}@Override{\n} {\t}public int doStartTag() throws JspException {{{\n} {if !table.isConstant} {\t}{\t}pageContext.setAttribute(var, {table.javaClassName}Finder.findAllSilent());{\n} diff --git a/src/main/template/java-create-view-model.templar b/src/main/template/java-create-view-model.templar index 363249cc..4045680f 100755 --- a/src/main/template/java-create-view-model.templar +++ b/src/main/template/java-create-view-model.templar @@ -75,6 +75,7 @@ public class {view.javaClassName} extends ViewBase {{{\n} {-- Now we need the toJsonString Method--} {\n} + {\t}@Override{\n} {\t}public String toJsonString() {{{\n} {\t}{\t}StringBuilder stringBuilder = new StringBuilder();{\n} diff --git a/src/main/template/snippet/global/java-taglib-do-end-tag.templar b/src/main/template/snippet/global/java-taglib-do-end-tag.templar index 543f5971..7cb5dbac 100644 --- a/src/main/template/snippet/global/java-taglib-do-end-tag.templar +++ b/src/main/template/snippet/global/java-taglib-do-end-tag.templar @@ -1,4 +1,5 @@ {\n} +{\t}@Override{\n} {\t}public int doEndTag() throws JspException {{{\n} {\t}{\t}if(removeVar) {{{\n} {\t}{\t}{\t}pageContext.removeAttribute(var, PageContext.PAGE_SCOPE);{\n} diff --git a/src/main/template/snippet/global/java-taglib-do-start-tag.templar b/src/main/template/snippet/global/java-taglib-do-start-tag.templar index c9532415..e6fcbfa1 100644 --- a/src/main/template/snippet/global/java-taglib-do-start-tag.templar +++ b/src/main/template/snippet/global/java-taglib-do-start-tag.templar @@ -1,3 +1,4 @@ +{\t}@Override{\n} {\t}public int doStartTag() throws JspException {{{\n} {\t}{\t}pageContext.setAttribute(var, {table.javaClassName}{if table.isView}View{endif}{baseQueryObject.type}.{baseQueryObject.name}Silent(

ZzuWMh(~7q5 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 ?"; + private static final String SQL_COUNT_NUMBER_OF_USERS_BETWEEN_AGE = "select count(*) from user" + " where num_age > ? and num_age < ?"; + private static final String SQL_COUNT_USERS_IN_AGES = "select count(*) from user" + " where num_age in (...)"; + + private static Map countUsersInAges_statement_cache = new HashMap(); + + private UserCounter() {} + + /** + * Find the count of all User objects + * + * @param connection the passed in connection object, useful for queries within + * a transaction. + * + * @return the count of User objects + * + * @throws SQLException if there was an error in the SQL statement + */ + public static int countAll(Connection connection) throws SQLException { + PreparedStatement preparedStatement = null; + ResultSet resultSet = null; + int count = -1; + + try { + preparedStatement = connection.prepareStatement(SQL_BUILTIN_COUNT_ALL); + resultSet = preparedStatement.executeQuery(); + if(resultSet.next()) { + count = resultSet.getInt(1); + } + } catch(SQLException sqlex) { + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("SQLException countAll(connection): " + sqlex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + sqlex.printStackTrace(); + } + } + throw sqlex; + } finally { + ConnectionManager.closeAll(resultSet, preparedStatement); + } + + return(count); + } + + /** + * Find the count of all User objects + * + * @return the count of User objects + * + * @throws SQLException if there was an error in the SQL statement + */ + public static int countAll() throws SQLException { + Connection connection = null; + + try { + connection = ConnectionManager.getConnection(); + return(countAll(connection)); + } catch(SQLException sqlex) { + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("SQLException countAll(): " + sqlex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + sqlex.printStackTrace(); + } + } + throw sqlex; + } finally { + ConnectionManager.closeAll(connection); + } + } + + /** + * Find the count of all User objects and if there is an error + * fail silently and log the error. + * + * @param connection the passed in connection object, useful for queries within + * a transaction. + * + * @return the count of User objects + * + */ + public static int countAllSilent(Connection connection) { + try { + return(countAll(connection)); + } catch(SQLException sqlex){ + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("SQLException countAllSilent(connection): " + sqlex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + sqlex.printStackTrace(); + } + } + return(-1); + } + } + + /** + * Find the count of all User objects and if there is an error + * fail silently and log the error. + * + * @return the count of User objects + * + */ + public static int countAllSilent() { + try { + return(countAll()); + } catch(SQLException sqlex){ + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("SQLException countAllSilent(): " + sqlex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + sqlex.printStackTrace(); + } + } + return(-1); + } + } + + public static int countNumberOfUsers(Connection connection) throws SQLException { + PreparedStatement preparedStatement = null; + ResultSet resultSet = null; + int count = -1; + try { + preparedStatement = connection.prepareStatement(SQL_COUNT_NUMBER_OF_USERS); + + resultSet = preparedStatement.executeQuery(); + if(resultSet.next()) { + count = resultSet.getInt(1); + } + } catch (SQLException sqlex) { + throw sqlex; + } finally { + ConnectionManager.closeAll(resultSet, preparedStatement); + } + return(count); + } + + public static int countNumberOfUsers() throws SQLException { + Connection connection = null; + + try { + connection = ConnectionManager.getConnection(); + return(countNumberOfUsers(connection)); + } catch (SQLException sqlex) { + throw sqlex; + } finally { + ConnectionManager.closeAll(connection); + } + } + + public static int countNumberOfUsersSilent(Connection connection) { + try { + return(countNumberOfUsers(connection)); + } catch(SQLException sqlex) { + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("SQLException countNumberOfUsersSilent(): " + sqlex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + sqlex.printStackTrace(); + } + } + } + return(-1); + } + + public static int countNumberOfUsersSilent() { + try { + return(countNumberOfUsers()); + } catch(SQLException sqlex) { + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("SQLException countNumberOfUsersSilent(): " + sqlex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + sqlex.printStackTrace(); + } + } + } + return(-1); + } + + public static int countNumberOfUsersOverAge(Connection connection, Integer numAge) throws SQLException { + PreparedStatement preparedStatement = null; + ResultSet resultSet = null; + int count = -1; + try { + preparedStatement = connection.prepareStatement(SQL_COUNT_NUMBER_OF_USERS_OVER_AGE); + ConnectionManager.setInt(preparedStatement, 1, numAge); + + resultSet = preparedStatement.executeQuery(); + if(resultSet.next()) { + count = resultSet.getInt(1); + } + } catch (SQLException sqlex) { + throw sqlex; + } finally { + ConnectionManager.closeAll(resultSet, preparedStatement); + } + return(count); + } + + public static int countNumberOfUsersOverAge(Integer numAge) throws SQLException { + Connection connection = null; + + try { + connection = ConnectionManager.getConnection(); + return(countNumberOfUsersOverAge(connection, numAge)); + } catch (SQLException sqlex) { + throw sqlex; + } finally { + ConnectionManager.closeAll(connection); + } + } + + public static int countNumberOfUsersOverAgeSilent(Connection connection, Integer numAge) { + try { + return(countNumberOfUsersOverAge(connection, numAge)); + } catch(SQLException sqlex) { + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("SQLException countNumberOfUsersOverAgeSilent(" + numAge + "): " + sqlex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + sqlex.printStackTrace(); + } + } + } + return(-1); + } + + public static int countNumberOfUsersOverAgeSilent(Integer numAge) { + try { + return(countNumberOfUsersOverAge(numAge)); + } catch(SQLException sqlex) { + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("SQLException countNumberOfUsersOverAgeSilent(" + numAge + "): " + sqlex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + sqlex.printStackTrace(); + } + } + } + return(-1); + } + + public static int countNumberOfUsersBetweenAge(Connection connection, Integer numAgeFrom, Integer numAgeTo) throws SQLException { + PreparedStatement preparedStatement = null; + ResultSet resultSet = null; + int count = -1; + try { + preparedStatement = connection.prepareStatement(SQL_COUNT_NUMBER_OF_USERS_BETWEEN_AGE); + ConnectionManager.setInt(preparedStatement, 1, numAgeFrom); + ConnectionManager.setInt(preparedStatement, 2, numAgeTo); + + resultSet = preparedStatement.executeQuery(); + if(resultSet.next()) { + count = resultSet.getInt(1); + } + } catch (SQLException sqlex) { + throw sqlex; + } finally { + ConnectionManager.closeAll(resultSet, preparedStatement); + } + return(count); + } + + public static int countNumberOfUsersBetweenAge(Integer numAgeFrom, Integer numAgeTo) throws SQLException { + Connection connection = null; + + try { + connection = ConnectionManager.getConnection(); + return(countNumberOfUsersBetweenAge(connection, numAgeFrom, numAgeTo)); + } catch (SQLException sqlex) { + throw sqlex; + } finally { + ConnectionManager.closeAll(connection); + } + } + + public static int countNumberOfUsersBetweenAgeSilent(Connection connection, Integer numAgeFrom, Integer numAgeTo) { + try { + return(countNumberOfUsersBetweenAge(connection, numAgeFrom, numAgeTo)); + } catch(SQLException sqlex) { + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("SQLException countNumberOfUsersBetweenAgeSilent(" + numAgeFrom + ", " + numAgeTo + "): " + sqlex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + sqlex.printStackTrace(); + } + } + } + return(-1); + } + + public static int countNumberOfUsersBetweenAgeSilent(Integer numAgeFrom, Integer numAgeTo) { + try { + return(countNumberOfUsersBetweenAge(numAgeFrom, numAgeTo)); + } catch(SQLException sqlex) { + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("SQLException countNumberOfUsersBetweenAgeSilent(" + numAgeFrom + ", " + numAgeTo + "): " + sqlex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + sqlex.printStackTrace(); + } + } + } + return(-1); + } + + public static int countUsersInAges(Connection connection, List numAgeList) throws SQLException { + PreparedStatement preparedStatement = null; + ResultSet resultSet = null; + int count = -1; + try { + if(countUsersInAges_statement_cache.containsKey(numAgeList.size() + ":" )) { + preparedStatement = connection.prepareStatement(countUsersInAges_statement_cache.get(numAgeList.size() + ":" )); + } else { + String preparedStatementTemp = SQL_COUNT_USERS_IN_AGES; + StringBuilder stringBuilder = null; + stringBuilder = new StringBuilder(); + for(int i = 0; i < numAgeList.size(); i++) { + if(i > 0) { + stringBuilder.append(", "); + } + stringBuilder.append("?"); + } + preparedStatementTemp = SQL_COUNT_USERS_IN_AGES.replaceFirst("\\.\\.\\.", stringBuilder.toString()); + countUsersInAges_statement_cache.put(numAgeList.size() + ":" , preparedStatementTemp); + preparedStatement = connection.prepareStatement(preparedStatementTemp); + } + int i = 1; + for (Integer numAgeIn : numAgeList) { + ConnectionManager.setInt(preparedStatement, i, numAgeIn); + i++; + } + + resultSet = preparedStatement.executeQuery(); + if(resultSet.next()) { + count = resultSet.getInt(1); + } + } catch (SQLException sqlex) { + throw sqlex; + } finally { + ConnectionManager.closeAll(resultSet, preparedStatement); + } + return(count); + } + + public static int countUsersInAges(List numAgeList) throws SQLException { + Connection connection = null; + + try { + connection = ConnectionManager.getConnection(); + return(countUsersInAges(connection, numAgeList)); + } catch (SQLException sqlex) { + throw sqlex; + } finally { + ConnectionManager.closeAll(connection); + } + } + + public static int countUsersInAgesSilent(Connection connection, List numAgeList) { + try { + return(countUsersInAges(connection, numAgeList)); + } catch(SQLException sqlex) { + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("SQLException countUsersInAgesSilent(" + numAgeList + "): " + sqlex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + sqlex.printStackTrace(); + } + } + } + return(-1); + } + + public static int countUsersInAgesSilent(List numAgeList) { + try { + return(countUsersInAges(numAgeList)); + } catch(SQLException sqlex) { + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("SQLException countUsersInAgesSilent(" + numAgeList + "): " + sqlex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + sqlex.printStackTrace(); + } + } + } + return(-1); + } + +} \ No newline at end of file diff --git a/generate/src/main/java/synapticloop/sample/h2zero/counter/UserPetCounter.java b/generate/src/main/java/synapticloop/sample/h2zero/counter/UserPetCounter.java new file mode 100644 index 00000000..1f74c29c --- /dev/null +++ b/generate/src/main/java/synapticloop/sample/h2zero/counter/UserPetCounter.java @@ -0,0 +1,144 @@ +package synapticloop.sample.h2zero.counter; + +// - - - - thoughtfully generated by synapticloop h2zero - - - - +// with the use of synapticloop templar templating language +// (java-create-counter.templar) + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.HashMap; +import java.util.Map; +import java.util.List; + +import synapticloop.h2zero.base.manager.ConnectionManager; + +import org.apache.log4j.Level; +import org.apache.log4j.Logger; + +import synapticloop.sample.h2zero.model.util.Constants; + +public class UserPetCounter { + // the binder is unused in code, but will generate compile problems if this + // class is no longer referenced in the h2zero file. Just a nicety for + // removing dead code + @SuppressWarnings("unused") + private static final String BINDER = Constants.USER_PET_BINDER; + + private static final Logger LOGGER = Logger.getLogger(UserPetCounter.class); + + private static final String SQL_BUILTIN_COUNT_ALL = "select count(*) from user_pet"; + + + + private UserPetCounter() {} + + /** + * Find the count of all UserPet objects + * + * @param connection the passed in connection object, useful for queries within + * a transaction. + * + * @return the count of UserPet objects + * + * @throws SQLException if there was an error in the SQL statement + */ + public static int countAll(Connection connection) throws SQLException { + PreparedStatement preparedStatement = null; + ResultSet resultSet = null; + int count = -1; + + try { + preparedStatement = connection.prepareStatement(SQL_BUILTIN_COUNT_ALL); + resultSet = preparedStatement.executeQuery(); + if(resultSet.next()) { + count = resultSet.getInt(1); + } + } catch(SQLException sqlex) { + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("SQLException countAll(connection): " + sqlex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + sqlex.printStackTrace(); + } + } + throw sqlex; + } finally { + ConnectionManager.closeAll(resultSet, preparedStatement); + } + + return(count); + } + + /** + * Find the count of all UserPet objects + * + * @return the count of UserPet objects + * + * @throws SQLException if there was an error in the SQL statement + */ + public static int countAll() throws SQLException { + Connection connection = null; + + try { + connection = ConnectionManager.getConnection(); + return(countAll(connection)); + } catch(SQLException sqlex) { + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("SQLException countAll(): " + sqlex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + sqlex.printStackTrace(); + } + } + throw sqlex; + } finally { + ConnectionManager.closeAll(connection); + } + } + + /** + * Find the count of all UserPet objects and if there is an error + * fail silently and log the error. + * + * @param connection the passed in connection object, useful for queries within + * a transaction. + * + * @return the count of UserPet objects + * + */ + public static int countAllSilent(Connection connection) { + try { + return(countAll(connection)); + } catch(SQLException sqlex){ + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("SQLException countAllSilent(connection): " + sqlex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + sqlex.printStackTrace(); + } + } + return(-1); + } + } + + /** + * Find the count of all UserPet objects and if there is an error + * fail silently and log the error. + * + * @return the count of UserPet objects + * + */ + public static int countAllSilent() { + try { + return(countAll()); + } catch(SQLException sqlex){ + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("SQLException countAllSilent(): " + sqlex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + sqlex.printStackTrace(); + } + } + return(-1); + } + } + +} \ No newline at end of file diff --git a/generate/src/main/java/synapticloop/sample/h2zero/counter/UserTypeCounter.java b/generate/src/main/java/synapticloop/sample/h2zero/counter/UserTypeCounter.java new file mode 100644 index 00000000..f239bac7 --- /dev/null +++ b/generate/src/main/java/synapticloop/sample/h2zero/counter/UserTypeCounter.java @@ -0,0 +1,144 @@ +package synapticloop.sample.h2zero.counter; + +// - - - - thoughtfully generated by synapticloop h2zero - - - - +// with the use of synapticloop templar templating language +// (java-create-counter.templar) + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.HashMap; +import java.util.Map; +import java.util.List; + +import synapticloop.h2zero.base.manager.ConnectionManager; + +import org.apache.log4j.Level; +import org.apache.log4j.Logger; + +import synapticloop.sample.h2zero.model.util.Constants; + +public class UserTypeCounter { + // the binder is unused in code, but will generate compile problems if this + // class is no longer referenced in the h2zero file. Just a nicety for + // removing dead code + @SuppressWarnings("unused") + private static final String BINDER = Constants.USER_TYPE_BINDER; + + private static final Logger LOGGER = Logger.getLogger(UserTypeCounter.class); + + private static final String SQL_BUILTIN_COUNT_ALL = "select count(*) from user_type"; + + + + private UserTypeCounter() {} + + /** + * Find the count of all UserType objects + * + * @param connection the passed in connection object, useful for queries within + * a transaction. + * + * @return the count of UserType objects + * + * @throws SQLException if there was an error in the SQL statement + */ + public static int countAll(Connection connection) throws SQLException { + PreparedStatement preparedStatement = null; + ResultSet resultSet = null; + int count = -1; + + try { + preparedStatement = connection.prepareStatement(SQL_BUILTIN_COUNT_ALL); + resultSet = preparedStatement.executeQuery(); + if(resultSet.next()) { + count = resultSet.getInt(1); + } + } catch(SQLException sqlex) { + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("SQLException countAll(connection): " + sqlex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + sqlex.printStackTrace(); + } + } + throw sqlex; + } finally { + ConnectionManager.closeAll(resultSet, preparedStatement); + } + + return(count); + } + + /** + * Find the count of all UserType objects + * + * @return the count of UserType objects + * + * @throws SQLException if there was an error in the SQL statement + */ + public static int countAll() throws SQLException { + Connection connection = null; + + try { + connection = ConnectionManager.getConnection(); + return(countAll(connection)); + } catch(SQLException sqlex) { + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("SQLException countAll(): " + sqlex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + sqlex.printStackTrace(); + } + } + throw sqlex; + } finally { + ConnectionManager.closeAll(connection); + } + } + + /** + * Find the count of all UserType objects and if there is an error + * fail silently and log the error. + * + * @param connection the passed in connection object, useful for queries within + * a transaction. + * + * @return the count of UserType objects + * + */ + public static int countAllSilent(Connection connection) { + try { + return(countAll(connection)); + } catch(SQLException sqlex){ + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("SQLException countAllSilent(connection): " + sqlex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + sqlex.printStackTrace(); + } + } + return(-1); + } + } + + /** + * Find the count of all UserType objects and if there is an error + * fail silently and log the error. + * + * @return the count of UserType objects + * + */ + public static int countAllSilent() { + try { + return(countAll()); + } catch(SQLException sqlex){ + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("SQLException countAllSilent(): " + sqlex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + sqlex.printStackTrace(); + } + } + return(-1); + } + } + +} \ No newline at end of file diff --git a/generate/src/main/java/synapticloop/sample/h2zero/deleter/PetDeleter.java b/generate/src/main/java/synapticloop/sample/h2zero/deleter/PetDeleter.java new file mode 100644 index 00000000..53f4a018 --- /dev/null +++ b/generate/src/main/java/synapticloop/sample/h2zero/deleter/PetDeleter.java @@ -0,0 +1,161 @@ +package synapticloop.sample.h2zero.deleter; + +// - - - - thoughtfully generated by synapticloop h2zero - - - - +// with the use of synapticloop templar templating language +// (java-create-deleter.templar) + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.SQLException; + +import synapticloop.h2zero.base.manager.ConnectionManager; +import synapticloop.sample.h2zero.model.util.Constants; + +public class PetDeleter { + // the binder is unused in code, but will generate compile problems if this + // class is no longer referenced in the h2zero file. Just a nicety for + // removing dead code + @SuppressWarnings("unused") + private static final String BINDER = Constants.PET_BINDER; + + // static fields generated by synapticloop h2zero + private static final String SQL_BUILTIN_DELETE_ALL = "truncate table pet"; + private static final String SQL_DELETE_START = "delete from pet "; + private static final String SQL_BUILTIN_DELETE_BY_PRIMARY_KEY = SQL_DELETE_START + "where id_pet = ?"; + + + private PetDeleter() {} + + /** + * Delete a row in the PET table by its primary key + * + * @param connection The connection + * @param idPet the primary key to delete + * @return the number of rows deleted + * + * @throws SQLException if there was an error in the delete + */ + public static int deleteByPrimaryKey(Connection connection, Long idPet) throws SQLException { + PreparedStatement preparedStatement = connection.prepareStatement(SQL_BUILTIN_DELETE_BY_PRIMARY_KEY); + preparedStatement.setLong(1, idPet); + int numResults = preparedStatement.executeUpdate(); + ConnectionManager.closeAll(preparedStatement); + return(numResults); + } + + /** + * Delete a row in the PET table by its primary key + * + * @param idPet the primary key to delete + * @return the number of rows deleted + * + * @throws SQLException if there was an error in the delete + */ + public static int deleteByPrimaryKey(Long idPet) throws SQLException { + Connection connection = ConnectionManager.getConnection(); + int numResults = deleteByPrimaryKey(connection, idPet); + ConnectionManager.closeAll(connection); + return(numResults); + } + + /** + * Delete a row in the PET table by its primary key silently + * (i.e. don't throw an exception if it coudn't be deleted). + * + * @param idPet the primary key to delete + * @return the number of rows deleted + * + * @throws SQLException if there was an error in the delete + */ + public static int deleteByPrimaryKeySilent(Connection connection, Long idPet) { + int numResults = 0; + try { + numResults = deleteByPrimaryKey(connection, idPet); + } catch (SQLException sqlex) { + sqlex.printStackTrace(); + return(-1); + } + return(numResults); + } + + /** + * Delete a row in the PET table by its primary key silently + * (i.e. don't throw an exception if it coudn't be deleted). + * + * @param idPet the primary key to delete + * @return the number of rows deleted + * + * @throws SQLException if there was an error in the delete + */ + public static int deleteByPrimaryKeySilent(Long idPet) { + int numResults = 0; + Connection connection = null; + try { + connection = ConnectionManager.getConnection(); + numResults = deleteByPrimaryKeySilent(connection, idPet); + } catch (SQLException sqlex) { + sqlex.printStackTrace(); + return(-1); + } finally { + ConnectionManager.closeAll(connection); + } + return(numResults); + } + + /** + * Delete all of the rows in the table 'pet'. + * This table has now foreign key relationships and consequently can be truncated. + * + * @return The number of rows affected by this statement + */ + public static int deleteAll(Connection connection) throws SQLException { + PreparedStatement preparedStatement = null; + int numResults = -1; + try { + preparedStatement = connection.prepareStatement(SQL_BUILTIN_DELETE_ALL); + numResults = preparedStatement.executeUpdate(); + } catch (SQLException sqlex) { + ConnectionManager.closeAll(preparedStatement); + } + return(numResults); + } + + public static int deleteAll() throws SQLException { + Connection connection = null; + int numResults = -1; + try { + connection = ConnectionManager.getConnection(); + numResults = deleteAll(connection); + } catch (SQLException sqlex) { + throw sqlex; + } finally { + ConnectionManager.closeAll(connection); + } + return(numResults); + } + + public static int deleteAllSilent(Connection connection) { + int numResults = -1; + try { + numResults = deleteAll(connection); + } catch (SQLException sqlex) { + sqlex.printStackTrace(); + } + return(numResults); + } + + public static int deleteAllSilent() { + Connection connection = null; + int numResults = -1; + try { + connection = ConnectionManager.getConnection(); + numResults = deleteAll(connection); + } catch (SQLException sqlex) { + sqlex.printStackTrace(); + } finally { + ConnectionManager.closeAll(connection); + } + return(numResults); + } + +} \ No newline at end of file diff --git a/generate/src/main/java/synapticloop/sample/h2zero/deleter/UserDeleter.java b/generate/src/main/java/synapticloop/sample/h2zero/deleter/UserDeleter.java new file mode 100644 index 00000000..b8cc145c --- /dev/null +++ b/generate/src/main/java/synapticloop/sample/h2zero/deleter/UserDeleter.java @@ -0,0 +1,163 @@ +package synapticloop.sample.h2zero.deleter; + +// - - - - thoughtfully generated by synapticloop h2zero - - - - +// with the use of synapticloop templar templating language +// (java-create-deleter.templar) + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.SQLException; + +import synapticloop.h2zero.base.manager.ConnectionManager; +import synapticloop.sample.h2zero.model.util.Constants; + +public class UserDeleter { + // the binder is unused in code, but will generate compile problems if this + // class is no longer referenced in the h2zero file. Just a nicety for + // removing dead code + @SuppressWarnings("unused") + private static final String BINDER = Constants.USER_BINDER; + + // static fields generated by synapticloop h2zero + private static final String SQL_BUILTIN_DELETE_ALL = "delete from user"; + private static final String SQL_DELETE_START = "delete from user "; + private static final String SQL_BUILTIN_DELETE_BY_PRIMARY_KEY = SQL_DELETE_START + "where id_user = ?"; + + + private UserDeleter() {} + + /** + * Delete a row in the USER table by its primary key + * + * @param connection The connection + * @param idUser the primary key to delete + * @return the number of rows deleted + * + * @throws SQLException if there was an error in the delete + */ + public static int deleteByPrimaryKey(Connection connection, Long idUser) throws SQLException { + PreparedStatement preparedStatement = connection.prepareStatement(SQL_BUILTIN_DELETE_BY_PRIMARY_KEY); + preparedStatement.setLong(1, idUser); + int numResults = preparedStatement.executeUpdate(); + ConnectionManager.closeAll(preparedStatement); + return(numResults); + } + + /** + * Delete a row in the USER table by its primary key + * + * @param idUser the primary key to delete + * @return the number of rows deleted + * + * @throws SQLException if there was an error in the delete + */ + public static int deleteByPrimaryKey(Long idUser) throws SQLException { + Connection connection = ConnectionManager.getConnection(); + int numResults = deleteByPrimaryKey(connection, idUser); + ConnectionManager.closeAll(connection); + return(numResults); + } + + /** + * Delete a row in the USER table by its primary key silently + * (i.e. don't throw an exception if it coudn't be deleted). + * + * @param idUser the primary key to delete + * @return the number of rows deleted + * + * @throws SQLException if there was an error in the delete + */ + public static int deleteByPrimaryKeySilent(Connection connection, Long idUser) { + int numResults = 0; + try { + numResults = deleteByPrimaryKey(connection, idUser); + } catch (SQLException sqlex) { + sqlex.printStackTrace(); + return(-1); + } + return(numResults); + } + + /** + * Delete a row in the USER table by its primary key silently + * (i.e. don't throw an exception if it coudn't be deleted). + * + * @param idUser the primary key to delete + * @return the number of rows deleted + * + * @throws SQLException if there was an error in the delete + */ + public static int deleteByPrimaryKeySilent(Long idUser) { + int numResults = 0; + Connection connection = null; + try { + connection = ConnectionManager.getConnection(); + numResults = deleteByPrimaryKeySilent(connection, idUser); + } catch (SQLException sqlex) { + sqlex.printStackTrace(); + return(-1); + } finally { + ConnectionManager.closeAll(connection); + } + return(numResults); + } + + /** + * Delete all of the rows in the table 'user'. + * This table has a foreign key relationship on it, consequently the truncate + * method would have been faster, but would fail, hence the 'DELETE FROM' SQL + * statement is used + * + * @return The number of rows affected by this statement + */ + public static int deleteAll(Connection connection) throws SQLException { + PreparedStatement preparedStatement = null; + int numResults = -1; + try { + preparedStatement = connection.prepareStatement(SQL_BUILTIN_DELETE_ALL); + numResults = preparedStatement.executeUpdate(); + } catch (SQLException sqlex) { + ConnectionManager.closeAll(preparedStatement); + } + return(numResults); + } + + public static int deleteAll() throws SQLException { + Connection connection = null; + int numResults = -1; + try { + connection = ConnectionManager.getConnection(); + numResults = deleteAll(connection); + } catch (SQLException sqlex) { + throw sqlex; + } finally { + ConnectionManager.closeAll(connection); + } + return(numResults); + } + + public static int deleteAllSilent(Connection connection) { + int numResults = -1; + try { + numResults = deleteAll(connection); + } catch (SQLException sqlex) { + sqlex.printStackTrace(); + } + return(numResults); + } + + public static int deleteAllSilent() { + Connection connection = null; + int numResults = -1; + try { + connection = ConnectionManager.getConnection(); + numResults = deleteAll(connection); + } catch (SQLException sqlex) { + sqlex.printStackTrace(); + } finally { + ConnectionManager.closeAll(connection); + } + return(numResults); + } + +} \ No newline at end of file diff --git a/generate/src/main/java/synapticloop/sample/h2zero/deleter/UserPetDeleter.java b/generate/src/main/java/synapticloop/sample/h2zero/deleter/UserPetDeleter.java new file mode 100644 index 00000000..fa5bac95 --- /dev/null +++ b/generate/src/main/java/synapticloop/sample/h2zero/deleter/UserPetDeleter.java @@ -0,0 +1,163 @@ +package synapticloop.sample.h2zero.deleter; + +// - - - - thoughtfully generated by synapticloop h2zero - - - - +// with the use of synapticloop templar templating language +// (java-create-deleter.templar) + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.SQLException; + +import synapticloop.h2zero.base.manager.ConnectionManager; +import synapticloop.sample.h2zero.model.util.Constants; + +public class UserPetDeleter { + // the binder is unused in code, but will generate compile problems if this + // class is no longer referenced in the h2zero file. Just a nicety for + // removing dead code + @SuppressWarnings("unused") + private static final String BINDER = Constants.USER_PET_BINDER; + + // static fields generated by synapticloop h2zero + private static final String SQL_BUILTIN_DELETE_ALL = "delete from user_pet"; + private static final String SQL_DELETE_START = "delete from user_pet "; + private static final String SQL_BUILTIN_DELETE_BY_PRIMARY_KEY = SQL_DELETE_START + "where id_user_pet = ?"; + + + private UserPetDeleter() {} + + /** + * Delete a row in the USER_PET table by its primary key + * + * @param connection The connection + * @param idUserPet the primary key to delete + * @return the number of rows deleted + * + * @throws SQLException if there was an error in the delete + */ + public static int deleteByPrimaryKey(Connection connection, Long idUserPet) throws SQLException { + PreparedStatement preparedStatement = connection.prepareStatement(SQL_BUILTIN_DELETE_BY_PRIMARY_KEY); + preparedStatement.setLong(1, idUserPet); + int numResults = preparedStatement.executeUpdate(); + ConnectionManager.closeAll(preparedStatement); + return(numResults); + } + + /** + * Delete a row in the USER_PET table by its primary key + * + * @param idUserPet the primary key to delete + * @return the number of rows deleted + * + * @throws SQLException if there was an error in the delete + */ + public static int deleteByPrimaryKey(Long idUserPet) throws SQLException { + Connection connection = ConnectionManager.getConnection(); + int numResults = deleteByPrimaryKey(connection, idUserPet); + ConnectionManager.closeAll(connection); + return(numResults); + } + + /** + * Delete a row in the USER_PET table by its primary key silently + * (i.e. don't throw an exception if it coudn't be deleted). + * + * @param idUserPet the primary key to delete + * @return the number of rows deleted + * + * @throws SQLException if there was an error in the delete + */ + public static int deleteByPrimaryKeySilent(Connection connection, Long idUserPet) { + int numResults = 0; + try { + numResults = deleteByPrimaryKey(connection, idUserPet); + } catch (SQLException sqlex) { + sqlex.printStackTrace(); + return(-1); + } + return(numResults); + } + + /** + * Delete a row in the USER_PET table by its primary key silently + * (i.e. don't throw an exception if it coudn't be deleted). + * + * @param idUserPet the primary key to delete + * @return the number of rows deleted + * + * @throws SQLException if there was an error in the delete + */ + public static int deleteByPrimaryKeySilent(Long idUserPet) { + int numResults = 0; + Connection connection = null; + try { + connection = ConnectionManager.getConnection(); + numResults = deleteByPrimaryKeySilent(connection, idUserPet); + } catch (SQLException sqlex) { + sqlex.printStackTrace(); + return(-1); + } finally { + ConnectionManager.closeAll(connection); + } + return(numResults); + } + + /** + * Delete all of the rows in the table 'user_pet'. + * This table has a foreign key relationship on it, consequently the truncate + * method would have been faster, but would fail, hence the 'DELETE FROM' SQL + * statement is used + * + * @return The number of rows affected by this statement + */ + public static int deleteAll(Connection connection) throws SQLException { + PreparedStatement preparedStatement = null; + int numResults = -1; + try { + preparedStatement = connection.prepareStatement(SQL_BUILTIN_DELETE_ALL); + numResults = preparedStatement.executeUpdate(); + } catch (SQLException sqlex) { + ConnectionManager.closeAll(preparedStatement); + } + return(numResults); + } + + public static int deleteAll() throws SQLException { + Connection connection = null; + int numResults = -1; + try { + connection = ConnectionManager.getConnection(); + numResults = deleteAll(connection); + } catch (SQLException sqlex) { + throw sqlex; + } finally { + ConnectionManager.closeAll(connection); + } + return(numResults); + } + + public static int deleteAllSilent(Connection connection) { + int numResults = -1; + try { + numResults = deleteAll(connection); + } catch (SQLException sqlex) { + sqlex.printStackTrace(); + } + return(numResults); + } + + public static int deleteAllSilent() { + Connection connection = null; + int numResults = -1; + try { + connection = ConnectionManager.getConnection(); + numResults = deleteAll(connection); + } catch (SQLException sqlex) { + sqlex.printStackTrace(); + } finally { + ConnectionManager.closeAll(connection); + } + return(numResults); + } + +} \ No newline at end of file diff --git a/generate/src/main/java/synapticloop/sample/h2zero/finder/PetFinder.java b/generate/src/main/java/synapticloop/sample/h2zero/finder/PetFinder.java new file mode 100644 index 00000000..4d9c251a --- /dev/null +++ b/generate/src/main/java/synapticloop/sample/h2zero/finder/PetFinder.java @@ -0,0 +1,276 @@ +package synapticloop.sample.h2zero.finder; + +// - - - - thoughtfully generated by synapticloop h2zero - - - - +// with the use of synapticloop templar templating language +// (java-create-finder.templar) + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.ArrayList; + +import synapticloop.h2zero.base.exception.H2ZeroFinderException; +import synapticloop.h2zero.base.manager.ConnectionManager; + +import org.apache.log4j.Level; +import org.apache.log4j.Logger; + +import synapticloop.sample.h2zero.model.util.Constants; + +import synapticloop.sample.h2zero.model.Pet; +public class PetFinder { + // the binder is unused in code, but will generate compile problems if this + // class is no longer referenced in the h2zero file. Just a nicety for + // removing dead code + @SuppressWarnings("unused") + private static final String BINDER = Constants.PET_BINDER; + + private static final Logger LOGGER = Logger.getLogger(PetFinder.class); + private static final String SQL_SELECT_START = "select id_pet, nm_pet, num_age, flt_weight, dt_birthday from pet"; + private static final String SQL_BUILTIN_FIND_BY_PRIMARY_KEY = SQL_SELECT_START + " where id_pet = ?"; + private static final String SQL_BUILTIN_PRIMARY_KEY_EXISTS = "select count(*) from pet where id_pet = ?"; + + + private static Map findAll_limit_statement_cache = new HashMap(); + private PetFinder() {} + + /** + * Find a Pet by its primary key + * + * @param connection the connection item + * @param idPet the primary key + * + * @return the unique result or throw an exception if one couldn't be found + * + * @throws H2ZeroFinderException if one couldn't be found + */ + public static Pet findByPrimaryKey(Connection connection, Long idPet) throws H2ZeroFinderException { + Pet pet = null; + PreparedStatement preparedStatement = null; + ResultSet resultSet = null; + + if(null == idPet) { + throw new H2ZeroFinderException("Could not find result as the primary key field [idPet] was null."); + } + + try { + preparedStatement = connection.prepareStatement(SQL_BUILTIN_FIND_BY_PRIMARY_KEY); + preparedStatement.setLong(1, idPet); + resultSet = preparedStatement.executeQuery(); + pet = uniqueResult(resultSet); + } catch (SQLException sqlex) { + throw new H2ZeroFinderException(sqlex); + } catch (H2ZeroFinderException h2zfex) { + throw new H2ZeroFinderException(h2zfex.getMessage() + " Additionally, the parameters were [idPet:" + idPet + "]."); + } finally { + ConnectionManager.closeAll(resultSet, preparedStatement); + } + + if(null == pet) { + throw new H2ZeroFinderException("Could not find result the parameters were [idPet:" + idPet + "]."); + } + return(pet); + } + + /** + * Find a Pet by its primary key + * + * @param idPet the primary key + * + * @return the unique result or throw an exception if one coudn't be found. + * + * @throws H2ZeroFinderException if one couldn't be found + */ + public static Pet findByPrimaryKey(Long idPet) throws H2ZeroFinderException { + Pet pet = null; + Connection connection = null; + + if(null == idPet) { + throw new H2ZeroFinderException("Could not find result as the primary key field [idPet] was null."); + } + + try { + connection = ConnectionManager.getConnection(); + pet = findByPrimaryKey(connection, idPet); + } catch (SQLException sqlex) { + throw new H2ZeroFinderException(sqlex); + } catch (H2ZeroFinderException h2zfex) { + throw new H2ZeroFinderException(h2zfex.getMessage() + " Additionally, the parameters were [idPet:" + idPet + "]."); + } finally { + ConnectionManager.closeAll(connection); + } + + if(null == pet) { + throw new H2ZeroFinderException("Could not find result the parameters were [idPet:" + idPet + "]."); + } + return(pet); + } + + /** + * Find a Pet by its primary key and silently fail. + * I.e. Do not throw an exception on error. + * + * @param connection the connection item + * @param idPet the primary key + * + * @return the unique result or null if it couldn't be found + * + */ + public static Pet findByPrimaryKeySilent(Connection connection, Long idPet) { + try { + return(findByPrimaryKey(connection, idPet)); + } catch(H2ZeroFinderException h2zfex){ + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("H2ZeroFinderException findByPrimaryKeySilent(" + idPet + "): " + h2zfex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + h2zfex.printStackTrace(); + } + } + return(null); + } + } + + /** + * Find a Pet by its primary key and silently fail. + * I.e. Do not throw an exception on error. + * + * @param idPet the primary key + * + * @return the unique result or null if it couldn't be found + * + */ + public static Pet findByPrimaryKeySilent(Long idPet) { + try { + return(findByPrimaryKey(idPet)); + } catch(H2ZeroFinderException h2zfex){ + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("H2ZeroFinderException findByPrimaryKeySilent(" + idPet + "): " + h2zfex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + h2zfex.printStackTrace(); + } + } + return(null); + } + } + + /** + * Find all Pet objects + * + * @return a list of all of the Pet objects + * + * @throws SQLException if there was an error in the SQL statement + */ + public static List findAll(Integer limit, Integer offset) throws SQLException { + PreparedStatement preparedStatement = null; + ResultSet resultSet = null; + Connection connection = null; + List results = new ArrayList(); + + try { + connection = ConnectionManager.getConnection(); + preparedStatement = connection.prepareStatement(SQL_SELECT_START); + resultSet = preparedStatement.executeQuery(); + results = list(resultSet); + } catch(SQLException sqlex) { + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("SQLException findAll(): " + sqlex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + sqlex.printStackTrace(); + } + } + throw sqlex; + } finally { + ConnectionManager.closeAll(resultSet, preparedStatement, connection); + } + + return(results); + } + + public static List findAll() throws SQLException { + return(findAll(null, null)); + } + public static List findAllSilent() { + try { + return(findAll()); + } catch(SQLException sqlex){ + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("SQLException findAllSilent(): " + sqlex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + sqlex.printStackTrace(); + } + } + return(new ArrayList()); + } + } + + /** + * Return a unique result for the query - in effect just the first result of + * query. + * + * @param resultSet The result set of the query + * + * @return The Pet that represents this result + * + * @throws H2ZeroFinderException if no results were found + * @throws SQLException if there was a problem retrieving the results + */ + private static Pet uniqueResult(ResultSet resultSet) throws H2ZeroFinderException, SQLException { + if(resultSet.first()) { + // we have a result + Long idPet = resultSet.getLong(1); + Boolean nmPet = resultSet.getBoolean(2); + if(resultSet.wasNull()) { + nmPet = null; + } + Integer numAge = resultSet.getInt(3); + Float fltWeight = resultSet.getFloat(4); + if(resultSet.wasNull()) { + fltWeight = null; + } + Date dtBirthday = resultSet.getDate(5); + if(resultSet.wasNull()) { + dtBirthday = null; + } + + Pet pet = new Pet(idPet, nmPet, numAge, fltWeight, dtBirthday); + + if(resultSet.next()) { + throw new H2ZeroFinderException("More than one result in resultset for unique finder."); + } else { + return(pet); + } + } else { + // could not get a result + return(null); + } + } + + /** + * Return the results as a list of Pet, this will be empty if + * none are found. + * + * @param resultSet the results as a list of Pet + * + * @return the list of results + * + * @throws SQLException if there was a problem retrieving the results + */ + private static List list(ResultSet resultSet) throws SQLException { + List arrayList = new ArrayList(); + while(resultSet.next()) { + arrayList.add(new Pet( + resultSet.getLong(1), + ConnectionManager.getNullableResultBoolean(resultSet, 2), + resultSet.getInt(3), + ConnectionManager.getNullableResultFloat(resultSet, 4), + ConnectionManager.getNullableResultDate(resultSet, 5))); + } + return(arrayList); + } + +} \ No newline at end of file diff --git a/generate/src/main/java/synapticloop/sample/h2zero/finder/UserFinder.java b/generate/src/main/java/synapticloop/sample/h2zero/finder/UserFinder.java new file mode 100644 index 00000000..1e1b5c2f --- /dev/null +++ b/generate/src/main/java/synapticloop/sample/h2zero/finder/UserFinder.java @@ -0,0 +1,1277 @@ +package synapticloop.sample.h2zero.finder; + +// - - - - thoughtfully generated by synapticloop h2zero - - - - +// with the use of synapticloop templar templating language +// (java-create-finder.templar) + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Timestamp; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.ArrayList; + +import synapticloop.h2zero.base.exception.H2ZeroFinderException; +import synapticloop.h2zero.base.manager.ConnectionManager; + +import org.apache.log4j.Level; +import org.apache.log4j.Logger; + +import synapticloop.sample.h2zero.model.util.Constants; +import synapticloop.sample.h2zero.bean.FindNmUserDtmSignupBean; +import synapticloop.sample.h2zero.bean.FindGroupNumAgeBean; + +import synapticloop.sample.h2zero.model.User; +public class UserFinder { + // the binder is unused in code, but will generate compile problems if this + // class is no longer referenced in the h2zero file. Just a nicety for + // removing dead code + @SuppressWarnings("unused") + private static final String BINDER = Constants.USER_BINDER; + + private static final Logger LOGGER = Logger.getLogger(UserFinder.class); + private static final String SQL_SELECT_START = "select id_user, id_user_type, fl_is_alive, num_age, nm_username, txt_address_email, txt_password, dtm_signup from user"; + private static final String SQL_BUILTIN_FIND_BY_PRIMARY_KEY = SQL_SELECT_START + " where id_user = ?"; + private static final String SQL_BUILTIN_PRIMARY_KEY_EXISTS = "select count(*) from user where id_user = ?"; + + private static final String SQL_FIND_BY_NUM_AGE = SQL_SELECT_START + " where num_age = ?"; + private static final String SQL_FIND_BY_FL_IS_ALIVE_NUM_AGE = SQL_SELECT_START + " where fl_is_alive = ?num_age = ?, "; + private static final String SQL_FIND_BY_NM_USERNAME = SQL_SELECT_START + " where nm_username = ?"; + private static final String SQL_FIND_BY_TXT_ADDRESS_EMAIL = SQL_SELECT_START + " where txt_address_email = ?"; + private static final String SQL_FIND_BY_TXT_ADDRESS_EMAIL_TXT_PASSWORD = SQL_SELECT_START + " where txt_address_email = ? and txt_password = ?"; + private static final String SQL_FIND_NM_USER_DTM_SIGNUP = "select nm_user, dtm_signup from user"; + private static final String SQL_FIND_GROUP_NUM_AGE = "select count(*) as num_count, num_age from user group by num_count"; + private static final String SQL_FIND_BY_NUM_AGE_IN = SQL_SELECT_START + " where num_age in (...)"; + private static final String SQL_FIND_BY_NUM_AGE_BETWEEN = SQL_SELECT_START + " where num_age > ? and num_age < ?"; + + private static Map findByNumAgeIn_statement_cache = new HashMap(); + private static Map findAll_limit_statement_cache = new HashMap(); + private static Map findByNumAge_limit_statement_cache = new HashMap(); + private static Map findByFlIsAliveNumAge_limit_statement_cache = new HashMap(); + private static Map findByNmUsername_limit_statement_cache = new HashMap(); + private static Map findByTxtAddressEmail_limit_statement_cache = new HashMap(); + private static Map findByTxtAddressEmailTxtPassword_limit_statement_cache = new HashMap(); + private static Map findByNumAgeIn_limit_statement_cache = new HashMap(); + private static Map findByNumAgeBetween_limit_statement_cache = new HashMap(); + private UserFinder() {} + + /** + * Find a User by its primary key + * + * @param connection the connection item + * @param idUser the primary key + * + * @return the unique result or throw an exception if one couldn't be found + * + * @throws H2ZeroFinderException if one couldn't be found + */ + public static User findByPrimaryKey(Connection connection, Long idUser) throws H2ZeroFinderException { + User user = null; + PreparedStatement preparedStatement = null; + ResultSet resultSet = null; + + if(null == idUser) { + throw new H2ZeroFinderException("Could not find result as the primary key field [idUser] was null."); + } + + try { + preparedStatement = connection.prepareStatement(SQL_BUILTIN_FIND_BY_PRIMARY_KEY); + preparedStatement.setLong(1, idUser); + resultSet = preparedStatement.executeQuery(); + user = uniqueResult(resultSet); + } catch (SQLException sqlex) { + throw new H2ZeroFinderException(sqlex); + } catch (H2ZeroFinderException h2zfex) { + throw new H2ZeroFinderException(h2zfex.getMessage() + " Additionally, the parameters were [idUser:" + idUser + "]."); + } finally { + ConnectionManager.closeAll(resultSet, preparedStatement); + } + + if(null == user) { + throw new H2ZeroFinderException("Could not find result the parameters were [idUser:" + idUser + "]."); + } + return(user); + } + + /** + * Find a User by its primary key + * + * @param idUser the primary key + * + * @return the unique result or throw an exception if one coudn't be found. + * + * @throws H2ZeroFinderException if one couldn't be found + */ + public static User findByPrimaryKey(Long idUser) throws H2ZeroFinderException { + User user = null; + Connection connection = null; + + if(null == idUser) { + throw new H2ZeroFinderException("Could not find result as the primary key field [idUser] was null."); + } + + try { + connection = ConnectionManager.getConnection(); + user = findByPrimaryKey(connection, idUser); + } catch (SQLException sqlex) { + throw new H2ZeroFinderException(sqlex); + } catch (H2ZeroFinderException h2zfex) { + throw new H2ZeroFinderException(h2zfex.getMessage() + " Additionally, the parameters were [idUser:" + idUser + "]."); + } finally { + ConnectionManager.closeAll(connection); + } + + if(null == user) { + throw new H2ZeroFinderException("Could not find result the parameters were [idUser:" + idUser + "]."); + } + return(user); + } + + /** + * Find a User by its primary key and silently fail. + * I.e. Do not throw an exception on error. + * + * @param connection the connection item + * @param idUser the primary key + * + * @return the unique result or null if it couldn't be found + * + */ + public static User findByPrimaryKeySilent(Connection connection, Long idUser) { + try { + return(findByPrimaryKey(connection, idUser)); + } catch(H2ZeroFinderException h2zfex){ + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("H2ZeroFinderException findByPrimaryKeySilent(" + idUser + "): " + h2zfex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + h2zfex.printStackTrace(); + } + } + return(null); + } + } + + /** + * Find a User by its primary key and silently fail. + * I.e. Do not throw an exception on error. + * + * @param idUser the primary key + * + * @return the unique result or null if it couldn't be found + * + */ + public static User findByPrimaryKeySilent(Long idUser) { + try { + return(findByPrimaryKey(idUser)); + } catch(H2ZeroFinderException h2zfex){ + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("H2ZeroFinderException findByPrimaryKeySilent(" + idUser + "): " + h2zfex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + h2zfex.printStackTrace(); + } + } + return(null); + } + } + + /** + * Find all User objects + * + * @return a list of all of the User objects + * + * @throws SQLException if there was an error in the SQL statement + */ + public static List findAll(Integer limit, Integer offset) throws SQLException { + PreparedStatement preparedStatement = null; + ResultSet resultSet = null; + Connection connection = null; + List results = new ArrayList(); + + try { + connection = ConnectionManager.getConnection(); + preparedStatement = connection.prepareStatement(SQL_SELECT_START); + resultSet = preparedStatement.executeQuery(); + results = list(resultSet); + } catch(SQLException sqlex) { + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("SQLException findAll(): " + sqlex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + sqlex.printStackTrace(); + } + } + throw sqlex; + } finally { + ConnectionManager.closeAll(resultSet, preparedStatement, connection); + } + + return(results); + } + + public static List findAll() throws SQLException { + return(findAll(null, null)); + } + public static List findAllSilent() { + try { + return(findAll()); + } catch(SQLException sqlex){ + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("SQLException findAllSilent(): " + sqlex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + sqlex.printStackTrace(); + } + } + return(new ArrayList()); + } + } + + /** + * findByNumAge + * + * @param numAge + * + * @return the list of User results found + * + * @throws H2ZeroFinderException if no results could be found + * @throws SQLException if there was an error in the SQL statement + */ + public static List findByNumAge(Integer numAge) throws H2ZeroFinderException, SQLException { + Connection connection = null; + PreparedStatement preparedStatement = null; + ResultSet resultSet = null; + List results = null; + try { + connection = ConnectionManager.getConnection(); + preparedStatement = connection.prepareStatement(SQL_FIND_BY_NUM_AGE); + ConnectionManager.setInt(preparedStatement, 1, numAge); + + resultSet = preparedStatement.executeQuery(); + results = list(resultSet); + } catch (SQLException sqlex) { + throw sqlex; + } finally { + ConnectionManager.closeAll(resultSet, preparedStatement, connection); + } + + + if(null == results) { + throw new H2ZeroFinderException("Could not find result."); + } + return(results); + } + + public static List findByNumAge(Connection connection, Integer numAge) throws H2ZeroFinderException, SQLException { + PreparedStatement preparedStatement = null; + ResultSet resultSet = null; + List results = null; + try { + preparedStatement = connection.prepareStatement(SQL_FIND_BY_NUM_AGE); + ConnectionManager.setInt(preparedStatement, 1, numAge); + + resultSet = preparedStatement.executeQuery(); + results = list(resultSet); + } catch (SQLException sqlex) { + throw sqlex; + } finally { + ConnectionManager.closeAll(resultSet, preparedStatement); + } + + + if(null == results) { + throw new H2ZeroFinderException("Could not find result."); + } + return(results); + } + + public static List findByNumAgeSilent(Integer numAge) { + try { + return(findByNumAge(numAge)); + } catch(H2ZeroFinderException h2zfex) { + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("H2ZeroFinderException findByNumAgeSilent(" + numAge + "): " + h2zfex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + h2zfex.printStackTrace(); + } + } + return(new ArrayList()); + } catch(SQLException sqlex) { + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("SQLException findByNumAgeSilent(" + numAge + "): " + sqlex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + sqlex.printStackTrace(); + } + } + return(new ArrayList()); + } + } + + public static List findByNumAgeSilent(Connection connection, Integer numAge) { + try { + return(findByNumAge(connection, numAge)); + } catch(H2ZeroFinderException h2zfex) { + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("H2ZeroFinderException findByNumAgeSilent(" + numAge + "): " + h2zfex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + h2zfex.printStackTrace(); + } + } + return(new ArrayList()); + } catch(SQLException sqlex) { + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("SQLException findByNumAgeSilent(" + numAge + "): " + sqlex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + sqlex.printStackTrace(); + } + } + return(new ArrayList()); + } + } + + /** + * findByFlIsAliveNumAge + * + * @param flIsAlive + * @param numAge + * + * @return the list of User results found + * + * @throws H2ZeroFinderException if no results could be found + * @throws SQLException if there was an error in the SQL statement + */ + public static List findByFlIsAliveNumAge(Boolean flIsAlive, Integer numAge) throws H2ZeroFinderException, SQLException { + Connection connection = null; + PreparedStatement preparedStatement = null; + ResultSet resultSet = null; + List results = null; + try { + connection = ConnectionManager.getConnection(); + preparedStatement = connection.prepareStatement(SQL_FIND_BY_FL_IS_ALIVE_NUM_AGE); + ConnectionManager.setBoolean(preparedStatement, 1, flIsAlive); + ConnectionManager.setInt(preparedStatement, 2, numAge); + + resultSet = preparedStatement.executeQuery(); + results = list(resultSet); + } catch (SQLException sqlex) { + throw sqlex; + } finally { + ConnectionManager.closeAll(resultSet, preparedStatement, connection); + } + + + if(null == results) { + throw new H2ZeroFinderException("Could not find result."); + } + return(results); + } + + public static List findByFlIsAliveNumAge(Connection connection, Boolean flIsAlive, Integer numAge) throws H2ZeroFinderException, SQLException { + PreparedStatement preparedStatement = null; + ResultSet resultSet = null; + List results = null; + try { + preparedStatement = connection.prepareStatement(SQL_FIND_BY_FL_IS_ALIVE_NUM_AGE); + ConnectionManager.setBoolean(preparedStatement, 1, flIsAlive); + ConnectionManager.setInt(preparedStatement, 2, numAge); + + resultSet = preparedStatement.executeQuery(); + results = list(resultSet); + } catch (SQLException sqlex) { + throw sqlex; + } finally { + ConnectionManager.closeAll(resultSet, preparedStatement); + } + + + if(null == results) { + throw new H2ZeroFinderException("Could not find result."); + } + return(results); + } + + public static List findByFlIsAliveNumAgeSilent(Boolean flIsAlive, Integer numAge) { + try { + return(findByFlIsAliveNumAge(flIsAlive, numAge)); + } catch(H2ZeroFinderException h2zfex) { + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("H2ZeroFinderException findByFlIsAliveNumAgeSilent(" + flIsAlive + ", " + numAge + "): " + h2zfex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + h2zfex.printStackTrace(); + } + } + return(new ArrayList()); + } catch(SQLException sqlex) { + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("SQLException findByFlIsAliveNumAgeSilent(" + flIsAlive + ", " + numAge + "): " + sqlex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + sqlex.printStackTrace(); + } + } + return(new ArrayList()); + } + } + + public static List findByFlIsAliveNumAgeSilent(Connection connection, Boolean flIsAlive, Integer numAge) { + try { + return(findByFlIsAliveNumAge(connection, flIsAlive, numAge)); + } catch(H2ZeroFinderException h2zfex) { + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("H2ZeroFinderException findByFlIsAliveNumAgeSilent(" + flIsAlive + ", " + numAge + "): " + h2zfex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + h2zfex.printStackTrace(); + } + } + return(new ArrayList()); + } catch(SQLException sqlex) { + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("SQLException findByFlIsAliveNumAgeSilent(" + flIsAlive + ", " + numAge + "): " + sqlex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + sqlex.printStackTrace(); + } + } + return(new ArrayList()); + } + } + + /** + * findByNmUsername + * + * @param nmUsername + * + * @return the unique result of User found + * + * @throws H2ZeroFinderException if no results could be found + * @throws SQLException if there was an error in the SQL statement + */ + public static User findByNmUsername(String nmUsername) throws H2ZeroFinderException, SQLException { + Connection connection = null; + PreparedStatement preparedStatement = null; + ResultSet resultSet = null; + User result = null; + try { + connection = ConnectionManager.getConnection(); + preparedStatement = connection.prepareStatement(SQL_FIND_BY_NM_USERNAME); + ConnectionManager.setVarchar(preparedStatement, 1, nmUsername); + + resultSet = preparedStatement.executeQuery(); + result = uniqueResult(resultSet); + ConnectionManager.closeAll(resultSet, preparedStatement, connection); + } catch (SQLException sqlex) { + throw sqlex; + } catch (H2ZeroFinderException h2zfex) { + throw new H2ZeroFinderException(h2zfex.getMessage() + " Additionally, the parameters were " + "[nmUsername:" + nmUsername + "]."); + } finally { + ConnectionManager.closeAll(resultSet, preparedStatement, connection); + } + + + if(null == result) { + throw new H2ZeroFinderException("Could not find result."); + } + return(result); + } + + public static User findByNmUsername(Connection connection, String nmUsername) throws H2ZeroFinderException, SQLException { + PreparedStatement preparedStatement = null; + ResultSet resultSet = null; + User result = null; + try { + preparedStatement = connection.prepareStatement(SQL_FIND_BY_NM_USERNAME); + ConnectionManager.setVarchar(preparedStatement, 1, nmUsername); + + resultSet = preparedStatement.executeQuery(); + result = uniqueResult(resultSet); + ConnectionManager.closeAll(resultSet, preparedStatement); + } catch (SQLException sqlex) { + throw sqlex; + } catch (H2ZeroFinderException h2zfex) { + throw new H2ZeroFinderException(h2zfex.getMessage() + " Additionally, the parameters were " + "[nmUsername:" + nmUsername + "]."); + } finally { + ConnectionManager.closeAll(resultSet, preparedStatement); + } + + + if(null == result) { + throw new H2ZeroFinderException("Could not find result."); + } + return(result); + } + + public static User findByNmUsernameSilent(String nmUsername) { + try { + return(findByNmUsername(nmUsername)); + } catch(H2ZeroFinderException h2zfex) { + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("H2ZeroFinderException findByNmUsernameSilent(" + nmUsername + "): " + h2zfex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + h2zfex.printStackTrace(); + } + } + return(null); + } catch(SQLException sqlex) { + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("SQLException findByNmUsernameSilent(" + nmUsername + "): " + sqlex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + sqlex.printStackTrace(); + } + } + return(null); + } + } + + public static User findByNmUsernameSilent(Connection connection, String nmUsername) { + try { + return(findByNmUsername(connection, nmUsername)); + } catch(H2ZeroFinderException h2zfex) { + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("H2ZeroFinderException findByNmUsernameSilent(" + nmUsername + "): " + h2zfex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + h2zfex.printStackTrace(); + } + } + return(null); + } catch(SQLException sqlex) { + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("SQLException findByNmUsernameSilent(" + nmUsername + "): " + sqlex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + sqlex.printStackTrace(); + } + } + return(null); + } + } + + /** + * findByTxtAddressEmail + * + * @param txtAddressEmail + * + * @return the unique result of User found + * + * @throws H2ZeroFinderException if no results could be found + * @throws SQLException if there was an error in the SQL statement + */ + public static User findByTxtAddressEmail(String txtAddressEmail) throws H2ZeroFinderException, SQLException { + Connection connection = null; + PreparedStatement preparedStatement = null; + ResultSet resultSet = null; + User result = null; + try { + connection = ConnectionManager.getConnection(); + preparedStatement = connection.prepareStatement(SQL_FIND_BY_TXT_ADDRESS_EMAIL); + ConnectionManager.setVarchar(preparedStatement, 1, txtAddressEmail); + + resultSet = preparedStatement.executeQuery(); + result = uniqueResult(resultSet); + ConnectionManager.closeAll(resultSet, preparedStatement, connection); + } catch (SQLException sqlex) { + throw sqlex; + } catch (H2ZeroFinderException h2zfex) { + throw new H2ZeroFinderException(h2zfex.getMessage() + " Additionally, the parameters were " + "[txtAddressEmail:" + txtAddressEmail + "]."); + } finally { + ConnectionManager.closeAll(resultSet, preparedStatement, connection); + } + + + if(null == result) { + throw new H2ZeroFinderException("Could not find result."); + } + return(result); + } + + public static User findByTxtAddressEmail(Connection connection, String txtAddressEmail) throws H2ZeroFinderException, SQLException { + PreparedStatement preparedStatement = null; + ResultSet resultSet = null; + User result = null; + try { + preparedStatement = connection.prepareStatement(SQL_FIND_BY_TXT_ADDRESS_EMAIL); + ConnectionManager.setVarchar(preparedStatement, 1, txtAddressEmail); + + resultSet = preparedStatement.executeQuery(); + result = uniqueResult(resultSet); + ConnectionManager.closeAll(resultSet, preparedStatement); + } catch (SQLException sqlex) { + throw sqlex; + } catch (H2ZeroFinderException h2zfex) { + throw new H2ZeroFinderException(h2zfex.getMessage() + " Additionally, the parameters were " + "[txtAddressEmail:" + txtAddressEmail + "]."); + } finally { + ConnectionManager.closeAll(resultSet, preparedStatement); + } + + + if(null == result) { + throw new H2ZeroFinderException("Could not find result."); + } + return(result); + } + + public static User findByTxtAddressEmailSilent(String txtAddressEmail) { + try { + return(findByTxtAddressEmail(txtAddressEmail)); + } catch(H2ZeroFinderException h2zfex) { + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("H2ZeroFinderException findByTxtAddressEmailSilent(" + txtAddressEmail + "): " + h2zfex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + h2zfex.printStackTrace(); + } + } + return(null); + } catch(SQLException sqlex) { + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("SQLException findByTxtAddressEmailSilent(" + txtAddressEmail + "): " + sqlex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + sqlex.printStackTrace(); + } + } + return(null); + } + } + + public static User findByTxtAddressEmailSilent(Connection connection, String txtAddressEmail) { + try { + return(findByTxtAddressEmail(connection, txtAddressEmail)); + } catch(H2ZeroFinderException h2zfex) { + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("H2ZeroFinderException findByTxtAddressEmailSilent(" + txtAddressEmail + "): " + h2zfex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + h2zfex.printStackTrace(); + } + } + return(null); + } catch(SQLException sqlex) { + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("SQLException findByTxtAddressEmailSilent(" + txtAddressEmail + "): " + sqlex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + sqlex.printStackTrace(); + } + } + return(null); + } + } + + /** + * findByTxtAddressEmailTxtPassword + * + * @param txtAddressEmail + * @param txtPassword + * + * @return the unique result of User found + * + * @throws H2ZeroFinderException if no results could be found + * @throws SQLException if there was an error in the SQL statement + */ + public static User findByTxtAddressEmailTxtPassword(String txtAddressEmail, String txtPassword) throws H2ZeroFinderException, SQLException { + Connection connection = null; + PreparedStatement preparedStatement = null; + ResultSet resultSet = null; + User result = null; + try { + connection = ConnectionManager.getConnection(); + preparedStatement = connection.prepareStatement(SQL_FIND_BY_TXT_ADDRESS_EMAIL_TXT_PASSWORD); + ConnectionManager.setVarchar(preparedStatement, 1, txtAddressEmail); + ConnectionManager.setVarchar(preparedStatement, 2, txtPassword); + + resultSet = preparedStatement.executeQuery(); + result = uniqueResult(resultSet); + ConnectionManager.closeAll(resultSet, preparedStatement, connection); + } catch (SQLException sqlex) { + throw sqlex; + } catch (H2ZeroFinderException h2zfex) { + throw new H2ZeroFinderException(h2zfex.getMessage() + " Additionally, the parameters were " + "[txtAddressEmail:" + txtAddressEmail + "], " + "[txtPassword:" + txtPassword + "]."); + } finally { + ConnectionManager.closeAll(resultSet, preparedStatement, connection); + } + + + if(null == result) { + throw new H2ZeroFinderException("Could not find result."); + } + return(result); + } + + public static User findByTxtAddressEmailTxtPassword(Connection connection, String txtAddressEmail, String txtPassword) throws H2ZeroFinderException, SQLException { + PreparedStatement preparedStatement = null; + ResultSet resultSet = null; + User result = null; + try { + preparedStatement = connection.prepareStatement(SQL_FIND_BY_TXT_ADDRESS_EMAIL_TXT_PASSWORD); + ConnectionManager.setVarchar(preparedStatement, 1, txtAddressEmail); + ConnectionManager.setVarchar(preparedStatement, 2, txtPassword); + + resultSet = preparedStatement.executeQuery(); + result = uniqueResult(resultSet); + ConnectionManager.closeAll(resultSet, preparedStatement); + } catch (SQLException sqlex) { + throw sqlex; + } catch (H2ZeroFinderException h2zfex) { + throw new H2ZeroFinderException(h2zfex.getMessage() + " Additionally, the parameters were " + "[txtAddressEmail:" + txtAddressEmail + "], " + "[txtPassword:" + txtPassword + "]."); + } finally { + ConnectionManager.closeAll(resultSet, preparedStatement); + } + + + if(null == result) { + throw new H2ZeroFinderException("Could not find result."); + } + return(result); + } + + public static User findByTxtAddressEmailTxtPasswordSilent(String txtAddressEmail, String txtPassword) { + try { + return(findByTxtAddressEmailTxtPassword(txtAddressEmail, txtPassword)); + } catch(H2ZeroFinderException h2zfex) { + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("H2ZeroFinderException findByTxtAddressEmailTxtPasswordSilent(" + txtAddressEmail + ", " + txtPassword + "): " + h2zfex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + h2zfex.printStackTrace(); + } + } + return(null); + } catch(SQLException sqlex) { + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("SQLException findByTxtAddressEmailTxtPasswordSilent(" + txtAddressEmail + ", " + txtPassword + "): " + sqlex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + sqlex.printStackTrace(); + } + } + return(null); + } + } + + public static User findByTxtAddressEmailTxtPasswordSilent(Connection connection, String txtAddressEmail, String txtPassword) { + try { + return(findByTxtAddressEmailTxtPassword(connection, txtAddressEmail, txtPassword)); + } catch(H2ZeroFinderException h2zfex) { + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("H2ZeroFinderException findByTxtAddressEmailTxtPasswordSilent(" + txtAddressEmail + ", " + txtPassword + "): " + h2zfex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + h2zfex.printStackTrace(); + } + } + return(null); + } catch(SQLException sqlex) { + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("SQLException findByTxtAddressEmailTxtPasswordSilent(" + txtAddressEmail + ", " + txtPassword + "): " + sqlex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + sqlex.printStackTrace(); + } + } + return(null); + } + } + + /** + * findByNumAgeIn + * + * @param numAgeList + * + * @return the list of User results found + * + * @throws H2ZeroFinderException if no results could be found + * @throws SQLException if there was an error in the SQL statement + */ + public static List findByNumAgeIn(List numAgeList) throws H2ZeroFinderException, SQLException { + Connection connection = null; + PreparedStatement preparedStatement = null; + ResultSet resultSet = null; + List results = null; + try { + connection = ConnectionManager.getConnection(); + if(findByNumAgeIn_statement_cache.containsKey(numAgeList.size() + ":" )) { + preparedStatement = connection.prepareStatement(findByNumAgeIn_statement_cache.get(numAgeList.size() + ":" )); + } else { + String preparedStatementTemp = SQL_FIND_BY_NUM_AGE_IN; + StringBuilder stringBuilder = null; + stringBuilder = new StringBuilder(); + for(int i = 0; i < numAgeList.size(); i++) { + if(i > 0) { + stringBuilder.append(", "); + } + stringBuilder.append("?"); + } + preparedStatementTemp = SQL_FIND_BY_NUM_AGE_IN.replaceFirst("\\.\\.\\.", stringBuilder.toString()); + findByNumAgeIn_statement_cache.put(numAgeList.size() + ":" , preparedStatementTemp); + preparedStatement = connection.prepareStatement(preparedStatementTemp); + } + int i = 1; + for (Integer numAgeIn : numAgeList) { + ConnectionManager.setInt(preparedStatement, i, numAgeIn); + i++; + } + + resultSet = preparedStatement.executeQuery(); + results = list(resultSet); + } catch (SQLException sqlex) { + throw sqlex; + } finally { + ConnectionManager.closeAll(resultSet, preparedStatement, connection); + } + + + if(null == results) { + throw new H2ZeroFinderException("Could not find result."); + } + return(results); + } + + public static List findByNumAgeIn(Connection connection, List numAgeList) throws H2ZeroFinderException, SQLException { + PreparedStatement preparedStatement = null; + ResultSet resultSet = null; + List results = null; + try { + if(findByNumAgeIn_statement_cache.containsKey(numAgeList.size() + ":" )) { + preparedStatement = connection.prepareStatement(findByNumAgeIn_statement_cache.get(numAgeList.size() + ":" )); + } else { + String preparedStatementTemp = SQL_FIND_BY_NUM_AGE_IN; + StringBuilder stringBuilder = null; + stringBuilder = new StringBuilder(); + for(int i = 0; i < numAgeList.size(); i++) { + if(i > 0) { + stringBuilder.append(", "); + } + stringBuilder.append("?"); + } + preparedStatementTemp = SQL_FIND_BY_NUM_AGE_IN.replaceFirst("\\.\\.\\.", stringBuilder.toString()); + findByNumAgeIn_statement_cache.put(numAgeList.size() + ":" , preparedStatementTemp); + preparedStatement = connection.prepareStatement(preparedStatementTemp); + } + int i = 1; + for (Integer numAgeIn : numAgeList) { + ConnectionManager.setInt(preparedStatement, i, numAgeIn); + i++; + } + + resultSet = preparedStatement.executeQuery(); + results = list(resultSet); + } catch (SQLException sqlex) { + throw sqlex; + } finally { + ConnectionManager.closeAll(resultSet, preparedStatement); + } + + + if(null == results) { + throw new H2ZeroFinderException("Could not find result."); + } + return(results); + } + + public static List findByNumAgeInSilent(List numAgeList) { + try { + return(findByNumAgeIn(numAgeList)); + } catch(H2ZeroFinderException h2zfex) { + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("H2ZeroFinderException findByNumAgeInSilent(" + numAgeList + "): " + h2zfex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + h2zfex.printStackTrace(); + } + } + return(new ArrayList()); + } catch(SQLException sqlex) { + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("SQLException findByNumAgeInSilent(" + numAgeList + "): " + sqlex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + sqlex.printStackTrace(); + } + } + return(new ArrayList()); + } + } + + public static List findByNumAgeInSilent(Connection connection, List numAgeList) { + try { + return(findByNumAgeIn(connection, numAgeList)); + } catch(H2ZeroFinderException h2zfex) { + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("H2ZeroFinderException findByNumAgeInSilent(" + numAgeList + "): " + h2zfex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + h2zfex.printStackTrace(); + } + } + return(new ArrayList()); + } catch(SQLException sqlex) { + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("SQLException findByNumAgeInSilent(" + numAgeList + "): " + sqlex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + sqlex.printStackTrace(); + } + } + return(new ArrayList()); + } + } + + /** + * findByNumAgeBetween + * + * @param numAgeMin + * @param numAgeMax + * + * @return the list of User results found + * + * @throws H2ZeroFinderException if no results could be found + * @throws SQLException if there was an error in the SQL statement + */ + public static List findByNumAgeBetween(Integer numAgeMin, Integer numAgeMax) throws H2ZeroFinderException, SQLException { + Connection connection = null; + PreparedStatement preparedStatement = null; + ResultSet resultSet = null; + List results = null; + try { + connection = ConnectionManager.getConnection(); + preparedStatement = connection.prepareStatement(SQL_FIND_BY_NUM_AGE_BETWEEN); + ConnectionManager.setInt(preparedStatement, 1, numAgeMin); + ConnectionManager.setInt(preparedStatement, 2, numAgeMax); + + resultSet = preparedStatement.executeQuery(); + results = list(resultSet); + } catch (SQLException sqlex) { + throw sqlex; + } finally { + ConnectionManager.closeAll(resultSet, preparedStatement, connection); + } + + + if(null == results) { + throw new H2ZeroFinderException("Could not find result."); + } + return(results); + } + + public static List findByNumAgeBetween(Connection connection, Integer numAgeMin, Integer numAgeMax) throws H2ZeroFinderException, SQLException { + PreparedStatement preparedStatement = null; + ResultSet resultSet = null; + List results = null; + try { + preparedStatement = connection.prepareStatement(SQL_FIND_BY_NUM_AGE_BETWEEN); + ConnectionManager.setInt(preparedStatement, 1, numAgeMin); + ConnectionManager.setInt(preparedStatement, 2, numAgeMax); + + resultSet = preparedStatement.executeQuery(); + results = list(resultSet); + } catch (SQLException sqlex) { + throw sqlex; + } finally { + ConnectionManager.closeAll(resultSet, preparedStatement); + } + + + if(null == results) { + throw new H2ZeroFinderException("Could not find result."); + } + return(results); + } + + public static List findByNumAgeBetweenSilent(Integer numAgeMin, Integer numAgeMax) { + try { + return(findByNumAgeBetween(numAgeMin, numAgeMax)); + } catch(H2ZeroFinderException h2zfex) { + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("H2ZeroFinderException findByNumAgeBetweenSilent(" + numAgeMin + ", " + numAgeMax + "): " + h2zfex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + h2zfex.printStackTrace(); + } + } + return(new ArrayList()); + } catch(SQLException sqlex) { + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("SQLException findByNumAgeBetweenSilent(" + numAgeMin + ", " + numAgeMax + "): " + sqlex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + sqlex.printStackTrace(); + } + } + return(new ArrayList()); + } + } + + public static List findByNumAgeBetweenSilent(Connection connection, Integer numAgeMin, Integer numAgeMax) { + try { + return(findByNumAgeBetween(connection, numAgeMin, numAgeMax)); + } catch(H2ZeroFinderException h2zfex) { + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("H2ZeroFinderException findByNumAgeBetweenSilent(" + numAgeMin + ", " + numAgeMax + "): " + h2zfex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + h2zfex.printStackTrace(); + } + } + return(new ArrayList()); + } catch(SQLException sqlex) { + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("SQLException findByNumAgeBetweenSilent(" + numAgeMin + ", " + numAgeMax + "): " + sqlex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + sqlex.printStackTrace(); + } + } + return(new ArrayList()); + } + } + + public static List findNmUserDtmSignup() throws H2ZeroFinderException, SQLException { + Connection connection = null; + PreparedStatement preparedStatement = null; + ResultSet resultSet = null; + try { + connection = ConnectionManager.getConnection(); + preparedStatement = connection.prepareStatement(SQL_FIND_NM_USER_DTM_SIGNUP); + + resultSet = preparedStatement.executeQuery(); + List results = listFindNmUserDtmSignupBean(resultSet); + return(results); + } catch (SQLException sqlex) { + throw sqlex; + } finally { + ConnectionManager.closeAll(resultSet, preparedStatement, connection); + } + + } + + public static List findNmUserDtmSignup(Connection connection) throws H2ZeroFinderException, SQLException { + PreparedStatement preparedStatement = null; + ResultSet resultSet = null; + try { + preparedStatement = connection.prepareStatement(SQL_FIND_NM_USER_DTM_SIGNUP); + + resultSet = preparedStatement.executeQuery(); + List results = listFindNmUserDtmSignupBean(resultSet); + return(results); + } catch (SQLException sqlex) { + throw sqlex; + } finally { + ConnectionManager.closeAll(resultSet, preparedStatement); + } + + } + + public static List findNmUserDtmSignupSilent() { + try { + return(findNmUserDtmSignup()); + } catch(H2ZeroFinderException h2zfex) { + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("H2ZeroFinderException findNmUserDtmSignupSilent(): " + h2zfex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + h2zfex.printStackTrace(); + } + } + return(new ArrayList()); + } catch(SQLException sqlex) { + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("SQLException findNmUserDtmSignupSilent(): " + sqlex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + sqlex.printStackTrace(); + } + } + return(new ArrayList()); + } + } + + public static List findNmUserDtmSignupSilent(Connection connection) { + try { + return(findNmUserDtmSignup(connection)); + } catch(H2ZeroFinderException h2zfex) { + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("H2ZeroFinderException findNmUserDtmSignupSilent(): " + h2zfex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + h2zfex.printStackTrace(); + } + } + return(new ArrayList()); + } catch(SQLException sqlex) { + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("SQLException findNmUserDtmSignupSilent(): " + sqlex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + sqlex.printStackTrace(); + } + } + return(new ArrayList()); + } + } + + public static List findGroupNumAge() throws H2ZeroFinderException, SQLException { + Connection connection = null; + PreparedStatement preparedStatement = null; + ResultSet resultSet = null; + try { + connection = ConnectionManager.getConnection(); + preparedStatement = connection.prepareStatement(SQL_FIND_GROUP_NUM_AGE); + + resultSet = preparedStatement.executeQuery(); + List results = listFindGroupNumAgeBean(resultSet); + return(results); + } catch (SQLException sqlex) { + throw sqlex; + } finally { + ConnectionManager.closeAll(resultSet, preparedStatement, connection); + } + + } + + public static List findGroupNumAge(Connection connection) throws H2ZeroFinderException, SQLException { + PreparedStatement preparedStatement = null; + ResultSet resultSet = null; + try { + preparedStatement = connection.prepareStatement(SQL_FIND_GROUP_NUM_AGE); + + resultSet = preparedStatement.executeQuery(); + List results = listFindGroupNumAgeBean(resultSet); + return(results); + } catch (SQLException sqlex) { + throw sqlex; + } finally { + ConnectionManager.closeAll(resultSet, preparedStatement); + } + + } + + public static List findGroupNumAgeSilent() { + try { + return(findGroupNumAge()); + } catch(H2ZeroFinderException h2zfex) { + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("H2ZeroFinderException findGroupNumAgeSilent(): " + h2zfex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + h2zfex.printStackTrace(); + } + } + return(new ArrayList()); + } catch(SQLException sqlex) { + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("SQLException findGroupNumAgeSilent(): " + sqlex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + sqlex.printStackTrace(); + } + } + return(new ArrayList()); + } + } + + public static List findGroupNumAgeSilent(Connection connection) { + try { + return(findGroupNumAge(connection)); + } catch(H2ZeroFinderException h2zfex) { + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("H2ZeroFinderException findGroupNumAgeSilent(): " + h2zfex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + h2zfex.printStackTrace(); + } + } + return(new ArrayList()); + } catch(SQLException sqlex) { + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("SQLException findGroupNumAgeSilent(): " + sqlex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + sqlex.printStackTrace(); + } + } + return(new ArrayList()); + } + } + + /** + * Return a unique result for the query - in effect just the first result of + * query. + * + * @param resultSet The result set of the query + * + * @return The User that represents this result + * + * @throws H2ZeroFinderException if no results were found + * @throws SQLException if there was a problem retrieving the results + */ + private static User uniqueResult(ResultSet resultSet) throws H2ZeroFinderException, SQLException { + if(resultSet.first()) { + // we have a result + Long idUser = resultSet.getLong(1); + Long idUserType = resultSet.getLong(2); + Boolean flIsAlive = resultSet.getBoolean(3); + if(resultSet.wasNull()) { + flIsAlive = null; + } + Integer numAge = resultSet.getInt(4); + String nmUsername = resultSet.getString(5); + String txtAddressEmail = resultSet.getString(6); + String txtPassword = resultSet.getString(7); + Timestamp dtmSignup = resultSet.getTimestamp(8); + if(resultSet.wasNull()) { + dtmSignup = null; + } + + User user = new User(idUser, idUserType, flIsAlive, numAge, nmUsername, txtAddressEmail, txtPassword, dtmSignup); + + if(resultSet.next()) { + throw new H2ZeroFinderException("More than one result in resultset for unique finder."); + } else { + return(user); + } + } else { + // could not get a result + return(null); + } + } + + /** + * Return the results as a list of User, this will be empty if + * none are found. + * + * @param resultSet the results as a list of User + * + * @return the list of results + * + * @throws SQLException if there was a problem retrieving the results + */ + private static List list(ResultSet resultSet) throws SQLException { + List arrayList = new ArrayList(); + while(resultSet.next()) { + arrayList.add(new User( + resultSet.getLong(1), + resultSet.getLong(2), + ConnectionManager.getNullableResultBoolean(resultSet, 3), + resultSet.getInt(4), + resultSet.getString(5), + resultSet.getString(6), + resultSet.getString(7), + ConnectionManager.getNullableResultTimestamp(resultSet, 8))); + } + return(arrayList); + } + + /** + * Return the results as a list of FindNmUserDtmSignupBeans, this will be empty if + * none are found. + * + * @param resultSet the results as a list of FindNmUserDtmSignupBean + * + * @return the list of results + * + * @throws SQLException if there was a problem retrieving the results + */ + private static List listFindNmUserDtmSignupBean(ResultSet resultSet) throws SQLException { + List arrayList = new ArrayList(); + while(resultSet.next()) { + arrayList.add(new FindNmUserDtmSignupBean( + resultSet.getString(1), + resultSet.getTimestamp(2))); + } + return(arrayList); + } + + /** + * Return the results as a list of FindGroupNumAgeBeans, this will be empty if + * none are found. + * + * @param resultSet the results as a list of FindGroupNumAgeBean + * + * @return the list of results + * + * @throws SQLException if there was a problem retrieving the results + */ + private static List listFindGroupNumAgeBean(ResultSet resultSet) throws SQLException { + List arrayList = new ArrayList(); + while(resultSet.next()) { + arrayList.add(new FindGroupNumAgeBean( + resultSet.getInt(1), + resultSet.getInt(2))); + } + return(arrayList); + } + +} \ No newline at end of file diff --git a/generate/src/main/java/synapticloop/sample/h2zero/finder/UserPetFinder.java b/generate/src/main/java/synapticloop/sample/h2zero/finder/UserPetFinder.java new file mode 100644 index 00000000..d9b5361b --- /dev/null +++ b/generate/src/main/java/synapticloop/sample/h2zero/finder/UserPetFinder.java @@ -0,0 +1,262 @@ +package synapticloop.sample.h2zero.finder; + +// - - - - thoughtfully generated by synapticloop h2zero - - - - +// with the use of synapticloop templar templating language +// (java-create-finder.templar) + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.ArrayList; + +import synapticloop.h2zero.base.exception.H2ZeroFinderException; +import synapticloop.h2zero.base.manager.ConnectionManager; + +import org.apache.log4j.Level; +import org.apache.log4j.Logger; + +import synapticloop.sample.h2zero.model.util.Constants; + +import synapticloop.sample.h2zero.model.UserPet; +public class UserPetFinder { + // the binder is unused in code, but will generate compile problems if this + // class is no longer referenced in the h2zero file. Just a nicety for + // removing dead code + @SuppressWarnings("unused") + private static final String BINDER = Constants.USER_PET_BINDER; + + private static final Logger LOGGER = Logger.getLogger(UserPetFinder.class); + private static final String SQL_SELECT_START = "select id_user_pet, id_user, id_pet from user_pet"; + private static final String SQL_BUILTIN_FIND_BY_PRIMARY_KEY = SQL_SELECT_START + " where id_user_pet = ?"; + private static final String SQL_BUILTIN_PRIMARY_KEY_EXISTS = "select count(*) from user_pet where id_user_pet = ?"; + + + private static Map findAll_limit_statement_cache = new HashMap(); + private UserPetFinder() {} + + /** + * Find a UserPet by its primary key + * + * @param connection the connection item + * @param idUserPet the primary key + * + * @return the unique result or throw an exception if one couldn't be found + * + * @throws H2ZeroFinderException if one couldn't be found + */ + public static UserPet findByPrimaryKey(Connection connection, Long idUserPet) throws H2ZeroFinderException { + UserPet userPet = null; + PreparedStatement preparedStatement = null; + ResultSet resultSet = null; + + if(null == idUserPet) { + throw new H2ZeroFinderException("Could not find result as the primary key field [idUserPet] was null."); + } + + try { + preparedStatement = connection.prepareStatement(SQL_BUILTIN_FIND_BY_PRIMARY_KEY); + preparedStatement.setLong(1, idUserPet); + resultSet = preparedStatement.executeQuery(); + userPet = uniqueResult(resultSet); + } catch (SQLException sqlex) { + throw new H2ZeroFinderException(sqlex); + } catch (H2ZeroFinderException h2zfex) { + throw new H2ZeroFinderException(h2zfex.getMessage() + " Additionally, the parameters were [idUserPet:" + idUserPet + "]."); + } finally { + ConnectionManager.closeAll(resultSet, preparedStatement); + } + + if(null == userPet) { + throw new H2ZeroFinderException("Could not find result the parameters were [idUserPet:" + idUserPet + "]."); + } + return(userPet); + } + + /** + * Find a UserPet by its primary key + * + * @param idUserPet the primary key + * + * @return the unique result or throw an exception if one coudn't be found. + * + * @throws H2ZeroFinderException if one couldn't be found + */ + public static UserPet findByPrimaryKey(Long idUserPet) throws H2ZeroFinderException { + UserPet userPet = null; + Connection connection = null; + + if(null == idUserPet) { + throw new H2ZeroFinderException("Could not find result as the primary key field [idUserPet] was null."); + } + + try { + connection = ConnectionManager.getConnection(); + userPet = findByPrimaryKey(connection, idUserPet); + } catch (SQLException sqlex) { + throw new H2ZeroFinderException(sqlex); + } catch (H2ZeroFinderException h2zfex) { + throw new H2ZeroFinderException(h2zfex.getMessage() + " Additionally, the parameters were [idUserPet:" + idUserPet + "]."); + } finally { + ConnectionManager.closeAll(connection); + } + + if(null == userPet) { + throw new H2ZeroFinderException("Could not find result the parameters were [idUserPet:" + idUserPet + "]."); + } + return(userPet); + } + + /** + * Find a UserPet by its primary key and silently fail. + * I.e. Do not throw an exception on error. + * + * @param connection the connection item + * @param idUserPet the primary key + * + * @return the unique result or null if it couldn't be found + * + */ + public static UserPet findByPrimaryKeySilent(Connection connection, Long idUserPet) { + try { + return(findByPrimaryKey(connection, idUserPet)); + } catch(H2ZeroFinderException h2zfex){ + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("H2ZeroFinderException findByPrimaryKeySilent(" + idUserPet + "): " + h2zfex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + h2zfex.printStackTrace(); + } + } + return(null); + } + } + + /** + * Find a UserPet by its primary key and silently fail. + * I.e. Do not throw an exception on error. + * + * @param idUserPet the primary key + * + * @return the unique result or null if it couldn't be found + * + */ + public static UserPet findByPrimaryKeySilent(Long idUserPet) { + try { + return(findByPrimaryKey(idUserPet)); + } catch(H2ZeroFinderException h2zfex){ + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("H2ZeroFinderException findByPrimaryKeySilent(" + idUserPet + "): " + h2zfex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + h2zfex.printStackTrace(); + } + } + return(null); + } + } + + /** + * Find all UserPet objects + * + * @return a list of all of the UserPet objects + * + * @throws SQLException if there was an error in the SQL statement + */ + public static List findAll(Integer limit, Integer offset) throws SQLException { + PreparedStatement preparedStatement = null; + ResultSet resultSet = null; + Connection connection = null; + List results = new ArrayList(); + + try { + connection = ConnectionManager.getConnection(); + preparedStatement = connection.prepareStatement(SQL_SELECT_START); + resultSet = preparedStatement.executeQuery(); + results = list(resultSet); + } catch(SQLException sqlex) { + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("SQLException findAll(): " + sqlex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + sqlex.printStackTrace(); + } + } + throw sqlex; + } finally { + ConnectionManager.closeAll(resultSet, preparedStatement, connection); + } + + return(results); + } + + public static List findAll() throws SQLException { + return(findAll(null, null)); + } + public static List findAllSilent() { + try { + return(findAll()); + } catch(SQLException sqlex){ + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("SQLException findAllSilent(): " + sqlex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + sqlex.printStackTrace(); + } + } + return(new ArrayList()); + } + } + + /** + * Return a unique result for the query - in effect just the first result of + * query. + * + * @param resultSet The result set of the query + * + * @return The UserPet that represents this result + * + * @throws H2ZeroFinderException if no results were found + * @throws SQLException if there was a problem retrieving the results + */ + private static UserPet uniqueResult(ResultSet resultSet) throws H2ZeroFinderException, SQLException { + if(resultSet.first()) { + // we have a result + Long idUserPet = resultSet.getLong(1); + Long idUser = resultSet.getLong(2); + Long idPet = resultSet.getLong(3); + + UserPet userPet = new UserPet(idUserPet, idUser, idPet); + + if(resultSet.next()) { + throw new H2ZeroFinderException("More than one result in resultset for unique finder."); + } else { + return(userPet); + } + } else { + // could not get a result + return(null); + } + } + + /** + * Return the results as a list of UserPet, this will be empty if + * none are found. + * + * @param resultSet the results as a list of UserPet + * + * @return the list of results + * + * @throws SQLException if there was a problem retrieving the results + */ + private static List list(ResultSet resultSet) throws SQLException { + List arrayList = new ArrayList(); + while(resultSet.next()) { + arrayList.add(new UserPet( + resultSet.getLong(1), + resultSet.getLong(2), + resultSet.getLong(3))); + } + return(arrayList); + } + +} \ No newline at end of file diff --git a/generate/src/main/java/synapticloop/sample/h2zero/finder/UserTypeFinder.java b/generate/src/main/java/synapticloop/sample/h2zero/finder/UserTypeFinder.java new file mode 100644 index 00000000..9e4e77f3 --- /dev/null +++ b/generate/src/main/java/synapticloop/sample/h2zero/finder/UserTypeFinder.java @@ -0,0 +1,260 @@ +package synapticloop.sample.h2zero.finder; + +// - - - - thoughtfully generated by synapticloop h2zero - - - - +// with the use of synapticloop templar templating language +// (java-create-finder.templar) + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.ArrayList; + +import synapticloop.h2zero.base.exception.H2ZeroFinderException; +import synapticloop.h2zero.base.manager.ConnectionManager; + +import org.apache.log4j.Level; +import org.apache.log4j.Logger; + +import synapticloop.sample.h2zero.model.util.Constants; + +import synapticloop.sample.h2zero.model.UserType; +public class UserTypeFinder { + // the binder is unused in code, but will generate compile problems if this + // class is no longer referenced in the h2zero file. Just a nicety for + // removing dead code + @SuppressWarnings("unused") + private static final String BINDER = Constants.USER_TYPE_BINDER; + + private static final Logger LOGGER = Logger.getLogger(UserTypeFinder.class); + private static final String SQL_SELECT_START = "select id_user_type, nm_user_type from user_type"; + private static final String SQL_BUILTIN_FIND_BY_PRIMARY_KEY = SQL_SELECT_START + " where id_user_type = ?"; + private static final String SQL_BUILTIN_PRIMARY_KEY_EXISTS = "select count(*) from user_type where id_user_type = ?"; + + + private static Map findAll_limit_statement_cache = new HashMap(); + private UserTypeFinder() {} + + /** + * Find a UserType by its primary key + * + * @param connection the connection item + * @param idUserType the primary key + * + * @return the unique result or throw an exception if one couldn't be found + * + * @throws H2ZeroFinderException if one couldn't be found + */ + public static UserType findByPrimaryKey(Connection connection, Long idUserType) throws H2ZeroFinderException { + UserType userType = null; + PreparedStatement preparedStatement = null; + ResultSet resultSet = null; + + if(null == idUserType) { + throw new H2ZeroFinderException("Could not find result as the primary key field [idUserType] was null."); + } + + try { + preparedStatement = connection.prepareStatement(SQL_BUILTIN_FIND_BY_PRIMARY_KEY); + preparedStatement.setLong(1, idUserType); + resultSet = preparedStatement.executeQuery(); + userType = uniqueResult(resultSet); + } catch (SQLException sqlex) { + throw new H2ZeroFinderException(sqlex); + } catch (H2ZeroFinderException h2zfex) { + throw new H2ZeroFinderException(h2zfex.getMessage() + " Additionally, the parameters were [idUserType:" + idUserType + "]."); + } finally { + ConnectionManager.closeAll(resultSet, preparedStatement); + } + + if(null == userType) { + throw new H2ZeroFinderException("Could not find result the parameters were [idUserType:" + idUserType + "]."); + } + return(userType); + } + + /** + * Find a UserType by its primary key + * + * @param idUserType the primary key + * + * @return the unique result or throw an exception if one coudn't be found. + * + * @throws H2ZeroFinderException if one couldn't be found + */ + public static UserType findByPrimaryKey(Long idUserType) throws H2ZeroFinderException { + UserType userType = null; + Connection connection = null; + + if(null == idUserType) { + throw new H2ZeroFinderException("Could not find result as the primary key field [idUserType] was null."); + } + + try { + connection = ConnectionManager.getConnection(); + userType = findByPrimaryKey(connection, idUserType); + } catch (SQLException sqlex) { + throw new H2ZeroFinderException(sqlex); + } catch (H2ZeroFinderException h2zfex) { + throw new H2ZeroFinderException(h2zfex.getMessage() + " Additionally, the parameters were [idUserType:" + idUserType + "]."); + } finally { + ConnectionManager.closeAll(connection); + } + + if(null == userType) { + throw new H2ZeroFinderException("Could not find result the parameters were [idUserType:" + idUserType + "]."); + } + return(userType); + } + + /** + * Find a UserType by its primary key and silently fail. + * I.e. Do not throw an exception on error. + * + * @param connection the connection item + * @param idUserType the primary key + * + * @return the unique result or null if it couldn't be found + * + */ + public static UserType findByPrimaryKeySilent(Connection connection, Long idUserType) { + try { + return(findByPrimaryKey(connection, idUserType)); + } catch(H2ZeroFinderException h2zfex){ + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("H2ZeroFinderException findByPrimaryKeySilent(" + idUserType + "): " + h2zfex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + h2zfex.printStackTrace(); + } + } + return(null); + } + } + + /** + * Find a UserType by its primary key and silently fail. + * I.e. Do not throw an exception on error. + * + * @param idUserType the primary key + * + * @return the unique result or null if it couldn't be found + * + */ + public static UserType findByPrimaryKeySilent(Long idUserType) { + try { + return(findByPrimaryKey(idUserType)); + } catch(H2ZeroFinderException h2zfex){ + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("H2ZeroFinderException findByPrimaryKeySilent(" + idUserType + "): " + h2zfex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + h2zfex.printStackTrace(); + } + } + return(null); + } + } + + /** + * Find all UserType objects + * + * @return a list of all of the UserType objects + * + * @throws SQLException if there was an error in the SQL statement + */ + public static List findAll(Integer limit, Integer offset) throws SQLException { + PreparedStatement preparedStatement = null; + ResultSet resultSet = null; + Connection connection = null; + List results = new ArrayList(); + + try { + connection = ConnectionManager.getConnection(); + preparedStatement = connection.prepareStatement(SQL_SELECT_START); + resultSet = preparedStatement.executeQuery(); + results = list(resultSet); + } catch(SQLException sqlex) { + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("SQLException findAll(): " + sqlex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + sqlex.printStackTrace(); + } + } + throw sqlex; + } finally { + ConnectionManager.closeAll(resultSet, preparedStatement, connection); + } + + return(results); + } + + public static List findAll() throws SQLException { + return(findAll(null, null)); + } + public static List findAllSilent() { + try { + return(findAll()); + } catch(SQLException sqlex){ + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("SQLException findAllSilent(): " + sqlex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + sqlex.printStackTrace(); + } + } + return(new ArrayList()); + } + } + + /** + * Return a unique result for the query - in effect just the first result of + * query. + * + * @param resultSet The result set of the query + * + * @return The UserType that represents this result + * + * @throws H2ZeroFinderException if no results were found + * @throws SQLException if there was a problem retrieving the results + */ + private static UserType uniqueResult(ResultSet resultSet) throws H2ZeroFinderException, SQLException { + if(resultSet.first()) { + // we have a result + Long idUserType = resultSet.getLong(1); + String nmUserType = resultSet.getString(2); + + UserType userType = new UserType(idUserType, nmUserType); + + if(resultSet.next()) { + throw new H2ZeroFinderException("More than one result in resultset for unique finder."); + } else { + return(userType); + } + } else { + // could not get a result + return(null); + } + } + + /** + * Return the results as a list of UserType, this will be empty if + * none are found. + * + * @param resultSet the results as a list of UserType + * + * @return the list of results + * + * @throws SQLException if there was a problem retrieving the results + */ + private static List list(ResultSet resultSet) throws SQLException { + List arrayList = new ArrayList(); + while(resultSet.next()) { + arrayList.add(new UserType( + resultSet.getLong(1), + resultSet.getString(2))); + } + return(arrayList); + } + +} \ No newline at end of file diff --git a/generate/src/main/java/synapticloop/sample/h2zero/inserter/PetInserter.java b/generate/src/main/java/synapticloop/sample/h2zero/inserter/PetInserter.java new file mode 100644 index 00000000..4a137e52 --- /dev/null +++ b/generate/src/main/java/synapticloop/sample/h2zero/inserter/PetInserter.java @@ -0,0 +1,86 @@ +package synapticloop.sample.h2zero.inserter; + +// - - - - thoughtfully generated by synapticloop h2zero - - - - +// with the use of synapticloop templar templating language +// (java-create-inserter.templar) + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.SQLException; +import java.sql.Date; + +import synapticloop.h2zero.base.manager.ConnectionManager; +import synapticloop.sample.h2zero.model.util.Constants; + +public class PetInserter { + // the binder is unused in code, but will generate compile problems if this + // class is no longer referenced in the h2zero file. Just a nicety for + // removing dead code + @SuppressWarnings("unused") + private static final String BINDER = Constants.PET_BINDER; + + // static fields generated by synapticloop h20 + private static final String SQL_BUILTIN_INSERT_ALL = "insert into pet(id_pet, nm_pet, num_age, flt_weight, dt_birthday)"; + private static final String SQL_BUILTIN_INSERT_VALUES = SQL_BUILTIN_INSERT_ALL + " values (?, ?, ?, ?, ?)"; + // static inserter SQL generated from the user input + + private PetInserter() {} + + public static int insert(Connection connection, Long idPet, Boolean nmPet, Integer numAge, Float fltWeight, Date dtBirthday) throws SQLException { + int numResults = -1; + PreparedStatement preparedStatement = null; + try { + preparedStatement = connection.prepareStatement(SQL_BUILTIN_INSERT_VALUES); + ConnectionManager.setBigint(preparedStatement, 1, idPet); + ConnectionManager.setBoolean(preparedStatement, 2, nmPet); + ConnectionManager.setInt(preparedStatement, 3, numAge); + ConnectionManager.setFloat(preparedStatement, 4, fltWeight); + ConnectionManager.setDate(preparedStatement, 5, dtBirthday); + numResults = preparedStatement.executeUpdate(); + } catch (SQLException sqlex) { + throw sqlex; + } finally { + ConnectionManager.closeAll(preparedStatement); + } + return(numResults); + } + + public static int insert(Long idPet, Boolean nmPet, Integer numAge, Float fltWeight, Date dtBirthday) throws SQLException { + int numResults = -1; + Connection connection = null; + try { + connection = ConnectionManager.getConnection(); + numResults = insert(connection, idPet, nmPet, numAge, fltWeight, dtBirthday); + } catch (SQLException sqlex) { + throw sqlex; + } finally { + ConnectionManager.closeAll(connection); + } + return(numResults); + } + + public static int insertSilent(Connection connection, Long idPet, Boolean nmPet, Integer numAge, Float fltWeight, Date dtBirthday) { + int numResults = -1; + try { + numResults = insert(connection, idPet, nmPet, numAge, fltWeight, dtBirthday); + } catch (SQLException sqlex) { + sqlex.printStackTrace(); + } + return(numResults); + } + + public static int insertSilent(Long idPet, Boolean nmPet, Integer numAge, Float fltWeight, Date dtBirthday) { + int numResults = -1; + Connection connection = null; + try { + connection = ConnectionManager.getConnection(); + numResults = insert(connection, idPet, nmPet, numAge, fltWeight, dtBirthday); + } catch (SQLException sqlex) { + sqlex.printStackTrace(); + } finally { + ConnectionManager.closeAll(connection); + } + return(numResults); + } + +} \ No newline at end of file diff --git a/generate/src/main/java/synapticloop/sample/h2zero/inserter/UserInserter.java b/generate/src/main/java/synapticloop/sample/h2zero/inserter/UserInserter.java new file mode 100644 index 00000000..537e3e05 --- /dev/null +++ b/generate/src/main/java/synapticloop/sample/h2zero/inserter/UserInserter.java @@ -0,0 +1,89 @@ +package synapticloop.sample.h2zero.inserter; + +// - - - - thoughtfully generated by synapticloop h2zero - - - - +// with the use of synapticloop templar templating language +// (java-create-inserter.templar) + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.SQLException; +import java.sql.Timestamp; + +import synapticloop.h2zero.base.manager.ConnectionManager; +import synapticloop.sample.h2zero.model.util.Constants; + +public class UserInserter { + // the binder is unused in code, but will generate compile problems if this + // class is no longer referenced in the h2zero file. Just a nicety for + // removing dead code + @SuppressWarnings("unused") + private static final String BINDER = Constants.USER_BINDER; + + // static fields generated by synapticloop h20 + private static final String SQL_BUILTIN_INSERT_ALL = "insert into user(id_user, id_user_type, fl_is_alive, num_age, nm_username, txt_address_email, txt_password, dtm_signup)"; + private static final String SQL_BUILTIN_INSERT_VALUES = SQL_BUILTIN_INSERT_ALL + " values (?, ?, ?, ?, ?, ?, ?, ?)"; + // static inserter SQL generated from the user input + + private UserInserter() {} + + public static int insert(Connection connection, Long idUser, Long idUserType, Boolean flIsAlive, Integer numAge, String nmUsername, String txtAddressEmail, String txtPassword, Timestamp dtmSignup) throws SQLException { + int numResults = -1; + PreparedStatement preparedStatement = null; + try { + preparedStatement = connection.prepareStatement(SQL_BUILTIN_INSERT_VALUES); + ConnectionManager.setBigint(preparedStatement, 1, idUser); + ConnectionManager.setBigint(preparedStatement, 2, idUserType); + ConnectionManager.setBoolean(preparedStatement, 3, flIsAlive); + ConnectionManager.setInt(preparedStatement, 4, numAge); + ConnectionManager.setVarchar(preparedStatement, 5, nmUsername); + ConnectionManager.setVarchar(preparedStatement, 6, txtAddressEmail); + ConnectionManager.setVarchar(preparedStatement, 7, txtPassword); + ConnectionManager.setDatetime(preparedStatement, 8, dtmSignup); + numResults = preparedStatement.executeUpdate(); + } catch (SQLException sqlex) { + throw sqlex; + } finally { + ConnectionManager.closeAll(preparedStatement); + } + return(numResults); + } + + public static int insert(Long idUser, Long idUserType, Boolean flIsAlive, Integer numAge, String nmUsername, String txtAddressEmail, String txtPassword, Timestamp dtmSignup) throws SQLException { + int numResults = -1; + Connection connection = null; + try { + connection = ConnectionManager.getConnection(); + numResults = insert(connection, idUser, idUserType, flIsAlive, numAge, nmUsername, txtAddressEmail, txtPassword, dtmSignup); + } catch (SQLException sqlex) { + throw sqlex; + } finally { + ConnectionManager.closeAll(connection); + } + return(numResults); + } + + public static int insertSilent(Connection connection, Long idUser, Long idUserType, Boolean flIsAlive, Integer numAge, String nmUsername, String txtAddressEmail, String txtPassword, Timestamp dtmSignup) { + int numResults = -1; + try { + numResults = insert(connection, idUser, idUserType, flIsAlive, numAge, nmUsername, txtAddressEmail, txtPassword, dtmSignup); + } catch (SQLException sqlex) { + sqlex.printStackTrace(); + } + return(numResults); + } + + public static int insertSilent(Long idUser, Long idUserType, Boolean flIsAlive, Integer numAge, String nmUsername, String txtAddressEmail, String txtPassword, Timestamp dtmSignup) { + int numResults = -1; + Connection connection = null; + try { + connection = ConnectionManager.getConnection(); + numResults = insert(connection, idUser, idUserType, flIsAlive, numAge, nmUsername, txtAddressEmail, txtPassword, dtmSignup); + } catch (SQLException sqlex) { + sqlex.printStackTrace(); + } finally { + ConnectionManager.closeAll(connection); + } + return(numResults); + } + +} \ No newline at end of file diff --git a/generate/src/main/java/synapticloop/sample/h2zero/inserter/UserPetInserter.java b/generate/src/main/java/synapticloop/sample/h2zero/inserter/UserPetInserter.java new file mode 100644 index 00000000..1768b3e7 --- /dev/null +++ b/generate/src/main/java/synapticloop/sample/h2zero/inserter/UserPetInserter.java @@ -0,0 +1,83 @@ +package synapticloop.sample.h2zero.inserter; + +// - - - - thoughtfully generated by synapticloop h2zero - - - - +// with the use of synapticloop templar templating language +// (java-create-inserter.templar) + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.SQLException; + +import synapticloop.h2zero.base.manager.ConnectionManager; +import synapticloop.sample.h2zero.model.util.Constants; + +public class UserPetInserter { + // the binder is unused in code, but will generate compile problems if this + // class is no longer referenced in the h2zero file. Just a nicety for + // removing dead code + @SuppressWarnings("unused") + private static final String BINDER = Constants.USER_PET_BINDER; + + // static fields generated by synapticloop h20 + private static final String SQL_BUILTIN_INSERT_ALL = "insert into user_pet(id_user_pet, id_user, id_pet)"; + private static final String SQL_BUILTIN_INSERT_VALUES = SQL_BUILTIN_INSERT_ALL + " values (?, ?, ?)"; + // static inserter SQL generated from the user input + + private UserPetInserter() {} + + public static int insert(Connection connection, Long idUserPet, Long idUser, Long idPet) throws SQLException { + int numResults = -1; + PreparedStatement preparedStatement = null; + try { + preparedStatement = connection.prepareStatement(SQL_BUILTIN_INSERT_VALUES); + ConnectionManager.setBigint(preparedStatement, 1, idUserPet); + ConnectionManager.setBigint(preparedStatement, 2, idUser); + ConnectionManager.setBigint(preparedStatement, 3, idPet); + numResults = preparedStatement.executeUpdate(); + } catch (SQLException sqlex) { + throw sqlex; + } finally { + ConnectionManager.closeAll(preparedStatement); + } + return(numResults); + } + + public static int insert(Long idUserPet, Long idUser, Long idPet) throws SQLException { + int numResults = -1; + Connection connection = null; + try { + connection = ConnectionManager.getConnection(); + numResults = insert(connection, idUserPet, idUser, idPet); + } catch (SQLException sqlex) { + throw sqlex; + } finally { + ConnectionManager.closeAll(connection); + } + return(numResults); + } + + public static int insertSilent(Connection connection, Long idUserPet, Long idUser, Long idPet) { + int numResults = -1; + try { + numResults = insert(connection, idUserPet, idUser, idPet); + } catch (SQLException sqlex) { + sqlex.printStackTrace(); + } + return(numResults); + } + + public static int insertSilent(Long idUserPet, Long idUser, Long idPet) { + int numResults = -1; + Connection connection = null; + try { + connection = ConnectionManager.getConnection(); + numResults = insert(connection, idUserPet, idUser, idPet); + } catch (SQLException sqlex) { + sqlex.printStackTrace(); + } finally { + ConnectionManager.closeAll(connection); + } + return(numResults); + } + +} \ No newline at end of file diff --git a/generate/src/main/java/synapticloop/sample/h2zero/metrics/PetMetrics.java b/generate/src/main/java/synapticloop/sample/h2zero/metrics/PetMetrics.java new file mode 100644 index 00000000..3621181a --- /dev/null +++ b/generate/src/main/java/synapticloop/sample/h2zero/metrics/PetMetrics.java @@ -0,0 +1,94 @@ +package synapticloop.sample.h2zero.metrics; + +// - - - - thoughtfully generated by synapticloop h2zero - - - - +// with the use of synapticloop templar templating language +// (java-create-metrics-table.templar) + + +import com.codahale.metrics.MetricRegistry; + +import synapticloop.h2zero.base.manager.MetricsManager; +import com.codahale.metrics.Counter; +import com.codahale.metrics.RatioGauge; + + +import synapticloop.sample.h2zero.model.Pet; +public class PetMetrics { + // These are the metrics holders - there are a lot of them - better to have and not need, than need and not have! + // SetterHit counts the number setters that are invoked which successfully changes the value + // SetterMiss counts the number of setters that did not change the value + + // SetterHitRatio provides the ratio of hits to total setters + // SetterMissRatio provides the ratio of misses to total setters + + + // GetterHit counts the number of getters that returns an already filled in value + // GetterMiss counts the number of getters that needed to be loaded from a non-populated value + + // GetterHitRatio provides the ratio of hits to total getters + // GetterMissRatio provides the ratio of misses to total getters + + + // GetterHit counts the number of getters that returns an already filled in object + // GetterMiss counts the number of getters that needed to be loaded from a non-populated object + + // GetterHitRatio provides the ratio of hits to total getters + // GetterMissRatio provides the ratio of misses to total getters + + public static final Counter petIdPetGetterHit = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(Pet.class, "idPet", "getter", "hit")); + public static final Counter petIdPetGetterMiss = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(Pet.class, "idPet", "getter", "miss")); + public static final RatioGauge petIdPetGetterHitRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(Pet.class, "idPet", "getter", "hit", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(petIdPetGetterHit.getCount(), petIdPetGetterHit.getCount() + petIdPetGetterMiss.getCount()));}}); + public static final RatioGauge petIdPetGetterMissRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(Pet.class, "idPet", "getter", "miss", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(petIdPetGetterMiss.getCount(), petIdPetGetterHit.getCount() + petIdPetGetterMiss.getCount()));}}); + public static final Counter petIdPetSetterHit = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(Pet.class, "idPet", "setter", "hit")); + public static final Counter petIdPetSetterMiss = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(Pet.class, "idPet", "setter", "miss")); + public static final RatioGauge petIdPetSetterHitRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(Pet.class, "idPet", "Setter", "hit", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(petIdPetSetterHit.getCount(), petIdPetSetterHit.getCount() + petIdPetSetterMiss.getCount()));}}); + public static final RatioGauge petIdPetSetterMissRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(Pet.class, "idPet", "Setter", "miss", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(petIdPetSetterMiss.getCount(), petIdPetSetterHit.getCount() + petIdPetSetterMiss.getCount()));}}); + public static final Counter petNmPetGetterHit = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(Pet.class, "nmPet", "getter", "hit")); + public static final Counter petNmPetGetterMiss = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(Pet.class, "nmPet", "getter", "miss")); + public static final RatioGauge petNmPetGetterHitRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(Pet.class, "nmPet", "getter", "hit", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(petNmPetGetterHit.getCount(), petNmPetGetterHit.getCount() + petNmPetGetterMiss.getCount()));}}); + public static final RatioGauge petNmPetGetterMissRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(Pet.class, "nmPet", "getter", "miss", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(petNmPetGetterMiss.getCount(), petNmPetGetterHit.getCount() + petNmPetGetterMiss.getCount()));}}); + public static final Counter petNmPetSetterHit = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(Pet.class, "nmPet", "setter", "hit")); + public static final Counter petNmPetSetterMiss = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(Pet.class, "nmPet", "setter", "miss")); + public static final RatioGauge petNmPetSetterHitRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(Pet.class, "nmPet", "Setter", "hit", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(petNmPetSetterHit.getCount(), petNmPetSetterHit.getCount() + petNmPetSetterMiss.getCount()));}}); + public static final RatioGauge petNmPetSetterMissRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(Pet.class, "nmPet", "Setter", "miss", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(petNmPetSetterMiss.getCount(), petNmPetSetterHit.getCount() + petNmPetSetterMiss.getCount()));}}); + public static final Counter petNumAgeGetterHit = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(Pet.class, "numAge", "getter", "hit")); + public static final Counter petNumAgeGetterMiss = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(Pet.class, "numAge", "getter", "miss")); + public static final RatioGauge petNumAgeGetterHitRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(Pet.class, "numAge", "getter", "hit", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(petNumAgeGetterHit.getCount(), petNumAgeGetterHit.getCount() + petNumAgeGetterMiss.getCount()));}}); + public static final RatioGauge petNumAgeGetterMissRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(Pet.class, "numAge", "getter", "miss", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(petNumAgeGetterMiss.getCount(), petNumAgeGetterHit.getCount() + petNumAgeGetterMiss.getCount()));}}); + public static final Counter petNumAgeSetterHit = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(Pet.class, "numAge", "setter", "hit")); + public static final Counter petNumAgeSetterMiss = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(Pet.class, "numAge", "setter", "miss")); + public static final RatioGauge petNumAgeSetterHitRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(Pet.class, "numAge", "Setter", "hit", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(petNumAgeSetterHit.getCount(), petNumAgeSetterHit.getCount() + petNumAgeSetterMiss.getCount()));}}); + public static final RatioGauge petNumAgeSetterMissRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(Pet.class, "numAge", "Setter", "miss", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(petNumAgeSetterMiss.getCount(), petNumAgeSetterHit.getCount() + petNumAgeSetterMiss.getCount()));}}); + public static final Counter petFltWeightGetterHit = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(Pet.class, "fltWeight", "getter", "hit")); + public static final Counter petFltWeightGetterMiss = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(Pet.class, "fltWeight", "getter", "miss")); + public static final RatioGauge petFltWeightGetterHitRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(Pet.class, "fltWeight", "getter", "hit", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(petFltWeightGetterHit.getCount(), petFltWeightGetterHit.getCount() + petFltWeightGetterMiss.getCount()));}}); + public static final RatioGauge petFltWeightGetterMissRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(Pet.class, "fltWeight", "getter", "miss", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(petFltWeightGetterMiss.getCount(), petFltWeightGetterHit.getCount() + petFltWeightGetterMiss.getCount()));}}); + public static final Counter petFltWeightSetterHit = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(Pet.class, "fltWeight", "setter", "hit")); + public static final Counter petFltWeightSetterMiss = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(Pet.class, "fltWeight", "setter", "miss")); + public static final RatioGauge petFltWeightSetterHitRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(Pet.class, "fltWeight", "Setter", "hit", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(petFltWeightSetterHit.getCount(), petFltWeightSetterHit.getCount() + petFltWeightSetterMiss.getCount()));}}); + public static final RatioGauge petFltWeightSetterMissRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(Pet.class, "fltWeight", "Setter", "miss", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(petFltWeightSetterMiss.getCount(), petFltWeightSetterHit.getCount() + petFltWeightSetterMiss.getCount()));}}); + public static final Counter petDtBirthdayGetterHit = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(Pet.class, "dtBirthday", "getter", "hit")); + public static final Counter petDtBirthdayGetterMiss = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(Pet.class, "dtBirthday", "getter", "miss")); + public static final RatioGauge petDtBirthdayGetterHitRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(Pet.class, "dtBirthday", "getter", "hit", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(petDtBirthdayGetterHit.getCount(), petDtBirthdayGetterHit.getCount() + petDtBirthdayGetterMiss.getCount()));}}); + public static final RatioGauge petDtBirthdayGetterMissRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(Pet.class, "dtBirthday", "getter", "miss", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(petDtBirthdayGetterMiss.getCount(), petDtBirthdayGetterHit.getCount() + petDtBirthdayGetterMiss.getCount()));}}); + public static final Counter petDtBirthdaySetterHit = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(Pet.class, "dtBirthday", "setter", "hit")); + public static final Counter petDtBirthdaySetterMiss = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(Pet.class, "dtBirthday", "setter", "miss")); + public static final RatioGauge petDtBirthdaySetterHitRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(Pet.class, "dtBirthday", "Setter", "hit", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(petDtBirthdaySetterHit.getCount(), petDtBirthdaySetterHit.getCount() + petDtBirthdaySetterMiss.getCount()));}}); + public static final RatioGauge petDtBirthdaySetterMissRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(Pet.class, "dtBirthday", "Setter", "miss", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(petDtBirthdaySetterMiss.getCount(), petDtBirthdaySetterHit.getCount() + petDtBirthdaySetterMiss.getCount()));}}); + + // now for the table statistics + public static final Counter petAccess = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(Pet.class, "access")); + public static final Counter petFinderAccess = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(Pet.class, "finder", "access")); + public static final Counter petCounterAccess = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(Pet.class, "counter", "access")); + public static final Counter petQuestionAccess = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(Pet.class, "question", "access")); + public static final Counter petDeleterAccess = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(Pet.class, "deleter", "access")); + public static final Counter petInserterAccess = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(Pet.class, "inserter", "access")); + public static final Counter petUpdaterAccess = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(Pet.class, "updater", "access")); + public static final Counter petInsert = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(Pet.class, "insert")); + public static final Counter petInsertOrUpdate = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(Pet.class, "insertOrUpdate")); + public static final Counter petDelete = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(Pet.class, "delete")); + public static final Counter petEnsure = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(Pet.class, "ensure")); + public static final Counter petRefresh = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(Pet.class, "refresh")); + public static final Counter petUpdate = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(Pet.class, "update")); + +} \ No newline at end of file diff --git a/generate/src/main/java/synapticloop/sample/h2zero/metrics/UserMetrics.java b/generate/src/main/java/synapticloop/sample/h2zero/metrics/UserMetrics.java new file mode 100644 index 00000000..c654281c --- /dev/null +++ b/generate/src/main/java/synapticloop/sample/h2zero/metrics/UserMetrics.java @@ -0,0 +1,122 @@ +package synapticloop.sample.h2zero.metrics; + +// - - - - thoughtfully generated by synapticloop h2zero - - - - +// with the use of synapticloop templar templating language +// (java-create-metrics-table.templar) + + +import com.codahale.metrics.MetricRegistry; + +import synapticloop.h2zero.base.manager.MetricsManager; +import com.codahale.metrics.Counter; +import com.codahale.metrics.RatioGauge; + + +import synapticloop.sample.h2zero.model.User; +public class UserMetrics { + // These are the metrics holders - there are a lot of them - better to have and not need, than need and not have! + // SetterHit counts the number setters that are invoked which successfully changes the value + // SetterMiss counts the number of setters that did not change the value + + // SetterHitRatio provides the ratio of hits to total setters + // SetterMissRatio provides the ratio of misses to total setters + + + // GetterHit counts the number of getters that returns an already filled in value + // GetterMiss counts the number of getters that needed to be loaded from a non-populated value + + // GetterHitRatio provides the ratio of hits to total getters + // GetterMissRatio provides the ratio of misses to total getters + + + // GetterHit counts the number of getters that returns an already filled in object + // GetterMiss counts the number of getters that needed to be loaded from a non-populated object + + // GetterHitRatio provides the ratio of hits to total getters + // GetterMissRatio provides the ratio of misses to total getters + + public static final Counter userIdUserGetterHit = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(User.class, "idUser", "getter", "hit")); + public static final Counter userIdUserGetterMiss = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(User.class, "idUser", "getter", "miss")); + public static final RatioGauge userIdUserGetterHitRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(User.class, "idUser", "getter", "hit", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(userIdUserGetterHit.getCount(), userIdUserGetterHit.getCount() + userIdUserGetterMiss.getCount()));}}); + public static final RatioGauge userIdUserGetterMissRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(User.class, "idUser", "getter", "miss", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(userIdUserGetterMiss.getCount(), userIdUserGetterHit.getCount() + userIdUserGetterMiss.getCount()));}}); + public static final Counter userIdUserSetterHit = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(User.class, "idUser", "setter", "hit")); + public static final Counter userIdUserSetterMiss = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(User.class, "idUser", "setter", "miss")); + public static final RatioGauge userIdUserSetterHitRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(User.class, "idUser", "Setter", "hit", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(userIdUserSetterHit.getCount(), userIdUserSetterHit.getCount() + userIdUserSetterMiss.getCount()));}}); + public static final RatioGauge userIdUserSetterMissRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(User.class, "idUser", "Setter", "miss", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(userIdUserSetterMiss.getCount(), userIdUserSetterHit.getCount() + userIdUserSetterMiss.getCount()));}}); + public static final Counter userUserTypeGetterHit = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(User.class, "userType", "getter", "hit")); + public static final Counter userUserTypeGetterMiss = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(User.class, "userType", "getter", "miss")); + public static final RatioGauge userUserTypeGetterHitRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(User.class, "userType", "getter", "hit", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(userUserTypeGetterHit.getCount(), userUserTypeGetterHit.getCount() + userUserTypeGetterMiss.getCount()));}}); + public static final RatioGauge userUserTypeGetterMissRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(User.class, "userType", "getter", "miss", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(userUserTypeGetterMiss.getCount(), userUserTypeGetterHit.getCount() + userUserTypeGetterMiss.getCount()));}}); + public static final Counter userIdUserTypeGetterHit = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(User.class, "idUserType", "getter", "hit")); + public static final Counter userIdUserTypeGetterMiss = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(User.class, "idUserType", "getter", "miss")); + public static final RatioGauge userIdUserTypeGetterHitRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(User.class, "idUserType", "getter", "hit", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(userIdUserTypeGetterHit.getCount(), userIdUserTypeGetterHit.getCount() + userIdUserTypeGetterMiss.getCount()));}}); + public static final RatioGauge userIdUserTypeGetterMissRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(User.class, "idUserType", "getter", "miss", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(userIdUserTypeGetterMiss.getCount(), userIdUserTypeGetterHit.getCount() + userIdUserTypeGetterMiss.getCount()));}}); + public static final Counter userIdUserTypeSetterHit = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(User.class, "idUserType", "setter", "hit")); + public static final Counter userIdUserTypeSetterMiss = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(User.class, "idUserType", "setter", "miss")); + public static final RatioGauge userIdUserTypeSetterHitRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(User.class, "idUserType", "Setter", "hit", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(userIdUserTypeSetterHit.getCount(), userIdUserTypeSetterHit.getCount() + userIdUserTypeSetterMiss.getCount()));}}); + public static final RatioGauge userIdUserTypeSetterMissRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(User.class, "idUserType", "Setter", "miss", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(userIdUserTypeSetterMiss.getCount(), userIdUserTypeSetterHit.getCount() + userIdUserTypeSetterMiss.getCount()));}}); + public static final Counter userFlIsAliveGetterHit = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(User.class, "flIsAlive", "getter", "hit")); + public static final Counter userFlIsAliveGetterMiss = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(User.class, "flIsAlive", "getter", "miss")); + public static final RatioGauge userFlIsAliveGetterHitRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(User.class, "flIsAlive", "getter", "hit", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(userFlIsAliveGetterHit.getCount(), userFlIsAliveGetterHit.getCount() + userFlIsAliveGetterMiss.getCount()));}}); + public static final RatioGauge userFlIsAliveGetterMissRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(User.class, "flIsAlive", "getter", "miss", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(userFlIsAliveGetterMiss.getCount(), userFlIsAliveGetterHit.getCount() + userFlIsAliveGetterMiss.getCount()));}}); + public static final Counter userFlIsAliveSetterHit = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(User.class, "flIsAlive", "setter", "hit")); + public static final Counter userFlIsAliveSetterMiss = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(User.class, "flIsAlive", "setter", "miss")); + public static final RatioGauge userFlIsAliveSetterHitRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(User.class, "flIsAlive", "Setter", "hit", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(userFlIsAliveSetterHit.getCount(), userFlIsAliveSetterHit.getCount() + userFlIsAliveSetterMiss.getCount()));}}); + public static final RatioGauge userFlIsAliveSetterMissRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(User.class, "flIsAlive", "Setter", "miss", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(userFlIsAliveSetterMiss.getCount(), userFlIsAliveSetterHit.getCount() + userFlIsAliveSetterMiss.getCount()));}}); + public static final Counter userNumAgeGetterHit = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(User.class, "numAge", "getter", "hit")); + public static final Counter userNumAgeGetterMiss = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(User.class, "numAge", "getter", "miss")); + public static final RatioGauge userNumAgeGetterHitRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(User.class, "numAge", "getter", "hit", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(userNumAgeGetterHit.getCount(), userNumAgeGetterHit.getCount() + userNumAgeGetterMiss.getCount()));}}); + public static final RatioGauge userNumAgeGetterMissRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(User.class, "numAge", "getter", "miss", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(userNumAgeGetterMiss.getCount(), userNumAgeGetterHit.getCount() + userNumAgeGetterMiss.getCount()));}}); + public static final Counter userNumAgeSetterHit = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(User.class, "numAge", "setter", "hit")); + public static final Counter userNumAgeSetterMiss = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(User.class, "numAge", "setter", "miss")); + public static final RatioGauge userNumAgeSetterHitRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(User.class, "numAge", "Setter", "hit", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(userNumAgeSetterHit.getCount(), userNumAgeSetterHit.getCount() + userNumAgeSetterMiss.getCount()));}}); + public static final RatioGauge userNumAgeSetterMissRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(User.class, "numAge", "Setter", "miss", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(userNumAgeSetterMiss.getCount(), userNumAgeSetterHit.getCount() + userNumAgeSetterMiss.getCount()));}}); + public static final Counter userNmUsernameGetterHit = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(User.class, "nmUsername", "getter", "hit")); + public static final Counter userNmUsernameGetterMiss = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(User.class, "nmUsername", "getter", "miss")); + public static final RatioGauge userNmUsernameGetterHitRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(User.class, "nmUsername", "getter", "hit", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(userNmUsernameGetterHit.getCount(), userNmUsernameGetterHit.getCount() + userNmUsernameGetterMiss.getCount()));}}); + public static final RatioGauge userNmUsernameGetterMissRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(User.class, "nmUsername", "getter", "miss", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(userNmUsernameGetterMiss.getCount(), userNmUsernameGetterHit.getCount() + userNmUsernameGetterMiss.getCount()));}}); + public static final Counter userNmUsernameSetterHit = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(User.class, "nmUsername", "setter", "hit")); + public static final Counter userNmUsernameSetterMiss = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(User.class, "nmUsername", "setter", "miss")); + public static final RatioGauge userNmUsernameSetterHitRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(User.class, "nmUsername", "Setter", "hit", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(userNmUsernameSetterHit.getCount(), userNmUsernameSetterHit.getCount() + userNmUsernameSetterMiss.getCount()));}}); + public static final RatioGauge userNmUsernameSetterMissRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(User.class, "nmUsername", "Setter", "miss", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(userNmUsernameSetterMiss.getCount(), userNmUsernameSetterHit.getCount() + userNmUsernameSetterMiss.getCount()));}}); + public static final Counter userTxtAddressEmailGetterHit = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(User.class, "txtAddressEmail", "getter", "hit")); + public static final Counter userTxtAddressEmailGetterMiss = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(User.class, "txtAddressEmail", "getter", "miss")); + public static final RatioGauge userTxtAddressEmailGetterHitRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(User.class, "txtAddressEmail", "getter", "hit", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(userTxtAddressEmailGetterHit.getCount(), userTxtAddressEmailGetterHit.getCount() + userTxtAddressEmailGetterMiss.getCount()));}}); + public static final RatioGauge userTxtAddressEmailGetterMissRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(User.class, "txtAddressEmail", "getter", "miss", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(userTxtAddressEmailGetterMiss.getCount(), userTxtAddressEmailGetterHit.getCount() + userTxtAddressEmailGetterMiss.getCount()));}}); + public static final Counter userTxtAddressEmailSetterHit = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(User.class, "txtAddressEmail", "setter", "hit")); + public static final Counter userTxtAddressEmailSetterMiss = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(User.class, "txtAddressEmail", "setter", "miss")); + public static final RatioGauge userTxtAddressEmailSetterHitRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(User.class, "txtAddressEmail", "Setter", "hit", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(userTxtAddressEmailSetterHit.getCount(), userTxtAddressEmailSetterHit.getCount() + userTxtAddressEmailSetterMiss.getCount()));}}); + public static final RatioGauge userTxtAddressEmailSetterMissRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(User.class, "txtAddressEmail", "Setter", "miss", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(userTxtAddressEmailSetterMiss.getCount(), userTxtAddressEmailSetterHit.getCount() + userTxtAddressEmailSetterMiss.getCount()));}}); + public static final Counter userTxtPasswordGetterHit = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(User.class, "txtPassword", "getter", "hit")); + public static final Counter userTxtPasswordGetterMiss = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(User.class, "txtPassword", "getter", "miss")); + public static final RatioGauge userTxtPasswordGetterHitRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(User.class, "txtPassword", "getter", "hit", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(userTxtPasswordGetterHit.getCount(), userTxtPasswordGetterHit.getCount() + userTxtPasswordGetterMiss.getCount()));}}); + public static final RatioGauge userTxtPasswordGetterMissRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(User.class, "txtPassword", "getter", "miss", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(userTxtPasswordGetterMiss.getCount(), userTxtPasswordGetterHit.getCount() + userTxtPasswordGetterMiss.getCount()));}}); + public static final Counter userTxtPasswordSetterHit = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(User.class, "txtPassword", "setter", "hit")); + public static final Counter userTxtPasswordSetterMiss = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(User.class, "txtPassword", "setter", "miss")); + public static final RatioGauge userTxtPasswordSetterHitRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(User.class, "txtPassword", "Setter", "hit", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(userTxtPasswordSetterHit.getCount(), userTxtPasswordSetterHit.getCount() + userTxtPasswordSetterMiss.getCount()));}}); + public static final RatioGauge userTxtPasswordSetterMissRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(User.class, "txtPassword", "Setter", "miss", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(userTxtPasswordSetterMiss.getCount(), userTxtPasswordSetterHit.getCount() + userTxtPasswordSetterMiss.getCount()));}}); + public static final Counter userDtmSignupGetterHit = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(User.class, "dtmSignup", "getter", "hit")); + public static final Counter userDtmSignupGetterMiss = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(User.class, "dtmSignup", "getter", "miss")); + public static final RatioGauge userDtmSignupGetterHitRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(User.class, "dtmSignup", "getter", "hit", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(userDtmSignupGetterHit.getCount(), userDtmSignupGetterHit.getCount() + userDtmSignupGetterMiss.getCount()));}}); + public static final RatioGauge userDtmSignupGetterMissRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(User.class, "dtmSignup", "getter", "miss", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(userDtmSignupGetterMiss.getCount(), userDtmSignupGetterHit.getCount() + userDtmSignupGetterMiss.getCount()));}}); + public static final Counter userDtmSignupSetterHit = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(User.class, "dtmSignup", "setter", "hit")); + public static final Counter userDtmSignupSetterMiss = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(User.class, "dtmSignup", "setter", "miss")); + public static final RatioGauge userDtmSignupSetterHitRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(User.class, "dtmSignup", "Setter", "hit", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(userDtmSignupSetterHit.getCount(), userDtmSignupSetterHit.getCount() + userDtmSignupSetterMiss.getCount()));}}); + public static final RatioGauge userDtmSignupSetterMissRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(User.class, "dtmSignup", "Setter", "miss", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(userDtmSignupSetterMiss.getCount(), userDtmSignupSetterHit.getCount() + userDtmSignupSetterMiss.getCount()));}}); + + // now for the table statistics + public static final Counter userAccess = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(User.class, "access")); + public static final Counter userFinderAccess = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(User.class, "finder", "access")); + public static final Counter userCounterAccess = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(User.class, "counter", "access")); + public static final Counter userQuestionAccess = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(User.class, "question", "access")); + public static final Counter userDeleterAccess = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(User.class, "deleter", "access")); + public static final Counter userInserterAccess = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(User.class, "inserter", "access")); + public static final Counter userUpdaterAccess = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(User.class, "updater", "access")); + public static final Counter userInsert = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(User.class, "insert")); + public static final Counter userInsertOrUpdate = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(User.class, "insertOrUpdate")); + public static final Counter userDelete = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(User.class, "delete")); + public static final Counter userEnsure = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(User.class, "ensure")); + public static final Counter userRefresh = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(User.class, "refresh")); + public static final Counter userUpdate = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(User.class, "update")); + +} \ No newline at end of file diff --git a/generate/src/main/java/synapticloop/sample/h2zero/metrics/UserPetMetrics.java b/generate/src/main/java/synapticloop/sample/h2zero/metrics/UserPetMetrics.java new file mode 100644 index 00000000..e227b436 --- /dev/null +++ b/generate/src/main/java/synapticloop/sample/h2zero/metrics/UserPetMetrics.java @@ -0,0 +1,86 @@ +package synapticloop.sample.h2zero.metrics; + +// - - - - thoughtfully generated by synapticloop h2zero - - - - +// with the use of synapticloop templar templating language +// (java-create-metrics-table.templar) + + +import com.codahale.metrics.MetricRegistry; + +import synapticloop.h2zero.base.manager.MetricsManager; +import com.codahale.metrics.Counter; +import com.codahale.metrics.RatioGauge; + + +import synapticloop.sample.h2zero.model.UserPet; +public class UserPetMetrics { + // These are the metrics holders - there are a lot of them - better to have and not need, than need and not have! + // SetterHit counts the number setters that are invoked which successfully changes the value + // SetterMiss counts the number of setters that did not change the value + + // SetterHitRatio provides the ratio of hits to total setters + // SetterMissRatio provides the ratio of misses to total setters + + + // GetterHit counts the number of getters that returns an already filled in value + // GetterMiss counts the number of getters that needed to be loaded from a non-populated value + + // GetterHitRatio provides the ratio of hits to total getters + // GetterMissRatio provides the ratio of misses to total getters + + + // GetterHit counts the number of getters that returns an already filled in object + // GetterMiss counts the number of getters that needed to be loaded from a non-populated object + + // GetterHitRatio provides the ratio of hits to total getters + // GetterMissRatio provides the ratio of misses to total getters + + public static final Counter userPetIdUserPetGetterHit = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(UserPet.class, "idUserPet", "getter", "hit")); + public static final Counter userPetIdUserPetGetterMiss = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(UserPet.class, "idUserPet", "getter", "miss")); + public static final RatioGauge userPetIdUserPetGetterHitRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(UserPet.class, "idUserPet", "getter", "hit", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(userPetIdUserPetGetterHit.getCount(), userPetIdUserPetGetterHit.getCount() + userPetIdUserPetGetterMiss.getCount()));}}); + public static final RatioGauge userPetIdUserPetGetterMissRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(UserPet.class, "idUserPet", "getter", "miss", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(userPetIdUserPetGetterMiss.getCount(), userPetIdUserPetGetterHit.getCount() + userPetIdUserPetGetterMiss.getCount()));}}); + public static final Counter userPetIdUserPetSetterHit = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(UserPet.class, "idUserPet", "setter", "hit")); + public static final Counter userPetIdUserPetSetterMiss = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(UserPet.class, "idUserPet", "setter", "miss")); + public static final RatioGauge userPetIdUserPetSetterHitRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(UserPet.class, "idUserPet", "Setter", "hit", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(userPetIdUserPetSetterHit.getCount(), userPetIdUserPetSetterHit.getCount() + userPetIdUserPetSetterMiss.getCount()));}}); + public static final RatioGauge userPetIdUserPetSetterMissRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(UserPet.class, "idUserPet", "Setter", "miss", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(userPetIdUserPetSetterMiss.getCount(), userPetIdUserPetSetterHit.getCount() + userPetIdUserPetSetterMiss.getCount()));}}); + public static final Counter userPetUserGetterHit = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(UserPet.class, "user", "getter", "hit")); + public static final Counter userPetUserGetterMiss = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(UserPet.class, "user", "getter", "miss")); + public static final RatioGauge userPetUserGetterHitRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(UserPet.class, "user", "getter", "hit", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(userPetUserGetterHit.getCount(), userPetUserGetterHit.getCount() + userPetUserGetterMiss.getCount()));}}); + public static final RatioGauge userPetUserGetterMissRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(UserPet.class, "user", "getter", "miss", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(userPetUserGetterMiss.getCount(), userPetUserGetterHit.getCount() + userPetUserGetterMiss.getCount()));}}); + public static final Counter userPetIdUserGetterHit = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(UserPet.class, "idUser", "getter", "hit")); + public static final Counter userPetIdUserGetterMiss = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(UserPet.class, "idUser", "getter", "miss")); + public static final RatioGauge userPetIdUserGetterHitRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(UserPet.class, "idUser", "getter", "hit", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(userPetIdUserGetterHit.getCount(), userPetIdUserGetterHit.getCount() + userPetIdUserGetterMiss.getCount()));}}); + public static final RatioGauge userPetIdUserGetterMissRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(UserPet.class, "idUser", "getter", "miss", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(userPetIdUserGetterMiss.getCount(), userPetIdUserGetterHit.getCount() + userPetIdUserGetterMiss.getCount()));}}); + public static final Counter userPetIdUserSetterHit = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(UserPet.class, "idUser", "setter", "hit")); + public static final Counter userPetIdUserSetterMiss = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(UserPet.class, "idUser", "setter", "miss")); + public static final RatioGauge userPetIdUserSetterHitRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(UserPet.class, "idUser", "Setter", "hit", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(userPetIdUserSetterHit.getCount(), userPetIdUserSetterHit.getCount() + userPetIdUserSetterMiss.getCount()));}}); + public static final RatioGauge userPetIdUserSetterMissRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(UserPet.class, "idUser", "Setter", "miss", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(userPetIdUserSetterMiss.getCount(), userPetIdUserSetterHit.getCount() + userPetIdUserSetterMiss.getCount()));}}); + public static final Counter userPetPetGetterHit = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(UserPet.class, "pet", "getter", "hit")); + public static final Counter userPetPetGetterMiss = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(UserPet.class, "pet", "getter", "miss")); + public static final RatioGauge userPetPetGetterHitRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(UserPet.class, "pet", "getter", "hit", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(userPetPetGetterHit.getCount(), userPetPetGetterHit.getCount() + userPetPetGetterMiss.getCount()));}}); + public static final RatioGauge userPetPetGetterMissRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(UserPet.class, "pet", "getter", "miss", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(userPetPetGetterMiss.getCount(), userPetPetGetterHit.getCount() + userPetPetGetterMiss.getCount()));}}); + public static final Counter userPetIdPetGetterHit = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(UserPet.class, "idPet", "getter", "hit")); + public static final Counter userPetIdPetGetterMiss = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(UserPet.class, "idPet", "getter", "miss")); + public static final RatioGauge userPetIdPetGetterHitRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(UserPet.class, "idPet", "getter", "hit", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(userPetIdPetGetterHit.getCount(), userPetIdPetGetterHit.getCount() + userPetIdPetGetterMiss.getCount()));}}); + public static final RatioGauge userPetIdPetGetterMissRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(UserPet.class, "idPet", "getter", "miss", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(userPetIdPetGetterMiss.getCount(), userPetIdPetGetterHit.getCount() + userPetIdPetGetterMiss.getCount()));}}); + public static final Counter userPetIdPetSetterHit = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(UserPet.class, "idPet", "setter", "hit")); + public static final Counter userPetIdPetSetterMiss = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(UserPet.class, "idPet", "setter", "miss")); + public static final RatioGauge userPetIdPetSetterHitRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(UserPet.class, "idPet", "Setter", "hit", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(userPetIdPetSetterHit.getCount(), userPetIdPetSetterHit.getCount() + userPetIdPetSetterMiss.getCount()));}}); + public static final RatioGauge userPetIdPetSetterMissRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(UserPet.class, "idPet", "Setter", "miss", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(userPetIdPetSetterMiss.getCount(), userPetIdPetSetterHit.getCount() + userPetIdPetSetterMiss.getCount()));}}); + + // now for the table statistics + public static final Counter userPetAccess = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(UserPet.class, "access")); + public static final Counter userPetFinderAccess = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(UserPet.class, "finder", "access")); + public static final Counter userPetCounterAccess = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(UserPet.class, "counter", "access")); + public static final Counter userPetQuestionAccess = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(UserPet.class, "question", "access")); + public static final Counter userPetDeleterAccess = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(UserPet.class, "deleter", "access")); + public static final Counter userPetInserterAccess = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(UserPet.class, "inserter", "access")); + public static final Counter userPetUpdaterAccess = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(UserPet.class, "updater", "access")); + public static final Counter userPetInsert = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(UserPet.class, "insert")); + public static final Counter userPetInsertOrUpdate = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(UserPet.class, "insertOrUpdate")); + public static final Counter userPetDelete = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(UserPet.class, "delete")); + public static final Counter userPetEnsure = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(UserPet.class, "ensure")); + public static final Counter userPetRefresh = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(UserPet.class, "refresh")); + public static final Counter userPetUpdate = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(UserPet.class, "update")); + +} \ No newline at end of file diff --git a/generate/src/main/java/synapticloop/sample/h2zero/metrics/UserTypeMetrics.java b/generate/src/main/java/synapticloop/sample/h2zero/metrics/UserTypeMetrics.java new file mode 100644 index 00000000..5e45cee8 --- /dev/null +++ b/generate/src/main/java/synapticloop/sample/h2zero/metrics/UserTypeMetrics.java @@ -0,0 +1,70 @@ +package synapticloop.sample.h2zero.metrics; + +// - - - - thoughtfully generated by synapticloop h2zero - - - - +// with the use of synapticloop templar templating language +// (java-create-metrics-table.templar) + + +import com.codahale.metrics.MetricRegistry; + +import synapticloop.h2zero.base.manager.MetricsManager; +import com.codahale.metrics.Counter; +import com.codahale.metrics.RatioGauge; + + +import synapticloop.sample.h2zero.model.UserType; +public class UserTypeMetrics { + // These are the metrics holders - there are a lot of them - better to have and not need, than need and not have! + // SetterHit counts the number setters that are invoked which successfully changes the value + // SetterMiss counts the number of setters that did not change the value + + // SetterHitRatio provides the ratio of hits to total setters + // SetterMissRatio provides the ratio of misses to total setters + + + // GetterHit counts the number of getters that returns an already filled in value + // GetterMiss counts the number of getters that needed to be loaded from a non-populated value + + // GetterHitRatio provides the ratio of hits to total getters + // GetterMissRatio provides the ratio of misses to total getters + + + // GetterHit counts the number of getters that returns an already filled in object + // GetterMiss counts the number of getters that needed to be loaded from a non-populated object + + // GetterHitRatio provides the ratio of hits to total getters + // GetterMissRatio provides the ratio of misses to total getters + + public static final Counter userTypeIdUserTypeGetterHit = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(UserType.class, "idUserType", "getter", "hit")); + public static final Counter userTypeIdUserTypeGetterMiss = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(UserType.class, "idUserType", "getter", "miss")); + public static final RatioGauge userTypeIdUserTypeGetterHitRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(UserType.class, "idUserType", "getter", "hit", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(userTypeIdUserTypeGetterHit.getCount(), userTypeIdUserTypeGetterHit.getCount() + userTypeIdUserTypeGetterMiss.getCount()));}}); + public static final RatioGauge userTypeIdUserTypeGetterMissRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(UserType.class, "idUserType", "getter", "miss", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(userTypeIdUserTypeGetterMiss.getCount(), userTypeIdUserTypeGetterHit.getCount() + userTypeIdUserTypeGetterMiss.getCount()));}}); + public static final Counter userTypeIdUserTypeSetterHit = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(UserType.class, "idUserType", "setter", "hit")); + public static final Counter userTypeIdUserTypeSetterMiss = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(UserType.class, "idUserType", "setter", "miss")); + public static final RatioGauge userTypeIdUserTypeSetterHitRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(UserType.class, "idUserType", "Setter", "hit", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(userTypeIdUserTypeSetterHit.getCount(), userTypeIdUserTypeSetterHit.getCount() + userTypeIdUserTypeSetterMiss.getCount()));}}); + public static final RatioGauge userTypeIdUserTypeSetterMissRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(UserType.class, "idUserType", "Setter", "miss", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(userTypeIdUserTypeSetterMiss.getCount(), userTypeIdUserTypeSetterHit.getCount() + userTypeIdUserTypeSetterMiss.getCount()));}}); + public static final Counter userTypeNmUserTypeGetterHit = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(UserType.class, "nmUserType", "getter", "hit")); + public static final Counter userTypeNmUserTypeGetterMiss = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(UserType.class, "nmUserType", "getter", "miss")); + public static final RatioGauge userTypeNmUserTypeGetterHitRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(UserType.class, "nmUserType", "getter", "hit", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(userTypeNmUserTypeGetterHit.getCount(), userTypeNmUserTypeGetterHit.getCount() + userTypeNmUserTypeGetterMiss.getCount()));}}); + public static final RatioGauge userTypeNmUserTypeGetterMissRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(UserType.class, "nmUserType", "getter", "miss", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(userTypeNmUserTypeGetterMiss.getCount(), userTypeNmUserTypeGetterHit.getCount() + userTypeNmUserTypeGetterMiss.getCount()));}}); + public static final Counter userTypeNmUserTypeSetterHit = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(UserType.class, "nmUserType", "setter", "hit")); + public static final Counter userTypeNmUserTypeSetterMiss = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(UserType.class, "nmUserType", "setter", "miss")); + public static final RatioGauge userTypeNmUserTypeSetterHitRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(UserType.class, "nmUserType", "Setter", "hit", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(userTypeNmUserTypeSetterHit.getCount(), userTypeNmUserTypeSetterHit.getCount() + userTypeNmUserTypeSetterMiss.getCount()));}}); + public static final RatioGauge userTypeNmUserTypeSetterMissRatio = MetricsManager.getMetricsRegistry().register(MetricRegistry.name(UserType.class, "nmUserType", "Setter", "miss", "ratio"), new RatioGauge() { protected Ratio getRatio() { return(Ratio.of(userTypeNmUserTypeSetterMiss.getCount(), userTypeNmUserTypeSetterHit.getCount() + userTypeNmUserTypeSetterMiss.getCount()));}}); + + // now for the table statistics + public static final Counter userTypeAccess = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(UserType.class, "access")); + public static final Counter userTypeFinderAccess = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(UserType.class, "finder", "access")); + public static final Counter userTypeCounterAccess = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(UserType.class, "counter", "access")); + public static final Counter userTypeQuestionAccess = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(UserType.class, "question", "access")); + public static final Counter userTypeDeleterAccess = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(UserType.class, "deleter", "access")); + public static final Counter userTypeInserterAccess = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(UserType.class, "inserter", "access")); + public static final Counter userTypeUpdaterAccess = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(UserType.class, "updater", "access")); + public static final Counter userTypeInsert = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(UserType.class, "insert")); + public static final Counter userTypeInsertOrUpdate = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(UserType.class, "insertOrUpdate")); + public static final Counter userTypeDelete = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(UserType.class, "delete")); + public static final Counter userTypeEnsure = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(UserType.class, "ensure")); + public static final Counter userTypeRefresh = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(UserType.class, "refresh")); + public static final Counter userTypeUpdate = MetricsManager.getMetricsRegistry().counter(MetricRegistry.name(UserType.class, "update")); + +} \ No newline at end of file diff --git a/generate/src/main/java/synapticloop/sample/h2zero/model/Pet.java b/generate/src/main/java/synapticloop/sample/h2zero/model/Pet.java new file mode 100644 index 00000000..7638ea6f --- /dev/null +++ b/generate/src/main/java/synapticloop/sample/h2zero/model/Pet.java @@ -0,0 +1,209 @@ +package synapticloop.sample.h2zero.model; + +// - - - - thoughtfully generated by synapticloop h2zero - - - - +// with the use of synapticloop templar templating language +// (java-create-model.templar) + +import synapticloop.h2zero.base.manager.ConnectionManager; +import synapticloop.h2zero.base.model.ModelBase; +import synapticloop.h2zero.base.exception.H2ZeroPrimaryKeyException; +import java.lang.StringBuilder; +import java.sql.Connection; +import java.sql.Date; +import java.sql.ResultSet; +import java.sql.Statement; +import java.sql.PreparedStatement; +import java.sql.SQLException; + +import synapticloop.sample.h2zero.model.util.Constants; + +import synapticloop.sample.h2zero.finder.PetFinder; + + +public class Pet extends ModelBase { + // the binder is unused in code, but will generate compile problems if this + // class is no longer referenced in the h2zero file. Just a nicety for + // removing dead code + @SuppressWarnings("unused") + private static final String BINDER = Constants.PET_BINDER; + + public static final String PRIMARY_KEY_FIELD = "id_pet"; + + private static final String SQL_INSERT = "insert into pet values (?, ?, ?, ?, ?)"; + private static final String SQL_UPDATE = "update pet set nm_pet = ?, num_age = ?, flt_weight = ?, dt_birthday = ? where " + PRIMARY_KEY_FIELD + " = ?"; + private static final String SQL_DELETE = "delete from pet where " + PRIMARY_KEY_FIELD + " = ?"; + private static final String SQL_ENSURE = "select " + PRIMARY_KEY_FIELD + " from pet where nm_pet = ? and num_age = ? and flt_weight = ? and dt_birthday = ?"; + + // the list of fields for the hit - starting with 'TOTAL' + private static final String[] HIT_FIELDS = { "TOTAL", "id_pet", "nm_pet", "num_age", "flt_weight", "dt_birthday" }; + // the number of read-hits for a particular field + private static int[] HIT_COUNTS = { 0, 0, 0, 0, 0, 0 }; + + private Long idPet = null; + private Boolean nmPet = null; + private Integer numAge = null; + private Float fltWeight = null; + private Date dtBirthday = null; + + public Pet(Long idPet, Boolean nmPet, Integer numAge, Float fltWeight, Date dtBirthday) { + this.idPet = idPet; + this.nmPet = nmPet; + this.numAge = numAge; + this.fltWeight = fltWeight; + this.dtBirthday = dtBirthday; + } + + public Pet(Long idPet, Integer numAge) { + this.idPet = idPet; + this.nmPet = null; + this.numAge = numAge; + this.fltWeight = null; + this.dtBirthday = null; + } + + public boolean primaryKeySet() { + return(null != idPet); + } + + + @Override + public void insert(Connection connection) throws SQLException, H2ZeroPrimaryKeyException { + if(primaryKeySet()) { + throw new H2ZeroPrimaryKeyException("Cannot insert bean when primary key is not null."); + } + // create this bean + PreparedStatement preparedStatement = connection.prepareStatement(SQL_INSERT, Statement.RETURN_GENERATED_KEYS); + ConnectionManager.setBigint(preparedStatement, 1, idPet); + ConnectionManager.setBoolean(preparedStatement, 2, nmPet); + ConnectionManager.setInt(preparedStatement, 3, numAge); + ConnectionManager.setFloat(preparedStatement, 4, fltWeight); + ConnectionManager.setDate(preparedStatement, 5, dtBirthday); + preparedStatement.executeUpdate(); + ResultSet resultSet = preparedStatement.getGeneratedKeys(); + if(resultSet.next()) { + this.idPet = resultSet.getLong(1); + } else { + throw new H2ZeroPrimaryKeyException("Could not get return value for primary key!"); + } + ConnectionManager.closeAll(resultSet, preparedStatement); + } + + @Override + public void ensure(Connection connection) throws SQLException, H2ZeroPrimaryKeyException { + PreparedStatement preparedStatement = connection.prepareStatement(SQL_ENSURE); + ConnectionManager.setBoolean(preparedStatement, 1, nmPet); + ConnectionManager.setInt(preparedStatement, 2, numAge); + ConnectionManager.setFloat(preparedStatement, 3, fltWeight); + ConnectionManager.setDate(preparedStatement, 4, dtBirthday); + ResultSet resultSet = preparedStatement.executeQuery(); + if(resultSet.next()) { + this.idPet = resultSet.getLong(1); + } else { + // could not find the value - need to insert it - null is the primary key + insert(connection); + } + ConnectionManager.closeAll(resultSet, preparedStatement); + } + + @Override + public void update(Connection connection) throws SQLException, H2ZeroPrimaryKeyException { + if(!primaryKeySet()) { + throw new H2ZeroPrimaryKeyException("Cannot update bean when primary key is null."); + } + if(isDirty) { + // update this bean, but only if dirty + PreparedStatement preparedStatement = connection.prepareStatement(SQL_UPDATE); + ConnectionManager.setBoolean(preparedStatement, 1, nmPet); + ConnectionManager.setInt(preparedStatement, 2, numAge); + ConnectionManager.setFloat(preparedStatement, 3, fltWeight); + ConnectionManager.setDate(preparedStatement, 4, dtBirthday); + // now set the primary key + preparedStatement.setLong(5, idPet); + preparedStatement.executeUpdate(); + ConnectionManager.closeAll(preparedStatement); + isDirty = false; + } + } + + @Override + public void delete(Connection connection) throws SQLException, H2ZeroPrimaryKeyException{ + if(!primaryKeySet()) { + throw new H2ZeroPrimaryKeyException("Cannot delete bean when primary key is null."); + } + PreparedStatement preparedStatement = connection.prepareStatement(SQL_DELETE); + preparedStatement.setLong(1, idPet); + preparedStatement.executeUpdate(); + ConnectionManager.closeAll(preparedStatement); + } + + @Override + public void refresh(Connection connection) throws H2ZeroPrimaryKeyException { + if(!primaryKeySet()) { + throw new H2ZeroPrimaryKeyException("Cannot refresh bean when primary key is null."); + } + Pet pet = PetFinder.findByPrimaryKeySilent(connection, this.idPet); + this.idPet = pet.getIdPet(); + this.nmPet = pet.getNmPet(); + this.numAge = pet.getNumAge(); + this.fltWeight = pet.getFltWeight(); + this.dtBirthday = pet.getDtBirthday(); + } + + public static String[] getHitFields() { return(HIT_FIELDS); } + public static int[] getHitCounts() { return(HIT_COUNTS); } + + /* + * Boring ol' getters and setters + */ + + public Long getPrimaryKey() { updateHitCount(0 + 1);return(this.idPet); } + public void setPrimaryKey(Long idPet) { if(isDifferent(this.idPet, idPet)) { this.idPet = idPet;this.isDirty = true; }} + public static void updateHitCount(int offset) { + HIT_COUNTS[0]++; + HIT_COUNTS[offset]++; + } + + public Long getIdPet() { updateHitCount(0 + 1); return(this.idPet); } + public void setIdPet(Long idPet) { if(isDifferent(this.idPet, idPet)) { this.idPet = idPet;this.isDirty = true; }} + public Boolean getNmPet() { updateHitCount(1 + 1); return(this.nmPet); } + public void setNmPet(Boolean nmPet) { if(isDifferent(this.nmPet, nmPet)) { this.nmPet = nmPet;this.isDirty = true; }} + public Integer getNumAge() { updateHitCount(2 + 1); return(this.numAge); } + public void setNumAge(Integer numAge) { if(isDifferent(this.numAge, numAge)) { this.numAge = numAge;this.isDirty = true; }} + public Float getFltWeight() { updateHitCount(3 + 1); return(this.fltWeight); } + public void setFltWeight(Float fltWeight) { if(isDifferent(this.fltWeight, fltWeight)) { this.fltWeight = fltWeight;this.isDirty = true; }} + public Date getDtBirthday() { updateHitCount(4 + 1); return(this.dtBirthday); } + public void setDtBirthday(Date dtBirthday) { if(isDifferent(this.dtBirthday, dtBirthday)) { this.dtBirthday = dtBirthday;this.isDirty = true; }} + + @Override + public String toString() { + StringBuilder stringBuilder = new StringBuilder(); + stringBuilder.append("Model[Pet]\n"); + stringBuilder.append(" Field[idPet:" + this.idPet + "]\n"); + stringBuilder.append(" Field[nmPet:" + this.nmPet + "]\n"); + stringBuilder.append(" Field[numAge:" + this.numAge + "]\n"); + stringBuilder.append(" Field[fltWeight:" + this.fltWeight + "]\n"); + stringBuilder.append(" Field[dtBirthday:" + this.dtBirthday + "]\n"); + return(stringBuilder.toString()); + } + + public String toJsonString() { + StringBuilder stringBuilder = new StringBuilder(); + stringBuilder.append("{\n"); + stringBuilder.append(" \"model\": {\n"); + stringBuilder.append(" \"name\": \"Pet\",\n"); + stringBuilder.append(" \"fields\": [\n"); + stringBuilder.append(" { \"name\": \"idPet\", \"value\": " + this.idPet + " }, \n"); + stringBuilder.append(" { \"name\": \"nmPet\", \"value\": " + this.nmPet + " }, \n"); + stringBuilder.append(" { \"name\": \"numAge\", \"value\": " + this.numAge + " }, \n"); + stringBuilder.append(" { \"name\": \"fltWeight\", \"value\": " + this.fltWeight + " }, \n"); + stringBuilder.append(" { \"name\": \"dtBirthday\", \"value\": \"" + this.dtBirthday + "\" }\n"); + stringBuilder.append(" ]\n"); + stringBuilder.append(" }\n"); + stringBuilder.append("}\n"); + return(stringBuilder.toString()); + } + + public String getJsonString() { + return(toJsonString()); + } +} \ No newline at end of file diff --git a/generate/src/main/java/synapticloop/sample/h2zero/model/User.java b/generate/src/main/java/synapticloop/sample/h2zero/model/User.java new file mode 100644 index 00000000..b91f16ee --- /dev/null +++ b/generate/src/main/java/synapticloop/sample/h2zero/model/User.java @@ -0,0 +1,246 @@ +package synapticloop.sample.h2zero.model; + +// - - - - thoughtfully generated by synapticloop h2zero - - - - +// with the use of synapticloop templar templating language +// (java-create-model.templar) + +import synapticloop.h2zero.base.manager.ConnectionManager; +import synapticloop.h2zero.base.model.ModelBase; +import synapticloop.h2zero.base.exception.H2ZeroPrimaryKeyException; +import java.lang.StringBuilder; +import java.sql.Connection; +import java.sql.Timestamp; +import java.sql.ResultSet; +import java.sql.Statement; +import java.sql.PreparedStatement; +import java.sql.SQLException; + +import synapticloop.sample.h2zero.model.util.Constants; + +import synapticloop.sample.h2zero.finder.UserFinder; + + +public class User extends ModelBase { + // the binder is unused in code, but will generate compile problems if this + // class is no longer referenced in the h2zero file. Just a nicety for + // removing dead code + @SuppressWarnings("unused") + private static final String BINDER = Constants.USER_BINDER; + + public static final String PRIMARY_KEY_FIELD = "id_user"; + + private static final String SQL_INSERT = "insert into user values (?, ?, ?, ?, ?, ?, ?, ?)"; + private static final String SQL_UPDATE = "update user set id_user_type = ?, fl_is_alive = ?, num_age = ?, nm_username = ?, txt_address_email = ?, txt_password = ?, dtm_signup = ? where " + PRIMARY_KEY_FIELD + " = ?"; + private static final String SQL_DELETE = "delete from user where " + PRIMARY_KEY_FIELD + " = ?"; + private static final String SQL_ENSURE = "select " + PRIMARY_KEY_FIELD + " from user where id_user_type = ? and fl_is_alive = ? and num_age = ? and nm_username = ? and txt_address_email = ? and txt_password = ? and dtm_signup = ?"; + + // the list of fields for the hit - starting with 'TOTAL' + private static final String[] HIT_FIELDS = { "TOTAL", "id_user", "id_user_type", "fl_is_alive", "num_age", "nm_username", "txt_address_email", "txt_password", "dtm_signup" }; + // the number of read-hits for a particular field + private static int[] HIT_COUNTS = { 0, 0, 0, 0, 0, 0, 0, 0, 0 }; + + private Long idUser = null; + private Long idUserType = null; + private Boolean flIsAlive = null; + private Integer numAge = null; + private String nmUsername = null; + private String txtAddressEmail = null; + private String txtPassword = null; + private Timestamp dtmSignup = null; + + public User(Long idUser, Long idUserType, Boolean flIsAlive, Integer numAge, String nmUsername, String txtAddressEmail, String txtPassword, Timestamp dtmSignup) { + this.idUser = idUser; + this.idUserType = idUserType; + this.flIsAlive = flIsAlive; + this.numAge = numAge; + this.nmUsername = nmUsername; + this.txtAddressEmail = txtAddressEmail; + this.txtPassword = txtPassword; + this.dtmSignup = dtmSignup; + } + + public User(Long idUser, Long idUserType, Integer numAge, String nmUsername, String txtAddressEmail, String txtPassword) { + this.idUser = idUser; + this.idUserType = idUserType; + this.flIsAlive = null; + this.numAge = numAge; + this.nmUsername = nmUsername; + this.txtAddressEmail = txtAddressEmail; + this.txtPassword = txtPassword; + this.dtmSignup = null; + } + + public boolean primaryKeySet() { + return(null != idUser); + } + + + @Override + public void insert(Connection connection) throws SQLException, H2ZeroPrimaryKeyException { + if(primaryKeySet()) { + throw new H2ZeroPrimaryKeyException("Cannot insert bean when primary key is not null."); + } + // create this bean + PreparedStatement preparedStatement = connection.prepareStatement(SQL_INSERT, Statement.RETURN_GENERATED_KEYS); + ConnectionManager.setBigint(preparedStatement, 1, idUser); + ConnectionManager.setBigint(preparedStatement, 2, idUserType); + ConnectionManager.setBoolean(preparedStatement, 3, flIsAlive); + ConnectionManager.setInt(preparedStatement, 4, numAge); + ConnectionManager.setVarchar(preparedStatement, 5, nmUsername); + ConnectionManager.setVarchar(preparedStatement, 6, txtAddressEmail); + ConnectionManager.setVarchar(preparedStatement, 7, txtPassword); + ConnectionManager.setDatetime(preparedStatement, 8, dtmSignup); + preparedStatement.executeUpdate(); + ResultSet resultSet = preparedStatement.getGeneratedKeys(); + if(resultSet.next()) { + this.idUser = resultSet.getLong(1); + } else { + throw new H2ZeroPrimaryKeyException("Could not get return value for primary key!"); + } + ConnectionManager.closeAll(resultSet, preparedStatement); + } + + @Override + public void ensure(Connection connection) throws SQLException, H2ZeroPrimaryKeyException { + PreparedStatement preparedStatement = connection.prepareStatement(SQL_ENSURE); + ConnectionManager.setBigint(preparedStatement, 1, idUserType); + ConnectionManager.setBoolean(preparedStatement, 2, flIsAlive); + ConnectionManager.setInt(preparedStatement, 3, numAge); + ConnectionManager.setVarchar(preparedStatement, 4, nmUsername); + ConnectionManager.setVarchar(preparedStatement, 5, txtAddressEmail); + ConnectionManager.setVarchar(preparedStatement, 6, txtPassword); + ConnectionManager.setDatetime(preparedStatement, 7, dtmSignup); + ResultSet resultSet = preparedStatement.executeQuery(); + if(resultSet.next()) { + this.idUser = resultSet.getLong(1); + } else { + // could not find the value - need to insert it - null is the primary key + insert(connection); + } + ConnectionManager.closeAll(resultSet, preparedStatement); + } + + @Override + public void update(Connection connection) throws SQLException, H2ZeroPrimaryKeyException { + if(!primaryKeySet()) { + throw new H2ZeroPrimaryKeyException("Cannot update bean when primary key is null."); + } + if(isDirty) { + // update this bean, but only if dirty + PreparedStatement preparedStatement = connection.prepareStatement(SQL_UPDATE); + ConnectionManager.setBigint(preparedStatement, 1, idUserType); + ConnectionManager.setBoolean(preparedStatement, 2, flIsAlive); + ConnectionManager.setInt(preparedStatement, 3, numAge); + ConnectionManager.setVarchar(preparedStatement, 4, nmUsername); + ConnectionManager.setVarchar(preparedStatement, 5, txtAddressEmail); + ConnectionManager.setVarchar(preparedStatement, 6, txtPassword); + ConnectionManager.setDatetime(preparedStatement, 7, dtmSignup); + // now set the primary key + preparedStatement.setLong(8, idUser); + preparedStatement.executeUpdate(); + ConnectionManager.closeAll(preparedStatement); + isDirty = false; + } + } + + @Override + public void delete(Connection connection) throws SQLException, H2ZeroPrimaryKeyException{ + if(!primaryKeySet()) { + throw new H2ZeroPrimaryKeyException("Cannot delete bean when primary key is null."); + } + PreparedStatement preparedStatement = connection.prepareStatement(SQL_DELETE); + preparedStatement.setLong(1, idUser); + preparedStatement.executeUpdate(); + ConnectionManager.closeAll(preparedStatement); + } + + @Override + public void refresh(Connection connection) throws H2ZeroPrimaryKeyException { + if(!primaryKeySet()) { + throw new H2ZeroPrimaryKeyException("Cannot refresh bean when primary key is null."); + } + User user = UserFinder.findByPrimaryKeySilent(connection, this.idUser); + this.idUser = user.getIdUser(); + this.idUserType = user.getIdUserType(); + this.flIsAlive = user.getFlIsAlive(); + this.numAge = user.getNumAge(); + this.nmUsername = user.getNmUsername(); + this.txtAddressEmail = user.getTxtAddressEmail(); + this.txtPassword = user.getTxtPassword(); + this.dtmSignup = user.getDtmSignup(); + } + + public static String[] getHitFields() { return(HIT_FIELDS); } + public static int[] getHitCounts() { return(HIT_COUNTS); } + + public UserType getUserType() { + return(UserType.ALL_LOOKUP.get(this.idUserType)); + } + + /* + * Boring ol' getters and setters + */ + + public Long getPrimaryKey() { updateHitCount(0 + 1);return(this.idUser); } + public void setPrimaryKey(Long idUser) { if(isDifferent(this.idUser, idUser)) { this.idUser = idUser;this.isDirty = true; }} + public static void updateHitCount(int offset) { + HIT_COUNTS[0]++; + HIT_COUNTS[offset]++; + } + + public Long getIdUser() { updateHitCount(0 + 1); return(this.idUser); } + public void setIdUser(Long idUser) { if(isDifferent(this.idUser, idUser)) { this.idUser = idUser;this.isDirty = true; }} + public Long getIdUserType() { updateHitCount(1 + 1); return(this.idUserType); } + public void setIdUserType(Long idUserType) { if(isDifferent(this.idUserType, idUserType)) { this.idUserType = idUserType;this.isDirty = true; }} + public Boolean getFlIsAlive() { updateHitCount(2 + 1); return(this.flIsAlive); } + public void setFlIsAlive(Boolean flIsAlive) { if(isDifferent(this.flIsAlive, flIsAlive)) { this.flIsAlive = flIsAlive;this.isDirty = true; }} + public Integer getNumAge() { updateHitCount(3 + 1); return(this.numAge); } + public void setNumAge(Integer numAge) { if(isDifferent(this.numAge, numAge)) { this.numAge = numAge;this.isDirty = true; }} + public String getNmUsername() { updateHitCount(4 + 1); return(this.nmUsername); } + public void setNmUsername(String nmUsername) { if(isDifferent(this.nmUsername, nmUsername)) { this.nmUsername = nmUsername;this.isDirty = true; }} + public String getTxtAddressEmail() { updateHitCount(5 + 1); return(this.txtAddressEmail); } + public void setTxtAddressEmail(String txtAddressEmail) { if(isDifferent(this.txtAddressEmail, txtAddressEmail)) { this.txtAddressEmail = txtAddressEmail;this.isDirty = true; }} + public String getTxtPassword() { updateHitCount(6 + 1); return(this.txtPassword); } + public void setTxtPassword(String txtPassword) { if(isDifferent(this.txtPassword, txtPassword)) { this.txtPassword = txtPassword;this.isDirty = true; }} + public Timestamp getDtmSignup() { updateHitCount(7 + 1); return(this.dtmSignup); } + public void setDtmSignup(Timestamp dtmSignup) { if(isDifferent(this.dtmSignup, dtmSignup)) { this.dtmSignup = dtmSignup;this.isDirty = true; }} + + @Override + public String toString() { + StringBuilder stringBuilder = new StringBuilder(); + stringBuilder.append("Model[User]\n"); + stringBuilder.append(" Field[idUser:" + this.idUser + "]\n"); + stringBuilder.append(" Field[idUserType:" + this.idUserType + "]\n"); + stringBuilder.append(" Field[flIsAlive:" + this.flIsAlive + "]\n"); + stringBuilder.append(" Field[numAge:" + this.numAge + "]\n"); + stringBuilder.append(" Field[nmUsername:" + this.nmUsername + "]\n"); + stringBuilder.append(" Field[txtAddressEmail:" + this.txtAddressEmail + "]\n"); + stringBuilder.append(" Field[txtPassword:" + this.txtPassword + "]\n"); + stringBuilder.append(" Field[dtmSignup:" + this.dtmSignup + "]\n"); + return(stringBuilder.toString()); + } + + public String toJsonString() { + StringBuilder stringBuilder = new StringBuilder(); + stringBuilder.append("{\n"); + stringBuilder.append(" \"model\": {\n"); + stringBuilder.append(" \"name\": \"User\",\n"); + stringBuilder.append(" \"fields\": [\n"); + stringBuilder.append(" { \"name\": \"idUser\", \"value\": " + this.idUser + " }, \n"); + stringBuilder.append(" { \"name\": \"idUserType\", \"value\": " + this.idUserType + " }, \n"); + stringBuilder.append(" { \"name\": \"flIsAlive\", \"value\": " + this.flIsAlive + " }, \n"); + stringBuilder.append(" { \"name\": \"numAge\", \"value\": " + this.numAge + " }, \n"); + stringBuilder.append(" { \"name\": \"nmUsername\", \"value\": \"" + this.nmUsername + "\" }, \n"); + stringBuilder.append(" { \"name\": \"txtAddressEmail\", \"value\": \"" + this.txtAddressEmail + "\" }, \n"); + stringBuilder.append(" { \"name\": \"txtPassword\", \"value\": \"" + this.txtPassword + "\" }, \n"); + stringBuilder.append(" { \"name\": \"dtmSignup\", \"value\": \"" + this.dtmSignup + "\" }\n"); + stringBuilder.append(" ]\n"); + stringBuilder.append(" }\n"); + stringBuilder.append("}\n"); + return(stringBuilder.toString()); + } + + public String getJsonString() { + return(toJsonString()); + } +} \ No newline at end of file diff --git a/generate/src/main/java/synapticloop/sample/h2zero/model/UserPet.java b/generate/src/main/java/synapticloop/sample/h2zero/model/UserPet.java new file mode 100644 index 00000000..45d11a8d --- /dev/null +++ b/generate/src/main/java/synapticloop/sample/h2zero/model/UserPet.java @@ -0,0 +1,198 @@ +package synapticloop.sample.h2zero.model; + +// - - - - thoughtfully generated by synapticloop h2zero - - - - +// with the use of synapticloop templar templating language +// (java-create-model.templar) + +import synapticloop.h2zero.base.manager.ConnectionManager; +import synapticloop.h2zero.base.model.ModelBase; +import synapticloop.h2zero.base.exception.H2ZeroPrimaryKeyException; +import java.lang.StringBuilder; +import java.sql.Connection; +import java.sql.ResultSet; +import java.sql.Statement; +import java.sql.PreparedStatement; +import java.sql.SQLException; + +import synapticloop.sample.h2zero.model.util.Constants; + +import synapticloop.sample.h2zero.finder.UserPetFinder; +import synapticloop.sample.h2zero.finder.UserFinder; +import synapticloop.sample.h2zero.finder.PetFinder; + + +public class UserPet extends ModelBase { + // the binder is unused in code, but will generate compile problems if this + // class is no longer referenced in the h2zero file. Just a nicety for + // removing dead code + @SuppressWarnings("unused") + private static final String BINDER = Constants.USER_PET_BINDER; + + public static final String PRIMARY_KEY_FIELD = "id_user_pet"; + + private static final String SQL_INSERT = "insert into user_pet values (?, ?, ?)"; + private static final String SQL_UPDATE = "update user_pet set id_user = ?, id_pet = ? where " + PRIMARY_KEY_FIELD + " = ?"; + private static final String SQL_DELETE = "delete from user_pet where " + PRIMARY_KEY_FIELD + " = ?"; + private static final String SQL_ENSURE = "select " + PRIMARY_KEY_FIELD + " from user_pet where id_user = ? and id_pet = ?"; + + // the list of fields for the hit - starting with 'TOTAL' + private static final String[] HIT_FIELDS = { "TOTAL", "id_user_pet", "id_user", "id_pet" }; + // the number of read-hits for a particular field + private static int[] HIT_COUNTS = { 0, 0, 0, 0 }; + private User user = null; + private Pet pet = null; + + private Long idUserPet = null; + private Long idUser = null; + private Long idPet = null; + + public UserPet(Long idUserPet, Long idUser, Long idPet) { + this.idUserPet = idUserPet; + this.idUser = idUser; + this.idPet = idPet; + } + + public boolean primaryKeySet() { + return(null != idUserPet); + } + + + @Override + public void insert(Connection connection) throws SQLException, H2ZeroPrimaryKeyException { + if(primaryKeySet()) { + throw new H2ZeroPrimaryKeyException("Cannot insert bean when primary key is not null."); + } + // create this bean + PreparedStatement preparedStatement = connection.prepareStatement(SQL_INSERT, Statement.RETURN_GENERATED_KEYS); + ConnectionManager.setBigint(preparedStatement, 1, idUserPet); + ConnectionManager.setBigint(preparedStatement, 2, idUser); + ConnectionManager.setBigint(preparedStatement, 3, idPet); + preparedStatement.executeUpdate(); + ResultSet resultSet = preparedStatement.getGeneratedKeys(); + if(resultSet.next()) { + this.idUserPet = resultSet.getLong(1); + } else { + throw new H2ZeroPrimaryKeyException("Could not get return value for primary key!"); + } + ConnectionManager.closeAll(resultSet, preparedStatement); + } + + @Override + public void ensure(Connection connection) throws SQLException, H2ZeroPrimaryKeyException { + PreparedStatement preparedStatement = connection.prepareStatement(SQL_ENSURE); + ConnectionManager.setBigint(preparedStatement, 1, idUser); + ConnectionManager.setBigint(preparedStatement, 2, idPet); + ResultSet resultSet = preparedStatement.executeQuery(); + if(resultSet.next()) { + this.idUserPet = resultSet.getLong(1); + } else { + // could not find the value - need to insert it - null is the primary key + insert(connection); + } + ConnectionManager.closeAll(resultSet, preparedStatement); + } + + @Override + public void update(Connection connection) throws SQLException, H2ZeroPrimaryKeyException { + if(!primaryKeySet()) { + throw new H2ZeroPrimaryKeyException("Cannot update bean when primary key is null."); + } + if(isDirty) { + // update this bean, but only if dirty + PreparedStatement preparedStatement = connection.prepareStatement(SQL_UPDATE); + ConnectionManager.setBigint(preparedStatement, 1, idUser); + ConnectionManager.setBigint(preparedStatement, 2, idPet); + // now set the primary key + preparedStatement.setLong(3, idUserPet); + preparedStatement.executeUpdate(); + ConnectionManager.closeAll(preparedStatement); + isDirty = false; + } + } + + @Override + public void delete(Connection connection) throws SQLException, H2ZeroPrimaryKeyException{ + if(!primaryKeySet()) { + throw new H2ZeroPrimaryKeyException("Cannot delete bean when primary key is null."); + } + PreparedStatement preparedStatement = connection.prepareStatement(SQL_DELETE); + preparedStatement.setLong(1, idUserPet); + preparedStatement.executeUpdate(); + ConnectionManager.closeAll(preparedStatement); + } + + @Override + public void refresh(Connection connection) throws H2ZeroPrimaryKeyException { + if(!primaryKeySet()) { + throw new H2ZeroPrimaryKeyException("Cannot refresh bean when primary key is null."); + } + UserPet userPet = UserPetFinder.findByPrimaryKeySilent(connection, this.idUserPet); + this.idUserPet = userPet.getIdUserPet(); + this.idUser = userPet.getIdUser(); + this.idPet = userPet.getIdPet(); + } + + public static String[] getHitFields() { return(HIT_FIELDS); } + public static int[] getHitCounts() { return(HIT_COUNTS); } + + public User getUser() { + if(null == this.user) { + this.user = UserFinder.findByPrimaryKeySilent(this.idUser); + } + return(this.user); + } + + public Pet getPet() { + if(null == this.pet) { + this.pet = PetFinder.findByPrimaryKeySilent(this.idPet); + } + return(this.pet); + } + + /* + * Boring ol' getters and setters + */ + + public Long getPrimaryKey() { updateHitCount(0 + 1);return(this.idUserPet); } + public void setPrimaryKey(Long idUserPet) { if(isDifferent(this.idUserPet, idUserPet)) { this.idUserPet = idUserPet;this.isDirty = true; }} + public static void updateHitCount(int offset) { + HIT_COUNTS[0]++; + HIT_COUNTS[offset]++; + } + + public Long getIdUserPet() { updateHitCount(0 + 1); return(this.idUserPet); } + public void setIdUserPet(Long idUserPet) { if(isDifferent(this.idUserPet, idUserPet)) { this.idUserPet = idUserPet;this.isDirty = true; }} + public Long getIdUser() { updateHitCount(1 + 1); return(this.idUser); } + public void setIdUser(Long idUser) { if(isDifferent(this.idUser, idUser)) { this.idUser = idUser;this.isDirty = true; this.user = null;}} + public Long getIdPet() { updateHitCount(2 + 1); return(this.idPet); } + public void setIdPet(Long idPet) { if(isDifferent(this.idPet, idPet)) { this.idPet = idPet;this.isDirty = true; this.pet = null;}} + + @Override + public String toString() { + StringBuilder stringBuilder = new StringBuilder(); + stringBuilder.append("Model[UserPet]\n"); + stringBuilder.append(" Field[idUserPet:" + this.idUserPet + "]\n"); + stringBuilder.append(" Field[idUser:" + this.idUser + "]\n"); + stringBuilder.append(" Field[idPet:" + this.idPet + "]\n"); + return(stringBuilder.toString()); + } + + public String toJsonString() { + StringBuilder stringBuilder = new StringBuilder(); + stringBuilder.append("{\n"); + stringBuilder.append(" \"model\": {\n"); + stringBuilder.append(" \"name\": \"UserPet\",\n"); + stringBuilder.append(" \"fields\": [\n"); + stringBuilder.append(" { \"name\": \"idUserPet\", \"value\": " + this.idUserPet + " }, \n"); + stringBuilder.append(" { \"name\": \"idUser\", \"value\": " + this.idUser + " }, \n"); + stringBuilder.append(" { \"name\": \"idPet\", \"value\": " + this.idPet + " }\n"); + stringBuilder.append(" ]\n"); + stringBuilder.append(" }\n"); + stringBuilder.append("}\n"); + return(stringBuilder.toString()); + } + + public String getJsonString() { + return(toJsonString()); + } +} \ No newline at end of file diff --git a/generate/src/main/java/synapticloop/sample/h2zero/model/UserType.java b/generate/src/main/java/synapticloop/sample/h2zero/model/UserType.java new file mode 100644 index 00000000..0bd359af --- /dev/null +++ b/generate/src/main/java/synapticloop/sample/h2zero/model/UserType.java @@ -0,0 +1,83 @@ +package synapticloop.sample.h2zero.model; + +// - - - - thoughtfully generated by synapticloop h2zero - - - - +// with the use of synapticloop templar templating language +// (java-create-model.templar) + +import java.util.HashMap; + +import java.util.Map; + +import synapticloop.sample.h2zero.model.util.Constants; + + +public class UserType { + // the binder is unused in code, but will generate compile problems if this + // class is no longer referenced in the h2zero file. Just a nicety for + // removing dead code + @SuppressWarnings("unused") + private static final String BINDER = Constants.USER_TYPE_BINDER; + + public static final UserType NORMAL = new UserType(new Long(1), "normal"); + public static final UserType SPECIAL = new UserType(new Long(2), "special"); + public static final UserType ADMIN = new UserType(new Long(3), "admin"); + public static final UserType SUPER_ADMIN = new UserType(new Long(4), "super admin"); + + public static final UserType[] ALL = { + UserType.NORMAL, UserType.SPECIAL, UserType.ADMIN, UserType.SUPER_ADMIN + }; + + public static final Map ALL_LOOKUP = new HashMap(); + static{ + ALL_LOOKUP.put(new Long(1), UserType.NORMAL); + ALL_LOOKUP.put(new Long(2), UserType.SPECIAL); + ALL_LOOKUP.put(new Long(3), UserType.ADMIN); + ALL_LOOKUP.put(new Long(4), UserType.SUPER_ADMIN); + + }; + + public static final String PRIMARY_KEY_FIELD = "id_user_type"; + + + private Long idUserType = null; + private String nmUserType = null; + + public UserType(Long idUserType, String nmUserType) { + this.idUserType = idUserType; + this.nmUserType = nmUserType; + } + /* + * Boring ol' getters and setters + */ + + public Long getPrimaryKey() { return(this.idUserType); } + public Long getIdUserType() { return(this.idUserType); } + public String getNmUserType() { return(this.nmUserType); } + + @Override + public String toString() { + StringBuilder stringBuilder = new StringBuilder(); + stringBuilder.append("Model[UserType]\n"); + stringBuilder.append(" Field[idUserType:" + this.idUserType + "]\n"); + stringBuilder.append(" Field[nmUserType:" + this.nmUserType + "]\n"); + return(stringBuilder.toString()); + } + + public String toJsonString() { + StringBuilder stringBuilder = new StringBuilder(); + stringBuilder.append("{\n"); + stringBuilder.append(" \"model\": {\n"); + stringBuilder.append(" \"name\": \"UserType\",\n"); + stringBuilder.append(" \"fields\": [\n"); + stringBuilder.append(" { \"name\": \"idUserType\", \"value\": " + this.idUserType + " }, \n"); + stringBuilder.append(" { \"name\": \"nmUserType\", \"value\": \"" + this.nmUserType + "\" }\n"); + stringBuilder.append(" ]\n"); + stringBuilder.append(" }\n"); + stringBuilder.append("}\n"); + return(stringBuilder.toString()); + } + + public String getJsonString() { + return(toJsonString()); + } +} \ No newline at end of file diff --git a/generate/src/main/java/synapticloop/sample/h2zero/model/util/Constants.java b/generate/src/main/java/synapticloop/sample/h2zero/model/util/Constants.java new file mode 100644 index 00000000..2fb99c5f --- /dev/null +++ b/generate/src/main/java/synapticloop/sample/h2zero/model/util/Constants.java @@ -0,0 +1,47 @@ +package synapticloop.sample.h2zero.model.util; + +// - - - - thoughtfully generated by synapticloop h2zero - - - - +// with the use of synapticloop templar templating language +// (java-create-constants.templar) + +public class Constants { + // The binder variables below are used to show up compilation errors where + // it has been removed from the generation. + + public static final String USER_TYPE_BINDER = "USER_TYPE"; + public static final String USER_BINDER = "USER"; + public static final String PET_BINDER = "PET"; + public static final String USER_PET_BINDER = "USER_PET"; + + // Field constants for the user_type table + public static final String USER_TYPE_ID_USER_TYPE = "idUserType"; + public static final String USER_TYPE_NM_USER_TYPE = "nmUserType"; + + + // Field constants for the user table + public static final String USER_ID_USER = "idUser"; + public static final String USER_ID_USER_TYPE = "idUserType"; + public static final String USER_FL_IS_ALIVE = "flIsAlive"; + public static final String USER_NUM_AGE = "numAge"; + public static final String USER_NM_USERNAME = "nmUsername"; + public static final String USER_TXT_ADDRESS_EMAIL = "txtAddressEmail"; + public static final String USER_TXT_PASSWORD = "txtPassword"; + public static final String USER_DTM_SIGNUP = "dtmSignup"; + + + // Field constants for the pet table + public static final String PET_ID_PET = "idPet"; + public static final String PET_NM_PET = "nmPet"; + public static final String PET_NUM_AGE = "numAge"; + public static final String PET_FLT_WEIGHT = "fltWeight"; + public static final String PET_DT_BIRTHDAY = "dtBirthday"; + + + // Field constants for the user_pet table + public static final String USER_PET_ID_USER_PET = "idUserPet"; + public static final String USER_PET_ID_USER = "idUser"; + public static final String USER_PET_ID_PET = "idPet"; + + + +} \ No newline at end of file diff --git a/generate/src/main/java/synapticloop/sample/h2zero/question/UserQuestion.java b/generate/src/main/java/synapticloop/sample/h2zero/question/UserQuestion.java new file mode 100644 index 00000000..2ad3a493 --- /dev/null +++ b/generate/src/main/java/synapticloop/sample/h2zero/question/UserQuestion.java @@ -0,0 +1,304 @@ +package synapticloop.sample.h2zero.question; + +// - - - - thoughtfully generated by synapticloop h2zero - - - - +// with the use of synapticloop templar templating language +// (java-create-question.templar) + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Timestamp; + +import synapticloop.h2zero.base.exception.H2ZeroFinderException; +import synapticloop.h2zero.base.manager.ConnectionManager; + +import org.apache.log4j.Level; +import org.apache.log4j.Logger; + +import synapticloop.sample.h2zero.model.util.Constants; + +import java.util.HashMap; +import java.util.Map; +import java.util.List; + +public class UserQuestion { + // the binder is unused in code, but will generate compile problems if this + // class is no longer referenced in the h2zero file. Just a nicety for + // removing dead code + @SuppressWarnings("unused") + private static final String BINDER = Constants.USER_BINDER; + + private static final Logger LOGGER = Logger.getLogger(UserQuestion.class); + + private static final String SQL_DO_WE_HAVE_MORE_THAN_TWENTY_USERS = "select count(*) > 20 from user"; + private static final String SQL_DOES_USER_NAME_EXIST = "select count(*) > 0 from user"; + private static final String SQL_DO_WE_HAVE_USERS_BETWEEN_AGE_EXCLUSIVE = "select count(*) > 0 from user" + " where num_age > ? and num_age < ?"; + private static final String SQL_DO_WE_HAVE_USERS_IN_AGES = "select count(*) > 0 from user" + " where num_age in (...)"; + + private static Map doWeHaveUsersInAges_statement_cache = new HashMap(); + private UserQuestion() {} + + public static boolean doWeHaveMoreThanTwentyUsers(Connection connection) throws SQLException { + PreparedStatement preparedStatement = null; + ResultSet resultSet = null; + boolean answer = false; + try { + preparedStatement = connection.prepareStatement(SQL_DO_WE_HAVE_MORE_THAN_TWENTY_USERS); + + resultSet = preparedStatement.executeQuery(); + if(resultSet.next()) { + answer = resultSet.getBoolean(1); + } + } catch (SQLException sqlex) { + throw sqlex; + } finally { + ConnectionManager.closeAll(resultSet, preparedStatement); + } + return(answer); + } + + public static boolean doWeHaveMoreThanTwentyUsers() throws SQLException { + Connection connection = null; + + try { + connection = ConnectionManager.getConnection(); + return(doWeHaveMoreThanTwentyUsers(connection)); + } catch (SQLException sqlex) { + throw sqlex; + } finally { + ConnectionManager.closeAll(connection); + } + } + + public static boolean doWeHaveMoreThanTwentyUsersSilent(Connection connection) { + try { + return(doWeHaveMoreThanTwentyUsers(connection)); + } catch(SQLException sqlex) { + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("SQLException doWeHaveMoreThanTwentyUsersSilent(): " + sqlex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + sqlex.printStackTrace(); + } + } + return(false); + } + } + + public static boolean doWeHaveMoreThanTwentyUsersSilent() { + try { + return(doWeHaveMoreThanTwentyUsers()); + } catch(SQLException sqlex) { + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("SQLException doWeHaveMoreThanTwentyUsersSilent(): " + sqlex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + sqlex.printStackTrace(); + } + } + return(false); + } + } + + public static boolean doesUserNameExist(Connection connection) throws SQLException { + PreparedStatement preparedStatement = null; + ResultSet resultSet = null; + boolean answer = false; + try { + preparedStatement = connection.prepareStatement(SQL_DOES_USER_NAME_EXIST); + + resultSet = preparedStatement.executeQuery(); + if(resultSet.next()) { + answer = resultSet.getBoolean(1); + } + } catch (SQLException sqlex) { + throw sqlex; + } finally { + ConnectionManager.closeAll(resultSet, preparedStatement); + } + return(answer); + } + + public static boolean doesUserNameExist() throws SQLException { + Connection connection = null; + + try { + connection = ConnectionManager.getConnection(); + return(doesUserNameExist(connection)); + } catch (SQLException sqlex) { + throw sqlex; + } finally { + ConnectionManager.closeAll(connection); + } + } + + public static boolean doesUserNameExistSilent(Connection connection) { + try { + return(doesUserNameExist(connection)); + } catch(SQLException sqlex) { + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("SQLException doesUserNameExistSilent(): " + sqlex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + sqlex.printStackTrace(); + } + } + return(false); + } + } + + public static boolean doesUserNameExistSilent() { + try { + return(doesUserNameExist()); + } catch(SQLException sqlex) { + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("SQLException doesUserNameExistSilent(): " + sqlex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + sqlex.printStackTrace(); + } + } + return(false); + } + } + + public static boolean doWeHaveUsersBetweenAgeExclusive(Connection connection, Integer numAgeFrom, Integer numAgeTo) throws SQLException { + PreparedStatement preparedStatement = null; + ResultSet resultSet = null; + boolean answer = false; + try { + preparedStatement = connection.prepareStatement(SQL_DO_WE_HAVE_USERS_BETWEEN_AGE_EXCLUSIVE); + ConnectionManager.setInt(preparedStatement, 1, numAgeFrom); + ConnectionManager.setInt(preparedStatement, 2, numAgeTo); + + resultSet = preparedStatement.executeQuery(); + if(resultSet.next()) { + answer = resultSet.getBoolean(1); + } + } catch (SQLException sqlex) { + throw sqlex; + } finally { + ConnectionManager.closeAll(resultSet, preparedStatement); + } + return(answer); + } + + public static boolean doWeHaveUsersBetweenAgeExclusive(Integer numAgeFrom, Integer numAgeTo) throws SQLException { + Connection connection = null; + + try { + connection = ConnectionManager.getConnection(); + return(doWeHaveUsersBetweenAgeExclusive(connection, numAgeFrom, numAgeTo)); + } catch (SQLException sqlex) { + throw sqlex; + } finally { + ConnectionManager.closeAll(connection); + } + } + + public static boolean doWeHaveUsersBetweenAgeExclusiveSilent(Connection connection, Integer numAgeFrom, Integer numAgeTo) { + try { + return(doWeHaveUsersBetweenAgeExclusive(connection, numAgeFrom, numAgeTo)); + } catch(SQLException sqlex) { + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("SQLException doWeHaveUsersBetweenAgeExclusiveSilent(" + numAgeFrom + ", " + numAgeTo + "): " + sqlex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + sqlex.printStackTrace(); + } + } + return(false); + } + } + + public static boolean doWeHaveUsersBetweenAgeExclusiveSilent(Integer numAgeFrom, Integer numAgeTo) { + try { + return(doWeHaveUsersBetweenAgeExclusive(numAgeFrom, numAgeTo)); + } catch(SQLException sqlex) { + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("SQLException doWeHaveUsersBetweenAgeExclusiveSilent(" + numAgeFrom + ", " + numAgeTo + "): " + sqlex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + sqlex.printStackTrace(); + } + } + return(false); + } + } + + public static boolean doWeHaveUsersInAges(Connection connection, List numAgeList) throws SQLException { + PreparedStatement preparedStatement = null; + ResultSet resultSet = null; + boolean answer = false; + try { + if(doWeHaveUsersInAges_statement_cache.containsKey(numAgeList.size() + ":" )) { + preparedStatement = connection.prepareStatement(doWeHaveUsersInAges_statement_cache.get(numAgeList.size() + ":" )); + } else { + String preparedStatementTemp = SQL_DO_WE_HAVE_USERS_IN_AGES; + StringBuilder stringBuilder = null; + stringBuilder = new StringBuilder(); + for(int i = 0; i < numAgeList.size(); i++) { + if(i > 0) { + stringBuilder.append(", "); + } + stringBuilder.append("?"); + } + preparedStatementTemp = SQL_DO_WE_HAVE_USERS_IN_AGES.replaceFirst("\\.\\.\\.", stringBuilder.toString()); + doWeHaveUsersInAges_statement_cache.put(numAgeList.size() + ":" , preparedStatementTemp); + preparedStatement = connection.prepareStatement(preparedStatementTemp); + } + int i = 1; + for (Integer numAgeIn : numAgeList) { + ConnectionManager.setInt(preparedStatement, i, numAgeIn); + i++; + } + + resultSet = preparedStatement.executeQuery(); + if(resultSet.next()) { + answer = resultSet.getBoolean(1); + } + } catch (SQLException sqlex) { + throw sqlex; + } finally { + ConnectionManager.closeAll(resultSet, preparedStatement); + } + return(answer); + } + + public static boolean doWeHaveUsersInAges(List numAgeList) throws SQLException { + Connection connection = null; + + try { + connection = ConnectionManager.getConnection(); + return(doWeHaveUsersInAges(connection, numAgeList)); + } catch (SQLException sqlex) { + throw sqlex; + } finally { + ConnectionManager.closeAll(connection); + } + } + + public static boolean doWeHaveUsersInAgesSilent(Connection connection, List numAgeList) { + try { + return(doWeHaveUsersInAges(connection, numAgeList)); + } catch(SQLException sqlex) { + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("SQLException doWeHaveUsersInAgesSilent(" + numAgeList + "): " + sqlex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + sqlex.printStackTrace(); + } + } + return(false); + } + } + + public static boolean doWeHaveUsersInAgesSilent(List numAgeList) { + try { + return(doWeHaveUsersInAges(numAgeList)); + } catch(SQLException sqlex) { + if(LOGGER.isEnabledFor(Level.WARN)) { + LOGGER.warn("SQLException doWeHaveUsersInAgesSilent(" + numAgeList + "): " + sqlex.getMessage()); + if(LOGGER.isEnabledFor(Level.DEBUG)) { + sqlex.printStackTrace(); + } + } + return(false); + } + } + +} \ No newline at end of file diff --git a/generate/src/main/java/synapticloop/sample/h2zero/servlet/MuninMetricsServlet.java b/generate/src/main/java/synapticloop/sample/h2zero/servlet/MuninMetricsServlet.java new file mode 100644 index 00000000..695a7d7b --- /dev/null +++ b/generate/src/main/java/synapticloop/sample/h2zero/servlet/MuninMetricsServlet.java @@ -0,0 +1,633 @@ +package synapticloop.sample.h2zero.servlet; + +// - - - - thoughtfully generated by synapticloop h2zero - - - - +// with the use of synapticloop templar templating language +// (java-create-metrics-servlet-munin.templar) + + +import java.io.IOException; +import java.io.PrintWriter; +import java.util.HashMap; +import java.util.Iterator; +import java.util.SortedMap; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import com.codahale.metrics.MetricRegistry; + +import synapticloop.h2zero.base.manager.MetricsManager; + +import com.codahale.metrics.Metric; +import com.codahale.metrics.Counter; +import com.codahale.metrics.Gauge; +import com.codahale.metrics.Histogram; +import com.codahale.metrics.Meter; +import com.codahale.metrics.RatioGauge; +import com.codahale.metrics.Timer; + + +import static synapticloop.sample.h2zero.metrics.UserTypeMetrics.*; +import static synapticloop.sample.h2zero.metrics.UserMetrics.*; +import static synapticloop.sample.h2zero.metrics.PetMetrics.*; +import static synapticloop.sample.h2zero.metrics.UserPetMetrics.*; + +@SuppressWarnings("serial") +public class MuninMetricsServlet extends HttpServlet { + private static final int LIST_METRICS_ALL = Integer.MAX_VALUE; + private static final int LIST_METRICS_GAUGES = Integer.MAX_VALUE - 1; + private static final int LIST_METRICS_TIMERS = Integer.MAX_VALUE - 2; + private static final int LIST_METRICS_HISTOGRAMS = Integer.MAX_VALUE - 3; + private static final int LIST_METRICS_COUNTERS = Integer.MAX_VALUE - 4; + private static final int LIST_METRICS_METERS = Integer.MAX_VALUE - 5; + + private static final int GET_METRICS_TABLES = Integer.MAX_VALUE - 1000; + private static final int GET_METRICS_TABLES_RATIO = Integer.MAX_VALUE - 1001; + private static final int GET_METRICS_TABLES_INTERACTION_RATIO = Integer.MAX_VALUE - 1002; + private static final int GET_METRICS_TABLES_INTERACTION_RATIO_user_type = Integer.MAX_VALUE - 10000 - 1; + private static final int GET_METRICS_TABLES_INTERACTION_RATIO_user = Integer.MAX_VALUE - 10000 - 2; + private static final int GET_METRICS_TABLES_INTERACTION_RATIO_pet = Integer.MAX_VALUE - 10000 - 3; + private static final int GET_METRICS_TABLES_INTERACTION_RATIO_user_pet = Integer.MAX_VALUE - 10000 - 4; + + private static HashMap METHOD_LOOKUP = new HashMap(); + static { + METHOD_LOOKUP.put("/list-metrics/all/", LIST_METRICS_ALL); + METHOD_LOOKUP.put("/list-metrics/gauges/", LIST_METRICS_GAUGES); + METHOD_LOOKUP.put("/list-metrics/timers/", LIST_METRICS_TIMERS); + METHOD_LOOKUP.put("/list-metrics/histograms/", LIST_METRICS_HISTOGRAMS); + METHOD_LOOKUP.put("/list-metrics/counters/", LIST_METRICS_COUNTERS); + METHOD_LOOKUP.put("/list-metrics/meters/", LIST_METRICS_METERS); + METHOD_LOOKUP.put("/get-metrics/tables/ratio/", GET_METRICS_TABLES_RATIO); + METHOD_LOOKUP.put("/get-metrics/tables/interaction/ratio/", GET_METRICS_TABLES_INTERACTION_RATIO); + METHOD_LOOKUP.put("/get-metrics/tables/interaction/ratio/user_type/", GET_METRICS_TABLES_INTERACTION_RATIO_user_type); + METHOD_LOOKUP.put("/get-metrics/tables/interaction/ratio/user/", GET_METRICS_TABLES_INTERACTION_RATIO_user); + METHOD_LOOKUP.put("/get-metrics/tables/interaction/ratio/pet/", GET_METRICS_TABLES_INTERACTION_RATIO_pet); + METHOD_LOOKUP.put("/get-metrics/tables/interaction/ratio/user_pet/", GET_METRICS_TABLES_INTERACTION_RATIO_user_pet); + + METHOD_LOOKUP.put("/get-metrics/tables/", GET_METRICS_TABLES); + } + + protected void doGet(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException { + String pathInfo = httpServletRequest.getPathInfo(); + PrintWriter printWriter = httpServletResponse.getWriter(); + + if(pathInfo.equals("/")) { + // just print out the list of URLs that are available + Iterator iterator = METHOD_LOOKUP.keySet().iterator(); + while (iterator.hasNext()) { + String url = (String) iterator.next(); + printWriter.write(url + "\n"); + } + return; + } + boolean isConfig = false; + + if(pathInfo.endsWith("/config/")) { + pathInfo = pathInfo.substring(0, pathInfo.lastIndexOf("config/")); + isConfig = true; + } + + if(METHOD_LOOKUP.containsKey(pathInfo)) { + switch(METHOD_LOOKUP.get(pathInfo)) { + case LIST_METRICS_ALL: + listAllMetrics(printWriter); + break; + case LIST_METRICS_GAUGES: + listGauges(printWriter); + break; + case LIST_METRICS_TIMERS: + listTimers(printWriter); + break; + case LIST_METRICS_HISTOGRAMS: + listHistograms(printWriter); + break; + case LIST_METRICS_COUNTERS: + listCounters(printWriter); + break; + case LIST_METRICS_METERS: + listMeters(printWriter); + break; + case GET_METRICS_TABLES: + listTables(printWriter, isConfig); + break; + case GET_METRICS_TABLES_RATIO: + listTablesRatio(printWriter, isConfig); + break; + case GET_METRICS_TABLES_INTERACTION_RATIO: + listTablesInteractionRatio(printWriter, isConfig); + break; + case GET_METRICS_TABLES_INTERACTION_RATIO_user_type: + listTablesInteractionRatioUserType(printWriter, isConfig); + break; + case GET_METRICS_TABLES_INTERACTION_RATIO_user: + listTablesInteractionRatioUser(printWriter, isConfig); + break; + case GET_METRICS_TABLES_INTERACTION_RATIO_pet: + listTablesInteractionRatioPet(printWriter, isConfig); + break; + case GET_METRICS_TABLES_INTERACTION_RATIO_user_pet: + listTablesInteractionRatioUserPet(printWriter, isConfig); + break; + default: + // unlikely to happen + } + } else { + // try and lookup the metric + printMetric(pathInfo, printWriter); + } + printWriter.flush(); + printWriter.close(); + } + + private void printMetric(String pathInfo, PrintWriter printWriter) { + MetricRegistry metricsRegistry = MetricsManager.getMetricsRegistry(); + int indexOf = pathInfo.indexOf("/config"); + if(indexOf != -1) { + String metricName = pathInfo.substring(1, indexOf); + if(metricsRegistry.getMetrics().containsKey(metricName)) { + // write out the configuration for this metric + Metric metric = metricsRegistry.getMetrics().get(metricName); + if(metric instanceof RatioGauge) { + printWriter.write("graph_title RatioGauge for " + metricName + "\n"); + printWriter.write("graph_vlabel Ratio" + "\n"); + printWriter.write("graph_category metrics\n"); + printWriter.write("RATIOGAUGE.label " + metricName + "\n"); + printWriter.write("RATIONGAUGE.draw LINE\n"); + printWriter.write("graph_args -l 0 \n"); + } else if(metric instanceof Gauge) { + printWriter.write("graph_title Gauge for " + metricName + "\n"); + printWriter.write("graph_vlabel gauge\n"); + printWriter.write("graph_category metrics\n"); + printWriter.write("GAUGE.label " + metricName + "\n"); + printWriter.write("GAUGE.draw LINE\n"); + printWriter.write("graph_args -l 0 \n"); + } else if(metric instanceof Timer) { + printWriter.write("graph_title Timer for " + metricName + "\n"); + printWriter.write("graph_vlabel timer\n"); + printWriter.write("graph_category metrics\n"); + printWriter.write("TIMER.label " + metricName + "\n"); + printWriter.write("TIMER.draw LINE\n"); + printWriter.write("graph_args -l 0 \n"); + } else if(metric instanceof Histogram) { + + } else if(metric instanceof Counter) { + + } else if(metric instanceof Meter) { + + } + } else { + printWriter.write("err\n"); + } + } + } + + private void listTables(PrintWriter printWriter, boolean isConfig) { + if(isConfig) { + // we are doing the configuration item + printWriter.write("graph_title Access for tables"); + printWriter.write("graph_vlabel access count"); + printWriter.write("graph_category metrics"); + printWriter.write("user_type.label user_type\n"); + printWriter.write("user_type.draw LINE\n"); + printWriter.write("user.label user\n"); + printWriter.write("user.draw LINE\n"); + printWriter.write("pet.label pet\n"); + printWriter.write("pet.draw LINE\n"); + printWriter.write("user_pet.label user_pet\n"); + printWriter.write("user_pet.draw LINE\n"); + printWriter.write("graph_args -l 0 "); + } else { + // we are printing out the details + printWriter.write("user_type.value " + userTypeAccess.getCount() + "\n"); + printWriter.write("user.value " + userAccess.getCount() + "\n"); + printWriter.write("pet.value " + petAccess.getCount() + "\n"); + printWriter.write("user_pet.value " + userPetAccess.getCount() + "\n"); + } + } + + private void listTablesRatio(PrintWriter printWriter, boolean isConfig) { + if(isConfig) { + // we are doing the configuration item + printWriter.write("graph_title Access ratio for tables\n"); + printWriter.write("graph_vlabel access count\n"); + printWriter.write("graph_category metrics\n"); + printWriter.write("user_type.label user_type\n"); + printWriter.write("user_type.draw LINE\n"); + printWriter.write("user.label user\n"); + printWriter.write("user.draw LINE\n"); + printWriter.write("pet.label pet\n"); + printWriter.write("pet.draw LINE\n"); + printWriter.write("user_pet.label user_pet\n"); + printWriter.write("user_pet.draw LINE\n"); + printWriter.write("graph_args -l 0 "); + } else { + // we are printing out the details + long allAccesses = 0; + allAccesses += userTypeAccess.getCount(); + allAccesses += userAccess.getCount(); + allAccesses += petAccess.getCount(); + allAccesses += userPetAccess.getCount(); + if(allAccesses == 0) { + allAccesses = 1; + } + + printWriter.write("user_type.value " + (userTypeAccess.getCount()*100)/allAccesses + "\n"); + printWriter.write("user.value " + (userAccess.getCount()*100)/allAccesses + "\n"); + printWriter.write("pet.value " + (petAccess.getCount()*100)/allAccesses + "\n"); + printWriter.write("user_pet.value " + (userPetAccess.getCount()*100)/allAccesses + "\n"); + } + } + + private void listTablesInteractionRatio(PrintWriter printWriter, boolean isConfig) { + if(isConfig) { + // we are doing the configuration item + printWriter.write("graph_title Interaction access ratio for tables\n"); + printWriter.write("graph_vlabel access count\n"); + printWriter.write("graph_category metrics\n"); + printWriter.write("user_typeFinder.label user_type Finders\n"); + printWriter.write("user_typeFinder.draw LINE\n"); + printWriter.write("user_typeCounter.label user_type Counters\n"); + printWriter.write("user_typeCounter.draw LINE\n"); + printWriter.write("user_typeQuestion.label user_type Questions\n"); + printWriter.write("user_typeQuestion.draw LINE\n"); + printWriter.write("user_typeDeleter.label user_type Deleters\n"); + printWriter.write("user_typeDeleter.draw LINE\n"); + printWriter.write("user_typeInserter.label user_type Inserters\n"); + printWriter.write("user_typeInserter.draw LINE\n"); + printWriter.write("user_typeUpdater.label user_type Updaters\n"); + printWriter.write("user_typeUpdater.draw LINE\n"); + printWriter.write("userFinder.label user Finders\n"); + printWriter.write("userFinder.draw LINE\n"); + printWriter.write("userCounter.label user Counters\n"); + printWriter.write("userCounter.draw LINE\n"); + printWriter.write("userQuestion.label user Questions\n"); + printWriter.write("userQuestion.draw LINE\n"); + printWriter.write("userDeleter.label user Deleters\n"); + printWriter.write("userDeleter.draw LINE\n"); + printWriter.write("userInserter.label user Inserters\n"); + printWriter.write("userInserter.draw LINE\n"); + printWriter.write("userUpdater.label user Updaters\n"); + printWriter.write("userUpdater.draw LINE\n"); + printWriter.write("petFinder.label pet Finders\n"); + printWriter.write("petFinder.draw LINE\n"); + printWriter.write("petCounter.label pet Counters\n"); + printWriter.write("petCounter.draw LINE\n"); + printWriter.write("petQuestion.label pet Questions\n"); + printWriter.write("petQuestion.draw LINE\n"); + printWriter.write("petDeleter.label pet Deleters\n"); + printWriter.write("petDeleter.draw LINE\n"); + printWriter.write("petInserter.label pet Inserters\n"); + printWriter.write("petInserter.draw LINE\n"); + printWriter.write("petUpdater.label pet Updaters\n"); + printWriter.write("petUpdater.draw LINE\n"); + printWriter.write("user_petFinder.label user_pet Finders\n"); + printWriter.write("user_petFinder.draw LINE\n"); + printWriter.write("user_petCounter.label user_pet Counters\n"); + printWriter.write("user_petCounter.draw LINE\n"); + printWriter.write("user_petQuestion.label user_pet Questions\n"); + printWriter.write("user_petQuestion.draw LINE\n"); + printWriter.write("user_petDeleter.label user_pet Deleters\n"); + printWriter.write("user_petDeleter.draw LINE\n"); + printWriter.write("user_petInserter.label user_pet Inserters\n"); + printWriter.write("user_petInserter.draw LINE\n"); + printWriter.write("user_petUpdater.label user_pet Updaters\n"); + printWriter.write("user_petUpdater.draw LINE\n"); + printWriter.write("graph_args -l 0 "); + } else { + // we are printing out the details + long finderAccesses = 0; + long counterAccesses = 0; + long questionAccesses = 0; + long deleterAccesses = 0; + long inserterAccesses = 0; + long updaterAccesses = 0; + + finderAccesses += userTypeFinderAccess.getCount(); + counterAccesses += userTypeCounterAccess.getCount(); + questionAccesses += userTypeQuestionAccess.getCount(); + deleterAccesses += userTypeDeleterAccess.getCount(); + inserterAccesses += userTypeInserterAccess.getCount(); + updaterAccesses += userTypeUpdaterAccess.getCount(); + finderAccesses += userFinderAccess.getCount(); + counterAccesses += userCounterAccess.getCount(); + questionAccesses += userQuestionAccess.getCount(); + deleterAccesses += userDeleterAccess.getCount(); + inserterAccesses += userInserterAccess.getCount(); + updaterAccesses += userUpdaterAccess.getCount(); + finderAccesses += petFinderAccess.getCount(); + counterAccesses += petCounterAccess.getCount(); + questionAccesses += petQuestionAccess.getCount(); + deleterAccesses += petDeleterAccess.getCount(); + inserterAccesses += petInserterAccess.getCount(); + updaterAccesses += petUpdaterAccess.getCount(); + finderAccesses += userPetFinderAccess.getCount(); + counterAccesses += userPetCounterAccess.getCount(); + questionAccesses += userPetQuestionAccess.getCount(); + deleterAccesses += userPetDeleterAccess.getCount(); + inserterAccesses += userPetInserterAccess.getCount(); + updaterAccesses += userPetUpdaterAccess.getCount(); + + if(finderAccesses == 0) { finderAccesses = 1; } + if(counterAccesses == 0) { counterAccesses = 1; } + if(questionAccesses == 0) { questionAccesses = 1; } + if(deleterAccesses == 0) { deleterAccesses = 1; } + if(inserterAccesses == 0) { inserterAccesses = 1; } + if(updaterAccesses == 0) { updaterAccesses = 1; } + + printWriter.write("user_typeFinder.value " + (userTypeFinderAccess.getCount()*100)/finderAccesses + "\n"); + printWriter.write("user_typeCounter.value " + (userTypeCounterAccess.getCount()*100)/counterAccesses + "\n"); + printWriter.write("user_typeQuestion.value " + (userTypeQuestionAccess.getCount()*100)/questionAccesses + "\n"); + printWriter.write("user_typeDeleter.value " + (userTypeDeleterAccess.getCount()*100)/deleterAccesses + "\n"); + printWriter.write("user_typeInserter.value " + (userTypeInserterAccess.getCount()*100)/inserterAccesses + "\n"); + printWriter.write("user_typeUpdater.value " + (userTypeUpdaterAccess.getCount()*100)/updaterAccesses + "\n"); + printWriter.write("userFinder.value " + (userFinderAccess.getCount()*100)/finderAccesses + "\n"); + printWriter.write("userCounter.value " + (userCounterAccess.getCount()*100)/counterAccesses + "\n"); + printWriter.write("userQuestion.value " + (userQuestionAccess.getCount()*100)/questionAccesses + "\n"); + printWriter.write("userDeleter.value " + (userDeleterAccess.getCount()*100)/deleterAccesses + "\n"); + printWriter.write("userInserter.value " + (userInserterAccess.getCount()*100)/inserterAccesses + "\n"); + printWriter.write("userUpdater.value " + (userUpdaterAccess.getCount()*100)/updaterAccesses + "\n"); + printWriter.write("petFinder.value " + (petFinderAccess.getCount()*100)/finderAccesses + "\n"); + printWriter.write("petCounter.value " + (petCounterAccess.getCount()*100)/counterAccesses + "\n"); + printWriter.write("petQuestion.value " + (petQuestionAccess.getCount()*100)/questionAccesses + "\n"); + printWriter.write("petDeleter.value " + (petDeleterAccess.getCount()*100)/deleterAccesses + "\n"); + printWriter.write("petInserter.value " + (petInserterAccess.getCount()*100)/inserterAccesses + "\n"); + printWriter.write("petUpdater.value " + (petUpdaterAccess.getCount()*100)/updaterAccesses + "\n"); + printWriter.write("user_petFinder.value " + (userPetFinderAccess.getCount()*100)/finderAccesses + "\n"); + printWriter.write("user_petCounter.value " + (userPetCounterAccess.getCount()*100)/counterAccesses + "\n"); + printWriter.write("user_petQuestion.value " + (userPetQuestionAccess.getCount()*100)/questionAccesses + "\n"); + printWriter.write("user_petDeleter.value " + (userPetDeleterAccess.getCount()*100)/deleterAccesses + "\n"); + printWriter.write("user_petInserter.value " + (userPetInserterAccess.getCount()*100)/inserterAccesses + "\n"); + printWriter.write("user_petUpdater.value " + (userPetUpdaterAccess.getCount()*100)/updaterAccesses + "\n"); + } + } + + private void listTablesInteractionRatioUserType(PrintWriter printWriter, boolean isConfig) { + if(isConfig) { + // we are doing the configuration item + printWriter.write("graph_title Interaction access ratio for table user_type\n"); + printWriter.write("graph_vlabel access count\n"); + printWriter.write("graph_category metrics\n"); + printWriter.write("user_typeFinder.label user_type Finders\n"); + printWriter.write("user_typeFinder.draw LINE\n"); + printWriter.write("user_typeCounter.label user_type Counters\n"); + printWriter.write("user_typeCounter.draw LINE\n"); + printWriter.write("user_typeQuestion.label user_type Questions\n"); + printWriter.write("user_typeQuestion.draw LINE\n"); + printWriter.write("user_typeDeleter.label user_type Deleters\n"); + printWriter.write("user_typeDeleter.draw LINE\n"); + printWriter.write("user_typeInserter.label user_type Inserters\n"); + printWriter.write("user_typeInserter.draw LINE\n"); + printWriter.write("user_typeUpdater.label user_type Updaters\n"); + printWriter.write("user_typeUpdater.draw LINE\n"); + printWriter.write("graph_args -l 0 "); + } else { + // we are printing out the details + long finderAccesses = 0; + long counterAccesses = 0; + long questionAccesses = 0; + long deleterAccesses = 0; + long inserterAccesses = 0; + long updaterAccesses = 0; + + finderAccesses += userTypeFinderAccess.getCount(); + counterAccesses += userTypeCounterAccess.getCount(); + questionAccesses += userTypeQuestionAccess.getCount(); + deleterAccesses += userTypeDeleterAccess.getCount(); + inserterAccesses += userTypeInserterAccess.getCount(); + updaterAccesses += userTypeUpdaterAccess.getCount(); + + if(finderAccesses == 0) { finderAccesses = 1; } + if(counterAccesses == 0) { counterAccesses = 1; } + if(questionAccesses == 0) { questionAccesses = 1; } + if(deleterAccesses == 0) { deleterAccesses = 1; } + if(inserterAccesses == 0) { inserterAccesses = 1; } + if(updaterAccesses == 0) { updaterAccesses = 1; } + + printWriter.write("user_typeFinder.value " + (userTypeFinderAccess.getCount()*100)/finderAccesses + "\n"); + printWriter.write("user_typeCounter.value " + (userTypeCounterAccess.getCount()*100)/counterAccesses + "\n"); + printWriter.write("user_typeQuestion.value " + (userTypeQuestionAccess.getCount()*100)/questionAccesses + "\n"); + printWriter.write("user_typeDeleter.value " + (userTypeDeleterAccess.getCount()*100)/deleterAccesses + "\n"); + printWriter.write("user_typeInserter.value " + (userTypeInserterAccess.getCount()*100)/inserterAccesses + "\n"); + printWriter.write("user_typeUpdater.value " + (userTypeUpdaterAccess.getCount()*100)/updaterAccesses + "\n"); + } + } + + private void listTablesInteractionRatioUser(PrintWriter printWriter, boolean isConfig) { + if(isConfig) { + // we are doing the configuration item + printWriter.write("graph_title Interaction access ratio for table user\n"); + printWriter.write("graph_vlabel access count\n"); + printWriter.write("graph_category metrics\n"); + printWriter.write("userFinder.label user Finders\n"); + printWriter.write("userFinder.draw LINE\n"); + printWriter.write("userCounter.label user Counters\n"); + printWriter.write("userCounter.draw LINE\n"); + printWriter.write("userQuestion.label user Questions\n"); + printWriter.write("userQuestion.draw LINE\n"); + printWriter.write("userDeleter.label user Deleters\n"); + printWriter.write("userDeleter.draw LINE\n"); + printWriter.write("userInserter.label user Inserters\n"); + printWriter.write("userInserter.draw LINE\n"); + printWriter.write("userUpdater.label user Updaters\n"); + printWriter.write("userUpdater.draw LINE\n"); + printWriter.write("graph_args -l 0 "); + } else { + // we are printing out the details + long finderAccesses = 0; + long counterAccesses = 0; + long questionAccesses = 0; + long deleterAccesses = 0; + long inserterAccesses = 0; + long updaterAccesses = 0; + + finderAccesses += userFinderAccess.getCount(); + counterAccesses += userCounterAccess.getCount(); + questionAccesses += userQuestionAccess.getCount(); + deleterAccesses += userDeleterAccess.getCount(); + inserterAccesses += userInserterAccess.getCount(); + updaterAccesses += userUpdaterAccess.getCount(); + + if(finderAccesses == 0) { finderAccesses = 1; } + if(counterAccesses == 0) { counterAccesses = 1; } + if(questionAccesses == 0) { questionAccesses = 1; } + if(deleterAccesses == 0) { deleterAccesses = 1; } + if(inserterAccesses == 0) { inserterAccesses = 1; } + if(updaterAccesses == 0) { updaterAccesses = 1; } + + printWriter.write("userFinder.value " + (userFinderAccess.getCount()*100)/finderAccesses + "\n"); + printWriter.write("userCounter.value " + (userCounterAccess.getCount()*100)/counterAccesses + "\n"); + printWriter.write("userQuestion.value " + (userQuestionAccess.getCount()*100)/questionAccesses + "\n"); + printWriter.write("userDeleter.value " + (userDeleterAccess.getCount()*100)/deleterAccesses + "\n"); + printWriter.write("userInserter.value " + (userInserterAccess.getCount()*100)/inserterAccesses + "\n"); + printWriter.write("userUpdater.value " + (userUpdaterAccess.getCount()*100)/updaterAccesses + "\n"); + } + } + + private void listTablesInteractionRatioPet(PrintWriter printWriter, boolean isConfig) { + if(isConfig) { + // we are doing the configuration item + printWriter.write("graph_title Interaction access ratio for table pet\n"); + printWriter.write("graph_vlabel access count\n"); + printWriter.write("graph_category metrics\n"); + printWriter.write("petFinder.label pet Finders\n"); + printWriter.write("petFinder.draw LINE\n"); + printWriter.write("petCounter.label pet Counters\n"); + printWriter.write("petCounter.draw LINE\n"); + printWriter.write("petQuestion.label pet Questions\n"); + printWriter.write("petQuestion.draw LINE\n"); + printWriter.write("petDeleter.label pet Deleters\n"); + printWriter.write("petDeleter.draw LINE\n"); + printWriter.write("petInserter.label pet Inserters\n"); + printWriter.write("petInserter.draw LINE\n"); + printWriter.write("petUpdater.label pet Updaters\n"); + printWriter.write("petUpdater.draw LINE\n"); + printWriter.write("graph_args -l 0 "); + } else { + // we are printing out the details + long finderAccesses = 0; + long counterAccesses = 0; + long questionAccesses = 0; + long deleterAccesses = 0; + long inserterAccesses = 0; + long updaterAccesses = 0; + + finderAccesses += petFinderAccess.getCount(); + counterAccesses += petCounterAccess.getCount(); + questionAccesses += petQuestionAccess.getCount(); + deleterAccesses += petDeleterAccess.getCount(); + inserterAccesses += petInserterAccess.getCount(); + updaterAccesses += petUpdaterAccess.getCount(); + + if(finderAccesses == 0) { finderAccesses = 1; } + if(counterAccesses == 0) { counterAccesses = 1; } + if(questionAccesses == 0) { questionAccesses = 1; } + if(deleterAccesses == 0) { deleterAccesses = 1; } + if(inserterAccesses == 0) { inserterAccesses = 1; } + if(updaterAccesses == 0) { updaterAccesses = 1; } + + printWriter.write("petFinder.value " + (petFinderAccess.getCount()*100)/finderAccesses + "\n"); + printWriter.write("petCounter.value " + (petCounterAccess.getCount()*100)/counterAccesses + "\n"); + printWriter.write("petQuestion.value " + (petQuestionAccess.getCount()*100)/questionAccesses + "\n"); + printWriter.write("petDeleter.value " + (petDeleterAccess.getCount()*100)/deleterAccesses + "\n"); + printWriter.write("petInserter.value " + (petInserterAccess.getCount()*100)/inserterAccesses + "\n"); + printWriter.write("petUpdater.value " + (petUpdaterAccess.getCount()*100)/updaterAccesses + "\n"); + } + } + + private void listTablesInteractionRatioUserPet(PrintWriter printWriter, boolean isConfig) { + if(isConfig) { + // we are doing the configuration item + printWriter.write("graph_title Interaction access ratio for table user_pet\n"); + printWriter.write("graph_vlabel access count\n"); + printWriter.write("graph_category metrics\n"); + printWriter.write("user_petFinder.label user_pet Finders\n"); + printWriter.write("user_petFinder.draw LINE\n"); + printWriter.write("user_petCounter.label user_pet Counters\n"); + printWriter.write("user_petCounter.draw LINE\n"); + printWriter.write("user_petQuestion.label user_pet Questions\n"); + printWriter.write("user_petQuestion.draw LINE\n"); + printWriter.write("user_petDeleter.label user_pet Deleters\n"); + printWriter.write("user_petDeleter.draw LINE\n"); + printWriter.write("user_petInserter.label user_pet Inserters\n"); + printWriter.write("user_petInserter.draw LINE\n"); + printWriter.write("user_petUpdater.label user_pet Updaters\n"); + printWriter.write("user_petUpdater.draw LINE\n"); + printWriter.write("graph_args -l 0 "); + } else { + // we are printing out the details + long finderAccesses = 0; + long counterAccesses = 0; + long questionAccesses = 0; + long deleterAccesses = 0; + long inserterAccesses = 0; + long updaterAccesses = 0; + + finderAccesses += userPetFinderAccess.getCount(); + counterAccesses += userPetCounterAccess.getCount(); + questionAccesses += userPetQuestionAccess.getCount(); + deleterAccesses += userPetDeleterAccess.getCount(); + inserterAccesses += userPetInserterAccess.getCount(); + updaterAccesses += userPetUpdaterAccess.getCount(); + + if(finderAccesses == 0) { finderAccesses = 1; } + if(counterAccesses == 0) { counterAccesses = 1; } + if(questionAccesses == 0) { questionAccesses = 1; } + if(deleterAccesses == 0) { deleterAccesses = 1; } + if(inserterAccesses == 0) { inserterAccesses = 1; } + if(updaterAccesses == 0) { updaterAccesses = 1; } + + printWriter.write("user_petFinder.value " + (userPetFinderAccess.getCount()*100)/finderAccesses + "\n"); + printWriter.write("user_petCounter.value " + (userPetCounterAccess.getCount()*100)/counterAccesses + "\n"); + printWriter.write("user_petQuestion.value " + (userPetQuestionAccess.getCount()*100)/questionAccesses + "\n"); + printWriter.write("user_petDeleter.value " + (userPetDeleterAccess.getCount()*100)/deleterAccesses + "\n"); + printWriter.write("user_petInserter.value " + (userPetInserterAccess.getCount()*100)/inserterAccesses + "\n"); + printWriter.write("user_petUpdater.value " + (userPetUpdaterAccess.getCount()*100)/updaterAccesses + "\n"); + } + } + + private void listAllMetrics(PrintWriter printWriter) throws IOException { + listCounters(printWriter); + + listGauges(printWriter); + + listHistograms(printWriter); + + listMeters(printWriter); + + listTimers(printWriter); + } + + private void listTimers(PrintWriter printWriter) { + MetricRegistry metricsRegistry = MetricsManager.getMetricsRegistry(); + SortedMap timers = metricsRegistry.getTimers(); + Iterator iterator = timers.keySet().iterator(); + while (iterator.hasNext()) { + String timer = (String) iterator.next(); + printWriter.write(timer + "\n"); + } + } + + private void listMeters(PrintWriter printWriter) { + MetricRegistry metricsRegistry = MetricsManager.getMetricsRegistry(); + SortedMap meters = metricsRegistry.getMeters(); + Iterator iterator = meters.keySet().iterator(); + while (iterator.hasNext()) { + String meter = (String) iterator.next(); + printWriter.write(meter + "\n"); + } + } + + private void listHistograms(PrintWriter printWriter) { + MetricRegistry metricsRegistry = MetricsManager.getMetricsRegistry(); + SortedMap histograms = metricsRegistry.getHistograms(); + Iterator iterator = histograms.keySet().iterator(); + while (iterator.hasNext()) { + String histogram = (String) iterator.next(); + printWriter.write(histogram + "\n"); + } + } + + private void listCounters(PrintWriter printWriter) { + MetricRegistry metricsRegistry = MetricsManager.getMetricsRegistry(); + SortedMap counters = metricsRegistry.getCounters(); + Iterator iterator = counters.keySet().iterator(); + while (iterator.hasNext()) { + String counter = (String) iterator.next(); + printWriter.write(counter + "\n"); + } + } + + @SuppressWarnings("rawtypes") + private void listGauges(PrintWriter printWriter) { + MetricRegistry metricsRegistry = MetricsManager.getMetricsRegistry(); + SortedMap gauges = metricsRegistry.getGauges(); + Iterator gaugeIterator = gauges.keySet().iterator(); + while (gaugeIterator.hasNext()) { + String gauge = (String) gaugeIterator.next(); + printWriter.write(gauge + "\n"); + } + } + +} diff --git a/generate/src/main/java/synapticloop/sample/h2zero/taglib/pet/CountAllTag.java b/generate/src/main/java/synapticloop/sample/h2zero/taglib/pet/CountAllTag.java new file mode 100644 index 00000000..fedeb1b7 --- /dev/null +++ b/generate/src/main/java/synapticloop/sample/h2zero/taglib/pet/CountAllTag.java @@ -0,0 +1,32 @@ +package synapticloop.sample.h2zero.taglib.pet; + +// - - - - thoughtfully generated by synapticloop h2zero - - - - +// with the use of synapticloop templar templating language +// (java-create-taglib-counter-count-all.templar) + +import javax.servlet.jsp.JspException; +import javax.servlet.jsp.PageContext; +import javax.servlet.jsp.tagext.BodyTagSupport; + +import org.apache.log4j.Logger; + +import synapticloop.sample.h2zero.counter.PetCounter; +import synapticloop.sample.h2zero.model.util.Constants; + +import synapticloop.h2zero.base.taglib.BaseVarTag; + +@SuppressWarnings("serial") +public class CountAllTag extends BaseVarTag { + // the binder is unused in code, but will generate compile problems if this + // class is no longer referenced in the h2zero file. Just a nicety for + // removing dead code + @SuppressWarnings("unused") + private static final String BINDER = Constants.PET_BINDER; + + private static final Logger LOGGER = Logger.getLogger(CountAllTag.class); + + public int doStartTag() throws JspException { + pageContext.setAttribute(var, PetCounter.countAllSilent()); + return(EVAL_BODY_INCLUDE); +} +} \ No newline at end of file diff --git a/generate/src/main/java/synapticloop/sample/h2zero/taglib/pet/FindAllTag.java b/generate/src/main/java/synapticloop/sample/h2zero/taglib/pet/FindAllTag.java new file mode 100644 index 00000000..5c66aa22 --- /dev/null +++ b/generate/src/main/java/synapticloop/sample/h2zero/taglib/pet/FindAllTag.java @@ -0,0 +1,33 @@ +package synapticloop.sample.h2zero.taglib.pet; + +// - - - - thoughtfully generated by synapticloop h2zero - - - - +// with the use of synapticloop templar templating language +// (java-create-taglib-finder-find-all.templar) + +import javax.servlet.jsp.JspException; +import javax.servlet.jsp.PageContext; +import javax.servlet.jsp.tagext.BodyTagSupport; + +import org.apache.log4j.Logger; + +import synapticloop.sample.h2zero.model.Pet; +import synapticloop.sample.h2zero.finder.PetFinder; +import synapticloop.sample.h2zero.model.util.Constants; + +import synapticloop.h2zero.base.taglib.BaseVarTag; + +@SuppressWarnings("serial") +public class FindAllTag extends BaseVarTag { + // the binder is unused in code, but will generate compile problems if this + // class is no longer referenced in the h2zero file. Just a nicety for + // removing dead code + @SuppressWarnings("unused") + private static final String BINDER = Constants.PET_BINDER; + + private static final Logger LOGGER = Logger.getLogger(FindAllTag.class); + + public int doStartTag() throws JspException { + pageContext.setAttribute(var, PetFinder.findAllSilent()); + return(EVAL_BODY_INCLUDE); +} +} \ No newline at end of file diff --git a/generate/src/main/java/synapticloop/sample/h2zero/taglib/pet/FindByPrimaryKeyTag.java b/generate/src/main/java/synapticloop/sample/h2zero/taglib/pet/FindByPrimaryKeyTag.java new file mode 100644 index 00000000..bb1a3c3c --- /dev/null +++ b/generate/src/main/java/synapticloop/sample/h2zero/taglib/pet/FindByPrimaryKeyTag.java @@ -0,0 +1,45 @@ +package synapticloop.sample.h2zero.taglib.pet; + +// - - - - thoughtfully generated by synapticloop h2zero - - - - +// with the use of synapticloop templar templating language +// (java-create-taglib-finder-find-by-primary-key.templar) + +import javax.servlet.jsp.JspException; +import javax.servlet.jsp.PageContext; +import javax.servlet.jsp.tagext.BodyTagSupport; + +import org.apache.log4j.Logger; + +import synapticloop.sample.h2zero.model.Pet; +import synapticloop.sample.h2zero.finder.PetFinder; +import synapticloop.sample.h2zero.model.util.Constants; + +import synapticloop.h2zero.base.taglib.BaseVarTag; + +@SuppressWarnings("serial") +public class FindByPrimaryKeyTag extends BaseVarTag { + // the binder is unused in code, but will generate compile problems if this + // class is no longer referenced in the h2zero file. Just a nicety for + // removing dead code + @SuppressWarnings("unused") + private static final String BINDER = Constants.PET_BINDER; + + private static final Logger LOGGER = Logger.getLogger(FindByPrimaryKeyTag.class); + + private Long primaryKey = null; + + @Override + public int doStartTag() throws JspException { + pageContext.setAttribute(var, PetFinder.findByPrimaryKeySilent(primaryKey)); + return(EVAL_BODY_INCLUDE); +} + + public Long getPrimaryKey() { + return primaryKey; + } + + public void setPrimaryKey(Long primaryKey) { + this.primaryKey = primaryKey; + } + +} \ No newline at end of file diff --git a/generate/src/main/java/synapticloop/sample/h2zero/taglib/user/CountAllTag.java b/generate/src/main/java/synapticloop/sample/h2zero/taglib/user/CountAllTag.java new file mode 100644 index 00000000..96857267 --- /dev/null +++ b/generate/src/main/java/synapticloop/sample/h2zero/taglib/user/CountAllTag.java @@ -0,0 +1,32 @@ +package synapticloop.sample.h2zero.taglib.user; + +// - - - - thoughtfully generated by synapticloop h2zero - - - - +// with the use of synapticloop templar templating language +// (java-create-taglib-counter-count-all.templar) + +import javax.servlet.jsp.JspException; +import javax.servlet.jsp.PageContext; +import javax.servlet.jsp.tagext.BodyTagSupport; + +import org.apache.log4j.Logger; + +import synapticloop.sample.h2zero.counter.UserCounter; +import synapticloop.sample.h2zero.model.util.Constants; + +import synapticloop.h2zero.base.taglib.BaseVarTag; + +@SuppressWarnings("serial") +public class CountAllTag extends BaseVarTag { + // the binder is unused in code, but will generate compile problems if this + // class is no longer referenced in the h2zero file. Just a nicety for + // removing dead code + @SuppressWarnings("unused") + private static final String BINDER = Constants.USER_BINDER; + + private static final Logger LOGGER = Logger.getLogger(CountAllTag.class); + + public int doStartTag() throws JspException { + pageContext.setAttribute(var, UserCounter.countAllSilent()); + return(EVAL_BODY_INCLUDE); +} +} \ No newline at end of file diff --git a/generate/src/main/java/synapticloop/sample/h2zero/taglib/user/CountNumberOfUsersBetweenAgeTag.java b/generate/src/main/java/synapticloop/sample/h2zero/taglib/user/CountNumberOfUsersBetweenAgeTag.java new file mode 100644 index 00000000..2df163f1 --- /dev/null +++ b/generate/src/main/java/synapticloop/sample/h2zero/taglib/user/CountNumberOfUsersBetweenAgeTag.java @@ -0,0 +1,49 @@ +package synapticloop.sample.h2zero.taglib.user; + +// - - - - thoughtfully generated by synapticloop h2zero - - - - +// with the use of synapticloop templar templating language +// (java-create-taglib-counter.templar) + +import java.sql.Date; +import java.sql.Timestamp; +import java.util.List; + +import javax.servlet.jsp.JspException; +import javax.servlet.jsp.PageContext; +import javax.servlet.jsp.tagext.BodyTagSupport; + +import org.apache.log4j.Logger; + +import synapticloop.sample.h2zero.model.util.Constants; +import synapticloop.sample.h2zero.model.User; +import synapticloop.sample.h2zero.finder.UserFinder; +import synapticloop.h2zero.base.taglib.BaseVarTag; + + +import synapticloop.sample.h2zero.counter.UserCounter; + +@SuppressWarnings("serial") +public class CountNumberOfUsersBetweenAgeTag extends BaseVarTag { + // the binder is unused in code, but will generate compile problems if this + // class is no longer referenced in the h2zero file. Just a nicety for + // removing dead code + @SuppressWarnings("unused") + private static final String BINDER = Constants.USER_BINDER; + private static final Logger LOGGER = Logger.getLogger(CountNumberOfUsersBetweenAgeTag.class); + + private Integer numAgeFrom = null; + private Integer numAgeTo = null; + + public int doStartTag() throws JspException { + pageContext.setAttribute(var, UserCounter.countNumberOfUsersBetweenAgeSilent(numAgeFrom, numAgeTo)); + return(EVAL_BODY_INCLUDE); + } + public void setNumAgeFrom(Integer numAgeFrom) { + this.numAgeFrom = numAgeFrom; + } + + public void setNumAgeTo(Integer numAgeTo) { + this.numAgeTo = numAgeTo; + } + +} \ No newline at end of file diff --git a/generate/src/main/java/synapticloop/sample/h2zero/taglib/user/CountNumberOfUsersOverAgeTag.java b/generate/src/main/java/synapticloop/sample/h2zero/taglib/user/CountNumberOfUsersOverAgeTag.java new file mode 100644 index 00000000..ebcc3e5a --- /dev/null +++ b/generate/src/main/java/synapticloop/sample/h2zero/taglib/user/CountNumberOfUsersOverAgeTag.java @@ -0,0 +1,44 @@ +package synapticloop.sample.h2zero.taglib.user; + +// - - - - thoughtfully generated by synapticloop h2zero - - - - +// with the use of synapticloop templar templating language +// (java-create-taglib-counter.templar) + +import java.sql.Date; +import java.sql.Timestamp; +import java.util.List; + +import javax.servlet.jsp.JspException; +import javax.servlet.jsp.PageContext; +import javax.servlet.jsp.tagext.BodyTagSupport; + +import org.apache.log4j.Logger; + +import synapticloop.sample.h2zero.model.util.Constants; +import synapticloop.sample.h2zero.model.User; +import synapticloop.sample.h2zero.finder.UserFinder; +import synapticloop.h2zero.base.taglib.BaseVarTag; + + +import synapticloop.sample.h2zero.counter.UserCounter; + +@SuppressWarnings("serial") +public class CountNumberOfUsersOverAgeTag extends BaseVarTag { + // the binder is unused in code, but will generate compile problems if this + // class is no longer referenced in the h2zero file. Just a nicety for + // removing dead code + @SuppressWarnings("unused") + private static final String BINDER = Constants.USER_BINDER; + private static final Logger LOGGER = Logger.getLogger(CountNumberOfUsersOverAgeTag.class); + + private Integer numAge = null; + + public int doStartTag() throws JspException { + pageContext.setAttribute(var, UserCounter.countNumberOfUsersOverAgeSilent(numAge)); + return(EVAL_BODY_INCLUDE); + } + public void setNumAge(Integer numAge) { + this.numAge = numAge; + } + +} \ No newline at end of file diff --git a/generate/src/main/java/synapticloop/sample/h2zero/taglib/user/CountNumberOfUsersTag.java b/generate/src/main/java/synapticloop/sample/h2zero/taglib/user/CountNumberOfUsersTag.java new file mode 100644 index 00000000..8cb6854b --- /dev/null +++ b/generate/src/main/java/synapticloop/sample/h2zero/taglib/user/CountNumberOfUsersTag.java @@ -0,0 +1,39 @@ +package synapticloop.sample.h2zero.taglib.user; + +// - - - - thoughtfully generated by synapticloop h2zero - - - - +// with the use of synapticloop templar templating language +// (java-create-taglib-counter.templar) + +import java.sql.Date; +import java.sql.Timestamp; +import java.util.List; + +import javax.servlet.jsp.JspException; +import javax.servlet.jsp.PageContext; +import javax.servlet.jsp.tagext.BodyTagSupport; + +import org.apache.log4j.Logger; + +import synapticloop.sample.h2zero.model.util.Constants; +import synapticloop.sample.h2zero.model.User; +import synapticloop.sample.h2zero.finder.UserFinder; +import synapticloop.h2zero.base.taglib.BaseVarTag; + + +import synapticloop.sample.h2zero.counter.UserCounter; + +@SuppressWarnings("serial") +public class CountNumberOfUsersTag extends BaseVarTag { + // the binder is unused in code, but will generate compile problems if this + // class is no longer referenced in the h2zero file. Just a nicety for + // removing dead code + @SuppressWarnings("unused") + private static final String BINDER = Constants.USER_BINDER; + private static final Logger LOGGER = Logger.getLogger(CountNumberOfUsersTag.class); + + + public int doStartTag() throws JspException { + pageContext.setAttribute(var, UserCounter.countNumberOfUsersSilent()); + return(EVAL_BODY_INCLUDE); + } +} \ No newline at end of file diff --git a/generate/src/main/java/synapticloop/sample/h2zero/taglib/user/CountUsersInAgesTag.java b/generate/src/main/java/synapticloop/sample/h2zero/taglib/user/CountUsersInAgesTag.java new file mode 100644 index 00000000..8d925e18 --- /dev/null +++ b/generate/src/main/java/synapticloop/sample/h2zero/taglib/user/CountUsersInAgesTag.java @@ -0,0 +1,44 @@ +package synapticloop.sample.h2zero.taglib.user; + +// - - - - thoughtfully generated by synapticloop h2zero - - - - +// with the use of synapticloop templar templating language +// (java-create-taglib-counter.templar) + +import java.sql.Date; +import java.sql.Timestamp; +import java.util.List; + +import javax.servlet.jsp.JspException; +import javax.servlet.jsp.PageContext; +import javax.servlet.jsp.tagext.BodyTagSupport; + +import org.apache.log4j.Logger; + +import synapticloop.sample.h2zero.model.util.Constants; +import synapticloop.sample.h2zero.model.User; +import synapticloop.sample.h2zero.finder.UserFinder; +import synapticloop.h2zero.base.taglib.BaseVarTag; + + +import synapticloop.sample.h2zero.counter.UserCounter; + +@SuppressWarnings("serial") +public class CountUsersInAgesTag extends BaseVarTag { + // the binder is unused in code, but will generate compile problems if this + // class is no longer referenced in the h2zero file. Just a nicety for + // removing dead code + @SuppressWarnings("unused") + private static final String BINDER = Constants.USER_BINDER; + private static final Logger LOGGER = Logger.getLogger(CountUsersInAgesTag.class); + + private List numAgeList = null; + + public int doStartTag() throws JspException { + pageContext.setAttribute(var, UserCounter.countUsersInAgesSilent(numAgeList)); + return(EVAL_BODY_INCLUDE); + } + public void setNumAge(List numAgeList) { + this.numAgeList = numAgeList; + } + +} \ No newline at end of file diff --git a/generate/src/main/java/synapticloop/sample/h2zero/taglib/user/DoWeHaveMoreThanTwentyUsersTag.java b/generate/src/main/java/synapticloop/sample/h2zero/taglib/user/DoWeHaveMoreThanTwentyUsersTag.java new file mode 100644 index 00000000..c05e3e3f --- /dev/null +++ b/generate/src/main/java/synapticloop/sample/h2zero/taglib/user/DoWeHaveMoreThanTwentyUsersTag.java @@ -0,0 +1,39 @@ +package synapticloop.sample.h2zero.taglib.user; + +// - - - - thoughtfully generated by synapticloop h2zero - - - - +// with the use of synapticloop templar templating language +// (java-create-taglib-question.templar) + +import java.sql.Date; +import java.sql.Timestamp; +import java.util.List; + +import javax.servlet.jsp.JspException; +import javax.servlet.jsp.PageContext; +import javax.servlet.jsp.tagext.BodyTagSupport; + +import org.apache.log4j.Logger; + +import synapticloop.sample.h2zero.model.util.Constants; +import synapticloop.sample.h2zero.model.User; +import synapticloop.sample.h2zero.finder.UserFinder; +import synapticloop.h2zero.base.taglib.BaseVarTag; + + +import synapticloop.sample.h2zero.question.UserQuestion; + +@SuppressWarnings("serial") +public class DoWeHaveMoreThanTwentyUsersTag extends BaseVarTag { + // the binder is unused in code, but will generate compile problems if this + // class is no longer referenced in the h2zero file. Just a nicety for + // removing dead code + @SuppressWarnings("unused") + private static final String BINDER = Constants.USER_BINDER; + private static final Logger LOGGER = Logger.getLogger(DoWeHaveMoreThanTwentyUsersTag.class); + + + public int doStartTag() throws JspException { + pageContext.setAttribute(var, UserQuestion.doWeHaveMoreThanTwentyUsersSilent()); + return(EVAL_BODY_INCLUDE); + } +} \ No newline at end of file diff --git a/generate/src/main/java/synapticloop/sample/h2zero/taglib/user/DoWeHaveUsersBetweenAgeExclusiveTag.java b/generate/src/main/java/synapticloop/sample/h2zero/taglib/user/DoWeHaveUsersBetweenAgeExclusiveTag.java new file mode 100644 index 00000000..549ced4d --- /dev/null +++ b/generate/src/main/java/synapticloop/sample/h2zero/taglib/user/DoWeHaveUsersBetweenAgeExclusiveTag.java @@ -0,0 +1,41 @@ +package synapticloop.sample.h2zero.taglib.user; + +// - - - - thoughtfully generated by synapticloop h2zero - - - - +// with the use of synapticloop templar templating language +// (java-create-taglib-question.templar) + +import java.sql.Date; +import java.sql.Timestamp; +import java.util.List; + +import javax.servlet.jsp.JspException; +import javax.servlet.jsp.PageContext; +import javax.servlet.jsp.tagext.BodyTagSupport; + +import org.apache.log4j.Logger; + +import synapticloop.sample.h2zero.model.util.Constants; +import synapticloop.sample.h2zero.model.User; +import synapticloop.sample.h2zero.finder.UserFinder; +import synapticloop.h2zero.base.taglib.BaseVarTag; + + +import synapticloop.sample.h2zero.question.UserQuestion; + +@SuppressWarnings("serial") +public class DoWeHaveUsersBetweenAgeExclusiveTag extends BaseVarTag { + // the binder is unused in code, but will generate compile problems if this + // class is no longer referenced in the h2zero file. Just a nicety for + // removing dead code + @SuppressWarnings("unused") + private static final String BINDER = Constants.USER_BINDER; + private static final Logger LOGGER = Logger.getLogger(DoWeHaveUsersBetweenAgeExclusiveTag.class); + + private Integer numAgeFrom = null; + private Integer numAgeTo = null; + + public int doStartTag() throws JspException { + pageContext.setAttribute(var, UserQuestion.doWeHaveUsersBetweenAgeExclusiveSilent(numAgeFrom, numAgeTo)); + return(EVAL_BODY_INCLUDE); + } +} \ No newline at end of file diff --git a/generate/src/main/java/synapticloop/sample/h2zero/taglib/user/DoWeHaveUsersInAgesTag.java b/generate/src/main/java/synapticloop/sample/h2zero/taglib/user/DoWeHaveUsersInAgesTag.java new file mode 100644 index 00000000..0296cbff --- /dev/null +++ b/generate/src/main/java/synapticloop/sample/h2zero/taglib/user/DoWeHaveUsersInAgesTag.java @@ -0,0 +1,40 @@ +package synapticloop.sample.h2zero.taglib.user; + +// - - - - thoughtfully generated by synapticloop h2zero - - - - +// with the use of synapticloop templar templating language +// (java-create-taglib-question.templar) + +import java.sql.Date; +import java.sql.Timestamp; +import java.util.List; + +import javax.servlet.jsp.JspException; +import javax.servlet.jsp.PageContext; +import javax.servlet.jsp.tagext.BodyTagSupport; + +import org.apache.log4j.Logger; + +import synapticloop.sample.h2zero.model.util.Constants; +import synapticloop.sample.h2zero.model.User; +import synapticloop.sample.h2zero.finder.UserFinder; +import synapticloop.h2zero.base.taglib.BaseVarTag; + + +import synapticloop.sample.h2zero.question.UserQuestion; + +@SuppressWarnings("serial") +public class DoWeHaveUsersInAgesTag extends BaseVarTag { + // the binder is unused in code, but will generate compile problems if this + // class is no longer referenced in the h2zero file. Just a nicety for + // removing dead code + @SuppressWarnings("unused") + private static final String BINDER = Constants.USER_BINDER; + private static final Logger LOGGER = Logger.getLogger(DoWeHaveUsersInAgesTag.class); + + private List numAgeList = null; + + public int doStartTag() throws JspException { + pageContext.setAttribute(var, UserQuestion.doWeHaveUsersInAgesSilent(numAgeList)); + return(EVAL_BODY_INCLUDE); + } +} \ No newline at end of file diff --git a/generate/src/main/java/synapticloop/sample/h2zero/taglib/user/DoesUserNameExistTag.java b/generate/src/main/java/synapticloop/sample/h2zero/taglib/user/DoesUserNameExistTag.java new file mode 100644 index 00000000..df349404 --- /dev/null +++ b/generate/src/main/java/synapticloop/sample/h2zero/taglib/user/DoesUserNameExistTag.java @@ -0,0 +1,39 @@ +package synapticloop.sample.h2zero.taglib.user; + +// - - - - thoughtfully generated by synapticloop h2zero - - - - +// with the use of synapticloop templar templating language +// (java-create-taglib-question.templar) + +import java.sql.Date; +import java.sql.Timestamp; +import java.util.List; + +import javax.servlet.jsp.JspException; +import javax.servlet.jsp.PageContext; +import javax.servlet.jsp.tagext.BodyTagSupport; + +import org.apache.log4j.Logger; + +import synapticloop.sample.h2zero.model.util.Constants; +import synapticloop.sample.h2zero.model.User; +import synapticloop.sample.h2zero.finder.UserFinder; +import synapticloop.h2zero.base.taglib.BaseVarTag; + + +import synapticloop.sample.h2zero.question.UserQuestion; + +@SuppressWarnings("serial") +public class DoesUserNameExistTag extends BaseVarTag { + // the binder is unused in code, but will generate compile problems if this + // class is no longer referenced in the h2zero file. Just a nicety for + // removing dead code + @SuppressWarnings("unused") + private static final String BINDER = Constants.USER_BINDER; + private static final Logger LOGGER = Logger.getLogger(DoesUserNameExistTag.class); + + + public int doStartTag() throws JspException { + pageContext.setAttribute(var, UserQuestion.doesUserNameExistSilent()); + return(EVAL_BODY_INCLUDE); + } +} \ No newline at end of file diff --git a/generate/src/main/java/synapticloop/sample/h2zero/taglib/user/FindAllTag.java b/generate/src/main/java/synapticloop/sample/h2zero/taglib/user/FindAllTag.java new file mode 100644 index 00000000..f60fffaf --- /dev/null +++ b/generate/src/main/java/synapticloop/sample/h2zero/taglib/user/FindAllTag.java @@ -0,0 +1,33 @@ +package synapticloop.sample.h2zero.taglib.user; + +// - - - - thoughtfully generated by synapticloop h2zero - - - - +// with the use of synapticloop templar templating language +// (java-create-taglib-finder-find-all.templar) + +import javax.servlet.jsp.JspException; +import javax.servlet.jsp.PageContext; +import javax.servlet.jsp.tagext.BodyTagSupport; + +import org.apache.log4j.Logger; + +import synapticloop.sample.h2zero.model.User; +import synapticloop.sample.h2zero.finder.UserFinder; +import synapticloop.sample.h2zero.model.util.Constants; + +import synapticloop.h2zero.base.taglib.BaseVarTag; + +@SuppressWarnings("serial") +public class FindAllTag extends BaseVarTag { + // the binder is unused in code, but will generate compile problems if this + // class is no longer referenced in the h2zero file. Just a nicety for + // removing dead code + @SuppressWarnings("unused") + private static final String BINDER = Constants.USER_BINDER; + + private static final Logger LOGGER = Logger.getLogger(FindAllTag.class); + + public int doStartTag() throws JspException { + pageContext.setAttribute(var, UserFinder.findAllSilent()); + return(EVAL_BODY_INCLUDE); +} +} \ No newline at end of file diff --git a/generate/src/main/java/synapticloop/sample/h2zero/taglib/user/FindByFlIsAliveNumAgeTag.java b/generate/src/main/java/synapticloop/sample/h2zero/taglib/user/FindByFlIsAliveNumAgeTag.java new file mode 100644 index 00000000..43ebfeb1 --- /dev/null +++ b/generate/src/main/java/synapticloop/sample/h2zero/taglib/user/FindByFlIsAliveNumAgeTag.java @@ -0,0 +1,47 @@ +package synapticloop.sample.h2zero.taglib.user; + +// - - - - thoughtfully generated by synapticloop h2zero - - - - +// with the use of synapticloop templar templating language +// (java-create-taglib-finder.templar) + +import java.sql.Date; +import java.sql.Timestamp; +import java.util.List; + +import javax.servlet.jsp.JspException; +import javax.servlet.jsp.PageContext; +import javax.servlet.jsp.tagext.BodyTagSupport; + +import org.apache.log4j.Logger; + +import synapticloop.sample.h2zero.model.util.Constants; +import synapticloop.sample.h2zero.model.User; +import synapticloop.sample.h2zero.finder.UserFinder; +import synapticloop.h2zero.base.taglib.BaseVarTag; + + +@SuppressWarnings("serial") +public class FindByFlIsAliveNumAgeTag extends BaseVarTag { + // the binder is unused in code, but will generate compile problems if this + // class is no longer referenced in the h2zero file. Just a nicety for + // removing dead code + @SuppressWarnings("unused") + private static final String BINDER = Constants.USER_BINDER; + private static final Logger LOGGER = Logger.getLogger(FindByFlIsAliveNumAgeTag.class); + + private Boolean flIsAlive = null; + private Integer numAge = null; + + public int doStartTag() throws JspException { + pageContext.setAttribute(var, UserFinder.findByFlIsAliveNumAgeSilent(flIsAlive, numAge)); + return(EVAL_BODY_INCLUDE); + } + public void setFlIsAlive(Boolean flIsAlive) { + this.flIsAlive = flIsAlive; + } + + public void setNumAge(Integer numAge) { + this.numAge = numAge; + } + +} \ No newline at end of file diff --git a/generate/src/main/java/synapticloop/sample/h2zero/taglib/user/FindByNmUsernameTag.java b/generate/src/main/java/synapticloop/sample/h2zero/taglib/user/FindByNmUsernameTag.java new file mode 100644 index 00000000..0e5c9f81 --- /dev/null +++ b/generate/src/main/java/synapticloop/sample/h2zero/taglib/user/FindByNmUsernameTag.java @@ -0,0 +1,42 @@ +package synapticloop.sample.h2zero.taglib.user; + +// - - - - thoughtfully generated by synapticloop h2zero - - - - +// with the use of synapticloop templar templating language +// (java-create-taglib-finder.templar) + +import java.sql.Date; +import java.sql.Timestamp; +import java.util.List; + +import javax.servlet.jsp.JspException; +import javax.servlet.jsp.PageContext; +import javax.servlet.jsp.tagext.BodyTagSupport; + +import org.apache.log4j.Logger; + +import synapticloop.sample.h2zero.model.util.Constants; +import synapticloop.sample.h2zero.model.User; +import synapticloop.sample.h2zero.finder.UserFinder; +import synapticloop.h2zero.base.taglib.BaseVarTag; + + +@SuppressWarnings("serial") +public class FindByNmUsernameTag extends BaseVarTag { + // the binder is unused in code, but will generate compile problems if this + // class is no longer referenced in the h2zero file. Just a nicety for + // removing dead code + @SuppressWarnings("unused") + private static final String BINDER = Constants.USER_BINDER; + private static final Logger LOGGER = Logger.getLogger(FindByNmUsernameTag.class); + + private String nmUsername = null; + + public int doStartTag() throws JspException { + pageContext.setAttribute(var, UserFinder.findByNmUsernameSilent(nmUsername)); + return(EVAL_BODY_INCLUDE); + } + public void setNmUsername(String nmUsername) { + this.nmUsername = nmUsername; + } + +} \ No newline at end of file diff --git a/generate/src/main/java/synapticloop/sample/h2zero/taglib/user/FindByNumAgeBetweenTag.java b/generate/src/main/java/synapticloop/sample/h2zero/taglib/user/FindByNumAgeBetweenTag.java new file mode 100644 index 00000000..d3aa94ef --- /dev/null +++ b/generate/src/main/java/synapticloop/sample/h2zero/taglib/user/FindByNumAgeBetweenTag.java @@ -0,0 +1,47 @@ +package synapticloop.sample.h2zero.taglib.user; + +// - - - - thoughtfully generated by synapticloop h2zero - - - - +// with the use of synapticloop templar templating language +// (java-create-taglib-finder.templar) + +import java.sql.Date; +import java.sql.Timestamp; +import java.util.List; + +import javax.servlet.jsp.JspException; +import javax.servlet.jsp.PageContext; +import javax.servlet.jsp.tagext.BodyTagSupport; + +import org.apache.log4j.Logger; + +import synapticloop.sample.h2zero.model.util.Constants; +import synapticloop.sample.h2zero.model.User; +import synapticloop.sample.h2zero.finder.UserFinder; +import synapticloop.h2zero.base.taglib.BaseVarTag; + + +@SuppressWarnings("serial") +public class FindByNumAgeBetweenTag extends BaseVarTag { + // the binder is unused in code, but will generate compile problems if this + // class is no longer referenced in the h2zero file. Just a nicety for + // removing dead code + @SuppressWarnings("unused") + private static final String BINDER = Constants.USER_BINDER; + private static final Logger LOGGER = Logger.getLogger(FindByNumAgeBetweenTag.class); + + private Integer numAgeMin = null; + private Integer numAgeMax = null; + + public int doStartTag() throws JspException { + pageContext.setAttribute(var, UserFinder.findByNumAgeBetweenSilent(numAgeMin, numAgeMax)); + return(EVAL_BODY_INCLUDE); + } + public void setNumAgeMin(Integer numAgeMin) { + this.numAgeMin = numAgeMin; + } + + public void setNumAgeMax(Integer numAgeMax) { + this.numAgeMax = numAgeMax; + } + +} \ No newline at end of file diff --git a/generate/src/main/java/synapticloop/sample/h2zero/taglib/user/FindByNumAgeInTag.java b/generate/src/main/java/synapticloop/sample/h2zero/taglib/user/FindByNumAgeInTag.java new file mode 100644 index 00000000..7d823dbd --- /dev/null +++ b/generate/src/main/java/synapticloop/sample/h2zero/taglib/user/FindByNumAgeInTag.java @@ -0,0 +1,42 @@ +package synapticloop.sample.h2zero.taglib.user; + +// - - - - thoughtfully generated by synapticloop h2zero - - - - +// with the use of synapticloop templar templating language +// (java-create-taglib-finder.templar) + +import java.sql.Date; +import java.sql.Timestamp; +import java.util.List; + +import javax.servlet.jsp.JspException; +import javax.servlet.jsp.PageContext; +import javax.servlet.jsp.tagext.BodyTagSupport; + +import org.apache.log4j.Logger; + +import synapticloop.sample.h2zero.model.util.Constants; +import synapticloop.sample.h2zero.model.User; +import synapticloop.sample.h2zero.finder.UserFinder; +import synapticloop.h2zero.base.taglib.BaseVarTag; + + +@SuppressWarnings("serial") +public class FindByNumAgeInTag extends BaseVarTag { + // the binder is unused in code, but will generate compile problems if this + // class is no longer referenced in the h2zero file. Just a nicety for + // removing dead code + @SuppressWarnings("unused") + private static final String BINDER = Constants.USER_BINDER; + private static final Logger LOGGER = Logger.getLogger(FindByNumAgeInTag.class); + + private List numAgeList = null; + + public int doStartTag() throws JspException { + pageContext.setAttribute(var, UserFinder.findByNumAgeInSilent(numAgeList)); + return(EVAL_BODY_INCLUDE); + } + public void setNumAge(List numAgeList) { + this.numAgeList = numAgeList; + } + +} \ No newline at end of file diff --git a/generate/src/main/java/synapticloop/sample/h2zero/taglib/user/FindByNumAgeTag.java b/generate/src/main/java/synapticloop/sample/h2zero/taglib/user/FindByNumAgeTag.java new file mode 100644 index 00000000..72248c7c --- /dev/null +++ b/generate/src/main/java/synapticloop/sample/h2zero/taglib/user/FindByNumAgeTag.java @@ -0,0 +1,42 @@ +package synapticloop.sample.h2zero.taglib.user; + +// - - - - thoughtfully generated by synapticloop h2zero - - - - +// with the use of synapticloop templar templating language +// (java-create-taglib-finder.templar) + +import java.sql.Date; +import java.sql.Timestamp; +import java.util.List; + +import javax.servlet.jsp.JspException; +import javax.servlet.jsp.PageContext; +import javax.servlet.jsp.tagext.BodyTagSupport; + +import org.apache.log4j.Logger; + +import synapticloop.sample.h2zero.model.util.Constants; +import synapticloop.sample.h2zero.model.User; +import synapticloop.sample.h2zero.finder.UserFinder; +import synapticloop.h2zero.base.taglib.BaseVarTag; + + +@SuppressWarnings("serial") +public class FindByNumAgeTag extends BaseVarTag { + // the binder is unused in code, but will generate compile problems if this + // class is no longer referenced in the h2zero file. Just a nicety for + // removing dead code + @SuppressWarnings("unused") + private static final String BINDER = Constants.USER_BINDER; + private static final Logger LOGGER = Logger.getLogger(FindByNumAgeTag.class); + + private Integer numAge = null; + + public int doStartTag() throws JspException { + pageContext.setAttribute(var, UserFinder.findByNumAgeSilent(numAge)); + return(EVAL_BODY_INCLUDE); + } + public void setNumAge(Integer numAge) { + this.numAge = numAge; + } + +} \ No newline at end of file diff --git a/generate/src/main/java/synapticloop/sample/h2zero/taglib/user/FindByPrimaryKeyTag.java b/generate/src/main/java/synapticloop/sample/h2zero/taglib/user/FindByPrimaryKeyTag.java new file mode 100644 index 00000000..143a22bb --- /dev/null +++ b/generate/src/main/java/synapticloop/sample/h2zero/taglib/user/FindByPrimaryKeyTag.java @@ -0,0 +1,45 @@ +package synapticloop.sample.h2zero.taglib.user; + +// - - - - thoughtfully generated by synapticloop h2zero - - - - +// with the use of synapticloop templar templating language +// (java-create-taglib-finder-find-by-primary-key.templar) + +import javax.servlet.jsp.JspException; +import javax.servlet.jsp.PageContext; +import javax.servlet.jsp.tagext.BodyTagSupport; + +import org.apache.log4j.Logger; + +import synapticloop.sample.h2zero.model.User; +import synapticloop.sample.h2zero.finder.UserFinder; +import synapticloop.sample.h2zero.model.util.Constants; + +import synapticloop.h2zero.base.taglib.BaseVarTag; + +@SuppressWarnings("serial") +public class FindByPrimaryKeyTag extends BaseVarTag { + // the binder is unused in code, but will generate compile problems if this + // class is no longer referenced in the h2zero file. Just a nicety for + // removing dead code + @SuppressWarnings("unused") + private static final String BINDER = Constants.USER_BINDER; + + private static final Logger LOGGER = Logger.getLogger(FindByPrimaryKeyTag.class); + + private Long primaryKey = null; + + @Override + public int doStartTag() throws JspException { + pageContext.setAttribute(var, UserFinder.findByPrimaryKeySilent(primaryKey)); + return(EVAL_BODY_INCLUDE); +} + + public Long getPrimaryKey() { + return primaryKey; + } + + public void setPrimaryKey(Long primaryKey) { + this.primaryKey = primaryKey; + } + +} \ No newline at end of file diff --git a/generate/src/main/java/synapticloop/sample/h2zero/taglib/user/FindByTxtAddressEmailTag.java b/generate/src/main/java/synapticloop/sample/h2zero/taglib/user/FindByTxtAddressEmailTag.java new file mode 100644 index 00000000..2f22ffe9 --- /dev/null +++ b/generate/src/main/java/synapticloop/sample/h2zero/taglib/user/FindByTxtAddressEmailTag.java @@ -0,0 +1,42 @@ +package synapticloop.sample.h2zero.taglib.user; + +// - - - - thoughtfully generated by synapticloop h2zero - - - - +// with the use of synapticloop templar templating language +// (java-create-taglib-finder.templar) + +import java.sql.Date; +import java.sql.Timestamp; +import java.util.List; + +import javax.servlet.jsp.JspException; +import javax.servlet.jsp.PageContext; +import javax.servlet.jsp.tagext.BodyTagSupport; + +import org.apache.log4j.Logger; + +import synapticloop.sample.h2zero.model.util.Constants; +import synapticloop.sample.h2zero.model.User; +import synapticloop.sample.h2zero.finder.UserFinder; +import synapticloop.h2zero.base.taglib.BaseVarTag; + + +@SuppressWarnings("serial") +public class FindByTxtAddressEmailTag extends BaseVarTag { + // the binder is unused in code, but will generate compile problems if this + // class is no longer referenced in the h2zero file. Just a nicety for + // removing dead code + @SuppressWarnings("unused") + private static final String BINDER = Constants.USER_BINDER; + private static final Logger LOGGER = Logger.getLogger(FindByTxtAddressEmailTag.class); + + private String txtAddressEmail = null; + + public int doStartTag() throws JspException { + pageContext.setAttribute(var, UserFinder.findByTxtAddressEmailSilent(txtAddressEmail)); + return(EVAL_BODY_INCLUDE); + } + public void setTxtAddressEmail(String txtAddressEmail) { + this.txtAddressEmail = txtAddressEmail; + } + +} \ No newline at end of file diff --git a/generate/src/main/java/synapticloop/sample/h2zero/taglib/user/FindByTxtAddressEmailTxtPasswordTag.java b/generate/src/main/java/synapticloop/sample/h2zero/taglib/user/FindByTxtAddressEmailTxtPasswordTag.java new file mode 100644 index 00000000..7a8bb68f --- /dev/null +++ b/generate/src/main/java/synapticloop/sample/h2zero/taglib/user/FindByTxtAddressEmailTxtPasswordTag.java @@ -0,0 +1,47 @@ +package synapticloop.sample.h2zero.taglib.user; + +// - - - - thoughtfully generated by synapticloop h2zero - - - - +// with the use of synapticloop templar templating language +// (java-create-taglib-finder.templar) + +import java.sql.Date; +import java.sql.Timestamp; +import java.util.List; + +import javax.servlet.jsp.JspException; +import javax.servlet.jsp.PageContext; +import javax.servlet.jsp.tagext.BodyTagSupport; + +import org.apache.log4j.Logger; + +import synapticloop.sample.h2zero.model.util.Constants; +import synapticloop.sample.h2zero.model.User; +import synapticloop.sample.h2zero.finder.UserFinder; +import synapticloop.h2zero.base.taglib.BaseVarTag; + + +@SuppressWarnings("serial") +public class FindByTxtAddressEmailTxtPasswordTag extends BaseVarTag { + // the binder is unused in code, but will generate compile problems if this + // class is no longer referenced in the h2zero file. Just a nicety for + // removing dead code + @SuppressWarnings("unused") + private static final String BINDER = Constants.USER_BINDER; + private static final Logger LOGGER = Logger.getLogger(FindByTxtAddressEmailTxtPasswordTag.class); + + private String txtAddressEmail = null; + private String txtPassword = null; + + public int doStartTag() throws JspException { + pageContext.setAttribute(var, UserFinder.findByTxtAddressEmailTxtPasswordSilent(txtAddressEmail, txtPassword)); + return(EVAL_BODY_INCLUDE); + } + public void setTxtAddressEmail(String txtAddressEmail) { + this.txtAddressEmail = txtAddressEmail; + } + + public void setTxtPassword(String txtPassword) { + this.txtPassword = txtPassword; + } + +} \ No newline at end of file diff --git a/generate/src/main/java/synapticloop/sample/h2zero/taglib/user/FindGroupNumAgeTag.java b/generate/src/main/java/synapticloop/sample/h2zero/taglib/user/FindGroupNumAgeTag.java new file mode 100644 index 00000000..0268ebc3 --- /dev/null +++ b/generate/src/main/java/synapticloop/sample/h2zero/taglib/user/FindGroupNumAgeTag.java @@ -0,0 +1,37 @@ +package synapticloop.sample.h2zero.taglib.user; + +// - - - - thoughtfully generated by synapticloop h2zero - - - - +// with the use of synapticloop templar templating language +// (java-create-taglib-finder.templar) + +import java.sql.Date; +import java.sql.Timestamp; +import java.util.List; + +import javax.servlet.jsp.JspException; +import javax.servlet.jsp.PageContext; +import javax.servlet.jsp.tagext.BodyTagSupport; + +import org.apache.log4j.Logger; + +import synapticloop.sample.h2zero.model.util.Constants; +import synapticloop.sample.h2zero.model.User; +import synapticloop.sample.h2zero.finder.UserFinder; +import synapticloop.h2zero.base.taglib.BaseVarTag; + + +@SuppressWarnings("serial") +public class FindGroupNumAgeTag extends BaseVarTag { + // the binder is unused in code, but will generate compile problems if this + // class is no longer referenced in the h2zero file. Just a nicety for + // removing dead code + @SuppressWarnings("unused") + private static final String BINDER = Constants.USER_BINDER; + private static final Logger LOGGER = Logger.getLogger(FindGroupNumAgeTag.class); + + + public int doStartTag() throws JspException { + pageContext.setAttribute(var, UserFinder.findGroupNumAgeSilent()); + return(EVAL_BODY_INCLUDE); + } +} \ No newline at end of file diff --git a/generate/src/main/java/synapticloop/sample/h2zero/taglib/user/FindNmUserDtmSignupTag.java b/generate/src/main/java/synapticloop/sample/h2zero/taglib/user/FindNmUserDtmSignupTag.java new file mode 100644 index 00000000..a79329e3 --- /dev/null +++ b/generate/src/main/java/synapticloop/sample/h2zero/taglib/user/FindNmUserDtmSignupTag.java @@ -0,0 +1,37 @@ +package synapticloop.sample.h2zero.taglib.user; + +// - - - - thoughtfully generated by synapticloop h2zero - - - - +// with the use of synapticloop templar templating language +// (java-create-taglib-finder.templar) + +import java.sql.Date; +import java.sql.Timestamp; +import java.util.List; + +import javax.servlet.jsp.JspException; +import javax.servlet.jsp.PageContext; +import javax.servlet.jsp.tagext.BodyTagSupport; + +import org.apache.log4j.Logger; + +import synapticloop.sample.h2zero.model.util.Constants; +import synapticloop.sample.h2zero.model.User; +import synapticloop.sample.h2zero.finder.UserFinder; +import synapticloop.h2zero.base.taglib.BaseVarTag; + + +@SuppressWarnings("serial") +public class FindNmUserDtmSignupTag extends BaseVarTag { + // the binder is unused in code, but will generate compile problems if this + // class is no longer referenced in the h2zero file. Just a nicety for + // removing dead code + @SuppressWarnings("unused") + private static final String BINDER = Constants.USER_BINDER; + private static final Logger LOGGER = Logger.getLogger(FindNmUserDtmSignupTag.class); + + + public int doStartTag() throws JspException { + pageContext.setAttribute(var, UserFinder.findNmUserDtmSignupSilent()); + return(EVAL_BODY_INCLUDE); + } +} \ No newline at end of file diff --git a/generate/src/main/java/synapticloop/sample/h2zero/taglib/userPet/CountAllTag.java b/generate/src/main/java/synapticloop/sample/h2zero/taglib/userPet/CountAllTag.java new file mode 100644 index 00000000..86a68426 --- /dev/null +++ b/generate/src/main/java/synapticloop/sample/h2zero/taglib/userPet/CountAllTag.java @@ -0,0 +1,32 @@ +package synapticloop.sample.h2zero.taglib.userPet; + +// - - - - thoughtfully generated by synapticloop h2zero - - - - +// with the use of synapticloop templar templating language +// (java-create-taglib-counter-count-all.templar) + +import javax.servlet.jsp.JspException; +import javax.servlet.jsp.PageContext; +import javax.servlet.jsp.tagext.BodyTagSupport; + +import org.apache.log4j.Logger; + +import synapticloop.sample.h2zero.counter.UserPetCounter; +import synapticloop.sample.h2zero.model.util.Constants; + +import synapticloop.h2zero.base.taglib.BaseVarTag; + +@SuppressWarnings("serial") +public class CountAllTag extends BaseVarTag { + // the binder is unused in code, but will generate compile problems if this + // class is no longer referenced in the h2zero file. Just a nicety for + // removing dead code + @SuppressWarnings("unused") + private static final String BINDER = Constants.USER_PET_BINDER; + + private static final Logger LOGGER = Logger.getLogger(CountAllTag.class); + + public int doStartTag() throws JspException { + pageContext.setAttribute(var, UserPetCounter.countAllSilent()); + return(EVAL_BODY_INCLUDE); +} +} \ No newline at end of file diff --git a/generate/src/main/java/synapticloop/sample/h2zero/taglib/userPet/FindAllTag.java b/generate/src/main/java/synapticloop/sample/h2zero/taglib/userPet/FindAllTag.java new file mode 100644 index 00000000..75ee8a7a --- /dev/null +++ b/generate/src/main/java/synapticloop/sample/h2zero/taglib/userPet/FindAllTag.java @@ -0,0 +1,33 @@ +package synapticloop.sample.h2zero.taglib.userPet; + +// - - - - thoughtfully generated by synapticloop h2zero - - - - +// with the use of synapticloop templar templating language +// (java-create-taglib-finder-find-all.templar) + +import javax.servlet.jsp.JspException; +import javax.servlet.jsp.PageContext; +import javax.servlet.jsp.tagext.BodyTagSupport; + +import org.apache.log4j.Logger; + +import synapticloop.sample.h2zero.model.UserPet; +import synapticloop.sample.h2zero.finder.UserPetFinder; +import synapticloop.sample.h2zero.model.util.Constants; + +import synapticloop.h2zero.base.taglib.BaseVarTag; + +@SuppressWarnings("serial") +public class FindAllTag extends BaseVarTag { + // the binder is unused in code, but will generate compile problems if this + // class is no longer referenced in the h2zero file. Just a nicety for + // removing dead code + @SuppressWarnings("unused") + private static final String BINDER = Constants.USER_PET_BINDER; + + private static final Logger LOGGER = Logger.getLogger(FindAllTag.class); + + public int doStartTag() throws JspException { + pageContext.setAttribute(var, UserPetFinder.findAllSilent()); + return(EVAL_BODY_INCLUDE); +} +} \ No newline at end of file diff --git a/generate/src/main/java/synapticloop/sample/h2zero/taglib/userPet/FindByPrimaryKeyTag.java b/generate/src/main/java/synapticloop/sample/h2zero/taglib/userPet/FindByPrimaryKeyTag.java new file mode 100644 index 00000000..686eabe4 --- /dev/null +++ b/generate/src/main/java/synapticloop/sample/h2zero/taglib/userPet/FindByPrimaryKeyTag.java @@ -0,0 +1,45 @@ +package synapticloop.sample.h2zero.taglib.userPet; + +// - - - - thoughtfully generated by synapticloop h2zero - - - - +// with the use of synapticloop templar templating language +// (java-create-taglib-finder-find-by-primary-key.templar) + +import javax.servlet.jsp.JspException; +import javax.servlet.jsp.PageContext; +import javax.servlet.jsp.tagext.BodyTagSupport; + +import org.apache.log4j.Logger; + +import synapticloop.sample.h2zero.model.UserPet; +import synapticloop.sample.h2zero.finder.UserPetFinder; +import synapticloop.sample.h2zero.model.util.Constants; + +import synapticloop.h2zero.base.taglib.BaseVarTag; + +@SuppressWarnings("serial") +public class FindByPrimaryKeyTag extends BaseVarTag { + // the binder is unused in code, but will generate compile problems if this + // class is no longer referenced in the h2zero file. Just a nicety for + // removing dead code + @SuppressWarnings("unused") + private static final String BINDER = Constants.USER_PET_BINDER; + + private static final Logger LOGGER = Logger.getLogger(FindByPrimaryKeyTag.class); + + private Long primaryKey = null; + + @Override + public int doStartTag() throws JspException { + pageContext.setAttribute(var, UserPetFinder.findByPrimaryKeySilent(primaryKey)); + return(EVAL_BODY_INCLUDE); +} + + public Long getPrimaryKey() { + return primaryKey; + } + + public void setPrimaryKey(Long primaryKey) { + this.primaryKey = primaryKey; + } + +} \ No newline at end of file diff --git a/generate/src/main/java/synapticloop/sample/h2zero/taglib/userType/CountAllTag.java b/generate/src/main/java/synapticloop/sample/h2zero/taglib/userType/CountAllTag.java new file mode 100644 index 00000000..bf2ace02 --- /dev/null +++ b/generate/src/main/java/synapticloop/sample/h2zero/taglib/userType/CountAllTag.java @@ -0,0 +1,32 @@ +package synapticloop.sample.h2zero.taglib.userType; + +// - - - - thoughtfully generated by synapticloop h2zero - - - - +// with the use of synapticloop templar templating language +// (java-create-taglib-counter-count-all.templar) + +import javax.servlet.jsp.JspException; +import javax.servlet.jsp.PageContext; +import javax.servlet.jsp.tagext.BodyTagSupport; + +import org.apache.log4j.Logger; + +import synapticloop.sample.h2zero.counter.UserTypeCounter; +import synapticloop.sample.h2zero.model.util.Constants; + +import synapticloop.h2zero.base.taglib.BaseVarTag; + +@SuppressWarnings("serial") +public class CountAllTag extends BaseVarTag { + // the binder is unused in code, but will generate compile problems if this + // class is no longer referenced in the h2zero file. Just a nicety for + // removing dead code + @SuppressWarnings("unused") + private static final String BINDER = Constants.USER_TYPE_BINDER; + + private static final Logger LOGGER = Logger.getLogger(CountAllTag.class); + + public int doStartTag() throws JspException { + pageContext.setAttribute(var, UserTypeCounter.countAllSilent()); + return(EVAL_BODY_INCLUDE); +} +} \ No newline at end of file diff --git a/generate/src/main/java/synapticloop/sample/h2zero/taglib/userType/FindAllTag.java b/generate/src/main/java/synapticloop/sample/h2zero/taglib/userType/FindAllTag.java new file mode 100644 index 00000000..08a8f7ff --- /dev/null +++ b/generate/src/main/java/synapticloop/sample/h2zero/taglib/userType/FindAllTag.java @@ -0,0 +1,32 @@ +package synapticloop.sample.h2zero.taglib.userType; + +// - - - - thoughtfully generated by synapticloop h2zero - - - - +// with the use of synapticloop templar templating language +// (java-create-taglib-finder-find-all.templar) + +import javax.servlet.jsp.JspException; +import javax.servlet.jsp.PageContext; +import javax.servlet.jsp.tagext.BodyTagSupport; + +import org.apache.log4j.Logger; + +import synapticloop.sample.h2zero.model.UserType; +import synapticloop.sample.h2zero.model.util.Constants; + +import synapticloop.h2zero.base.taglib.BaseVarTag; + +@SuppressWarnings("serial") +public class FindAllTag extends BaseVarTag { + // the binder is unused in code, but will generate compile problems if this + // class is no longer referenced in the h2zero file. Just a nicety for + // removing dead code + @SuppressWarnings("unused") + private static final String BINDER = Constants.USER_TYPE_BINDER; + + private static final Logger LOGGER = Logger.getLogger(FindAllTag.class); + + public int doStartTag() throws JspException { + pageContext.setAttribute(var, UserType.ALL); + return(EVAL_BODY_INCLUDE); +} +} \ No newline at end of file diff --git a/generate/src/main/java/synapticloop/sample/h2zero/taglib/userType/FindByPrimaryKeyTag.java b/generate/src/main/java/synapticloop/sample/h2zero/taglib/userType/FindByPrimaryKeyTag.java new file mode 100644 index 00000000..ee9d1167 --- /dev/null +++ b/generate/src/main/java/synapticloop/sample/h2zero/taglib/userType/FindByPrimaryKeyTag.java @@ -0,0 +1,44 @@ +package synapticloop.sample.h2zero.taglib.userType; + +// - - - - thoughtfully generated by synapticloop h2zero - - - - +// with the use of synapticloop templar templating language +// (java-create-taglib-finder-find-by-primary-key.templar) + +import javax.servlet.jsp.JspException; +import javax.servlet.jsp.PageContext; +import javax.servlet.jsp.tagext.BodyTagSupport; + +import org.apache.log4j.Logger; + +import synapticloop.sample.h2zero.model.UserType; +import synapticloop.sample.h2zero.model.util.Constants; + +import synapticloop.h2zero.base.taglib.BaseVarTag; + +@SuppressWarnings("serial") +public class FindByPrimaryKeyTag extends BaseVarTag { + // the binder is unused in code, but will generate compile problems if this + // class is no longer referenced in the h2zero file. Just a nicety for + // removing dead code + @SuppressWarnings("unused") + private static final String BINDER = Constants.USER_TYPE_BINDER; + + private static final Logger LOGGER = Logger.getLogger(FindByPrimaryKeyTag.class); + + private Long primaryKey = null; + + @Override + public int doStartTag() throws JspException { + pageContext.setAttribute(var, UserType.ALL_LOOKUP.get(primaryKey)); + return(EVAL_BODY_INCLUDE); +} + + public Long getPrimaryKey() { + return primaryKey; + } + + public void setPrimaryKey(Long primaryKey) { + this.primaryKey = primaryKey; + } + +} \ No newline at end of file diff --git a/generate/src/main/java/synapticloop/sample/h2zero/updater/PetUpdater.java b/generate/src/main/java/synapticloop/sample/h2zero/updater/PetUpdater.java new file mode 100644 index 00000000..0d71991c --- /dev/null +++ b/generate/src/main/java/synapticloop/sample/h2zero/updater/PetUpdater.java @@ -0,0 +1,32 @@ +package synapticloop.sample.h2zero.updater; + +// - - - - thoughtfully generated by synapticloop h2zero - - - - +// with the use of synapticloop templar templating language +// (java-create-updater.templar) + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.SQLException; +import java.sql.Types; +import java.sql.Timestamp; + +import synapticloop.h2zero.base.manager.ConnectionManager; + +import synapticloop.sample.h2zero.finder.PetFinder; +import synapticloop.sample.h2zero.model.util.Constants; + +public class PetUpdater { + // the binder is unused in code, but will generate compile problems if this + // class is no longer referenced in the h2zero file. Just a nicety for + // removing dead code + @SuppressWarnings("unused") + private static final String BINDER = Constants.PET_BINDER; + + // static fields generated by synapticloop h20 + private static final String SQL_UPDATE_START = "update pet "; + + // static fields generated from the user input + + private PetUpdater() {} + +} \ No newline at end of file diff --git a/generate/src/main/java/synapticloop/sample/h2zero/updater/UserPetUpdater.java b/generate/src/main/java/synapticloop/sample/h2zero/updater/UserPetUpdater.java new file mode 100644 index 00000000..3b08903c --- /dev/null +++ b/generate/src/main/java/synapticloop/sample/h2zero/updater/UserPetUpdater.java @@ -0,0 +1,32 @@ +package synapticloop.sample.h2zero.updater; + +// - - - - thoughtfully generated by synapticloop h2zero - - - - +// with the use of synapticloop templar templating language +// (java-create-updater.templar) + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.SQLException; +import java.sql.Types; +import java.sql.Timestamp; + +import synapticloop.h2zero.base.manager.ConnectionManager; + +import synapticloop.sample.h2zero.finder.UserPetFinder; +import synapticloop.sample.h2zero.model.util.Constants; + +public class UserPetUpdater { + // the binder is unused in code, but will generate compile problems if this + // class is no longer referenced in the h2zero file. Just a nicety for + // removing dead code + @SuppressWarnings("unused") + private static final String BINDER = Constants.USER_PET_BINDER; + + // static fields generated by synapticloop h20 + private static final String SQL_UPDATE_START = "update user_pet "; + + // static fields generated from the user input + + private UserPetUpdater() {} + +} \ No newline at end of file diff --git a/generate/src/main/java/synapticloop/sample/h2zero/updater/UserUpdater.java b/generate/src/main/java/synapticloop/sample/h2zero/updater/UserUpdater.java new file mode 100644 index 00000000..c399c24a --- /dev/null +++ b/generate/src/main/java/synapticloop/sample/h2zero/updater/UserUpdater.java @@ -0,0 +1,32 @@ +package synapticloop.sample.h2zero.updater; + +// - - - - thoughtfully generated by synapticloop h2zero - - - - +// with the use of synapticloop templar templating language +// (java-create-updater.templar) + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.SQLException; +import java.sql.Types; +import java.sql.Timestamp; + +import synapticloop.h2zero.base.manager.ConnectionManager; + +import synapticloop.sample.h2zero.finder.UserFinder; +import synapticloop.sample.h2zero.model.util.Constants; + +public class UserUpdater { + // the binder is unused in code, but will generate compile problems if this + // class is no longer referenced in the h2zero file. Just a nicety for + // removing dead code + @SuppressWarnings("unused") + private static final String BINDER = Constants.USER_BINDER; + + // static fields generated by synapticloop h20 + private static final String SQL_UPDATE_START = "update user "; + + // static fields generated from the user input + + private UserUpdater() {} + +} \ No newline at end of file diff --git a/generate/src/main/java/synapticloop/sample/h2zero/util/DatabaseCheckerHelper.java b/generate/src/main/java/synapticloop/sample/h2zero/util/DatabaseCheckerHelper.java new file mode 100644 index 00000000..b454d977 --- /dev/null +++ b/generate/src/main/java/synapticloop/sample/h2zero/util/DatabaseCheckerHelper.java @@ -0,0 +1,146 @@ +package synapticloop.sample.h2zero.util; + +import java.sql.Connection; +import java.sql.DatabaseMetaData; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; +import java.util.Iterator; + +import org.apache.log4j.Logger; + +import synapticloop.h2zero.base.manager.ConnectionManager; +public class DatabaseCheckerHelper { + private static final Logger LOGGER = Logger.getLogger(DatabaseCheckerHelper.class); + + private Set allTables = new HashSet(); + private Map> allTableFields = new HashMap>(); + + private static final String[] ALL_TABLE_NAMES = { "user_type", "user", "pet", "user_pet" }; + private static final String[] ALL_TABLE_FIELD_NAMES = { "user_type.id_user_type", "user_type.nm_user_type", + "user.id_user", "user.id_user_type", "user.fl_is_alive", "user.num_age", "user.nm_username", "user.txt_address_email", "user.txt_password", "user.dtm_signup", + "pet.id_pet", "pet.nm_pet", "pet.num_age", "pet.flt_weight", "pet.dt_birthday", + "user_pet.id_user_pet", "user_pet.id_user", "user_pet.id_pet" + }; + + private void initialiseDataStructures() { + for (int i = 0; i < ALL_TABLE_NAMES.length; i++) { + String allTableName = ALL_TABLE_NAMES[i]; + allTables.add(allTableName); + } + + for (int i = 0; i < ALL_TABLE_FIELD_NAMES.length; i++) { + String allTableFieldName = ALL_TABLE_FIELD_NAMES[i]; + String[] split = allTableFieldName.split("\\."); + String table = split[0]; + String field = split[1]; + if(allTableFields.containsKey(table)) { + allTableFields.get(table).add(field); + } else { + Set hashSet = new HashSet(); + hashSet.add(field); + allTableFields.put(table, hashSet); + } + } + } + + private boolean areTablesCorrect() { + boolean isDatabaseCorrect = true; + Connection connection = null; + ResultSet tablesResultSet = null; + + try { + connection = ConnectionManager.getConnection(); + DatabaseMetaData databaseMetaData = connection.getMetaData(); + tablesResultSet = databaseMetaData.getTables("macdaddy", null, "%", new String[] { "TABLE" }); + while(tablesResultSet.next()) { + String tableName = tablesResultSet.getString("TABLE_NAME"); + if(allTables.contains(tableName)) { + LOGGER.info("Table '" + tableName + "' exists in the h2zero file and in the database."); + } else { + LOGGER.fatal("Table '" + tableName + "' exists in the database but not in the h2zero file."); + LOGGER.fatal("SQL COMMAND -> DROP TABLE " + tableName + ";"); + } + allTables.remove(tableName); + } + + // now go through the tableNames and see what is left... + Iterator allTablesIterator = allTables.iterator(); + while (allTablesIterator.hasNext()) { + String tableName = allTablesIterator.next(); + LOGGER.fatal("Table '" + tableName + "' exists in the h2zero file, but not in the database."); + LOGGER.fatal("SQL COMMAND -> CREATE TABLE " + tableName + ";"); + // now we need to remove this from the all table fields lookup as it won't be found and we will get spurious + // errors + allTableFields.remove(tableName); + isDatabaseCorrect = false; + } + + } catch (SQLException sqlex) { + // do nothing + } finally { + ConnectionManager.closeAll(tablesResultSet, null, connection); + } + + return(isDatabaseCorrect); + } + + private boolean areTableFieldsCorrect() { + boolean isDatabaseCorrect = true; + // now it is time to check all of the fields for all of the tables + Connection connection = null; + ResultSet columns = null; + try { + connection = ConnectionManager.getConnection(); + DatabaseMetaData databaseMetaData = connection.getMetaData(); + columns = databaseMetaData.getColumns("macdaddy", null, "%", "%"); + while(columns.next()) { + String tableName = columns.getString("TABLE_NAME"); + String columnName = columns.getString("COLUMN_NAME"); + + // this will be picked up by the previous check + if(allTableFields.containsKey(tableName)) { + if(allTableFields.get(tableName).contains(columnName)) { + LOGGER.info("table.field '" + tableName + "." + columnName + "' exists in the h2zero file and in the database."); + } else { + LOGGER.fatal("table.field '" + tableName + "." + columnName + "' exists in the h2zero file, but not in the database."); + LOGGER.fatal("SQL COMMAND -> ALTER TABLE " + tableName + " ADD COLUMN " + columnName + ";"); + isDatabaseCorrect = false; + } + allTableFields.get(tableName).remove(columnName); + } else { + LOGGER.warn("Refusing to check '" + tableName + "." + columnName + "' as the table does not exist in the database."); + } + } + + // now go through everything that is left + Iterator allTableFieldsIterator = allTableFields.keySet().iterator(); + while (allTableFieldsIterator.hasNext()) { + String tableName = allTableFieldsIterator.next(); + Set hashSet = allTableFields.get(tableName); + Iterator iterator = hashSet.iterator(); + while (iterator.hasNext()) { + String columnName = iterator.next(); + LOGGER.fatal("SQL COMMAND -> ALTER TABLE " + tableName + " DROP COLUMN " + columnName + ";"); + isDatabaseCorrect = false; + + } + } + } catch (SQLException sqlex) { + // do nothing + } finally { + ConnectionManager.closeAll(columns, null, connection); + } + + return(isDatabaseCorrect); + } + + public boolean isDatabaseCorrect() { + initialiseDataStructures(); + return(areTablesCorrect() && areTableFieldsCorrect()); + } + +} diff --git a/generate/src/main/sql/create-database.sql b/generate/src/main/sql/create-database.sql new file mode 100644 index 00000000..be058379 --- /dev/null +++ b/generate/src/main/sql/create-database.sql @@ -0,0 +1,98 @@ +-- - - - - thoughtfully generated by synapticloop h2zero - - - - +-- with the use of synapticloop templar templating language +-- (sql-create-database.templar) + +-- the following will stop mysql from outputting 'notes' as warnings +set sql_notes=0; +drop database if exists sample; +create database sample; + +use sample; + +-- +-- This is the user type table, which is a constant-generated table for all +-- of the user types. This enables quick and easy lookups from within the code +-- for values that do not change. +-- +drop table if exists user_type; +show warnings; + +create table user_type ( + id_user_type bigint not null auto_increment, + nm_user_type varchar(32) not null, + primary key(id_user_type) +) engine=innodb default charset=UTF8; + +-- show any warnings that are applicable +show warnings; + +-- The user_type table is defined as being constant +-- insert the values + +SET SESSION SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; +insert into user_type values(1, 'normal'); +SET SESSION SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; +insert into user_type values(2, 'special'); +SET SESSION SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; +insert into user_type values(3, 'admin'); +SET SESSION SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; +insert into user_type values(4, 'super admin'); + + +drop table if exists user; +show warnings; + +create table user ( + id_user bigint not null auto_increment, + id_user_type bigint not null, + fl_is_alive boolean null default '0', + num_age int not null, + nm_username varchar(64) not null, + txt_address_email varchar(256) not null, + txt_password varchar(32) not null, + dtm_signup datetime null, + primary key(id_user), + unique index (nm_username), + unique index (txt_address_email(255)), + unique index (txt_password), + index (id_user_type), + index (fl_is_alive), + foreign key (id_user_type) references user_type (id_user_type) +) engine=innodb default charset=UTF8; + +-- show any warnings that are applicable +show warnings; + +drop table if exists pet; +show warnings; + +create table pet ( + id_pet bigint not null auto_increment, + nm_pet boolean null default '0', + num_age int not null, + flt_weight float(6,1) null, + dt_birthday date null, + primary key(id_pet), + index (nm_pet) +) engine=innodb default charset=UTF8; + +-- show any warnings that are applicable +show warnings; + +drop table if exists user_pet; +show warnings; + +create table user_pet ( + id_user_pet bigint not null auto_increment, + id_user bigint not null, + id_pet bigint not null, + primary key(id_user_pet), + index (id_user), + index (id_pet), + foreign key (id_user) references user (id_user), + foreign key (id_pet) references pet (id_pet) +) engine=innodb default charset=UTF8; + +-- show any warnings that are applicable +show warnings; + diff --git a/generate/src/main/webapps/WEB-INF/tld/blogslicr.tld b/generate/src/main/webapps/WEB-INF/tld/blogslicr.tld new file mode 100644 index 00000000..2dd1c166 --- /dev/null +++ b/generate/src/main/webapps/WEB-INF/tld/blogslicr.tld @@ -0,0 +1,1184 @@ + + + + + + blogslicr tag library definitions + Thoughtfully generated by h2zero and templar from synapticloop + file: tld-create-library.templar + + blogslicr Tag Library + 1.2 + blogslicr + + + + + generated tag for the find by primary key method + + BlogFindByPrimaryKey + blogslicr.taglib.blog.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + BlogFindAll + blogslicr.taglib.{table.javaFieldName}.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the count all + + BlogCountAll + blogslicr.taglib.blog.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the findAllActive + + BlogFindAllActive + blogslicr.taglib.blog.FindAllActiveTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the countAllFlIsActive + + BlogCountAllFlIsActive + blogslicr.taglib.blog.CountAllFlIsActiveTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the flIsActive variable + + flIsActive + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + generated tag for the find by primary key method + + PhraseCategoryMapperFindByPrimaryKey + blogslicr.taglib.phraseCategoryMapper.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + PhraseCategoryMapperFindAll + blogslicr.taglib.{table.javaFieldName}.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the count all + + PhraseCategoryMapperCountAll + blogslicr.taglib.phraseCategoryMapper.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the findByTxtDefaultCategory + + PhraseCategoryMapperFindByTxtDefaultCategory + blogslicr.taglib.phraseCategoryMapper.FindByTxtDefaultCategoryTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the txtDefaultCategory variable + + txtDefaultCategory + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the findByTxtDefaultCategoryPhraseTxtCategories + + PhraseCategoryMapperFindByTxtDefaultCategoryPhraseTxtCategories + blogslicr.taglib.phraseCategoryMapper.FindByTxtDefaultCategoryPhraseTxtCategoriesTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the txtDefaultCategory variable + + txtDefaultCategory + true + true + + + + Bind the txtPhrase variable + + txtPhrase + true + true + + + + Bind the txtCategories variable + + txtCategories + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + generated tag for the find by primary key method + + FeedMapperFindByPrimaryKey + blogslicr.taglib.feedMapper.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + FeedMapperFindAll + blogslicr.taglib.{table.javaFieldName}.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the count all + + FeedMapperCountAll + blogslicr.taglib.feedMapper.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + generated tag for the find by primary key method + + FeedFindByPrimaryKey + blogslicr.taglib.feed.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + FeedFindAll + blogslicr.taglib.{table.javaFieldName}.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the count all + + FeedCountAll + blogslicr.taglib.feed.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the findAllActive + + FeedFindAllActive + blogslicr.taglib.feed.FindAllActiveTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + generated tag for the find by primary key method + + DefaultFeedCategoryMapperFindByPrimaryKey + blogslicr.taglib.defaultFeedCategoryMapper.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + DefaultFeedCategoryMapperFindAll + blogslicr.taglib.{table.javaFieldName}.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the count all + + DefaultFeedCategoryMapperCountAll + blogslicr.taglib.defaultFeedCategoryMapper.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + generated tag for the find by primary key method + + EntryFindByPrimaryKey + blogslicr.taglib.entry.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + EntryFindAll + blogslicr.taglib.{table.javaFieldName}.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the count all + + EntryCountAll + blogslicr.taglib.entry.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the findByTxtGuid + + EntryFindByTxtGuid + blogslicr.taglib.entry.FindByTxtGuidTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the txtGuid variable + + txtGuid + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + generated tag for the find by primary key method + + CategoryFindByPrimaryKey + blogslicr.taglib.category.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + CategoryFindAll + blogslicr.taglib.{table.javaFieldName}.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the count all + + CategoryCountAll + blogslicr.taglib.category.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the findByTxtCategory + + CategoryFindByTxtCategory + blogslicr.taglib.category.FindByTxtCategoryTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the txtCategory variable + + txtCategory + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the hasCategory + + CategoryHasCategory + blogslicr.taglib.category.HasCategoryTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the txtCategory variable + + txtCategory + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + generated tag for the find by primary key method + + EntryCategoryFindByPrimaryKey + blogslicr.taglib.entryCategory.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + EntryCategoryFindAll + blogslicr.taglib.{table.javaFieldName}.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the count all + + EntryCategoryCountAll + blogslicr.taglib.entryCategory.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the findCategoriesByIdEntry + + EntryCategoryFindCategoriesByIdEntry + blogslicr.taglib.entryCategory.FindCategoriesByIdEntryTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idEntry variable + + idEntry + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + generated tag for the find by primary key method + + CategoryReplacementFindByPrimaryKey + blogslicr.taglib.categoryReplacement.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + CategoryReplacementFindAll + blogslicr.taglib.{table.javaFieldName}.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the count all + + CategoryReplacementCountAll + blogslicr.taglib.categoryReplacement.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + generated tag for the find by primary key method + + RegistrationFindByPrimaryKey + blogslicr.taglib.registration.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + RegistrationFindAll + blogslicr.taglib.{table.javaFieldName}.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the count all + + RegistrationCountAll + blogslicr.taglib.registration.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + diff --git a/generate/src/main/webapps/WEB-INF/tld/insityou.tld b/generate/src/main/webapps/WEB-INF/tld/insityou.tld new file mode 100644 index 00000000..95779bb4 --- /dev/null +++ b/generate/src/main/webapps/WEB-INF/tld/insityou.tld @@ -0,0 +1,16692 @@ + + + + + + insityou tag library definitions + Thoughtfully generated by h2zero and templar from synapticloop + file: tld-create-library.templar + + insityou Tag Library + 1.2 + insityou + + + + + This is an in-built tag for the find by primary key method on the entity_type table + + EntityTypeFindByPrimaryKey + insityou.viewer.h2zero.taglib.entityType.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + EntityTypeFindAll + insityou.viewer.h2zero.taglib.entityType.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByIdEntityType on the entity_type table + + EntityTypeFindByIdEntityType + insityou.viewer.h2zero.taglib.entityType.FindByIdEntityTypeTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idEntityType variable + + idEntityType + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the entity_type table + + EntityTypeCountAll + insityou.viewer.h2zero.taglib.entityType.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the relationship_type table + + RelationshipTypeFindByPrimaryKey + insityou.viewer.h2zero.taglib.relationshipType.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + RelationshipTypeFindAll + insityou.viewer.h2zero.taglib.relationshipType.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the relationship_type table + + RelationshipTypeCountAll + insityou.viewer.h2zero.taglib.relationshipType.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the core_message_type table + + CoreMessageTypeFindByPrimaryKey + insityou.viewer.h2zero.taglib.coreMessageType.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + CoreMessageTypeFindAll + insityou.viewer.h2zero.taglib.coreMessageType.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByNmCoreMessageType on the core_message_type table + + CoreMessageTypeFindByNmCoreMessageType + insityou.viewer.h2zero.taglib.coreMessageType.FindByNmCoreMessageTypeTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the nmCoreMessageType variable + + nmCoreMessageType + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the core_message_type table + + CoreMessageTypeCountAll + insityou.viewer.h2zero.taglib.coreMessageType.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the access_level table + + AccessLevelFindByPrimaryKey + insityou.viewer.h2zero.taglib.accessLevel.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + AccessLevelFindAll + insityou.viewer.h2zero.taglib.accessLevel.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the access_level table + + AccessLevelCountAll + insityou.viewer.h2zero.taglib.accessLevel.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the contingency_type table + + ContingencyTypeFindByPrimaryKey + insityou.viewer.h2zero.taglib.contingencyType.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + ContingencyTypeFindAll + insityou.viewer.h2zero.taglib.contingencyType.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the contingency_type table + + ContingencyTypeCountAll + insityou.viewer.h2zero.taglib.contingencyType.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the obj table + + ObjFindByPrimaryKey + insityou.viewer.h2zero.taglib.obj.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + ObjFindAll + insityou.viewer.h2zero.taglib.obj.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByIdObj on the obj table + + ObjFindByIdObj + insityou.viewer.h2zero.taglib.obj.FindByIdObjTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idObj variable + + idObj + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the obj table + + ObjCountAll + insityou.viewer.h2zero.taglib.obj.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the obj_floor table + + ObjFloorFindByPrimaryKey + insityou.viewer.h2zero.taglib.objFloor.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + ObjFloorFindAll + insityou.viewer.h2zero.taglib.objFloor.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the obj_floor table + + ObjFloorCountAll + insityou.viewer.h2zero.taglib.objFloor.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the isy_file table + + IsyFileFindByPrimaryKey + insityou.viewer.h2zero.taglib.isyFile.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + IsyFileFindAll + insityou.viewer.h2zero.taglib.isyFile.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByIdIsyFile on the isy_file table + + IsyFileFindByIdIsyFile + insityou.viewer.h2zero.taglib.isyFile.FindByIdIsyFileTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idIsyFile variable + + idIsyFile + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findMaxPrimaryKey on the isy_file table + + IsyFileFindMaxPrimaryKey + insityou.viewer.h2zero.taglib.isyFile.FindMaxPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the isy_file table + + IsyFileCountAll + insityou.viewer.h2zero.taglib.isyFile.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the building_plan table + + BuildingPlanFindByPrimaryKey + insityou.viewer.h2zero.taglib.buildingPlan.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + BuildingPlanFindAll + insityou.viewer.h2zero.taglib.buildingPlan.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByNmBuildingPlan on the building_plan table + + BuildingPlanFindByNmBuildingPlan + insityou.viewer.h2zero.taglib.buildingPlan.FindByNmBuildingPlanTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the nmBuildingPlan variable + + nmBuildingPlan + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdBuildingPlan on the building_plan table + + BuildingPlanFindByIdBuildingPlan + insityou.viewer.h2zero.taglib.buildingPlan.FindByIdBuildingPlanTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idBuildingPlan variable + + idBuildingPlan + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdObj on the building_plan table + + BuildingPlanFindByIdObj + insityou.viewer.h2zero.taglib.buildingPlan.FindByIdObjTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idObj variable + + idObj + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdIsyFile on the building_plan table + + BuildingPlanFindByIdIsyFile + insityou.viewer.h2zero.taglib.buildingPlan.FindByIdIsyFileTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idIsyFile variable + + idIsyFile + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findAllActiveOrdered on the building_plan table + + BuildingPlanFindAllActiveOrdered + insityou.viewer.h2zero.taglib.buildingPlan.FindAllActiveOrderedTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the building_plan table + + BuildingPlanCountAll + insityou.viewer.h2zero.taglib.buildingPlan.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the dxf_type table + + DxfTypeFindByPrimaryKey + insityou.viewer.h2zero.taglib.dxfType.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + DxfTypeFindAll + insityou.viewer.h2zero.taglib.dxfType.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the dxf_type table + + DxfTypeCountAll + insityou.viewer.h2zero.taglib.dxfType.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the dxf table + + DxfFindByPrimaryKey + insityou.viewer.h2zero.taglib.dxf.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + DxfFindAll + insityou.viewer.h2zero.taglib.dxf.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByIdBuildingPlan on the dxf table + + DxfFindByIdBuildingPlan + insityou.viewer.h2zero.taglib.dxf.FindByIdBuildingPlanTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idBuildingPlan variable + + idBuildingPlan + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the dxf table + + DxfCountAll + insityou.viewer.h2zero.taglib.dxf.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the building_plan_json table + + BuildingPlanJsonFindByPrimaryKey + insityou.viewer.h2zero.taglib.buildingPlanJson.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + BuildingPlanJsonFindAll + insityou.viewer.h2zero.taglib.buildingPlanJson.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByIdBuildingPlanOrdered on the building_plan_json table + + BuildingPlanJsonFindByIdBuildingPlanOrdered + insityou.viewer.h2zero.taglib.buildingPlanJson.FindByIdBuildingPlanOrderedTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idBuildingPlan variable + + idBuildingPlan + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdScenarioNumFloor on the building_plan_json table + + BuildingPlanJsonFindByIdScenarioNumFloor + insityou.viewer.h2zero.taglib.buildingPlanJson.FindByIdScenarioNumFloorTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idScenario variable + + idScenario + true + true + + + + Bind the numFloor variable + + numFloor + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the building_plan_json table + + BuildingPlanJsonCountAll + insityou.viewer.h2zero.taglib.buildingPlanJson.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + counter tag generated tag for the countByIdScenario + + BuildingPlanJsonCountByIdScenario + insityou.viewer.h2zero.taglib.buildingPlanJson.CountByIdScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the seat table + + SeatFindByPrimaryKey + insityou.viewer.h2zero.taglib.seat.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + SeatFindAll + insityou.viewer.h2zero.taglib.seat.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByIdBuildingPlan on the seat table + + SeatFindByIdBuildingPlan + insityou.viewer.h2zero.taglib.seat.FindByIdBuildingPlanTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idBuildingPlan variable + + idBuildingPlan + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdSeat on the seat table + + SeatFindByIdSeat + insityou.viewer.h2zero.taglib.seat.FindByIdSeatTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idSeat variable + + idSeat + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdCoreGenerated on the seat table + + SeatFindByIdCoreGenerated + insityou.viewer.h2zero.taglib.seat.FindByIdCoreGeneratedTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idCoreGenerated variable + + idCoreGenerated + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findDistinctNumFloor on the seat table + + SeatFindDistinctNumFloor + insityou.viewer.h2zero.taglib.seat.FindDistinctNumFloorTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdBuildingPlanNumFloor on the seat table + + SeatFindByIdBuildingPlanNumFloor + insityou.viewer.h2zero.taglib.seat.FindByIdBuildingPlanNumFloorTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idBuildingPlan variable + + idBuildingPlan + true + true + + + + Bind the numFloor variable + + numFloor + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdScenarioNumFloor on the seat table + + SeatFindByIdScenarioNumFloor + insityou.viewer.h2zero.taglib.seat.FindByIdScenarioNumFloorTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idScenario variable + + idScenario + true + true + + + + Bind the numFloor variable + + numFloor + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findWithinBoundsForFloor on the seat table + + SeatFindWithinBoundsForFloor + insityou.viewer.h2zero.taglib.seat.FindWithinBoundsForFloorTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the exCoordsFrom variable + + exCoordsFrom + true + true + + + + Bind the exCoordsTo variable + + exCoordsTo + true + true + + + + Bind the whyCoordsFrom variable + + whyCoordsFrom + true + true + + + + Bind the whyCoordsTo variable + + whyCoordsTo + true + true + + + + Bind the numFloor variable + + numFloor + true + true + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findUnAllocatedSeatsByIdScenarioNumFloor on the seat table + + SeatFindUnAllocatedSeatsByIdScenarioNumFloor + insityou.viewer.h2zero.taglib.seat.FindUnAllocatedSeatsByIdScenarioNumFloorTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idScenario variable + + idScenario + true + true + + + + Bind the numFloor variable + + numFloor + true + true + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdScenarioIdCoreGenerated on the seat table + + SeatFindByIdScenarioIdCoreGenerated + insityou.viewer.h2zero.taglib.seat.FindByIdScenarioIdCoreGeneratedTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idScenario variable + + idScenario + true + true + + + + Bind the idCoreGenerated variable + + idCoreGenerated + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the seat table + + SeatCountAll + insityou.viewer.h2zero.taglib.seat.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the node table + + NodeFindByPrimaryKey + insityou.viewer.h2zero.taglib.node.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + NodeFindAll + insityou.viewer.h2zero.taglib.node.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByIdBuildingPlan on the node table + + NodeFindByIdBuildingPlan + insityou.viewer.h2zero.taglib.node.FindByIdBuildingPlanTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idBuildingPlan variable + + idBuildingPlan + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the node table + + NodeCountAll + insityou.viewer.h2zero.taglib.node.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the project table + + ProjectFindByPrimaryKey + insityou.viewer.h2zero.taglib.project.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + ProjectFindAll + insityou.viewer.h2zero.taglib.project.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByNmProject on the project table + + ProjectFindByNmProject + insityou.viewer.h2zero.taglib.project.FindByNmProjectTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the nmProject variable + + nmProject + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByProjectSize on the project table + + ProjectFindByProjectSize + insityou.viewer.h2zero.taglib.project.FindByProjectSizeTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idProject variable + + idProject + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the project table + + ProjectCountAll + insityou.viewer.h2zero.taglib.project.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the building table + + BuildingFindByPrimaryKey + insityou.viewer.h2zero.taglib.building.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + BuildingFindAll + insityou.viewer.h2zero.taglib.building.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the building table + + BuildingCountAll + insityou.viewer.h2zero.taglib.building.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the department table + + DepartmentFindByPrimaryKey + insityou.viewer.h2zero.taglib.department.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + DepartmentFindAll + insityou.viewer.h2zero.taglib.department.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByNmDepartment on the department table + + DepartmentFindByNmDepartment + insityou.viewer.h2zero.taglib.department.FindByNmDepartmentTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the nmDepartment variable + + nmDepartment + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdParentDepartment on the department table + + DepartmentFindByIdParentDepartment + insityou.viewer.h2zero.taglib.department.FindByIdParentDepartmentTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idDepartmentParent variable + + idDepartmentParent + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByFlIsClustered on the department table + + DepartmentFindByFlIsClustered + insityou.viewer.h2zero.taglib.department.FindByFlIsClusteredTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the flIsClustered variable + + flIsClustered + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findIdDepartmentIdParentDepartment on the department table + + DepartmentFindIdDepartmentIdParentDepartment + insityou.viewer.h2zero.taglib.department.FindIdDepartmentIdParentDepartmentTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the department table + + DepartmentCountAll + insityou.viewer.h2zero.taglib.department.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the person table + + PersonFindByPrimaryKey + insityou.viewer.h2zero.taglib.person.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + PersonFindAll + insityou.viewer.h2zero.taglib.person.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByFlIsEntity on the person table + + PersonFindByFlIsEntity + insityou.viewer.h2zero.taglib.person.FindByFlIsEntityTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the flIsEntity variable + + flIsEntity + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdPerson on the person table + + PersonFindByIdPerson + insityou.viewer.h2zero.taglib.person.FindByIdPersonTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idPerson variable + + idPerson + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByTxtAddressEmail on the person table + + PersonFindByTxtAddressEmail + insityou.viewer.h2zero.taglib.person.FindByTxtAddressEmailTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the txtAddressEmail variable + + txtAddressEmail + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByNumEmployee on the person table + + PersonFindByNumEmployee + insityou.viewer.h2zero.taglib.person.FindByNumEmployeeTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the numEmployee variable + + numEmployee + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByTxtForgottenPasswordInLastTwoHours on the person table + + PersonFindByTxtForgottenPasswordInLastTwoHours + insityou.viewer.h2zero.taglib.person.FindByTxtForgottenPasswordInLastTwoHoursTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the txtForgottenPassword variable + + txtForgottenPassword + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByPersonSize on the person table + + PersonFindByPersonSize + insityou.viewer.h2zero.taglib.person.FindByPersonSizeTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idPerson variable + + idPerson + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByDepartment on the person table + + PersonFindByDepartment + insityou.viewer.h2zero.taglib.person.FindByDepartmentTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idDepartment variable + + idDepartment + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findNumberOfPersInDept on the person table + + PersonFindNumberOfPersInDept + insityou.viewer.h2zero.taglib.person.FindNumberOfPersInDeptTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idDepartment variable + + idDepartment + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByDepartmentAssociation on the person table + + PersonFindByDepartmentAssociation + insityou.viewer.h2zero.taglib.person.FindByDepartmentAssociationTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idManager variable + + idManager + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the person table + + PersonCountAll + insityou.viewer.h2zero.taglib.person.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the person_attribute table + + PersonAttributeFindByPrimaryKey + insityou.viewer.h2zero.taglib.personAttribute.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + PersonAttributeFindAll + insityou.viewer.h2zero.taglib.personAttribute.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the person_attribute table + + PersonAttributeCountAll + insityou.viewer.h2zero.taglib.personAttribute.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the project_attribute table + + ProjectAttributeFindByPrimaryKey + insityou.viewer.h2zero.taglib.projectAttribute.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + ProjectAttributeFindAll + insityou.viewer.h2zero.taglib.projectAttribute.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByIdType on the project_attribute table + + ProjectAttributeFindByIdType + insityou.viewer.h2zero.taglib.projectAttribute.FindByIdTypeTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idProjectAttribute variable + + idProjectAttribute + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findAllSortedByNmType on the project_attribute table + + ProjectAttributeFindAllSortedByNmType + insityou.viewer.h2zero.taglib.projectAttribute.FindAllSortedByNmTypeTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the project_attribute table + + ProjectAttributeCountAll + insityou.viewer.h2zero.taglib.projectAttribute.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the zone table + + ZoneFindByPrimaryKey + insityou.viewer.h2zero.taglib.zone.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + ZoneFindAll + insityou.viewer.h2zero.taglib.zone.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByIdZone on the zone table + + ZoneFindByIdZone + insityou.viewer.h2zero.taglib.zone.FindByIdZoneTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idZone variable + + idZone + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the zone table + + ZoneCountAll + insityou.viewer.h2zero.taglib.zone.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the department_building_relationship table + + DepartmentBuildingRelationshipFindByPrimaryKey + insityou.viewer.h2zero.taglib.departmentBuildingRelationship.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + DepartmentBuildingRelationshipFindAll + insityou.viewer.h2zero.taglib.departmentBuildingRelationship.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByIdDepartmentSource on the department_building_relationship table + + DepartmentBuildingRelationshipFindByIdDepartmentSource + insityou.viewer.h2zero.taglib.departmentBuildingRelationship.FindByIdDepartmentSourceTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idDepartmentSource variable + + idDepartmentSource + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdBuildingDestination on the department_building_relationship table + + DepartmentBuildingRelationshipFindByIdBuildingDestination + insityou.viewer.h2zero.taglib.departmentBuildingRelationship.FindByIdBuildingDestinationTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idBuildingDestination variable + + idBuildingDestination + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdCreator on the department_building_relationship table + + DepartmentBuildingRelationshipFindByIdCreator + insityou.viewer.h2zero.taglib.departmentBuildingRelationship.FindByIdCreatorTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idDepartmentBuildingRelationship variable + + idDepartmentBuildingRelationship + true + true + + + + Bind the idCreator variable + + idCreator + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByDestinationAndSource on the department_building_relationship table + + DepartmentBuildingRelationshipFindByDestinationAndSource + insityou.viewer.h2zero.taglib.departmentBuildingRelationship.FindByDestinationAndSourceTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idDepartmentSource variable + + idDepartmentSource + true + true + + + + Bind the idBuildingDestination variable + + idBuildingDestination + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the department_building_relationship table + + DepartmentBuildingRelationshipCountAll + insityou.viewer.h2zero.taglib.departmentBuildingRelationship.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the department_department_relationship table + + DepartmentDepartmentRelationshipFindByPrimaryKey + insityou.viewer.h2zero.taglib.departmentDepartmentRelationship.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + DepartmentDepartmentRelationshipFindAll + insityou.viewer.h2zero.taglib.departmentDepartmentRelationship.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByIdDepartmentDestination on the department_department_relationship table + + DepartmentDepartmentRelationshipFindByIdDepartmentDestination + insityou.viewer.h2zero.taglib.departmentDepartmentRelationship.FindByIdDepartmentDestinationTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idDepartmentDestination variable + + idDepartmentDestination + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdDepartmentSource on the department_department_relationship table + + DepartmentDepartmentRelationshipFindByIdDepartmentSource + insityou.viewer.h2zero.taglib.departmentDepartmentRelationship.FindByIdDepartmentSourceTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idDepartmentSource variable + + idDepartmentSource + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdCreator on the department_department_relationship table + + DepartmentDepartmentRelationshipFindByIdCreator + insityou.viewer.h2zero.taglib.departmentDepartmentRelationship.FindByIdCreatorTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idDepartmentDepartmentRelationship variable + + idDepartmentDepartmentRelationship + true + true + + + + Bind the idCreator variable + + idCreator + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByDestinationAndSource on the department_department_relationship table + + DepartmentDepartmentRelationshipFindByDestinationAndSource + insityou.viewer.h2zero.taglib.departmentDepartmentRelationship.FindByDestinationAndSourceTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idDepartmentSource variable + + idDepartmentSource + true + true + + + + Bind the idDepartmentDestination variable + + idDepartmentDestination + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdSourceAndIdDestination on the department_department_relationship table + + DepartmentDepartmentRelationshipFindByIdSourceAndIdDestination + insityou.viewer.h2zero.taglib.departmentDepartmentRelationship.FindByIdSourceAndIdDestinationTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idDepartmentSource variable + + idDepartmentSource + true + true + + + + Bind the idDepartmentDestination variable + + idDepartmentDestination + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the department_department_relationship table + + DepartmentDepartmentRelationshipCountAll + insityou.viewer.h2zero.taglib.departmentDepartmentRelationship.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the project_building_relationship table + + ProjectBuildingRelationshipFindByPrimaryKey + insityou.viewer.h2zero.taglib.projectBuildingRelationship.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + ProjectBuildingRelationshipFindAll + insityou.viewer.h2zero.taglib.projectBuildingRelationship.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByIdProjectSource on the project_building_relationship table + + ProjectBuildingRelationshipFindByIdProjectSource + insityou.viewer.h2zero.taglib.projectBuildingRelationship.FindByIdProjectSourceTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idProjectSource variable + + idProjectSource + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdBuildingDestination on the project_building_relationship table + + ProjectBuildingRelationshipFindByIdBuildingDestination + insityou.viewer.h2zero.taglib.projectBuildingRelationship.FindByIdBuildingDestinationTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idBuildingDestination variable + + idBuildingDestination + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdCreator on the project_building_relationship table + + ProjectBuildingRelationshipFindByIdCreator + insityou.viewer.h2zero.taglib.projectBuildingRelationship.FindByIdCreatorTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idProjectBuildingRelationship variable + + idProjectBuildingRelationship + true + true + + + + Bind the idCreator variable + + idCreator + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByDestinationAndSource on the project_building_relationship table + + ProjectBuildingRelationshipFindByDestinationAndSource + insityou.viewer.h2zero.taglib.projectBuildingRelationship.FindByDestinationAndSourceTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idProjectSource variable + + idProjectSource + true + true + + + + Bind the idBuildingDestination variable + + idBuildingDestination + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the project_building_relationship table + + ProjectBuildingRelationshipCountAll + insityou.viewer.h2zero.taglib.projectBuildingRelationship.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the project_person_attribute_relationship table + + ProjectPersonAttributeRelationshipFindByPrimaryKey + insityou.viewer.h2zero.taglib.projectPersonAttributeRelationship.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + ProjectPersonAttributeRelationshipFindAll + insityou.viewer.h2zero.taglib.projectPersonAttributeRelationship.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByIdProjectSource on the project_person_attribute_relationship table + + ProjectPersonAttributeRelationshipFindByIdProjectSource + insityou.viewer.h2zero.taglib.projectPersonAttributeRelationship.FindByIdProjectSourceTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idProjectSource variable + + idProjectSource + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdPersonAttributeDestination on the project_person_attribute_relationship table + + ProjectPersonAttributeRelationshipFindByIdPersonAttributeDestination + insityou.viewer.h2zero.taglib.projectPersonAttributeRelationship.FindByIdPersonAttributeDestinationTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idPersonAttributeDestination variable + + idPersonAttributeDestination + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdCreator on the project_person_attribute_relationship table + + ProjectPersonAttributeRelationshipFindByIdCreator + insityou.viewer.h2zero.taglib.projectPersonAttributeRelationship.FindByIdCreatorTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idProjectPersonAttributeRelationship variable + + idProjectPersonAttributeRelationship + true + true + + + + Bind the idCreator variable + + idCreator + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByDestinationAndSource on the project_person_attribute_relationship table + + ProjectPersonAttributeRelationshipFindByDestinationAndSource + insityou.viewer.h2zero.taglib.projectPersonAttributeRelationship.FindByDestinationAndSourceTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idProjectSource variable + + idProjectSource + true + true + + + + Bind the idPersonAttributeDestination variable + + idPersonAttributeDestination + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the project_person_attribute_relationship table + + ProjectPersonAttributeRelationshipCountAll + insityou.viewer.h2zero.taglib.projectPersonAttributeRelationship.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the project_project_relationship table + + ProjectProjectRelationshipFindByPrimaryKey + insityou.viewer.h2zero.taglib.projectProjectRelationship.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + ProjectProjectRelationshipFindAll + insityou.viewer.h2zero.taglib.projectProjectRelationship.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByIdProjectSource on the project_project_relationship table + + ProjectProjectRelationshipFindByIdProjectSource + insityou.viewer.h2zero.taglib.projectProjectRelationship.FindByIdProjectSourceTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idProjectSource variable + + idProjectSource + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdProjectDestination on the project_project_relationship table + + ProjectProjectRelationshipFindByIdProjectDestination + insityou.viewer.h2zero.taglib.projectProjectRelationship.FindByIdProjectDestinationTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idProjectDestination variable + + idProjectDestination + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdCreator on the project_project_relationship table + + ProjectProjectRelationshipFindByIdCreator + insityou.viewer.h2zero.taglib.projectProjectRelationship.FindByIdCreatorTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idProjectProjectRelationship variable + + idProjectProjectRelationship + true + true + + + + Bind the idCreator variable + + idCreator + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByDestinationAndSource on the project_project_relationship table + + ProjectProjectRelationshipFindByDestinationAndSource + insityou.viewer.h2zero.taglib.projectProjectRelationship.FindByDestinationAndSourceTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idProjectSource variable + + idProjectSource + true + true + + + + Bind the idProjectDestination variable + + idProjectDestination + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdSourceAndIdDestination on the project_project_relationship table + + ProjectProjectRelationshipFindByIdSourceAndIdDestination + insityou.viewer.h2zero.taglib.projectProjectRelationship.FindByIdSourceAndIdDestinationTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idProjectSource variable + + idProjectSource + true + true + + + + Bind the idProjectDestination variable + + idProjectDestination + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the project_project_relationship table + + ProjectProjectRelationshipCountAll + insityou.viewer.h2zero.taglib.projectProjectRelationship.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the person_department_relationship table + + PersonDepartmentRelationshipFindByPrimaryKey + insityou.viewer.h2zero.taglib.personDepartmentRelationship.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + PersonDepartmentRelationshipFindAll + insityou.viewer.h2zero.taglib.personDepartmentRelationship.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByIdPersonSource on the person_department_relationship table + + PersonDepartmentRelationshipFindByIdPersonSource + insityou.viewer.h2zero.taglib.personDepartmentRelationship.FindByIdPersonSourceTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idPersonSource variable + + idPersonSource + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdDepartmentDestination on the person_department_relationship table + + PersonDepartmentRelationshipFindByIdDepartmentDestination + insityou.viewer.h2zero.taglib.personDepartmentRelationship.FindByIdDepartmentDestinationTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idDepartmentDestination variable + + idDepartmentDestination + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdCreator on the person_department_relationship table + + PersonDepartmentRelationshipFindByIdCreator + insityou.viewer.h2zero.taglib.personDepartmentRelationship.FindByIdCreatorTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idPersonDepartmentRelationship variable + + idPersonDepartmentRelationship + true + true + + + + Bind the idCreator variable + + idCreator + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findAllByUserFlIsEntity on the person_department_relationship table + + PersonDepartmentRelationshipFindAllByUserFlIsEntity + insityou.viewer.h2zero.taglib.personDepartmentRelationship.FindAllByUserFlIsEntityTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByDestinationAndSource on the person_department_relationship table + + PersonDepartmentRelationshipFindByDestinationAndSource + insityou.viewer.h2zero.taglib.personDepartmentRelationship.FindByDestinationAndSourceTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idPersonSource variable + + idPersonSource + true + true + + + + Bind the idDepartmentDestination variable + + idDepartmentDestination + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdSourceAndIdDestination on the person_department_relationship table + + PersonDepartmentRelationshipFindByIdSourceAndIdDestination + insityou.viewer.h2zero.taglib.personDepartmentRelationship.FindByIdSourceAndIdDestinationTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idPersonSource variable + + idPersonSource + true + true + + + + Bind the idDepartmentDestination variable + + idDepartmentDestination + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the person_department_relationship table + + PersonDepartmentRelationshipCountAll + insityou.viewer.h2zero.taglib.personDepartmentRelationship.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the person_person_attribute_relationship table + + PersonPersonAttributeRelationshipFindByPrimaryKey + insityou.viewer.h2zero.taglib.personPersonAttributeRelationship.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + PersonPersonAttributeRelationshipFindAll + insityou.viewer.h2zero.taglib.personPersonAttributeRelationship.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByIdPersonSource on the person_person_attribute_relationship table + + PersonPersonAttributeRelationshipFindByIdPersonSource + insityou.viewer.h2zero.taglib.personPersonAttributeRelationship.FindByIdPersonSourceTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idPersonSource variable + + idPersonSource + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdPersonAttributeDestination on the person_person_attribute_relationship table + + PersonPersonAttributeRelationshipFindByIdPersonAttributeDestination + insityou.viewer.h2zero.taglib.personPersonAttributeRelationship.FindByIdPersonAttributeDestinationTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idPersonAttributeDestination variable + + idPersonAttributeDestination + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdCreator on the person_person_attribute_relationship table + + PersonPersonAttributeRelationshipFindByIdCreator + insityou.viewer.h2zero.taglib.personPersonAttributeRelationship.FindByIdCreatorTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idPersonPersonAttributeRelationship variable + + idPersonPersonAttributeRelationship + true + true + + + + Bind the idCreator variable + + idCreator + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findAllByPersonFlIsEntity on the person_person_attribute_relationship table + + PersonPersonAttributeRelationshipFindAllByPersonFlIsEntity + insityou.viewer.h2zero.taglib.personPersonAttributeRelationship.FindAllByPersonFlIsEntityTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByDestinationAndSource on the person_person_attribute_relationship table + + PersonPersonAttributeRelationshipFindByDestinationAndSource + insityou.viewer.h2zero.taglib.personPersonAttributeRelationship.FindByDestinationAndSourceTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idPersonSource variable + + idPersonSource + true + true + + + + Bind the idPersonAttributeDestination variable + + idPersonAttributeDestination + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the person_person_attribute_relationship table + + PersonPersonAttributeRelationshipCountAll + insityou.viewer.h2zero.taglib.personPersonAttributeRelationship.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the person_project_relationship table + + PersonProjectRelationshipFindByPrimaryKey + insityou.viewer.h2zero.taglib.personProjectRelationship.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + PersonProjectRelationshipFindAll + insityou.viewer.h2zero.taglib.personProjectRelationship.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByIdPersonSource on the person_project_relationship table + + PersonProjectRelationshipFindByIdPersonSource + insityou.viewer.h2zero.taglib.personProjectRelationship.FindByIdPersonSourceTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idPersonSource variable + + idPersonSource + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdProjectDestination on the person_project_relationship table + + PersonProjectRelationshipFindByIdProjectDestination + insityou.viewer.h2zero.taglib.personProjectRelationship.FindByIdProjectDestinationTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idProjectDestination variable + + idProjectDestination + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdCreator on the person_project_relationship table + + PersonProjectRelationshipFindByIdCreator + insityou.viewer.h2zero.taglib.personProjectRelationship.FindByIdCreatorTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idPersonProjectRelationship variable + + idPersonProjectRelationship + true + true + + + + Bind the idCreator variable + + idCreator + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findAllByPersonFlIsEntity on the person_project_relationship table + + PersonProjectRelationshipFindAllByPersonFlIsEntity + insityou.viewer.h2zero.taglib.personProjectRelationship.FindAllByPersonFlIsEntityTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByDestinationAndSource on the person_project_relationship table + + PersonProjectRelationshipFindByDestinationAndSource + insityou.viewer.h2zero.taglib.personProjectRelationship.FindByDestinationAndSourceTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idPersonSource variable + + idPersonSource + true + true + + + + Bind the idProjectDestination variable + + idProjectDestination + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdSourceAndIdDestination on the person_project_relationship table + + PersonProjectRelationshipFindByIdSourceAndIdDestination + insityou.viewer.h2zero.taglib.personProjectRelationship.FindByIdSourceAndIdDestinationTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idPersonSource variable + + idPersonSource + true + true + + + + Bind the idProjectDestination variable + + idProjectDestination + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the person_project_relationship table + + PersonProjectRelationshipCountAll + insityou.viewer.h2zero.taglib.personProjectRelationship.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the project_project_attribute_relationship table + + ProjectProjectAttributeRelationshipFindByPrimaryKey + insityou.viewer.h2zero.taglib.projectProjectAttributeRelationship.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + ProjectProjectAttributeRelationshipFindAll + insityou.viewer.h2zero.taglib.projectProjectAttributeRelationship.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByIdProjectSource on the project_project_attribute_relationship table + + ProjectProjectAttributeRelationshipFindByIdProjectSource + insityou.viewer.h2zero.taglib.projectProjectAttributeRelationship.FindByIdProjectSourceTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idProjectSource variable + + idProjectSource + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdProjectAttributeDestination on the project_project_attribute_relationship table + + ProjectProjectAttributeRelationshipFindByIdProjectAttributeDestination + insityou.viewer.h2zero.taglib.projectProjectAttributeRelationship.FindByIdProjectAttributeDestinationTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idProjectAttributeDestination variable + + idProjectAttributeDestination + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdCreator on the project_project_attribute_relationship table + + ProjectProjectAttributeRelationshipFindByIdCreator + insityou.viewer.h2zero.taglib.projectProjectAttributeRelationship.FindByIdCreatorTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idProjectProjectAttributeRelationship variable + + idProjectProjectAttributeRelationship + true + true + + + + Bind the idCreator variable + + idCreator + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByDestinationAndSource on the project_project_attribute_relationship table + + ProjectProjectAttributeRelationshipFindByDestinationAndSource + insityou.viewer.h2zero.taglib.projectProjectAttributeRelationship.FindByDestinationAndSourceTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idProjectSource variable + + idProjectSource + true + true + + + + Bind the idProjectAttributeDestination variable + + idProjectAttributeDestination + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the project_project_attribute_relationship table + + ProjectProjectAttributeRelationshipCountAll + insityou.viewer.h2zero.taglib.projectProjectAttributeRelationship.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the person_person_relationship table + + PersonPersonRelationshipFindByPrimaryKey + insityou.viewer.h2zero.taglib.personPersonRelationship.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + PersonPersonRelationshipFindAll + insityou.viewer.h2zero.taglib.personPersonRelationship.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByIdPersonSource on the person_person_relationship table + + PersonPersonRelationshipFindByIdPersonSource + insityou.viewer.h2zero.taglib.personPersonRelationship.FindByIdPersonSourceTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idPersonSource variable + + idPersonSource + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdPersonDestination on the person_person_relationship table + + PersonPersonRelationshipFindByIdPersonDestination + insityou.viewer.h2zero.taglib.personPersonRelationship.FindByIdPersonDestinationTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idPersonDestination variable + + idPersonDestination + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdCreator on the person_person_relationship table + + PersonPersonRelationshipFindByIdCreator + insityou.viewer.h2zero.taglib.personPersonRelationship.FindByIdCreatorTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idPersonPersonRelationship variable + + idPersonPersonRelationship + true + true + + + + Bind the idCreator variable + + idCreator + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findAllByPersonFlIsEntity on the person_person_relationship table + + PersonPersonRelationshipFindAllByPersonFlIsEntity + insityou.viewer.h2zero.taglib.personPersonRelationship.FindAllByPersonFlIsEntityTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByDestinationAndSource on the person_person_relationship table + + PersonPersonRelationshipFindByDestinationAndSource + insityou.viewer.h2zero.taglib.personPersonRelationship.FindByDestinationAndSourceTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idPersonSource variable + + idPersonSource + true + true + + + + Bind the idPersonDestination variable + + idPersonDestination + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the person_person_relationship table + + PersonPersonRelationshipCountAll + insityou.viewer.h2zero.taglib.personPersonRelationship.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the person_zone_relationship table + + PersonZoneRelationshipFindByPrimaryKey + insityou.viewer.h2zero.taglib.personZoneRelationship.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + PersonZoneRelationshipFindAll + insityou.viewer.h2zero.taglib.personZoneRelationship.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByIdPersonSource on the person_zone_relationship table + + PersonZoneRelationshipFindByIdPersonSource + insityou.viewer.h2zero.taglib.personZoneRelationship.FindByIdPersonSourceTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idPersonSource variable + + idPersonSource + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdZoneDestination on the person_zone_relationship table + + PersonZoneRelationshipFindByIdZoneDestination + insityou.viewer.h2zero.taglib.personZoneRelationship.FindByIdZoneDestinationTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idZoneDestination variable + + idZoneDestination + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdCreator on the person_zone_relationship table + + PersonZoneRelationshipFindByIdCreator + insityou.viewer.h2zero.taglib.personZoneRelationship.FindByIdCreatorTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idPersonZoneRelationship variable + + idPersonZoneRelationship + true + true + + + + Bind the idCreator variable + + idCreator + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByDestinationAndSource on the person_zone_relationship table + + PersonZoneRelationshipFindByDestinationAndSource + insityou.viewer.h2zero.taglib.personZoneRelationship.FindByDestinationAndSourceTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idPersonSource variable + + idPersonSource + true + true + + + + Bind the idZoneDestination variable + + idZoneDestination + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the person_zone_relationship table + + PersonZoneRelationshipCountAll + insityou.viewer.h2zero.taglib.personZoneRelationship.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the department_zone_relationship table + + DepartmentZoneRelationshipFindByPrimaryKey + insityou.viewer.h2zero.taglib.departmentZoneRelationship.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + DepartmentZoneRelationshipFindAll + insityou.viewer.h2zero.taglib.departmentZoneRelationship.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByIdDepartmentSource on the department_zone_relationship table + + DepartmentZoneRelationshipFindByIdDepartmentSource + insityou.viewer.h2zero.taglib.departmentZoneRelationship.FindByIdDepartmentSourceTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idDepartmentSource variable + + idDepartmentSource + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdZoneDestination on the department_zone_relationship table + + DepartmentZoneRelationshipFindByIdZoneDestination + insityou.viewer.h2zero.taglib.departmentZoneRelationship.FindByIdZoneDestinationTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idZoneDestination variable + + idZoneDestination + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdCreator on the department_zone_relationship table + + DepartmentZoneRelationshipFindByIdCreator + insityou.viewer.h2zero.taglib.departmentZoneRelationship.FindByIdCreatorTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idDepartmentZoneRelationship variable + + idDepartmentZoneRelationship + true + true + + + + Bind the idCreator variable + + idCreator + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByDestinationAndSource on the department_zone_relationship table + + DepartmentZoneRelationshipFindByDestinationAndSource + insityou.viewer.h2zero.taglib.departmentZoneRelationship.FindByDestinationAndSourceTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idDepartmentSource variable + + idDepartmentSource + true + true + + + + Bind the idZoneDestination variable + + idZoneDestination + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the department_zone_relationship table + + DepartmentZoneRelationshipCountAll + insityou.viewer.h2zero.taglib.departmentZoneRelationship.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the project_zone_relationship table + + ProjectZoneRelationshipFindByPrimaryKey + insityou.viewer.h2zero.taglib.projectZoneRelationship.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + ProjectZoneRelationshipFindAll + insityou.viewer.h2zero.taglib.projectZoneRelationship.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByIdProjectSource on the project_zone_relationship table + + ProjectZoneRelationshipFindByIdProjectSource + insityou.viewer.h2zero.taglib.projectZoneRelationship.FindByIdProjectSourceTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idProjectSource variable + + idProjectSource + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdZoneDestination on the project_zone_relationship table + + ProjectZoneRelationshipFindByIdZoneDestination + insityou.viewer.h2zero.taglib.projectZoneRelationship.FindByIdZoneDestinationTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idZoneDestination variable + + idZoneDestination + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdCreator on the project_zone_relationship table + + ProjectZoneRelationshipFindByIdCreator + insityou.viewer.h2zero.taglib.projectZoneRelationship.FindByIdCreatorTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idProjectZoneRelationship variable + + idProjectZoneRelationship + true + true + + + + Bind the idCreator variable + + idCreator + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByDestinationAndSource on the project_zone_relationship table + + ProjectZoneRelationshipFindByDestinationAndSource + insityou.viewer.h2zero.taglib.projectZoneRelationship.FindByDestinationAndSourceTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idProjectSource variable + + idProjectSource + true + true + + + + Bind the idZoneDestination variable + + idZoneDestination + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the project_zone_relationship table + + ProjectZoneRelationshipCountAll + insityou.viewer.h2zero.taglib.projectZoneRelationship.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the manager_department table + + ManagerDepartmentFindByPrimaryKey + insityou.viewer.h2zero.taglib.managerDepartment.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + ManagerDepartmentFindAll + insityou.viewer.h2zero.taglib.managerDepartment.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByIdManagerID on the manager_department table + + ManagerDepartmentFindByIdManagerID + insityou.viewer.h2zero.taglib.managerDepartment.FindByIdManagerIDTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idManager variable + + idManager + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdDepartment on the manager_department table + + ManagerDepartmentFindByIdDepartment + insityou.viewer.h2zero.taglib.managerDepartment.FindByIdDepartmentTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idDepartment variable + + idDepartment + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the manager_department table + + ManagerDepartmentCountAll + insityou.viewer.h2zero.taglib.managerDepartment.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the project_project_attribute table + + ProjectProjectAttributeFindByPrimaryKey + insityou.viewer.h2zero.taglib.projectProjectAttribute.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + ProjectProjectAttributeFindAll + insityou.viewer.h2zero.taglib.projectProjectAttribute.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByIdProject on the project_project_attribute table + + ProjectProjectAttributeFindByIdProject + insityou.viewer.h2zero.taglib.projectProjectAttribute.FindByIdProjectTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idProject variable + + idProject + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdProjectAttribute on the project_project_attribute table + + ProjectProjectAttributeFindByIdProjectAttribute + insityou.viewer.h2zero.taglib.projectProjectAttribute.FindByIdProjectAttributeTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idProjectAttribute variable + + idProjectAttribute + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the project_project_attribute table + + ProjectProjectAttributeCountAll + insityou.viewer.h2zero.taglib.projectProjectAttribute.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the person_project table + + PersonProjectFindByPrimaryKey + insityou.viewer.h2zero.taglib.personProject.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + PersonProjectFindAll + insityou.viewer.h2zero.taglib.personProject.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByIdPerson on the person_project table + + PersonProjectFindByIdPerson + insityou.viewer.h2zero.taglib.personProject.FindByIdPersonTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idPerson variable + + idPerson + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdProject on the person_project table + + PersonProjectFindByIdProject + insityou.viewer.h2zero.taglib.personProject.FindByIdProjectTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idProject variable + + idProject + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdPersonAndIdProject on the person_project table + + PersonProjectFindByIdPersonAndIdProject + insityou.viewer.h2zero.taglib.personProject.FindByIdPersonAndIdProjectTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idPerson variable + + idPerson + true + true + + + + Bind the idProject variable + + idProject + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findNumberOfPersPerProject on the person_project table + + PersonProjectFindNumberOfPersPerProject + insityou.viewer.h2zero.taglib.personProject.FindNumberOfPersPerProjectTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idProject variable + + idProject + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the person_project table + + PersonProjectCountAll + insityou.viewer.h2zero.taglib.personProject.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the person_person_attribute table + + PersonPersonAttributeFindByPrimaryKey + insityou.viewer.h2zero.taglib.personPersonAttribute.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + PersonPersonAttributeFindAll + insityou.viewer.h2zero.taglib.personPersonAttribute.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByIdPerson on the person_person_attribute table + + PersonPersonAttributeFindByIdPerson + insityou.viewer.h2zero.taglib.personPersonAttribute.FindByIdPersonTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idPerson variable + + idPerson + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdPersonAttribute on the person_person_attribute table + + PersonPersonAttributeFindByIdPersonAttribute + insityou.viewer.h2zero.taglib.personPersonAttribute.FindByIdPersonAttributeTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idPersonAttribute variable + + idPersonAttribute + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the person_person_attribute table + + PersonPersonAttributeCountAll + insityou.viewer.h2zero.taglib.personPersonAttribute.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the lock_seat table + + LockSeatFindByPrimaryKey + insityou.viewer.h2zero.taglib.lockSeat.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + LockSeatFindAll + insityou.viewer.h2zero.taglib.lockSeat.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByIdEntity on the lock_seat table + + LockSeatFindByIdEntity + insityou.viewer.h2zero.taglib.lockSeat.FindByIdEntityTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idEntity variable + + idEntity + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the lock_seat table + + LockSeatCountAll + insityou.viewer.h2zero.taglib.lockSeat.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the scenario table + + ScenarioFindByPrimaryKey + insityou.viewer.h2zero.taglib.scenario.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + ScenarioFindAll + insityou.viewer.h2zero.taglib.scenario.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByNmScenario on the scenario table + + ScenarioFindByNmScenario + insityou.viewer.h2zero.taglib.scenario.FindByNmScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the nmScenario variable + + nmScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdCreator on the scenario table + + ScenarioFindByIdCreator + insityou.viewer.h2zero.taglib.scenario.FindByIdCreatorTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idCreator variable + + idCreator + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByScenario on the scenario table + + ScenarioFindByScenario + insityou.viewer.h2zero.taglib.scenario.FindByScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByScenarioAndIdCreator on the scenario table + + ScenarioFindByScenarioAndIdCreator + insityou.viewer.h2zero.taglib.scenario.FindByScenarioAndIdCreatorTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idScenario variable + + idScenario + true + true + + + + Bind the idCreator variable + + idCreator + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findCurrentScenario on the scenario table + + ScenarioFindCurrentScenario + insityou.viewer.h2zero.taglib.scenario.FindCurrentScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the scenario table + + ScenarioCountAll + insityou.viewer.h2zero.taglib.scenario.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + generated tag for the isSolved + + ScenarioIsSolved + insityou.viewer.h2zero.taglib.scenario.IsSolvedTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the track_current_scenario table + + TrackCurrentScenarioFindByPrimaryKey + insityou.viewer.h2zero.taglib.trackCurrentScenario.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + TrackCurrentScenarioFindAll + insityou.viewer.h2zero.taglib.trackCurrentScenario.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the track_current_scenario table + + TrackCurrentScenarioCountAll + insityou.viewer.h2zero.taglib.trackCurrentScenario.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the s_project table + + SProjectFindByPrimaryKey + insityou.viewer.h2zero.taglib.sProject.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + SProjectFindAll + insityou.viewer.h2zero.taglib.sProject.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByNmProject on the s_project table + + SProjectFindByNmProject + insityou.viewer.h2zero.taglib.sProject.FindByNmProjectTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the nmProject variable + + nmProject + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByScenario on the s_project table + + SProjectFindByScenario + insityou.viewer.h2zero.taglib.sProject.FindByScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByProjectNameAndIdScenario on the s_project table + + SProjectFindByProjectNameAndIdScenario + insityou.viewer.h2zero.taglib.sProject.FindByProjectNameAndIdScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the nmProject variable + + nmProject + true + true + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdProjectAndIdScenario on the s_project table + + SProjectFindByIdProjectAndIdScenario + insityou.viewer.h2zero.taglib.sProject.FindByIdProjectAndIdScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idSProject variable + + idSProject + true + true + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByNmProjectAttribute on the s_project table + + SProjectFindByNmProjectAttribute + insityou.viewer.h2zero.taglib.sProject.FindByNmProjectAttributeTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idScenario variable + + idScenario + true + true + + + + Bind the nmProjectAttribute variable + + nmProjectAttribute + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdScenarioLikeNmProject on the s_project table + + SProjectFindByIdScenarioLikeNmProject + insityou.viewer.h2zero.taglib.sProject.FindByIdScenarioLikeNmProjectTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idScenario variable + + idScenario + true + true + + + + Bind the nmProject variable + + nmProject + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByRequiredContingency on the s_project table + + SProjectFindByRequiredContingency + insityou.viewer.h2zero.taglib.sProject.FindByRequiredContingencyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the s_project table + + SProjectCountAll + insityou.viewer.h2zero.taglib.sProject.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the s_building table + + SBuildingFindByPrimaryKey + insityou.viewer.h2zero.taglib.sBuilding.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + SBuildingFindAll + insityou.viewer.h2zero.taglib.sBuilding.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByScenario on the s_building table + + SBuildingFindByScenario + insityou.viewer.h2zero.taglib.sBuilding.FindByScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdBuildingAndIdScenario on the s_building table + + SBuildingFindByIdBuildingAndIdScenario + insityou.viewer.h2zero.taglib.sBuilding.FindByIdBuildingAndIdScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idSBuilding variable + + idSBuilding + true + true + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the s_building table + + SBuildingCountAll + insityou.viewer.h2zero.taglib.sBuilding.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the s_department table + + SDepartmentFindByPrimaryKey + insityou.viewer.h2zero.taglib.sDepartment.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + SDepartmentFindAll + insityou.viewer.h2zero.taglib.sDepartment.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByIdParentDepartment on the s_department table + + SDepartmentFindByIdParentDepartment + insityou.viewer.h2zero.taglib.sDepartment.FindByIdParentDepartmentTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idDepartmentParent variable + + idDepartmentParent + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByFlIsClustered on the s_department table + + SDepartmentFindByFlIsClustered + insityou.viewer.h2zero.taglib.sDepartment.FindByFlIsClusteredTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the flIsClustered variable + + flIsClustered + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByFlIsClusteredAndScenario on the s_department table + + SDepartmentFindByFlIsClusteredAndScenario + insityou.viewer.h2zero.taglib.sDepartment.FindByFlIsClusteredAndScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the flIsClustered variable + + flIsClustered + true + true + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByScenario on the s_department table + + SDepartmentFindByScenario + insityou.viewer.h2zero.taglib.sDepartment.FindByScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdDepartmentAndIdScenario on the s_department table + + SDepartmentFindByIdDepartmentAndIdScenario + insityou.viewer.h2zero.taglib.sDepartment.FindByIdDepartmentAndIdScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idSDepartment variable + + idSDepartment + true + true + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findIdSDepartmentIdParentDepartmentByIdScenario on the s_department table + + SDepartmentFindIdSDepartmentIdParentDepartmentByIdScenario + insityou.viewer.h2zero.taglib.sDepartment.FindIdSDepartmentIdParentDepartmentByIdScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findIdSDepartmentByIdDepartmentPreviousIdScenario on the s_department table + + SDepartmentFindIdSDepartmentByIdDepartmentPreviousIdScenario + insityou.viewer.h2zero.taglib.sDepartment.FindIdSDepartmentByIdDepartmentPreviousIdScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdScenarioLikeNmDepartment on the s_department table + + SDepartmentFindByIdScenarioLikeNmDepartment + insityou.viewer.h2zero.taglib.sDepartment.FindByIdScenarioLikeNmDepartmentTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idScenario variable + + idScenario + true + true + + + + Bind the nmDepartment variable + + nmDepartment + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the s_department table + + SDepartmentCountAll + insityou.viewer.h2zero.taglib.sDepartment.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the s_person table + + SPersonFindByPrimaryKey + insityou.viewer.h2zero.taglib.sPerson.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + SPersonFindAll + insityou.viewer.h2zero.taglib.sPerson.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByFlIsEntity on the s_person table + + SPersonFindByFlIsEntity + insityou.viewer.h2zero.taglib.sPerson.FindByFlIsEntityTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the flIsEntity variable + + flIsEntity + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdPerson on the s_person table + + SPersonFindByIdPerson + insityou.viewer.h2zero.taglib.sPerson.FindByIdPersonTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idSPerson variable + + idSPerson + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdSPersonAndIdScenario on the s_person table + + SPersonFindByIdSPersonAndIdScenario + insityou.viewer.h2zero.taglib.sPerson.FindByIdSPersonAndIdScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idSPerson variable + + idSPerson + true + true + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByFlIsEntityIdScenario on the s_person table + + SPersonFindByFlIsEntityIdScenario + insityou.viewer.h2zero.taglib.sPerson.FindByFlIsEntityIdScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the flIsEntity variable + + flIsEntity + true + true + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdScenario on the s_person table + + SPersonFindByIdScenario + insityou.viewer.h2zero.taglib.sPerson.FindByIdScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByPersonSize on the s_person table + + SPersonFindByPersonSize + insityou.viewer.h2zero.taglib.sPerson.FindByPersonSizeTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idSPerson variable + + idSPerson + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdDepartmentAndIdScenario on the s_person table + + SPersonFindByIdDepartmentAndIdScenario + insityou.viewer.h2zero.taglib.sPerson.FindByIdDepartmentAndIdScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idDepartment variable + + idDepartment + true + true + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByDepartmentAssociation on the s_person table + + SPersonFindByDepartmentAssociation + insityou.viewer.h2zero.taglib.sPerson.FindByDepartmentAssociationTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idManager variable + + idManager + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByScenario on the s_person table + + SPersonFindByScenario + insityou.viewer.h2zero.taglib.sPerson.FindByScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdScenarioLikeNmPerson on the s_person table + + SPersonFindByIdScenarioLikeNmPerson + insityou.viewer.h2zero.taglib.sPerson.FindByIdScenarioLikeNmPersonTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idScenario variable + + idScenario + true + true + + + + Bind the nmPerson variable + + nmPerson + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findDepartmentHeadCount on the s_person table + + SPersonFindDepartmentHeadCount + insityou.viewer.h2zero.taglib.sPerson.FindDepartmentHeadCountTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findUnassignedSeats on the s_person table + + SPersonFindUnassignedSeats + insityou.viewer.h2zero.taglib.sPerson.FindUnassignedSeatsTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idScenario variable + + idScenario + true + true + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the s_person table + + SPersonCountAll + insityou.viewer.h2zero.taglib.sPerson.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the s_person_attribute table + + SPersonAttributeFindByPrimaryKey + insityou.viewer.h2zero.taglib.sPersonAttribute.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + SPersonAttributeFindAll + insityou.viewer.h2zero.taglib.sPersonAttribute.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByScenario on the s_person_attribute table + + SPersonAttributeFindByScenario + insityou.viewer.h2zero.taglib.sPersonAttribute.FindByScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the s_person_attribute table + + SPersonAttributeCountAll + insityou.viewer.h2zero.taglib.sPersonAttribute.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the s_project_attribute table + + SProjectAttributeFindByPrimaryKey + insityou.viewer.h2zero.taglib.sProjectAttribute.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + SProjectAttributeFindAll + insityou.viewer.h2zero.taglib.sProjectAttribute.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByIdType on the s_project_attribute table + + SProjectAttributeFindByIdType + insityou.viewer.h2zero.taglib.sProjectAttribute.FindByIdTypeTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idSProjectAttribute variable + + idSProjectAttribute + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findAllSortedByNmTypeAndScenario on the s_project_attribute table + + SProjectAttributeFindAllSortedByNmTypeAndScenario + insityou.viewer.h2zero.taglib.sProjectAttribute.FindAllSortedByNmTypeAndScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findAllSortedByNmType on the s_project_attribute table + + SProjectAttributeFindAllSortedByNmType + insityou.viewer.h2zero.taglib.sProjectAttribute.FindAllSortedByNmTypeTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByScenario on the s_project_attribute table + + SProjectAttributeFindByScenario + insityou.viewer.h2zero.taglib.sProjectAttribute.FindByScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the s_project_attribute table + + SProjectAttributeCountAll + insityou.viewer.h2zero.taglib.sProjectAttribute.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the s_zone table + + SZoneFindByPrimaryKey + insityou.viewer.h2zero.taglib.sZone.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + SZoneFindAll + insityou.viewer.h2zero.taglib.sZone.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByScenario on the s_zone table + + SZoneFindByScenario + insityou.viewer.h2zero.taglib.sZone.FindByScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the s_zone table + + SZoneCountAll + insityou.viewer.h2zero.taglib.sZone.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the s_department_building_relationship table + + SDepartmentBuildingRelationshipFindByPrimaryKey + insityou.viewer.h2zero.taglib.sDepartmentBuildingRelationship.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + SDepartmentBuildingRelationshipFindAll + insityou.viewer.h2zero.taglib.sDepartmentBuildingRelationship.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByIdBuildingDestinationAndScenario on the s_department_building_relationship table + + SDepartmentBuildingRelationshipFindByIdBuildingDestinationAndScenario + insityou.viewer.h2zero.taglib.sDepartmentBuildingRelationship.FindByIdBuildingDestinationAndScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idBuildingDestination variable + + idBuildingDestination + true + true + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdDepartmentSourceAndScenario on the s_department_building_relationship table + + SDepartmentBuildingRelationshipFindByIdDepartmentSourceAndScenario + insityou.viewer.h2zero.taglib.sDepartmentBuildingRelationship.FindByIdDepartmentSourceAndScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idDepartmentSource variable + + idDepartmentSource + true + true + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdCreator on the s_department_building_relationship table + + SDepartmentBuildingRelationshipFindByIdCreator + insityou.viewer.h2zero.taglib.sDepartmentBuildingRelationship.FindByIdCreatorTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idSDepartmentBuildingRelationship variable + + idSDepartmentBuildingRelationship + true + true + + + + Bind the idCreator variable + + idCreator + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByDestinationAndSourceAndScenario on the s_department_building_relationship table + + SDepartmentBuildingRelationshipFindByDestinationAndSourceAndScenario + insityou.viewer.h2zero.taglib.sDepartmentBuildingRelationship.FindByDestinationAndSourceAndScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idDepartmentSource variable + + idDepartmentSource + true + true + + + + Bind the idBuildingDestination variable + + idBuildingDestination + true + true + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByScenario on the s_department_building_relationship table + + SDepartmentBuildingRelationshipFindByScenario + insityou.viewer.h2zero.taglib.sDepartmentBuildingRelationship.FindByScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the s_department_building_relationship table + + SDepartmentBuildingRelationshipCountAll + insityou.viewer.h2zero.taglib.sDepartmentBuildingRelationship.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the s_department_department_relationship table + + SDepartmentDepartmentRelationshipFindByPrimaryKey + insityou.viewer.h2zero.taglib.sDepartmentDepartmentRelationship.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + SDepartmentDepartmentRelationshipFindAll + insityou.viewer.h2zero.taglib.sDepartmentDepartmentRelationship.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByIdDepartmentDestinationAndScenario on the s_department_department_relationship table + + SDepartmentDepartmentRelationshipFindByIdDepartmentDestinationAndScenario + insityou.viewer.h2zero.taglib.sDepartmentDepartmentRelationship.FindByIdDepartmentDestinationAndScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idDepartmentDestination variable + + idDepartmentDestination + true + true + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdDepartmentSourceAndScenario on the s_department_department_relationship table + + SDepartmentDepartmentRelationshipFindByIdDepartmentSourceAndScenario + insityou.viewer.h2zero.taglib.sDepartmentDepartmentRelationship.FindByIdDepartmentSourceAndScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idDepartmentSource variable + + idDepartmentSource + true + true + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdCreator on the s_department_department_relationship table + + SDepartmentDepartmentRelationshipFindByIdCreator + insityou.viewer.h2zero.taglib.sDepartmentDepartmentRelationship.FindByIdCreatorTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idSDepartmentDepartmentRelationship variable + + idSDepartmentDepartmentRelationship + true + true + + + + Bind the idCreator variable + + idCreator + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByDestinationAndSourceAndScenario on the s_department_department_relationship table + + SDepartmentDepartmentRelationshipFindByDestinationAndSourceAndScenario + insityou.viewer.h2zero.taglib.sDepartmentDepartmentRelationship.FindByDestinationAndSourceAndScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idDepartmentSource variable + + idDepartmentSource + true + true + + + + Bind the idDepartmentDestination variable + + idDepartmentDestination + true + true + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByScenario on the s_department_department_relationship table + + SDepartmentDepartmentRelationshipFindByScenario + insityou.viewer.h2zero.taglib.sDepartmentDepartmentRelationship.FindByScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findDistinctIdDepartmentSourceByScenario on the s_department_department_relationship table + + SDepartmentDepartmentRelationshipFindDistinctIdDepartmentSourceByScenario + insityou.viewer.h2zero.taglib.sDepartmentDepartmentRelationship.FindDistinctIdDepartmentSourceByScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByNmOfConnections on the s_department_department_relationship table + + SDepartmentDepartmentRelationshipFindByNmOfConnections + insityou.viewer.h2zero.taglib.sDepartmentDepartmentRelationship.FindByNmOfConnectionsTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idDepartmentSource variable + + idDepartmentSource + true + true + + + + Bind the idDepartmentDestination variable + + idDepartmentDestination + true + true + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the s_department_department_relationship table + + SDepartmentDepartmentRelationshipCountAll + insityou.viewer.h2zero.taglib.sDepartmentDepartmentRelationship.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the s_project_building_relationship table + + SProjectBuildingRelationshipFindByPrimaryKey + insityou.viewer.h2zero.taglib.sProjectBuildingRelationship.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + SProjectBuildingRelationshipFindAll + insityou.viewer.h2zero.taglib.sProjectBuildingRelationship.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByIdProjectSourceAndScenario on the s_project_building_relationship table + + SProjectBuildingRelationshipFindByIdProjectSourceAndScenario + insityou.viewer.h2zero.taglib.sProjectBuildingRelationship.FindByIdProjectSourceAndScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idProjectSource variable + + idProjectSource + true + true + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdBuildingDestinationAndScenario on the s_project_building_relationship table + + SProjectBuildingRelationshipFindByIdBuildingDestinationAndScenario + insityou.viewer.h2zero.taglib.sProjectBuildingRelationship.FindByIdBuildingDestinationAndScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idBuildingDestination variable + + idBuildingDestination + true + true + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdCreator on the s_project_building_relationship table + + SProjectBuildingRelationshipFindByIdCreator + insityou.viewer.h2zero.taglib.sProjectBuildingRelationship.FindByIdCreatorTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idSProjectBuildingRelationship variable + + idSProjectBuildingRelationship + true + true + + + + Bind the idCreator variable + + idCreator + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByDestinationAndSourceAndScenario on the s_project_building_relationship table + + SProjectBuildingRelationshipFindByDestinationAndSourceAndScenario + insityou.viewer.h2zero.taglib.sProjectBuildingRelationship.FindByDestinationAndSourceAndScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idProjectSource variable + + idProjectSource + true + true + + + + Bind the idBuildingDestination variable + + idBuildingDestination + true + true + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByScenario on the s_project_building_relationship table + + SProjectBuildingRelationshipFindByScenario + insityou.viewer.h2zero.taglib.sProjectBuildingRelationship.FindByScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the s_project_building_relationship table + + SProjectBuildingRelationshipCountAll + insityou.viewer.h2zero.taglib.sProjectBuildingRelationship.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the s_project_person_attribute_relationship table + + SProjectPersonAttributeRelationshipFindByPrimaryKey + insityou.viewer.h2zero.taglib.sProjectPersonAttributeRelationship.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + SProjectPersonAttributeRelationshipFindAll + insityou.viewer.h2zero.taglib.sProjectPersonAttributeRelationship.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByIdProjectSourceAndScenario on the s_project_person_attribute_relationship table + + SProjectPersonAttributeRelationshipFindByIdProjectSourceAndScenario + insityou.viewer.h2zero.taglib.sProjectPersonAttributeRelationship.FindByIdProjectSourceAndScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idProjectSource variable + + idProjectSource + true + true + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdPersonAttributeDestinationAndScenario on the s_project_person_attribute_relationship table + + SProjectPersonAttributeRelationshipFindByIdPersonAttributeDestinationAndScenario + insityou.viewer.h2zero.taglib.sProjectPersonAttributeRelationship.FindByIdPersonAttributeDestinationAndScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idPersonAttributeDestination variable + + idPersonAttributeDestination + true + true + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdCreator on the s_project_person_attribute_relationship table + + SProjectPersonAttributeRelationshipFindByIdCreator + insityou.viewer.h2zero.taglib.sProjectPersonAttributeRelationship.FindByIdCreatorTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idSProjectPersonAttributeRelationship variable + + idSProjectPersonAttributeRelationship + true + true + + + + Bind the idCreator variable + + idCreator + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByDestinationAndSourceAndScenario on the s_project_person_attribute_relationship table + + SProjectPersonAttributeRelationshipFindByDestinationAndSourceAndScenario + insityou.viewer.h2zero.taglib.sProjectPersonAttributeRelationship.FindByDestinationAndSourceAndScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idProjectSource variable + + idProjectSource + true + true + + + + Bind the idPersonAttributeDestination variable + + idPersonAttributeDestination + true + true + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByScenario on the s_project_person_attribute_relationship table + + SProjectPersonAttributeRelationshipFindByScenario + insityou.viewer.h2zero.taglib.sProjectPersonAttributeRelationship.FindByScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the s_project_person_attribute_relationship table + + SProjectPersonAttributeRelationshipCountAll + insityou.viewer.h2zero.taglib.sProjectPersonAttributeRelationship.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the s_project_project_relationship table + + SProjectProjectRelationshipFindByPrimaryKey + insityou.viewer.h2zero.taglib.sProjectProjectRelationship.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + SProjectProjectRelationshipFindAll + insityou.viewer.h2zero.taglib.sProjectProjectRelationship.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByIdProjectSourceAndScenario on the s_project_project_relationship table + + SProjectProjectRelationshipFindByIdProjectSourceAndScenario + insityou.viewer.h2zero.taglib.sProjectProjectRelationship.FindByIdProjectSourceAndScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idProjectSource variable + + idProjectSource + true + true + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdProjectDestinationAndScenario on the s_project_project_relationship table + + SProjectProjectRelationshipFindByIdProjectDestinationAndScenario + insityou.viewer.h2zero.taglib.sProjectProjectRelationship.FindByIdProjectDestinationAndScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idProjectDestination variable + + idProjectDestination + true + true + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdCreator on the s_project_project_relationship table + + SProjectProjectRelationshipFindByIdCreator + insityou.viewer.h2zero.taglib.sProjectProjectRelationship.FindByIdCreatorTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idSProjectProjectRelationship variable + + idSProjectProjectRelationship + true + true + + + + Bind the idCreator variable + + idCreator + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByDestinationAndSourceAndScenario on the s_project_project_relationship table + + SProjectProjectRelationshipFindByDestinationAndSourceAndScenario + insityou.viewer.h2zero.taglib.sProjectProjectRelationship.FindByDestinationAndSourceAndScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idProjectSource variable + + idProjectSource + true + true + + + + Bind the idProjectDestination variable + + idProjectDestination + true + true + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByScenario on the s_project_project_relationship table + + SProjectProjectRelationshipFindByScenario + insityou.viewer.h2zero.taglib.sProjectProjectRelationship.FindByScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findDistinctIdProjectSourceByScenario on the s_project_project_relationship table + + SProjectProjectRelationshipFindDistinctIdProjectSourceByScenario + insityou.viewer.h2zero.taglib.sProjectProjectRelationship.FindDistinctIdProjectSourceByScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByNmOfConnections on the s_project_project_relationship table + + SProjectProjectRelationshipFindByNmOfConnections + insityou.viewer.h2zero.taglib.sProjectProjectRelationship.FindByNmOfConnectionsTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idProjectSource variable + + idProjectSource + true + true + + + + Bind the idProjectDestination variable + + idProjectDestination + true + true + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the s_project_project_relationship table + + SProjectProjectRelationshipCountAll + insityou.viewer.h2zero.taglib.sProjectProjectRelationship.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the s_person_department_relationship table + + SPersonDepartmentRelationshipFindByPrimaryKey + insityou.viewer.h2zero.taglib.sPersonDepartmentRelationship.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + SPersonDepartmentRelationshipFindAll + insityou.viewer.h2zero.taglib.sPersonDepartmentRelationship.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByIdPersonSourceAndScenario on the s_person_department_relationship table + + SPersonDepartmentRelationshipFindByIdPersonSourceAndScenario + insityou.viewer.h2zero.taglib.sPersonDepartmentRelationship.FindByIdPersonSourceAndScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idPersonSource variable + + idPersonSource + true + true + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdDepartmentDestinationAndScenario on the s_person_department_relationship table + + SPersonDepartmentRelationshipFindByIdDepartmentDestinationAndScenario + insityou.viewer.h2zero.taglib.sPersonDepartmentRelationship.FindByIdDepartmentDestinationAndScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idDepartmentDestination variable + + idDepartmentDestination + true + true + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdCreator on the s_person_department_relationship table + + SPersonDepartmentRelationshipFindByIdCreator + insityou.viewer.h2zero.taglib.sPersonDepartmentRelationship.FindByIdCreatorTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idSPersonDepartmentRelationship variable + + idSPersonDepartmentRelationship + true + true + + + + Bind the idCreator variable + + idCreator + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findAllByUserFlIsEntity on the s_person_department_relationship table + + SPersonDepartmentRelationshipFindAllByUserFlIsEntity + insityou.viewer.h2zero.taglib.sPersonDepartmentRelationship.FindAllByUserFlIsEntityTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByDestinationAndSourceAndScenario on the s_person_department_relationship table + + SPersonDepartmentRelationshipFindByDestinationAndSourceAndScenario + insityou.viewer.h2zero.taglib.sPersonDepartmentRelationship.FindByDestinationAndSourceAndScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idPersonSource variable + + idPersonSource + true + true + + + + Bind the idDepartmentDestination variable + + idDepartmentDestination + true + true + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByScenario on the s_person_department_relationship table + + SPersonDepartmentRelationshipFindByScenario + insityou.viewer.h2zero.taglib.sPersonDepartmentRelationship.FindByScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the s_person_department_relationship table + + SPersonDepartmentRelationshipCountAll + insityou.viewer.h2zero.taglib.sPersonDepartmentRelationship.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the s_person_person_attribute_relationship table + + SPersonPersonAttributeRelationshipFindByPrimaryKey + insityou.viewer.h2zero.taglib.sPersonPersonAttributeRelationship.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + SPersonPersonAttributeRelationshipFindAll + insityou.viewer.h2zero.taglib.sPersonPersonAttributeRelationship.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByIdPersonSourceAndScenario on the s_person_person_attribute_relationship table + + SPersonPersonAttributeRelationshipFindByIdPersonSourceAndScenario + insityou.viewer.h2zero.taglib.sPersonPersonAttributeRelationship.FindByIdPersonSourceAndScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idPersonSource variable + + idPersonSource + true + true + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdPersonAttributeDestinationAndScenario on the s_person_person_attribute_relationship table + + SPersonPersonAttributeRelationshipFindByIdPersonAttributeDestinationAndScenario + insityou.viewer.h2zero.taglib.sPersonPersonAttributeRelationship.FindByIdPersonAttributeDestinationAndScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idPersonAttributeDestination variable + + idPersonAttributeDestination + true + true + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdCreator on the s_person_person_attribute_relationship table + + SPersonPersonAttributeRelationshipFindByIdCreator + insityou.viewer.h2zero.taglib.sPersonPersonAttributeRelationship.FindByIdCreatorTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idSPersonPersonAttributeRelationship variable + + idSPersonPersonAttributeRelationship + true + true + + + + Bind the idCreator variable + + idCreator + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findAllByPersonFlIsEntity on the s_person_person_attribute_relationship table + + SPersonPersonAttributeRelationshipFindAllByPersonFlIsEntity + insityou.viewer.h2zero.taglib.sPersonPersonAttributeRelationship.FindAllByPersonFlIsEntityTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByDestinationAndSourceAndScenario on the s_person_person_attribute_relationship table + + SPersonPersonAttributeRelationshipFindByDestinationAndSourceAndScenario + insityou.viewer.h2zero.taglib.sPersonPersonAttributeRelationship.FindByDestinationAndSourceAndScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idPersonSource variable + + idPersonSource + true + true + + + + Bind the idPersonAttributeDestination variable + + idPersonAttributeDestination + true + true + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByScenario on the s_person_person_attribute_relationship table + + SPersonPersonAttributeRelationshipFindByScenario + insityou.viewer.h2zero.taglib.sPersonPersonAttributeRelationship.FindByScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the s_person_person_attribute_relationship table + + SPersonPersonAttributeRelationshipCountAll + insityou.viewer.h2zero.taglib.sPersonPersonAttributeRelationship.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the s_person_project_relationship table + + SPersonProjectRelationshipFindByPrimaryKey + insityou.viewer.h2zero.taglib.sPersonProjectRelationship.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + SPersonProjectRelationshipFindAll + insityou.viewer.h2zero.taglib.sPersonProjectRelationship.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByIdPersonSourceAndScenario on the s_person_project_relationship table + + SPersonProjectRelationshipFindByIdPersonSourceAndScenario + insityou.viewer.h2zero.taglib.sPersonProjectRelationship.FindByIdPersonSourceAndScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idPersonSource variable + + idPersonSource + true + true + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdProjectDestinationAndScenario on the s_person_project_relationship table + + SPersonProjectRelationshipFindByIdProjectDestinationAndScenario + insityou.viewer.h2zero.taglib.sPersonProjectRelationship.FindByIdProjectDestinationAndScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idProjectDestination variable + + idProjectDestination + true + true + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdCreator on the s_person_project_relationship table + + SPersonProjectRelationshipFindByIdCreator + insityou.viewer.h2zero.taglib.sPersonProjectRelationship.FindByIdCreatorTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idSPersonProjectRelationship variable + + idSPersonProjectRelationship + true + true + + + + Bind the idCreator variable + + idCreator + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findAllByPersonFlIsEntity on the s_person_project_relationship table + + SPersonProjectRelationshipFindAllByPersonFlIsEntity + insityou.viewer.h2zero.taglib.sPersonProjectRelationship.FindAllByPersonFlIsEntityTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByDestinationAndSourceAndScenario on the s_person_project_relationship table + + SPersonProjectRelationshipFindByDestinationAndSourceAndScenario + insityou.viewer.h2zero.taglib.sPersonProjectRelationship.FindByDestinationAndSourceAndScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idPersonSource variable + + idPersonSource + true + true + + + + Bind the idProjectDestination variable + + idProjectDestination + true + true + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByScenario on the s_person_project_relationship table + + SPersonProjectRelationshipFindByScenario + insityou.viewer.h2zero.taglib.sPersonProjectRelationship.FindByScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the s_person_project_relationship table + + SPersonProjectRelationshipCountAll + insityou.viewer.h2zero.taglib.sPersonProjectRelationship.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the s_project_project_attribute_relationship table + + SProjectProjectAttributeRelationshipFindByPrimaryKey + insityou.viewer.h2zero.taglib.sProjectProjectAttributeRelationship.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + SProjectProjectAttributeRelationshipFindAll + insityou.viewer.h2zero.taglib.sProjectProjectAttributeRelationship.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByIdProjectSourceAndScenario on the s_project_project_attribute_relationship table + + SProjectProjectAttributeRelationshipFindByIdProjectSourceAndScenario + insityou.viewer.h2zero.taglib.sProjectProjectAttributeRelationship.FindByIdProjectSourceAndScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idProjectSource variable + + idProjectSource + true + true + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdProjectAttributeDestinationAndScenario on the s_project_project_attribute_relationship table + + SProjectProjectAttributeRelationshipFindByIdProjectAttributeDestinationAndScenario + insityou.viewer.h2zero.taglib.sProjectProjectAttributeRelationship.FindByIdProjectAttributeDestinationAndScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idProjectAttributeDestination variable + + idProjectAttributeDestination + true + true + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdCreator on the s_project_project_attribute_relationship table + + SProjectProjectAttributeRelationshipFindByIdCreator + insityou.viewer.h2zero.taglib.sProjectProjectAttributeRelationship.FindByIdCreatorTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idSProjectProjectAttributeRelationship variable + + idSProjectProjectAttributeRelationship + true + true + + + + Bind the idCreator variable + + idCreator + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByDestinationAndSourceAndScenario on the s_project_project_attribute_relationship table + + SProjectProjectAttributeRelationshipFindByDestinationAndSourceAndScenario + insityou.viewer.h2zero.taglib.sProjectProjectAttributeRelationship.FindByDestinationAndSourceAndScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idProjectSource variable + + idProjectSource + true + true + + + + Bind the idProjectAttributeDestination variable + + idProjectAttributeDestination + true + true + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByScenario on the s_project_project_attribute_relationship table + + SProjectProjectAttributeRelationshipFindByScenario + insityou.viewer.h2zero.taglib.sProjectProjectAttributeRelationship.FindByScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the s_project_project_attribute_relationship table + + SProjectProjectAttributeRelationshipCountAll + insityou.viewer.h2zero.taglib.sProjectProjectAttributeRelationship.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the s_person_person_relationship table + + SPersonPersonRelationshipFindByPrimaryKey + insityou.viewer.h2zero.taglib.sPersonPersonRelationship.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + SPersonPersonRelationshipFindAll + insityou.viewer.h2zero.taglib.sPersonPersonRelationship.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByIdPersonSourceAndScenario on the s_person_person_relationship table + + SPersonPersonRelationshipFindByIdPersonSourceAndScenario + insityou.viewer.h2zero.taglib.sPersonPersonRelationship.FindByIdPersonSourceAndScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idPersonSource variable + + idPersonSource + true + true + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdPersonDestinationAndScenario on the s_person_person_relationship table + + SPersonPersonRelationshipFindByIdPersonDestinationAndScenario + insityou.viewer.h2zero.taglib.sPersonPersonRelationship.FindByIdPersonDestinationAndScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idPersonDestination variable + + idPersonDestination + true + true + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdCreator on the s_person_person_relationship table + + SPersonPersonRelationshipFindByIdCreator + insityou.viewer.h2zero.taglib.sPersonPersonRelationship.FindByIdCreatorTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idSPersonPersonRelationship variable + + idSPersonPersonRelationship + true + true + + + + Bind the idCreator variable + + idCreator + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findAllByPersonFlIsEntity on the s_person_person_relationship table + + SPersonPersonRelationshipFindAllByPersonFlIsEntity + insityou.viewer.h2zero.taglib.sPersonPersonRelationship.FindAllByPersonFlIsEntityTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByDestinationAndSourceAndScenario on the s_person_person_relationship table + + SPersonPersonRelationshipFindByDestinationAndSourceAndScenario + insityou.viewer.h2zero.taglib.sPersonPersonRelationship.FindByDestinationAndSourceAndScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idPersonSource variable + + idPersonSource + true + true + + + + Bind the idPersonDestination variable + + idPersonDestination + true + true + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByScenario on the s_person_person_relationship table + + SPersonPersonRelationshipFindByScenario + insityou.viewer.h2zero.taglib.sPersonPersonRelationship.FindByScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the s_person_person_relationship table + + SPersonPersonRelationshipCountAll + insityou.viewer.h2zero.taglib.sPersonPersonRelationship.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the s_person_zone_relationship table + + SPersonZoneRelationshipFindByPrimaryKey + insityou.viewer.h2zero.taglib.sPersonZoneRelationship.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + SPersonZoneRelationshipFindAll + insityou.viewer.h2zero.taglib.sPersonZoneRelationship.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByIdPersonSourceAndScenario on the s_person_zone_relationship table + + SPersonZoneRelationshipFindByIdPersonSourceAndScenario + insityou.viewer.h2zero.taglib.sPersonZoneRelationship.FindByIdPersonSourceAndScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idPersonSource variable + + idPersonSource + true + true + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdZoneDestinationAndScenario on the s_person_zone_relationship table + + SPersonZoneRelationshipFindByIdZoneDestinationAndScenario + insityou.viewer.h2zero.taglib.sPersonZoneRelationship.FindByIdZoneDestinationAndScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idZoneDestination variable + + idZoneDestination + true + true + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdCreator on the s_person_zone_relationship table + + SPersonZoneRelationshipFindByIdCreator + insityou.viewer.h2zero.taglib.sPersonZoneRelationship.FindByIdCreatorTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idSPersonZoneRelationship variable + + idSPersonZoneRelationship + true + true + + + + Bind the idCreator variable + + idCreator + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByDestinationAndSourceAndScenario on the s_person_zone_relationship table + + SPersonZoneRelationshipFindByDestinationAndSourceAndScenario + insityou.viewer.h2zero.taglib.sPersonZoneRelationship.FindByDestinationAndSourceAndScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idPersonSource variable + + idPersonSource + true + true + + + + Bind the idZoneDestination variable + + idZoneDestination + true + true + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByScenario on the s_person_zone_relationship table + + SPersonZoneRelationshipFindByScenario + insityou.viewer.h2zero.taglib.sPersonZoneRelationship.FindByScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the s_person_zone_relationship table + + SPersonZoneRelationshipCountAll + insityou.viewer.h2zero.taglib.sPersonZoneRelationship.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the s_department_zone_relationship table + + SDepartmentZoneRelationshipFindByPrimaryKey + insityou.viewer.h2zero.taglib.sDepartmentZoneRelationship.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + SDepartmentZoneRelationshipFindAll + insityou.viewer.h2zero.taglib.sDepartmentZoneRelationship.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByIdDepartmentSourceAndScenario on the s_department_zone_relationship table + + SDepartmentZoneRelationshipFindByIdDepartmentSourceAndScenario + insityou.viewer.h2zero.taglib.sDepartmentZoneRelationship.FindByIdDepartmentSourceAndScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idDepartmentSource variable + + idDepartmentSource + true + true + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdZoneDestinationAndScenario on the s_department_zone_relationship table + + SDepartmentZoneRelationshipFindByIdZoneDestinationAndScenario + insityou.viewer.h2zero.taglib.sDepartmentZoneRelationship.FindByIdZoneDestinationAndScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idZoneDestination variable + + idZoneDestination + true + true + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdCreator on the s_department_zone_relationship table + + SDepartmentZoneRelationshipFindByIdCreator + insityou.viewer.h2zero.taglib.sDepartmentZoneRelationship.FindByIdCreatorTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idSDepartmentZoneRelationship variable + + idSDepartmentZoneRelationship + true + true + + + + Bind the idCreator variable + + idCreator + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByDestinationAndSourceAndScenario on the s_department_zone_relationship table + + SDepartmentZoneRelationshipFindByDestinationAndSourceAndScenario + insityou.viewer.h2zero.taglib.sDepartmentZoneRelationship.FindByDestinationAndSourceAndScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idDepartmentSource variable + + idDepartmentSource + true + true + + + + Bind the idZoneDestination variable + + idZoneDestination + true + true + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByScenario on the s_department_zone_relationship table + + SDepartmentZoneRelationshipFindByScenario + insityou.viewer.h2zero.taglib.sDepartmentZoneRelationship.FindByScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the s_department_zone_relationship table + + SDepartmentZoneRelationshipCountAll + insityou.viewer.h2zero.taglib.sDepartmentZoneRelationship.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the s_project_zone_relationship table + + SProjectZoneRelationshipFindByPrimaryKey + insityou.viewer.h2zero.taglib.sProjectZoneRelationship.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + SProjectZoneRelationshipFindAll + insityou.viewer.h2zero.taglib.sProjectZoneRelationship.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByIdProjectSourceAndScenario on the s_project_zone_relationship table + + SProjectZoneRelationshipFindByIdProjectSourceAndScenario + insityou.viewer.h2zero.taglib.sProjectZoneRelationship.FindByIdProjectSourceAndScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idProjectSource variable + + idProjectSource + true + true + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdZoneDestinationAndScenario on the s_project_zone_relationship table + + SProjectZoneRelationshipFindByIdZoneDestinationAndScenario + insityou.viewer.h2zero.taglib.sProjectZoneRelationship.FindByIdZoneDestinationAndScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idZoneDestination variable + + idZoneDestination + true + true + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdCreator on the s_project_zone_relationship table + + SProjectZoneRelationshipFindByIdCreator + insityou.viewer.h2zero.taglib.sProjectZoneRelationship.FindByIdCreatorTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idSProjectZoneRelationship variable + + idSProjectZoneRelationship + true + true + + + + Bind the idCreator variable + + idCreator + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByDestinationAndSourceAndScenario on the s_project_zone_relationship table + + SProjectZoneRelationshipFindByDestinationAndSourceAndScenario + insityou.viewer.h2zero.taglib.sProjectZoneRelationship.FindByDestinationAndSourceAndScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idProjectSource variable + + idProjectSource + true + true + + + + Bind the idZoneDestination variable + + idZoneDestination + true + true + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByScenario on the s_project_zone_relationship table + + SProjectZoneRelationshipFindByScenario + insityou.viewer.h2zero.taglib.sProjectZoneRelationship.FindByScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the s_project_zone_relationship table + + SProjectZoneRelationshipCountAll + insityou.viewer.h2zero.taglib.sProjectZoneRelationship.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the s_manager_department table + + SManagerDepartmentFindByPrimaryKey + insityou.viewer.h2zero.taglib.sManagerDepartment.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + SManagerDepartmentFindAll + insityou.viewer.h2zero.taglib.sManagerDepartment.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByIdManagerID on the s_manager_department table + + SManagerDepartmentFindByIdManagerID + insityou.viewer.h2zero.taglib.sManagerDepartment.FindByIdManagerIDTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idManager variable + + idManager + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdDepartment on the s_manager_department table + + SManagerDepartmentFindByIdDepartment + insityou.viewer.h2zero.taglib.sManagerDepartment.FindByIdDepartmentTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idDepartment variable + + idDepartment + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByScenario on the s_manager_department table + + SManagerDepartmentFindByScenario + insityou.viewer.h2zero.taglib.sManagerDepartment.FindByScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the s_manager_department table + + SManagerDepartmentCountAll + insityou.viewer.h2zero.taglib.sManagerDepartment.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the s_project_project_attribute table + + SProjectProjectAttributeFindByPrimaryKey + insityou.viewer.h2zero.taglib.sProjectProjectAttribute.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + SProjectProjectAttributeFindAll + insityou.viewer.h2zero.taglib.sProjectProjectAttribute.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByIdProject on the s_project_project_attribute table + + SProjectProjectAttributeFindByIdProject + insityou.viewer.h2zero.taglib.sProjectProjectAttribute.FindByIdProjectTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idProject variable + + idProject + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdProjectAndScenario on the s_project_project_attribute table + + SProjectProjectAttributeFindByIdProjectAndScenario + insityou.viewer.h2zero.taglib.sProjectProjectAttribute.FindByIdProjectAndScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idProject variable + + idProject + true + true + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdProjectAttribute on the s_project_project_attribute table + + SProjectProjectAttributeFindByIdProjectAttribute + insityou.viewer.h2zero.taglib.sProjectProjectAttribute.FindByIdProjectAttributeTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idProjectAttribute variable + + idProjectAttribute + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByScenario on the s_project_project_attribute table + + SProjectProjectAttributeFindByScenario + insityou.viewer.h2zero.taglib.sProjectProjectAttribute.FindByScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the s_project_project_attribute table + + SProjectProjectAttributeCountAll + insityou.viewer.h2zero.taglib.sProjectProjectAttribute.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the s_person_project table + + SPersonProjectFindByPrimaryKey + insityou.viewer.h2zero.taglib.sPersonProject.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + SPersonProjectFindAll + insityou.viewer.h2zero.taglib.sPersonProject.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByIdPerson on the s_person_project table + + SPersonProjectFindByIdPerson + insityou.viewer.h2zero.taglib.sPersonProject.FindByIdPersonTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idPerson variable + + idPerson + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdProject on the s_person_project table + + SPersonProjectFindByIdProject + insityou.viewer.h2zero.taglib.sPersonProject.FindByIdProjectTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idProject variable + + idProject + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdProjectAndScenario on the s_person_project table + + SPersonProjectFindByIdProjectAndScenario + insityou.viewer.h2zero.taglib.sPersonProject.FindByIdProjectAndScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idProject variable + + idProject + true + true + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByScenario on the s_person_project table + + SPersonProjectFindByScenario + insityou.viewer.h2zero.taglib.sPersonProject.FindByScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findProjectHeadCount on the s_person_project table + + SPersonProjectFindProjectHeadCount + insityou.viewer.h2zero.taglib.sPersonProject.FindProjectHeadCountTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdProjectHeadCount on the s_person_project table + + SPersonProjectFindByIdProjectHeadCount + insityou.viewer.h2zero.taglib.sPersonProject.FindByIdProjectHeadCountTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idScenario variable + + idScenario + true + true + + + + Bind the idProject variable + + idProject + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the s_person_project table + + SPersonProjectCountAll + insityou.viewer.h2zero.taglib.sPersonProject.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the s_person_person_attribute table + + SPersonPersonAttributeFindByPrimaryKey + insityou.viewer.h2zero.taglib.sPersonPersonAttribute.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + SPersonPersonAttributeFindAll + insityou.viewer.h2zero.taglib.sPersonPersonAttribute.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByIdPerson on the s_person_person_attribute table + + SPersonPersonAttributeFindByIdPerson + insityou.viewer.h2zero.taglib.sPersonPersonAttribute.FindByIdPersonTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idPerson variable + + idPerson + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdPersonAttribute on the s_person_person_attribute table + + SPersonPersonAttributeFindByIdPersonAttribute + insityou.viewer.h2zero.taglib.sPersonPersonAttribute.FindByIdPersonAttributeTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idPersonAttribute variable + + idPersonAttribute + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByScenario on the s_person_person_attribute table + + SPersonPersonAttributeFindByScenario + insityou.viewer.h2zero.taglib.sPersonPersonAttribute.FindByScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the s_person_person_attribute table + + SPersonPersonAttributeCountAll + insityou.viewer.h2zero.taglib.sPersonPersonAttribute.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the s_run_data table + + SRunDataFindByPrimaryKey + insityou.viewer.h2zero.taglib.sRunData.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + SRunDataFindAll + insityou.viewer.h2zero.taglib.sRunData.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByIdScenario on the s_run_data table + + SRunDataFindByIdScenario + insityou.viewer.h2zero.taglib.sRunData.FindByIdScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findNextRunDataForScenario on the s_run_data table + + SRunDataFindNextRunDataForScenario + insityou.viewer.h2zero.taglib.sRunData.FindNextRunDataForScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idScenario variable + + idScenario + true + true + + + + Bind the idSRunData variable + + idSRunData + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findCountScenarioMessages on the s_run_data table + + SRunDataFindCountScenarioMessages + insityou.viewer.h2zero.taglib.sRunData.FindCountScenarioMessagesTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findCountMessagesByType on the s_run_data table + + SRunDataFindCountMessagesByType + insityou.viewer.h2zero.taglib.sRunData.FindCountMessagesByTypeTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idScenario variable + + idScenario + true + true + + + + Bind the idCoreMessageType variable + + idCoreMessageType + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the s_run_data table + + SRunDataCountAll + insityou.viewer.h2zero.taglib.sRunData.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + generated tag for the hasSRunDataForIdScenario + + SRunDataHasSRunDataForIdScenario + insityou.viewer.h2zero.taglib.sRunData.HasSRunDataForIdScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the s_seating_allocation table + + SSeatingAllocationFindByPrimaryKey + insityou.viewer.h2zero.taglib.sSeatingAllocation.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + SSeatingAllocationFindAll + insityou.viewer.h2zero.taglib.sSeatingAllocation.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByIdSeatingAllocation on the s_seating_allocation table + + SSeatingAllocationFindByIdSeatingAllocation + insityou.viewer.h2zero.taglib.sSeatingAllocation.FindByIdSeatingAllocationTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idSSeatingAllocation variable + + idSSeatingAllocation + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdSeat on the s_seating_allocation table + + SSeatingAllocationFindByIdSeat + insityou.viewer.h2zero.taglib.sSeatingAllocation.FindByIdSeatTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idSeat variable + + idSeat + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdSeatIdScenario on the s_seating_allocation table + + SSeatingAllocationFindByIdSeatIdScenario + insityou.viewer.h2zero.taglib.sSeatingAllocation.FindByIdSeatIdScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idSeat variable + + idSeat + true + true + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdPerson on the s_seating_allocation table + + SSeatingAllocationFindByIdPerson + insityou.viewer.h2zero.taglib.sSeatingAllocation.FindByIdPersonTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idPerson variable + + idPerson + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdScenario on the s_seating_allocation table + + SSeatingAllocationFindByIdScenario + insityou.viewer.h2zero.taglib.sSeatingAllocation.FindByIdScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdScenarioNumFloor on the s_seating_allocation table + + SSeatingAllocationFindByIdScenarioNumFloor + insityou.viewer.h2zero.taglib.sSeatingAllocation.FindByIdScenarioNumFloorTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idScenario variable + + idScenario + true + true + + + + Bind the numFloor variable + + numFloor + true + true + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdScenarioIdCoreGenerated on the s_seating_allocation table + + SSeatingAllocationFindByIdScenarioIdCoreGenerated + insityou.viewer.h2zero.taglib.sSeatingAllocation.FindByIdScenarioIdCoreGeneratedTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idScenario variable + + idScenario + true + true + + + + Bind the idCoreGenerated variable + + idCoreGenerated + true + true + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findProjectDetailsByIdCoreGenerated on the s_seating_allocation table + + SSeatingAllocationFindProjectDetailsByIdCoreGenerated + insityou.viewer.h2zero.taglib.sSeatingAllocation.FindProjectDetailsByIdCoreGeneratedTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idScenario variable + + idScenario + true + true + + + + Bind the idScenario variable + + idScenario + true + true + + + + Bind the idScenario variable + + idScenario + true + true + + + + Bind the idCoreGenerated variable + + idCoreGenerated + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findDepartmentDetailsByIdCoreGenerated on the s_seating_allocation table + + SSeatingAllocationFindDepartmentDetailsByIdCoreGenerated + insityou.viewer.h2zero.taglib.sSeatingAllocation.FindDepartmentDetailsByIdCoreGeneratedTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idCoreGenerated variable + + idCoreGenerated + true + true + + + + Bind the idScenario variable + + idScenario + true + true + + + + Bind the idScenario variable + + idScenario + true + true + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdScenarioAndIdSeat on the s_seating_allocation table + + SSeatingAllocationFindByIdScenarioAndIdSeat + insityou.viewer.h2zero.taglib.sSeatingAllocation.FindByIdScenarioAndIdSeatTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idScenario variable + + idScenario + true + true + + + + Bind the idSeat variable + + idSeat + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findIdSeatByIdDepartment on the s_seating_allocation table + + SSeatingAllocationFindIdSeatByIdDepartment + insityou.viewer.h2zero.taglib.sSeatingAllocation.FindIdSeatByIdDepartmentTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idScenario variable + + idScenario + true + true + + + + Bind the idScenario variable + + idScenario + true + true + + + + Bind the idSDepartment variable + + idSDepartment + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findIdSeatByIdPerson on the s_seating_allocation table + + SSeatingAllocationFindIdSeatByIdPerson + insityou.viewer.h2zero.taglib.sSeatingAllocation.FindIdSeatByIdPersonTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idScenario variable + + idScenario + true + true + + + + Bind the idPerson variable + + idPerson + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the s_seating_allocation table + + SSeatingAllocationCountAll + insityou.viewer.h2zero.taglib.sSeatingAllocation.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the s_lock_seat table + + SLockSeatFindByPrimaryKey + insityou.viewer.h2zero.taglib.sLockSeat.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + SLockSeatFindAll + insityou.viewer.h2zero.taglib.sLockSeat.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByScenario on the s_lock_seat table + + SLockSeatFindByScenario + insityou.viewer.h2zero.taglib.sLockSeat.FindByScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdScenarioIdCoreGenerated on the s_lock_seat table + + SLockSeatFindByIdScenarioIdCoreGenerated + insityou.viewer.h2zero.taglib.sLockSeat.FindByIdScenarioIdCoreGeneratedTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idScenario variable + + idScenario + true + true + + + + Bind the idCoreGenerated variable + + idCoreGenerated + true + true + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdScenarioNumFloor on the s_lock_seat table + + SLockSeatFindByIdScenarioNumFloor + insityou.viewer.h2zero.taglib.sLockSeat.FindByIdScenarioNumFloorTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idScenario variable + + idScenario + true + true + + + + Bind the numFloor variable + + numFloor + true + true + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdEntity on the s_lock_seat table + + SLockSeatFindByIdEntity + insityou.viewer.h2zero.taglib.sLockSeat.FindByIdEntityTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idEntity variable + + idEntity + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByDistinctEntities on the s_lock_seat table + + SLockSeatFindByDistinctEntities + insityou.viewer.h2zero.taglib.sLockSeat.FindByDistinctEntitiesTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the s_lock_seat table + + SLockSeatCountAll + insityou.viewer.h2zero.taglib.sLockSeat.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the s_travel_time table + + STravelTimeFindByPrimaryKey + insityou.viewer.h2zero.taglib.sTravelTime.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + STravelTimeFindAll + insityou.viewer.h2zero.taglib.sTravelTime.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByIdScenario on the s_travel_time table + + STravelTimeFindByIdScenario + insityou.viewer.h2zero.taglib.sTravelTime.FindByIdScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdSource on the s_travel_time table + + STravelTimeFindByIdSource + insityou.viewer.h2zero.taglib.sTravelTime.FindByIdSourceTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idSource variable + + idSource + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdDestination on the s_travel_time table + + STravelTimeFindByIdDestination + insityou.viewer.h2zero.taglib.sTravelTime.FindByIdDestinationTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idDestination variable + + idDestination + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdSourceAndIdScenario on the s_travel_time table + + STravelTimeFindByIdSourceAndIdScenario + insityou.viewer.h2zero.taglib.sTravelTime.FindByIdSourceAndIdScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idScenario variable + + idScenario + true + true + + + + Bind the idSource variable + + idSource + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByNmSourceIdScenario on the s_travel_time table + + STravelTimeFindByNmSourceIdScenario + insityou.viewer.h2zero.taglib.sTravelTime.FindByNmSourceIdScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idScenario variable + + idScenario + true + true + + + + Bind the nmSource variable + + nmSource + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdScenarioOrdered on the s_travel_time table + + STravelTimeFindByIdScenarioOrdered + insityou.viewer.h2zero.taglib.sTravelTime.FindByIdScenarioOrderedTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findDistinctIdSourceByIdScenarioOrdered on the s_travel_time table + + STravelTimeFindDistinctIdSourceByIdScenarioOrdered + insityou.viewer.h2zero.taglib.sTravelTime.FindDistinctIdSourceByIdScenarioOrderedTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idScenario variable + + idScenario + true + true + + + + Bind the nmSource variable + + nmSource + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findMaxTime on the s_travel_time table + + STravelTimeFindMaxTime + insityou.viewer.h2zero.taglib.sTravelTime.FindMaxTimeTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the s_travel_time table + + STravelTimeCountAll + insityou.viewer.h2zero.taglib.sTravelTime.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the s_link table + + SLinkFindByPrimaryKey + insityou.viewer.h2zero.taglib.sLink.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + SLinkFindAll + insityou.viewer.h2zero.taglib.sLink.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByIdLink on the s_link table + + SLinkFindByIdLink + insityou.viewer.h2zero.taglib.sLink.FindByIdLinkTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idSLink variable + + idSLink + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByScenario on the s_link table + + SLinkFindByScenario + insityou.viewer.h2zero.taglib.sLink.FindByScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the s_link table + + SLinkCountAll + insityou.viewer.h2zero.taglib.sLink.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the s_polyline table + + SPolylineFindByPrimaryKey + insityou.viewer.h2zero.taglib.sPolyline.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + SPolylineFindAll + insityou.viewer.h2zero.taglib.sPolyline.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByIdPolyline on the s_polyline table + + SPolylineFindByIdPolyline + insityou.viewer.h2zero.taglib.sPolyline.FindByIdPolylineTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idSPolyline variable + + idSPolyline + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByScenario on the s_polyline table + + SPolylineFindByScenario + insityou.viewer.h2zero.taglib.sPolyline.FindByScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the s_polyline table + + SPolylineCountAll + insityou.viewer.h2zero.taglib.sPolyline.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + diff --git a/generate/src/main/webapps/WEB-INF/tld/panl.tld b/generate/src/main/webapps/WEB-INF/tld/panl.tld new file mode 100644 index 00000000..983528f1 --- /dev/null +++ b/generate/src/main/webapps/WEB-INF/tld/panl.tld @@ -0,0 +1,1326 @@ + + + + + + panl tag library definitions + Thoughtfully generated by h2zero and templar from synapticloop + file: tld-create-library.templar + + panl Tag Library + 1.2 + panl + + + + + generated tag for the find by primary key method + + PlanFindByPrimaryKey + synapticloop.panl.test.h2zero.taglib.plan.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + PlanFindAll + synapticloop.panl.test.h2zero.taglib.plan.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the count all + + PlanCountAll + synapticloop.panl.test.h2zero.taglib.plan.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the findByOrderedPlanAmount + + PlanFindByOrderedPlanAmount + synapticloop.panl.test.h2zero.taglib.plan.FindByOrderedPlanAmountTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the findActiveByPrimaryKey + + PlanFindActiveByPrimaryKey + synapticloop.panl.test.h2zero.taglib.plan.FindActiveByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idPlan variable + + idPlan + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the findAllActiveOrdered + + PlanFindAllActiveOrdered + synapticloop.panl.test.h2zero.taglib.plan.FindAllActiveOrderedTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the findByNmPlanBraintreeActive + + PlanFindByNmPlanBraintreeActive + synapticloop.panl.test.h2zero.taglib.plan.FindByNmPlanBraintreeActiveTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the nmPlanBraintree variable + + nmPlanBraintree + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + generated tag for the find by primary key method + + CountryFindByPrimaryKey + synapticloop.panl.test.h2zero.taglib.country.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + CountryFindAll + synapticloop.panl.test.h2zero.taglib.country.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the count all + + CountryCountAll + synapticloop.panl.test.h2zero.taglib.country.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the findByPopularity + + CountryFindByPopularity + synapticloop.panl.test.h2zero.taglib.country.FindByPopularityTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + generated tag for the find by primary key method + + ClientFindByPrimaryKey + synapticloop.panl.test.h2zero.taglib.client.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + ClientFindAll + synapticloop.panl.test.h2zero.taglib.client.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the count all + + ClientCountAll + synapticloop.panl.test.h2zero.taglib.client.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the findByTxtAddressEmail + + ClientFindByTxtAddressEmail + synapticloop.panl.test.h2zero.taglib.client.FindByTxtAddressEmailTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the txtAddressEmail variable + + txtAddressEmail + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the findByCdClientUuid + + ClientFindByCdClientUuid + synapticloop.panl.test.h2zero.taglib.client.FindByCdClientUuidTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the cdClientUuid variable + + cdClientUuid + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the findByTxtForgottenPasswordInLastTwoHours + + ClientFindByTxtForgottenPasswordInLastTwoHours + synapticloop.panl.test.h2zero.taglib.client.FindByTxtForgottenPasswordInLastTwoHoursTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the txtForgottenPassword variable + + txtForgottenPassword + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + generated tag for the find by primary key method + + ClientBlogPluginsFindByPrimaryKey + synapticloop.panl.test.h2zero.taglib.clientBlogPlugins.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + ClientBlogPluginsFindAll + synapticloop.panl.test.h2zero.taglib.clientBlogPlugins.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the count all + + ClientBlogPluginsCountAll + synapticloop.panl.test.h2zero.taglib.clientBlogPlugins.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + generated tag for the find by primary key method + + SubscriptionEventFindByPrimaryKey + synapticloop.panl.test.h2zero.taglib.subscriptionEvent.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + SubscriptionEventFindAll + synapticloop.panl.test.h2zero.taglib.subscriptionEvent.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the count all + + SubscriptionEventCountAll + synapticloop.panl.test.h2zero.taglib.subscriptionEvent.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + generated tag for the find by primary key method + + ClientPlanEventFindByPrimaryKey + synapticloop.panl.test.h2zero.taglib.clientPlanEvent.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + ClientPlanEventFindAll + synapticloop.panl.test.h2zero.taglib.clientPlanEvent.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the count all + + ClientPlanEventCountAll + synapticloop.panl.test.h2zero.taglib.clientPlanEvent.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the findByIdClientReverseDate + + ClientPlanEventFindByIdClientReverseDate + synapticloop.panl.test.h2zero.taglib.clientPlanEvent.FindByIdClientReverseDateTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idClient variable + + idClient + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + generated tag for the find by primary key method + + ServerFindByPrimaryKey + synapticloop.panl.test.h2zero.taglib.server.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + ServerFindAll + synapticloop.panl.test.h2zero.taglib.server.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the count all + + ServerCountAll + synapticloop.panl.test.h2zero.taglib.server.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the findNextServer + + ServerFindNextServer + synapticloop.panl.test.h2zero.taglib.server.FindNextServerTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + generated tag for the find by primary key method + + ClientPaymentInfoFindByPrimaryKey + synapticloop.panl.test.h2zero.taglib.clientPaymentInfo.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + ClientPaymentInfoFindAll + synapticloop.panl.test.h2zero.taglib.clientPaymentInfo.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the count all + + ClientPaymentInfoCountAll + synapticloop.panl.test.h2zero.taglib.clientPaymentInfo.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the findByIdClientReverseDate + + ClientPaymentInfoFindByIdClientReverseDate + synapticloop.panl.test.h2zero.taglib.clientPaymentInfo.FindByIdClientReverseDateTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idClient variable + + idClient + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the findActiveByIdClient + + ClientPaymentInfoFindActiveByIdClient + synapticloop.panl.test.h2zero.taglib.clientPaymentInfo.FindActiveByIdClientTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idClient variable + + idClient + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the findAllExpiryIn60Days + + ClientPaymentInfoFindAllExpiryIn60Days + synapticloop.panl.test.h2zero.taglib.clientPaymentInfo.FindAllExpiryIn60DaysTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the findAllExpiryIn30Days + + ClientPaymentInfoFindAllExpiryIn30Days + synapticloop.panl.test.h2zero.taglib.clientPaymentInfo.FindAllExpiryIn30DaysTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + generated tag for the find by primary key method + + MediaTypeFindByPrimaryKey + synapticloop.panl.test.h2zero.taglib.mediaType.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + MediaTypeFindAll + synapticloop.panl.test.h2zero.taglib.mediaType.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the count all + + MediaTypeCountAll + synapticloop.panl.test.h2zero.taglib.mediaType.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + generated tag for the find by primary key method + + ProjectFindByPrimaryKey + synapticloop.panl.test.h2zero.taglib.project.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + ProjectFindAll + synapticloop.panl.test.h2zero.taglib.project.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the count all + + ProjectCountAll + synapticloop.panl.test.h2zero.taglib.project.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the findByProjectSize + + ProjectFindByProjectSize + synapticloop.panl.test.h2zero.taglib.project.FindByProjectSizeTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + diff --git a/generate/src/main/webapps/WEB-INF/tld/sample.tld b/generate/src/main/webapps/WEB-INF/tld/sample.tld new file mode 100644 index 00000000..36ff189a --- /dev/null +++ b/generate/src/main/webapps/WEB-INF/tld/sample.tld @@ -0,0 +1,953 @@ + + + + + + sample tag library definitions + Thoughtfully generated by h2zero and templar from synapticloop + file: tld-create-library.templar + + sample Tag Library + 1.2 + sample + + + + + This is an in-built tag for the find by primary key method on the user_type table + + UserTypeFindByPrimaryKey + synapticloop.sample.h2zero.taglib.userType.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + UserTypeFindAll + synapticloop.sample.h2zero.taglib.userType.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the user_type table + + UserTypeCountAll + synapticloop.sample.h2zero.taglib.userType.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the user table + + UserFindByPrimaryKey + synapticloop.sample.h2zero.taglib.user.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + UserFindAll + synapticloop.sample.h2zero.taglib.user.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automatically generated tag that maps to the findByNumAge finder + + UserFindByNumAge + synapticloop.sample.h2zero.taglib.user.FindByNumAgeTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the numAge variable + + numAge + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automatically generated tag that maps to the findByFlIsAliveNumAge finder + + UserFindByFlIsAliveNumAge + synapticloop.sample.h2zero.taglib.user.FindByFlIsAliveNumAgeTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the flIsAlive variable + + flIsAlive + true + true + + + + Bind the numAge variable + + numAge + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automatically generated tag that maps to the findByNmUsername finder + + UserFindByNmUsername + synapticloop.sample.h2zero.taglib.user.FindByNmUsernameTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the nmUsername variable + + nmUsername + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automatically generated tag that maps to the findByTxtAddressEmail finder + + UserFindByTxtAddressEmail + synapticloop.sample.h2zero.taglib.user.FindByTxtAddressEmailTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the txtAddressEmail variable + + txtAddressEmail + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automatically generated tag that maps to the findByTxtAddressEmailTxtPassword finder + + UserFindByTxtAddressEmailTxtPassword + synapticloop.sample.h2zero.taglib.user.FindByTxtAddressEmailTxtPasswordTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the txtAddressEmail variable + + txtAddressEmail + true + true + + + + Bind the txtPassword variable + + txtPassword + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automatically generated tag that maps to the findNmUserDtmSignup finder + + UserFindNmUserDtmSignup + synapticloop.sample.h2zero.taglib.user.FindNmUserDtmSignupTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automatically generated tag that maps to the findGroupNumAge finder + + UserFindGroupNumAge + synapticloop.sample.h2zero.taglib.user.FindGroupNumAgeTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automatically generated tag that maps to the findByNumAgeIn finder + + UserFindByNumAgeIn + synapticloop.sample.h2zero.taglib.user.FindByNumAgeInTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the numAge variable + + numAge + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automatically generated tag that maps to the findByNumAgeBetween finder + + UserFindByNumAgeBetween + synapticloop.sample.h2zero.taglib.user.FindByNumAgeBetweenTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the numAgeMin variable + + numAgeMin + true + true + + + + Bind the numAgeMax variable + + numAgeMax + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the user table + + UserCountAll + synapticloop.sample.h2zero.taglib.user.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + counter tag generated tag for the countNumberOfUsers + + UserCountNumberOfUsers + synapticloop.sample.h2zero.taglib.user.CountNumberOfUsersTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + counter tag generated tag for the countNumberOfUsersOverAge + + UserCountNumberOfUsersOverAge + synapticloop.sample.h2zero.taglib.user.CountNumberOfUsersOverAgeTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the numAge variable + + numAge + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + counter tag generated tag for the countNumberOfUsersBetweenAge + + UserCountNumberOfUsersBetweenAge + synapticloop.sample.h2zero.taglib.user.CountNumberOfUsersBetweenAgeTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the numAgeFrom variable + + numAgeFrom + true + true + + + + Bind the numAgeTo variable + + numAgeTo + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + counter tag generated tag for the countUsersInAges + + UserCountUsersInAges + synapticloop.sample.h2zero.taglib.user.CountUsersInAgesTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the numAge variable + + numAge + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + generated tag for the doWeHaveMoreThanTwentyUsers + + UserDoWeHaveMoreThanTwentyUsers + synapticloop.sample.h2zero.taglib.user.DoWeHaveMoreThanTwentyUsersTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the doesUserNameExist + + UserDoesUserNameExist + synapticloop.sample.h2zero.taglib.user.DoesUserNameExistTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the doWeHaveUsersBetweenAgeExclusive + + UserDoWeHaveUsersBetweenAgeExclusive + synapticloop.sample.h2zero.taglib.user.DoWeHaveUsersBetweenAgeExclusiveTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the numAgeFrom variable + + numAgeFrom + true + true + + + + Bind the numAgeTo variable + + numAgeTo + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the doWeHaveUsersInAges + + UserDoWeHaveUsersInAges + synapticloop.sample.h2zero.taglib.user.DoWeHaveUsersInAgesTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the numAge variable + + numAge + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the pet table + + PetFindByPrimaryKey + synapticloop.sample.h2zero.taglib.pet.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + PetFindAll + synapticloop.sample.h2zero.taglib.pet.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the pet table + + PetCountAll + synapticloop.sample.h2zero.taglib.pet.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the user_pet table + + UserPetFindByPrimaryKey + synapticloop.sample.h2zero.taglib.userPet.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + UserPetFindAll + synapticloop.sample.h2zero.taglib.userPet.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the user_pet table + + UserPetCountAll + synapticloop.sample.h2zero.taglib.userPet.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + diff --git a/generate/src/main/webapps/WEB-INF/tld/tester.tld b/generate/src/main/webapps/WEB-INF/tld/tester.tld new file mode 100644 index 00000000..ac91298b --- /dev/null +++ b/generate/src/main/webapps/WEB-INF/tld/tester.tld @@ -0,0 +1,7245 @@ + + + + + + tester tag library definitions + Thoughtfully generated by h2zero and templar from synapticloop + file: tld-create-library.templar + + tester Tag Library + 1.2 + tester + + + + + This is an in-built tag for the find by primary key method on the entity_type table + + EntityTypeFindByPrimaryKey + tester.viewer.h2zero.taglib.entityType.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + EntityTypeFindAll + tester.viewer.h2zero.taglib.entityType.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the entity_type table + + EntityTypeCountAll + tester.viewer.h2zero.taglib.entityType.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the relationship_type table + + RelationshipTypeFindByPrimaryKey + tester.viewer.h2zero.taglib.relationshipType.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + RelationshipTypeFindAll + tester.viewer.h2zero.taglib.relationshipType.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the relationship_type table + + RelationshipTypeCountAll + tester.viewer.h2zero.taglib.relationshipType.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the access_level table + + AccessLevelFindByPrimaryKey + tester.viewer.h2zero.taglib.accessLevel.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + AccessLevelFindAll + tester.viewer.h2zero.taglib.accessLevel.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the access_level table + + AccessLevelCountAll + tester.viewer.h2zero.taglib.accessLevel.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the person table + + PersonFindByPrimaryKey + tester.viewer.h2zero.taglib.person.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + PersonFindAll + tester.viewer.h2zero.taglib.person.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the person table + + PersonCountAll + tester.viewer.h2zero.taglib.person.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the project table + + ProjectFindByPrimaryKey + tester.viewer.h2zero.taglib.project.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + ProjectFindAll + tester.viewer.h2zero.taglib.project.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByProjectSize on the project table + + ProjectFindByProjectSize + tester.viewer.h2zero.taglib.project.FindByProjectSizeTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idProject variable + + idProject + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the project table + + ProjectCountAll + tester.viewer.h2zero.taglib.project.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the scenario table + + ScenarioFindByPrimaryKey + tester.viewer.h2zero.taglib.scenario.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + ScenarioFindAll + tester.viewer.h2zero.taglib.scenario.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByScenario on the scenario table + + ScenarioFindByScenario + tester.viewer.h2zero.taglib.scenario.FindByScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdCreator on the scenario table + + ScenarioFindByIdCreator + tester.viewer.h2zero.taglib.scenario.FindByIdCreatorTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idCreator variable + + idCreator + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the scenario table + + ScenarioCountAll + tester.viewer.h2zero.taglib.scenario.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the s_project table + + SProjectFindByPrimaryKey + tester.viewer.h2zero.taglib.sProject.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + SProjectFindAll + tester.viewer.h2zero.taglib.sProject.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByProjectSize on the s_project table + + SProjectFindByProjectSize + tester.viewer.h2zero.taglib.sProject.FindByProjectSizeTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idProject variable + + idProject + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByScenario on the s_project table + + SProjectFindByScenario + tester.viewer.h2zero.taglib.sProject.FindByScenarioTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idScenario variable + + idScenario + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the s_project table + + SProjectCountAll + tester.viewer.h2zero.taglib.sProject.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the architecture table + + ArchitectureFindByPrimaryKey + tester.viewer.h2zero.taglib.architecture.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + ArchitectureFindAll + tester.viewer.h2zero.taglib.architecture.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the architecture table + + ArchitectureCountAll + tester.viewer.h2zero.taglib.architecture.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the department table + + DepartmentFindByPrimaryKey + tester.viewer.h2zero.taglib.department.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + DepartmentFindAll + tester.viewer.h2zero.taglib.department.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByIsParentDepartment on the department table + + DepartmentFindByIsParentDepartment + tester.viewer.h2zero.taglib.department.FindByIsParentDepartmentTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idDepartmentParent variable + + idDepartmentParent + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByFlIsClustered on the department table + + DepartmentFindByFlIsClustered + tester.viewer.h2zero.taglib.department.FindByFlIsClusteredTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the flIsClustered variable + + flIsClustered + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the department table + + DepartmentCountAll + tester.viewer.h2zero.taglib.department.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the user table + + UserFindByPrimaryKey + tester.viewer.h2zero.taglib.user.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + UserFindAll + tester.viewer.h2zero.taglib.user.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByIdUser on the user table + + UserFindByIdUser + tester.viewer.h2zero.taglib.user.FindByIdUserTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idUser variable + + idUser + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByTxtForgottenPasswordInLastTwoHours on the user table + + UserFindByTxtForgottenPasswordInLastTwoHours + tester.viewer.h2zero.taglib.user.FindByTxtForgottenPasswordInLastTwoHoursTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the txtForgottenPassword variable + + txtForgottenPassword + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByTxtAddressEmail on the user table + + UserFindByTxtAddressEmail + tester.viewer.h2zero.taglib.user.FindByTxtAddressEmailTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the txtAddressEmail variable + + txtAddressEmail + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByFlIsEntity on the user table + + UserFindByFlIsEntity + tester.viewer.h2zero.taglib.user.FindByFlIsEntityTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the flIsEntity variable + + flIsEntity + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByUserSize on the user table + + UserFindByUserSize + tester.viewer.h2zero.taglib.user.FindByUserSizeTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idUser variable + + idUser + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByDepartment on the user table + + UserFindByDepartment + tester.viewer.h2zero.taglib.user.FindByDepartmentTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idDepartment variable + + idDepartment + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByDepartmentAssociation on the user table + + UserFindByDepartmentAssociation + tester.viewer.h2zero.taglib.user.FindByDepartmentAssociationTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idManager variable + + idManager + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the user table + + UserCountAll + tester.viewer.h2zero.taglib.user.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the attribute table + + AttributeFindByPrimaryKey + tester.viewer.h2zero.taglib.attribute.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + AttributeFindAll + tester.viewer.h2zero.taglib.attribute.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the attribute table + + AttributeCountAll + tester.viewer.h2zero.taglib.attribute.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the type table + + TypeFindByPrimaryKey + tester.viewer.h2zero.taglib.type.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + TypeFindAll + tester.viewer.h2zero.taglib.type.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByIdType on the type table + + TypeFindByIdType + tester.viewer.h2zero.taglib.type.FindByIdTypeTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idType variable + + idType + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findAllSortedByNmType on the type table + + TypeFindAllSortedByNmType + tester.viewer.h2zero.taglib.type.FindAllSortedByNmTypeTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the type table + + TypeCountAll + tester.viewer.h2zero.taglib.type.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the zone table + + ZoneFindByPrimaryKey + tester.viewer.h2zero.taglib.zone.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + ZoneFindAll + tester.viewer.h2zero.taglib.zone.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the zone table + + ZoneCountAll + tester.viewer.h2zero.taglib.zone.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the department_architecture_relationship table + + DepartmentArchitectureRelationshipFindByPrimaryKey + tester.viewer.h2zero.taglib.departmentArchitectureRelationship.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + DepartmentArchitectureRelationshipFindAll + tester.viewer.h2zero.taglib.departmentArchitectureRelationship.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByIdArchitectureDestination on the department_architecture_relationship table + + DepartmentArchitectureRelationshipFindByIdArchitectureDestination + tester.viewer.h2zero.taglib.departmentArchitectureRelationship.FindByIdArchitectureDestinationTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idArchitectureDestination variable + + idArchitectureDestination + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdDepartmentSource on the department_architecture_relationship table + + DepartmentArchitectureRelationshipFindByIdDepartmentSource + tester.viewer.h2zero.taglib.departmentArchitectureRelationship.FindByIdDepartmentSourceTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idDepartmentSource variable + + idDepartmentSource + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdCreator on the department_architecture_relationship table + + DepartmentArchitectureRelationshipFindByIdCreator + tester.viewer.h2zero.taglib.departmentArchitectureRelationship.FindByIdCreatorTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idDepartmentArchitectureRelationship variable + + idDepartmentArchitectureRelationship + true + true + + + + Bind the idCreator variable + + idCreator + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByDestinationAndSource on the department_architecture_relationship table + + DepartmentArchitectureRelationshipFindByDestinationAndSource + tester.viewer.h2zero.taglib.departmentArchitectureRelationship.FindByDestinationAndSourceTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idDepartmentSource variable + + idDepartmentSource + true + true + + + + Bind the idArchitectureDestination variable + + idArchitectureDestination + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the department_architecture_relationship table + + DepartmentArchitectureRelationshipCountAll + tester.viewer.h2zero.taglib.departmentArchitectureRelationship.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the department_department_relationship table + + DepartmentDepartmentRelationshipFindByPrimaryKey + tester.viewer.h2zero.taglib.departmentDepartmentRelationship.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + DepartmentDepartmentRelationshipFindAll + tester.viewer.h2zero.taglib.departmentDepartmentRelationship.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByIdDepartmentDestination on the department_department_relationship table + + DepartmentDepartmentRelationshipFindByIdDepartmentDestination + tester.viewer.h2zero.taglib.departmentDepartmentRelationship.FindByIdDepartmentDestinationTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idDepartmentDestination variable + + idDepartmentDestination + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdDepartmentSource on the department_department_relationship table + + DepartmentDepartmentRelationshipFindByIdDepartmentSource + tester.viewer.h2zero.taglib.departmentDepartmentRelationship.FindByIdDepartmentSourceTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idDepartmentSource variable + + idDepartmentSource + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdCreator on the department_department_relationship table + + DepartmentDepartmentRelationshipFindByIdCreator + tester.viewer.h2zero.taglib.departmentDepartmentRelationship.FindByIdCreatorTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idDepartmentDepartmentRelationship variable + + idDepartmentDepartmentRelationship + true + true + + + + Bind the idCreator variable + + idCreator + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByDestinationAndSource on the department_department_relationship table + + DepartmentDepartmentRelationshipFindByDestinationAndSource + tester.viewer.h2zero.taglib.departmentDepartmentRelationship.FindByDestinationAndSourceTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idDepartmentSource variable + + idDepartmentSource + true + true + + + + Bind the idDepartmentDestination variable + + idDepartmentDestination + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the department_department_relationship table + + DepartmentDepartmentRelationshipCountAll + tester.viewer.h2zero.taglib.departmentDepartmentRelationship.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the project_architecture_relationship table + + ProjectArchitectureRelationshipFindByPrimaryKey + tester.viewer.h2zero.taglib.projectArchitectureRelationship.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + ProjectArchitectureRelationshipFindAll + tester.viewer.h2zero.taglib.projectArchitectureRelationship.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByIdProjectSource on the project_architecture_relationship table + + ProjectArchitectureRelationshipFindByIdProjectSource + tester.viewer.h2zero.taglib.projectArchitectureRelationship.FindByIdProjectSourceTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idProjectSource variable + + idProjectSource + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdArchitectureDestination on the project_architecture_relationship table + + ProjectArchitectureRelationshipFindByIdArchitectureDestination + tester.viewer.h2zero.taglib.projectArchitectureRelationship.FindByIdArchitectureDestinationTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idArchitectureDestination variable + + idArchitectureDestination + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdCreator on the project_architecture_relationship table + + ProjectArchitectureRelationshipFindByIdCreator + tester.viewer.h2zero.taglib.projectArchitectureRelationship.FindByIdCreatorTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idProjectArchitectureRelationship variable + + idProjectArchitectureRelationship + true + true + + + + Bind the idCreator variable + + idCreator + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByDestinationAndSource on the project_architecture_relationship table + + ProjectArchitectureRelationshipFindByDestinationAndSource + tester.viewer.h2zero.taglib.projectArchitectureRelationship.FindByDestinationAndSourceTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idProjectSource variable + + idProjectSource + true + true + + + + Bind the idArchitectureDestination variable + + idArchitectureDestination + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the project_architecture_relationship table + + ProjectArchitectureRelationshipCountAll + tester.viewer.h2zero.taglib.projectArchitectureRelationship.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the building_plan table + + BuildingPlanFindByPrimaryKey + tester.viewer.h2zero.taglib.buildingPlan.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + BuildingPlanFindAll + tester.viewer.h2zero.taglib.buildingPlan.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByIdBuildingPlan on the building_plan table + + BuildingPlanFindByIdBuildingPlan + tester.viewer.h2zero.taglib.buildingPlan.FindByIdBuildingPlanTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idBuildingPlan variable + + idBuildingPlan + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the building_plan table + + BuildingPlanCountAll + tester.viewer.h2zero.taglib.buildingPlan.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the obj table + + ObjFindByPrimaryKey + tester.viewer.h2zero.taglib.obj.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + ObjFindAll + tester.viewer.h2zero.taglib.obj.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByIdBuildingPlan on the obj table + + ObjFindByIdBuildingPlan + tester.viewer.h2zero.taglib.obj.FindByIdBuildingPlanTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idBuildingPlan variable + + idBuildingPlan + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the obj table + + ObjCountAll + tester.viewer.h2zero.taglib.obj.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the project_attribute_relationship table + + ProjectAttributeRelationshipFindByPrimaryKey + tester.viewer.h2zero.taglib.projectAttributeRelationship.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + ProjectAttributeRelationshipFindAll + tester.viewer.h2zero.taglib.projectAttributeRelationship.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByIdProjectSource on the project_attribute_relationship table + + ProjectAttributeRelationshipFindByIdProjectSource + tester.viewer.h2zero.taglib.projectAttributeRelationship.FindByIdProjectSourceTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idProjectSource variable + + idProjectSource + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdAttributeDestination on the project_attribute_relationship table + + ProjectAttributeRelationshipFindByIdAttributeDestination + tester.viewer.h2zero.taglib.projectAttributeRelationship.FindByIdAttributeDestinationTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idAttributeDestination variable + + idAttributeDestination + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdCreator on the project_attribute_relationship table + + ProjectAttributeRelationshipFindByIdCreator + tester.viewer.h2zero.taglib.projectAttributeRelationship.FindByIdCreatorTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idProjectAttributeRelationship variable + + idProjectAttributeRelationship + true + true + + + + Bind the idCreator variable + + idCreator + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByDestinationAndSource on the project_attribute_relationship table + + ProjectAttributeRelationshipFindByDestinationAndSource + tester.viewer.h2zero.taglib.projectAttributeRelationship.FindByDestinationAndSourceTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idProjectSource variable + + idProjectSource + true + true + + + + Bind the idAttributeDestination variable + + idAttributeDestination + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the project_attribute_relationship table + + ProjectAttributeRelationshipCountAll + tester.viewer.h2zero.taglib.projectAttributeRelationship.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the project_project_relationship table + + ProjectProjectRelationshipFindByPrimaryKey + tester.viewer.h2zero.taglib.projectProjectRelationship.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + ProjectProjectRelationshipFindAll + tester.viewer.h2zero.taglib.projectProjectRelationship.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByIdProjectSource on the project_project_relationship table + + ProjectProjectRelationshipFindByIdProjectSource + tester.viewer.h2zero.taglib.projectProjectRelationship.FindByIdProjectSourceTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idProjectSource variable + + idProjectSource + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdProjectDestination on the project_project_relationship table + + ProjectProjectRelationshipFindByIdProjectDestination + tester.viewer.h2zero.taglib.projectProjectRelationship.FindByIdProjectDestinationTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idProjectDestination variable + + idProjectDestination + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdCreator on the project_project_relationship table + + ProjectProjectRelationshipFindByIdCreator + tester.viewer.h2zero.taglib.projectProjectRelationship.FindByIdCreatorTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idProjectProjectRelationship variable + + idProjectProjectRelationship + true + true + + + + Bind the idCreator variable + + idCreator + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByDestinationAndSource on the project_project_relationship table + + ProjectProjectRelationshipFindByDestinationAndSource + tester.viewer.h2zero.taglib.projectProjectRelationship.FindByDestinationAndSourceTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idProjectSource variable + + idProjectSource + true + true + + + + Bind the idProjectDestination variable + + idProjectDestination + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the project_project_relationship table + + ProjectProjectRelationshipCountAll + tester.viewer.h2zero.taglib.projectProjectRelationship.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the user_department_relationship table + + UserDepartmentRelationshipFindByPrimaryKey + tester.viewer.h2zero.taglib.userDepartmentRelationship.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + UserDepartmentRelationshipFindAll + tester.viewer.h2zero.taglib.userDepartmentRelationship.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByIdUserSource on the user_department_relationship table + + UserDepartmentRelationshipFindByIdUserSource + tester.viewer.h2zero.taglib.userDepartmentRelationship.FindByIdUserSourceTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idUserSource variable + + idUserSource + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdDepartmentDestination on the user_department_relationship table + + UserDepartmentRelationshipFindByIdDepartmentDestination + tester.viewer.h2zero.taglib.userDepartmentRelationship.FindByIdDepartmentDestinationTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idDepartmentDestination variable + + idDepartmentDestination + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdCreator on the user_department_relationship table + + UserDepartmentRelationshipFindByIdCreator + tester.viewer.h2zero.taglib.userDepartmentRelationship.FindByIdCreatorTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idUserDepartmentRelationship variable + + idUserDepartmentRelationship + true + true + + + + Bind the idCreator variable + + idCreator + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findAllByUserFlIsEntity on the user_department_relationship table + + UserDepartmentRelationshipFindAllByUserFlIsEntity + tester.viewer.h2zero.taglib.userDepartmentRelationship.FindAllByUserFlIsEntityTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByDestinationAndSource on the user_department_relationship table + + UserDepartmentRelationshipFindByDestinationAndSource + tester.viewer.h2zero.taglib.userDepartmentRelationship.FindByDestinationAndSourceTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idUserSource variable + + idUserSource + true + true + + + + Bind the idDepartmentDestination variable + + idDepartmentDestination + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the user_department_relationship table + + UserDepartmentRelationshipCountAll + tester.viewer.h2zero.taglib.userDepartmentRelationship.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the user_attribute_relationship table + + UserAttributeRelationshipFindByPrimaryKey + tester.viewer.h2zero.taglib.userAttributeRelationship.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + UserAttributeRelationshipFindAll + tester.viewer.h2zero.taglib.userAttributeRelationship.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByIdUserSource on the user_attribute_relationship table + + UserAttributeRelationshipFindByIdUserSource + tester.viewer.h2zero.taglib.userAttributeRelationship.FindByIdUserSourceTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idUserSource variable + + idUserSource + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdAttributeDestination on the user_attribute_relationship table + + UserAttributeRelationshipFindByIdAttributeDestination + tester.viewer.h2zero.taglib.userAttributeRelationship.FindByIdAttributeDestinationTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idAttributeDestination variable + + idAttributeDestination + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdCreator on the user_attribute_relationship table + + UserAttributeRelationshipFindByIdCreator + tester.viewer.h2zero.taglib.userAttributeRelationship.FindByIdCreatorTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idUserAttributeRelationship variable + + idUserAttributeRelationship + true + true + + + + Bind the idCreator variable + + idCreator + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findAllByUserFlIsEntity on the user_attribute_relationship table + + UserAttributeRelationshipFindAllByUserFlIsEntity + tester.viewer.h2zero.taglib.userAttributeRelationship.FindAllByUserFlIsEntityTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByDestinationAndSource on the user_attribute_relationship table + + UserAttributeRelationshipFindByDestinationAndSource + tester.viewer.h2zero.taglib.userAttributeRelationship.FindByDestinationAndSourceTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idUserSource variable + + idUserSource + true + true + + + + Bind the idAttributeDestination variable + + idAttributeDestination + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the user_attribute_relationship table + + UserAttributeRelationshipCountAll + tester.viewer.h2zero.taglib.userAttributeRelationship.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the user_project_relationship table + + UserProjectRelationshipFindByPrimaryKey + tester.viewer.h2zero.taglib.userProjectRelationship.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + UserProjectRelationshipFindAll + tester.viewer.h2zero.taglib.userProjectRelationship.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByIdUserSource on the user_project_relationship table + + UserProjectRelationshipFindByIdUserSource + tester.viewer.h2zero.taglib.userProjectRelationship.FindByIdUserSourceTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idUserSource variable + + idUserSource + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdProjectDestination on the user_project_relationship table + + UserProjectRelationshipFindByIdProjectDestination + tester.viewer.h2zero.taglib.userProjectRelationship.FindByIdProjectDestinationTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idProjectDestination variable + + idProjectDestination + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdCreator on the user_project_relationship table + + UserProjectRelationshipFindByIdCreator + tester.viewer.h2zero.taglib.userProjectRelationship.FindByIdCreatorTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idUserProjectRelationship variable + + idUserProjectRelationship + true + true + + + + Bind the idCreator variable + + idCreator + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findAllByUserFlIsEntity on the user_project_relationship table + + UserProjectRelationshipFindAllByUserFlIsEntity + tester.viewer.h2zero.taglib.userProjectRelationship.FindAllByUserFlIsEntityTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByDestinationAndSource on the user_project_relationship table + + UserProjectRelationshipFindByDestinationAndSource + tester.viewer.h2zero.taglib.userProjectRelationship.FindByDestinationAndSourceTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idUserSource variable + + idUserSource + true + true + + + + Bind the idProjectDestination variable + + idProjectDestination + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the user_project_relationship table + + UserProjectRelationshipCountAll + tester.viewer.h2zero.taglib.userProjectRelationship.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the project_type_relationship table + + ProjectTypeRelationshipFindByPrimaryKey + tester.viewer.h2zero.taglib.projectTypeRelationship.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + ProjectTypeRelationshipFindAll + tester.viewer.h2zero.taglib.projectTypeRelationship.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByIdProjectSource on the project_type_relationship table + + ProjectTypeRelationshipFindByIdProjectSource + tester.viewer.h2zero.taglib.projectTypeRelationship.FindByIdProjectSourceTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idProjectSource variable + + idProjectSource + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdTypeDestination on the project_type_relationship table + + ProjectTypeRelationshipFindByIdTypeDestination + tester.viewer.h2zero.taglib.projectTypeRelationship.FindByIdTypeDestinationTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idTypeDestination variable + + idTypeDestination + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdCreator on the project_type_relationship table + + ProjectTypeRelationshipFindByIdCreator + tester.viewer.h2zero.taglib.projectTypeRelationship.FindByIdCreatorTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idProjectTypeRelationship variable + + idProjectTypeRelationship + true + true + + + + Bind the idCreator variable + + idCreator + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByDestinationAndSource on the project_type_relationship table + + ProjectTypeRelationshipFindByDestinationAndSource + tester.viewer.h2zero.taglib.projectTypeRelationship.FindByDestinationAndSourceTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idProjectSource variable + + idProjectSource + true + true + + + + Bind the idTypeDestination variable + + idTypeDestination + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the project_type_relationship table + + ProjectTypeRelationshipCountAll + tester.viewer.h2zero.taglib.projectTypeRelationship.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the user_user_relationship table + + UserUserRelationshipFindByPrimaryKey + tester.viewer.h2zero.taglib.userUserRelationship.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + UserUserRelationshipFindAll + tester.viewer.h2zero.taglib.userUserRelationship.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByIdUserSource on the user_user_relationship table + + UserUserRelationshipFindByIdUserSource + tester.viewer.h2zero.taglib.userUserRelationship.FindByIdUserSourceTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idUserSource variable + + idUserSource + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdUserDestination on the user_user_relationship table + + UserUserRelationshipFindByIdUserDestination + tester.viewer.h2zero.taglib.userUserRelationship.FindByIdUserDestinationTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idUserDestination variable + + idUserDestination + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdCreator on the user_user_relationship table + + UserUserRelationshipFindByIdCreator + tester.viewer.h2zero.taglib.userUserRelationship.FindByIdCreatorTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idUserUserRelationship variable + + idUserUserRelationship + true + true + + + + Bind the idCreator variable + + idCreator + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findAllByUserFlIsEntity on the user_user_relationship table + + UserUserRelationshipFindAllByUserFlIsEntity + tester.viewer.h2zero.taglib.userUserRelationship.FindAllByUserFlIsEntityTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByDestinationAndSource on the user_user_relationship table + + UserUserRelationshipFindByDestinationAndSource + tester.viewer.h2zero.taglib.userUserRelationship.FindByDestinationAndSourceTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idUserSource variable + + idUserSource + true + true + + + + Bind the idUserDestination variable + + idUserDestination + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the user_user_relationship table + + UserUserRelationshipCountAll + tester.viewer.h2zero.taglib.userUserRelationship.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the user_zone_relationship table + + UserZoneRelationshipFindByPrimaryKey + tester.viewer.h2zero.taglib.userZoneRelationship.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + UserZoneRelationshipFindAll + tester.viewer.h2zero.taglib.userZoneRelationship.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByIdUserSource on the user_zone_relationship table + + UserZoneRelationshipFindByIdUserSource + tester.viewer.h2zero.taglib.userZoneRelationship.FindByIdUserSourceTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idUserSource variable + + idUserSource + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdZoneDestination on the user_zone_relationship table + + UserZoneRelationshipFindByIdZoneDestination + tester.viewer.h2zero.taglib.userZoneRelationship.FindByIdZoneDestinationTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idZoneDestination variable + + idZoneDestination + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdCreator on the user_zone_relationship table + + UserZoneRelationshipFindByIdCreator + tester.viewer.h2zero.taglib.userZoneRelationship.FindByIdCreatorTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idUserZoneRelationship variable + + idUserZoneRelationship + true + true + + + + Bind the idCreator variable + + idCreator + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByDestinationAndSource on the user_zone_relationship table + + UserZoneRelationshipFindByDestinationAndSource + tester.viewer.h2zero.taglib.userZoneRelationship.FindByDestinationAndSourceTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idUserSource variable + + idUserSource + true + true + + + + Bind the idZoneDestination variable + + idZoneDestination + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the user_zone_relationship table + + UserZoneRelationshipCountAll + tester.viewer.h2zero.taglib.userZoneRelationship.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the department_zone_relationship table + + DepartmentZoneRelationshipFindByPrimaryKey + tester.viewer.h2zero.taglib.departmentZoneRelationship.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + DepartmentZoneRelationshipFindAll + tester.viewer.h2zero.taglib.departmentZoneRelationship.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByIdDepartmentSource on the department_zone_relationship table + + DepartmentZoneRelationshipFindByIdDepartmentSource + tester.viewer.h2zero.taglib.departmentZoneRelationship.FindByIdDepartmentSourceTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idDepartmentSource variable + + idDepartmentSource + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdZoneDestination on the department_zone_relationship table + + DepartmentZoneRelationshipFindByIdZoneDestination + tester.viewer.h2zero.taglib.departmentZoneRelationship.FindByIdZoneDestinationTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idZoneDestination variable + + idZoneDestination + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdCreator on the department_zone_relationship table + + DepartmentZoneRelationshipFindByIdCreator + tester.viewer.h2zero.taglib.departmentZoneRelationship.FindByIdCreatorTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idDepartmentZoneRelationship variable + + idDepartmentZoneRelationship + true + true + + + + Bind the idCreator variable + + idCreator + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByDestinationAndSource on the department_zone_relationship table + + DepartmentZoneRelationshipFindByDestinationAndSource + tester.viewer.h2zero.taglib.departmentZoneRelationship.FindByDestinationAndSourceTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idDepartmentSource variable + + idDepartmentSource + true + true + + + + Bind the idZoneDestination variable + + idZoneDestination + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the department_zone_relationship table + + DepartmentZoneRelationshipCountAll + tester.viewer.h2zero.taglib.departmentZoneRelationship.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the project_zone_relationship table + + ProjectZoneRelationshipFindByPrimaryKey + tester.viewer.h2zero.taglib.projectZoneRelationship.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + ProjectZoneRelationshipFindAll + tester.viewer.h2zero.taglib.projectZoneRelationship.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByIdProjectSource on the project_zone_relationship table + + ProjectZoneRelationshipFindByIdProjectSource + tester.viewer.h2zero.taglib.projectZoneRelationship.FindByIdProjectSourceTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idProjectSource variable + + idProjectSource + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdZoneDestination on the project_zone_relationship table + + ProjectZoneRelationshipFindByIdZoneDestination + tester.viewer.h2zero.taglib.projectZoneRelationship.FindByIdZoneDestinationTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idZoneDestination variable + + idZoneDestination + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdCreator on the project_zone_relationship table + + ProjectZoneRelationshipFindByIdCreator + tester.viewer.h2zero.taglib.projectZoneRelationship.FindByIdCreatorTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idProjectZoneRelationship variable + + idProjectZoneRelationship + true + true + + + + Bind the idCreator variable + + idCreator + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByDestinationAndSource on the project_zone_relationship table + + ProjectZoneRelationshipFindByDestinationAndSource + tester.viewer.h2zero.taglib.projectZoneRelationship.FindByDestinationAndSourceTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idProjectSource variable + + idProjectSource + true + true + + + + Bind the idZoneDestination variable + + idZoneDestination + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the project_zone_relationship table + + ProjectZoneRelationshipCountAll + tester.viewer.h2zero.taglib.projectZoneRelationship.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the manager_department table + + ManagerDepartmentFindByPrimaryKey + tester.viewer.h2zero.taglib.managerDepartment.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + ManagerDepartmentFindAll + tester.viewer.h2zero.taglib.managerDepartment.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByIdManagerID on the manager_department table + + ManagerDepartmentFindByIdManagerID + tester.viewer.h2zero.taglib.managerDepartment.FindByIdManagerIDTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idManager variable + + idManager + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdDepartment on the manager_department table + + ManagerDepartmentFindByIdDepartment + tester.viewer.h2zero.taglib.managerDepartment.FindByIdDepartmentTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idDepartment variable + + idDepartment + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the manager_department table + + ManagerDepartmentCountAll + tester.viewer.h2zero.taglib.managerDepartment.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the project_type table + + ProjectTypeFindByPrimaryKey + tester.viewer.h2zero.taglib.projectType.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + ProjectTypeFindAll + tester.viewer.h2zero.taglib.projectType.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByIdProject on the project_type table + + ProjectTypeFindByIdProject + tester.viewer.h2zero.taglib.projectType.FindByIdProjectTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idProject variable + + idProject + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdType on the project_type table + + ProjectTypeFindByIdType + tester.viewer.h2zero.taglib.projectType.FindByIdTypeTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idType variable + + idType + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdCreator on the project_type table + + ProjectTypeFindByIdCreator + tester.viewer.h2zero.taglib.projectType.FindByIdCreatorTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idCreator variable + + idCreator + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the project_type table + + ProjectTypeCountAll + tester.viewer.h2zero.taglib.projectType.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the user_project table + + UserProjectFindByPrimaryKey + tester.viewer.h2zero.taglib.userProject.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + UserProjectFindAll + tester.viewer.h2zero.taglib.userProject.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByIdUser on the user_project table + + UserProjectFindByIdUser + tester.viewer.h2zero.taglib.userProject.FindByIdUserTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idUser variable + + idUser + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdProject on the user_project table + + UserProjectFindByIdProject + tester.viewer.h2zero.taglib.userProject.FindByIdProjectTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idProject variable + + idProject + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdCreator on the user_project table + + UserProjectFindByIdCreator + tester.viewer.h2zero.taglib.userProject.FindByIdCreatorTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idUserProject variable + + idUserProject + true + true + + + + Bind the idCreator variable + + idCreator + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the user_project table + + UserProjectCountAll + tester.viewer.h2zero.taglib.userProject.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the user_attribute table + + UserAttributeFindByPrimaryKey + tester.viewer.h2zero.taglib.userAttribute.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + UserAttributeFindAll + tester.viewer.h2zero.taglib.userAttribute.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByIdUser on the user_attribute table + + UserAttributeFindByIdUser + tester.viewer.h2zero.taglib.userAttribute.FindByIdUserTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idUser variable + + idUser + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdAttribute on the user_attribute table + + UserAttributeFindByIdAttribute + tester.viewer.h2zero.taglib.userAttribute.FindByIdAttributeTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idAttribute variable + + idAttribute + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByIdCreator on the user_attribute table + + UserAttributeFindByIdCreator + tester.viewer.h2zero.taglib.userAttribute.FindByIdCreatorTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idUserAttribute variable + + idUserAttribute + true + true + + + + Bind the idCreator variable + + idCreator + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the user_attribute table + + UserAttributeCountAll + tester.viewer.h2zero.taglib.userAttribute.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the plan table + + PlanFindByPrimaryKey + tester.viewer.h2zero.taglib.plan.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + PlanFindAll + tester.viewer.h2zero.taglib.plan.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByOrderedPlanAmount on the plan table + + PlanFindByOrderedPlanAmount + tester.viewer.h2zero.taglib.plan.FindByOrderedPlanAmountTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findActiveByPrimaryKey on the plan table + + PlanFindActiveByPrimaryKey + tester.viewer.h2zero.taglib.plan.FindActiveByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idPlan variable + + idPlan + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findAllActiveOrdered on the plan table + + PlanFindAllActiveOrdered + tester.viewer.h2zero.taglib.plan.FindAllActiveOrderedTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByNmPlanBraintreeActive on the plan table + + PlanFindByNmPlanBraintreeActive + tester.viewer.h2zero.taglib.plan.FindByNmPlanBraintreeActiveTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the nmPlanBraintree variable + + nmPlanBraintree + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the plan table + + PlanCountAll + tester.viewer.h2zero.taglib.plan.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the country table + + CountryFindByPrimaryKey + tester.viewer.h2zero.taglib.country.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + CountryFindAll + tester.viewer.h2zero.taglib.country.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByPopularity on the country table + + CountryFindByPopularity + tester.viewer.h2zero.taglib.country.FindByPopularityTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the country table + + CountryCountAll + tester.viewer.h2zero.taglib.country.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the client table + + ClientFindByPrimaryKey + tester.viewer.h2zero.taglib.client.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + ClientFindAll + tester.viewer.h2zero.taglib.client.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByTxtAddressEmail on the client table + + ClientFindByTxtAddressEmail + tester.viewer.h2zero.taglib.client.FindByTxtAddressEmailTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the txtAddressEmail variable + + txtAddressEmail + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByCdClientUuid on the client table + + ClientFindByCdClientUuid + tester.viewer.h2zero.taglib.client.FindByCdClientUuidTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the cdClientUuid variable + + cdClientUuid + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findByTxtForgottenPasswordInLastTwoHours on the client table + + ClientFindByTxtForgottenPasswordInLastTwoHours + tester.viewer.h2zero.taglib.client.FindByTxtForgottenPasswordInLastTwoHoursTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the txtForgottenPassword variable + + txtForgottenPassword + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the client table + + ClientCountAll + tester.viewer.h2zero.taglib.client.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the client_blog_plugins table + + ClientBlogPluginsFindByPrimaryKey + tester.viewer.h2zero.taglib.clientBlogPlugins.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + ClientBlogPluginsFindAll + tester.viewer.h2zero.taglib.clientBlogPlugins.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the client_blog_plugins table + + ClientBlogPluginsCountAll + tester.viewer.h2zero.taglib.clientBlogPlugins.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the subscription_event table + + SubscriptionEventFindByPrimaryKey + tester.viewer.h2zero.taglib.subscriptionEvent.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + SubscriptionEventFindAll + tester.viewer.h2zero.taglib.subscriptionEvent.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the subscription_event table + + SubscriptionEventCountAll + tester.viewer.h2zero.taglib.subscriptionEvent.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the client_plan_event table + + ClientPlanEventFindByPrimaryKey + tester.viewer.h2zero.taglib.clientPlanEvent.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + ClientPlanEventFindAll + tester.viewer.h2zero.taglib.clientPlanEvent.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByIdClientReverseDate on the client_plan_event table + + ClientPlanEventFindByIdClientReverseDate + tester.viewer.h2zero.taglib.clientPlanEvent.FindByIdClientReverseDateTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idClient variable + + idClient + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the client_plan_event table + + ClientPlanEventCountAll + tester.viewer.h2zero.taglib.clientPlanEvent.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the server table + + ServerFindByPrimaryKey + tester.viewer.h2zero.taglib.server.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + ServerFindAll + tester.viewer.h2zero.taglib.server.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findNextServer on the server table + + ServerFindNextServer + tester.viewer.h2zero.taglib.server.FindNextServerTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the server table + + ServerCountAll + tester.viewer.h2zero.taglib.server.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the client_payment_info table + + ClientPaymentInfoFindByPrimaryKey + tester.viewer.h2zero.taglib.clientPaymentInfo.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + ClientPaymentInfoFindAll + tester.viewer.h2zero.taglib.clientPaymentInfo.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByIdClientReverseDate on the client_payment_info table + + ClientPaymentInfoFindByIdClientReverseDate + tester.viewer.h2zero.taglib.clientPaymentInfo.FindByIdClientReverseDateTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idClient variable + + idClient + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findActiveByIdClient on the client_payment_info table + + ClientPaymentInfoFindActiveByIdClient + tester.viewer.h2zero.taglib.clientPaymentInfo.FindActiveByIdClientTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idClient variable + + idClient + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findAllExpiryIn60Days on the client_payment_info table + + ClientPaymentInfoFindAllExpiryIn60Days + tester.viewer.h2zero.taglib.clientPaymentInfo.FindAllExpiryIn60DaysTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + Automaticall generated tag that maps to the findAllExpiryIn30Days on the client_payment_info table + + ClientPaymentInfoFindAllExpiryIn30Days + tester.viewer.h2zero.taglib.clientPaymentInfo.FindAllExpiryIn30DaysTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the client_payment_info table + + ClientPaymentInfoCountAll + tester.viewer.h2zero.taglib.clientPaymentInfo.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the media_type table + + MediaTypeFindByPrimaryKey + tester.viewer.h2zero.taglib.mediaType.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + MediaTypeFindAll + tester.viewer.h2zero.taglib.mediaType.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the media_type table + + MediaTypeCountAll + tester.viewer.h2zero.taglib.mediaType.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + + + This is an in-built tag for the find by primary key method on the c_project table + + CProjectFindByPrimaryKey + tester.viewer.h2zero.taglib.cProject.FindByPrimaryKeyTag + JSP + + + The variable to bind the results to + + var + true + false + + + + The primary key + + primaryKey + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + generated tag for the find all + + CProjectFindAll + tester.viewer.h2zero.taglib.cProject.FindAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + + Automaticall generated tag that maps to the findByProjectSize on the c_project table + + CProjectFindByProjectSize + tester.viewer.h2zero.taglib.cProject.FindByProjectSizeTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Bind the idProject variable + + idProject + true + true + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + This is an in-built tag for the countAll function for the c_project table + + CProjectCountAll + tester.viewer.h2zero.taglib.cProject.CountAllTag + JSP + + + The variable to bind the results to + + var + true + false + + + + Whether to remove the var at the end of the tag + + removeVar + false + false + + + + + + diff --git a/generate/src/main/webapps/admin/client-findAll.html b/generate/src/main/webapps/admin/client-findAll.html new file mode 100644 index 00000000..cc91c6ff --- /dev/null +++ b/generate/src/main/webapps/admin/client-findAll.html @@ -0,0 +1 @@ +<%@taglib prefix="panl" uri="/WEB-INF/tld/panl.tld" %>h2zero