From cf2613ccfe9bd95f046efdeb46b7dffbfa0e1aae Mon Sep 17 00:00:00 2001 From: "u6k.yu1" Date: Sat, 30 Oct 2010 21:30:13 +0900 Subject: [PATCH 1/1] =?utf8?q?=E5=88=9D=E6=9C=9F=E3=82=A4=E3=83=B3?= =?utf8?q?=E3=83=9D=E3=83=BC=E3=83=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- doc/‰æ–Ê‘JˆÚ}.odg | Bin 0 -> 11433 bytes doc/Žd—l‘.odt | Bin 0 -> 18687 bytes money-notebook/.classpath | 11 ++ money-notebook/.project | 40 ++++ .../com.google.appengine.eclipse.core.prefs | 3 + .../.settings/com.google.gwt.eclipse.core.prefs | 3 + money-notebook/src/META-INF/jdoconfig.xml | 15 ++ .../u6k/money_notebook/dao/AccountDao.java | 71 +++++++ .../u6k/money_notebook/dao/AccountEntity.java | 106 ++++++++++ .../u6k/money_notebook/dao/EntityStateEnum.java | 8 + .../u6k/money_notebook/dao/MoneyDiaryDao.java | 51 +++++ .../u6k/money_notebook/dao/MoneyDiaryEntity.java | 106 ++++++++++ .../gr/java_conf/u6k/money_notebook/dao/PMF.java | 18 ++ .../u6k/money_notebook/dao/TempAccountDao.java | 32 ++++ .../u6k/money_notebook/dao/TempAccountEntity.java | 82 ++++++++ .../java_conf/u6k/money_notebook/dao/UserDao.java | 54 ++++++ .../u6k/money_notebook/dao/UserEntity.java | 111 +++++++++++ .../java_conf/u6k/money_notebook/gwt/Index.gwt.xml | 14 ++ .../money_notebook/gwt/client/IndexEntryPoint.java | 44 +++++ .../money_notebook/gwt/client/IndexService.java | 12 ++ .../gwt/client/IndexServiceAsync.java | 10 + .../gwt/server/IndexServiceImpl.java | 21 ++ .../u6k/money_notebook/logic/LoginLogic.java | 149 ++++++++++++++ .../u6k/money_notebook/util/CollectionUtil.java | 13 ++ .../u6k/money_notebook/util/DateUtil.java | 70 +++++++ .../u6k/money_notebook/util/HashUtil.java | 61 ++++++ .../u6k/money_notebook/util/LockUtil.java | 18 ++ .../u6k/money_notebook/util/MoneyDiaryForm.java | 112 +++++++++++ .../u6k/money_notebook/util/MoneyDiaryItem.java | 36 ++++ .../web/filter/LoginCheckFilter.java | 71 +++++++ .../web/filter/RequestLogFilter.java | 77 ++++++++ .../web/servlet/admin/MaintenanceServlet.java | 20 ++ .../web/servlet/admin/UserDataServlet.java | 122 ++++++++++++ .../web/servlet/admin/UserIdListServlet.java | 48 +++++ .../web/servlet/mail/CreateMoneyForm.java | 36 ++++ .../web/servlet/mail/CreateMoneyServlet.java | 199 +++++++++++++++++++ .../web/servlet/mail/RegistMailServlet.java | 193 +++++++++++++++++++ .../web/servlet/mobile/IndexServlet.java | 19 ++ .../web/servlet/mobile/LoginServlet.java | 130 +++++++++++++ .../web/servlet/mobile/RegistFinishServlet.java | 19 ++ .../web/servlet/mobile/RegistServlet.java | 213 +++++++++++++++++++++ .../web/servlet/mobile/user/DiaryServlet.java | 125 ++++++++++++ .../web/servlet/mobile/user/TopServlet.java | 122 ++++++++++++ .../web/servlet/mobile/user/TutorialServlet.java | 20 ++ money-notebook/src/log4j.properties | 24 +++ .../u6k/money_notebook/test/util/DateUtilTest.java | 137 +++++++++++++ money-notebook/war/WEB-INF/.gitignore | 2 + money-notebook/war/WEB-INF/appengine-web.xml | 21 ++ money-notebook/war/WEB-INF/datastore-indexes.xml | 14 ++ money-notebook/war/WEB-INF/lib/.gitignore | 10 + money-notebook/war/WEB-INF/lib/jsonic-1.2.0.jar | Bin 0 -> 143651 bytes .../war/WEB-INF/lib/urlrewrite-3.2.0.jar | Bin 0 -> 198436 bytes money-notebook/war/WEB-INF/logging.properties | 28 +++ money-notebook/war/WEB-INF/page/mobile/index.jsp | 37 ++++ money-notebook/war/WEB-INF/page/mobile/login.jsp | 42 ++++ money-notebook/war/WEB-INF/page/mobile/regist.jsp | 44 +++++ .../war/WEB-INF/page/mobile/regist_finish.jsp | 45 +++++ .../war/WEB-INF/page/mobile/user/diary_daily.jsp | 43 +++++ .../war/WEB-INF/page/mobile/user/diary_detail.jsp | 46 +++++ .../war/WEB-INF/page/mobile/user/diary_monthly.jsp | 70 +++++++ .../war/WEB-INF/page/mobile/user/diary_weekly.jsp | 70 +++++++ .../war/WEB-INF/page/mobile/user/top.jsp | 75 ++++++++ money-notebook/war/WEB-INF/urlrewrite.xml | 31 +++ money-notebook/war/WEB-INF/web.xml | 158 +++++++++++++++ money-notebook/war/admin/data/user.jsp | 43 +++++ money-notebook/war/index.html | 12 ++ 66 files changed, 3637 insertions(+) create mode 100644 doc/‰æ–Ê‘JˆÚ}.odg create mode 100644 doc/Žd—l‘.odt create mode 100644 money-notebook/.classpath create mode 100644 money-notebook/.project create mode 100644 money-notebook/.settings/com.google.appengine.eclipse.core.prefs create mode 100644 money-notebook/.settings/com.google.gwt.eclipse.core.prefs create mode 100644 money-notebook/src/META-INF/jdoconfig.xml create mode 100644 money-notebook/src/jp/gr/java_conf/u6k/money_notebook/dao/AccountDao.java create mode 100644 money-notebook/src/jp/gr/java_conf/u6k/money_notebook/dao/AccountEntity.java create mode 100644 money-notebook/src/jp/gr/java_conf/u6k/money_notebook/dao/EntityStateEnum.java create mode 100644 money-notebook/src/jp/gr/java_conf/u6k/money_notebook/dao/MoneyDiaryDao.java create mode 100644 money-notebook/src/jp/gr/java_conf/u6k/money_notebook/dao/MoneyDiaryEntity.java create mode 100644 money-notebook/src/jp/gr/java_conf/u6k/money_notebook/dao/PMF.java create mode 100644 money-notebook/src/jp/gr/java_conf/u6k/money_notebook/dao/TempAccountDao.java create mode 100644 money-notebook/src/jp/gr/java_conf/u6k/money_notebook/dao/TempAccountEntity.java create mode 100644 money-notebook/src/jp/gr/java_conf/u6k/money_notebook/dao/UserDao.java create mode 100644 money-notebook/src/jp/gr/java_conf/u6k/money_notebook/dao/UserEntity.java create mode 100644 money-notebook/src/jp/gr/java_conf/u6k/money_notebook/gwt/Index.gwt.xml create mode 100644 money-notebook/src/jp/gr/java_conf/u6k/money_notebook/gwt/client/IndexEntryPoint.java create mode 100644 money-notebook/src/jp/gr/java_conf/u6k/money_notebook/gwt/client/IndexService.java create mode 100644 money-notebook/src/jp/gr/java_conf/u6k/money_notebook/gwt/client/IndexServiceAsync.java create mode 100644 money-notebook/src/jp/gr/java_conf/u6k/money_notebook/gwt/server/IndexServiceImpl.java create mode 100644 money-notebook/src/jp/gr/java_conf/u6k/money_notebook/logic/LoginLogic.java create mode 100644 money-notebook/src/jp/gr/java_conf/u6k/money_notebook/util/CollectionUtil.java create mode 100644 money-notebook/src/jp/gr/java_conf/u6k/money_notebook/util/DateUtil.java create mode 100644 money-notebook/src/jp/gr/java_conf/u6k/money_notebook/util/HashUtil.java create mode 100644 money-notebook/src/jp/gr/java_conf/u6k/money_notebook/util/LockUtil.java create mode 100644 money-notebook/src/jp/gr/java_conf/u6k/money_notebook/util/MoneyDiaryForm.java create mode 100644 money-notebook/src/jp/gr/java_conf/u6k/money_notebook/util/MoneyDiaryItem.java create mode 100644 money-notebook/src/jp/gr/java_conf/u6k/money_notebook/web/filter/LoginCheckFilter.java create mode 100644 money-notebook/src/jp/gr/java_conf/u6k/money_notebook/web/filter/RequestLogFilter.java create mode 100644 money-notebook/src/jp/gr/java_conf/u6k/money_notebook/web/servlet/admin/MaintenanceServlet.java create mode 100644 money-notebook/src/jp/gr/java_conf/u6k/money_notebook/web/servlet/admin/UserDataServlet.java create mode 100644 money-notebook/src/jp/gr/java_conf/u6k/money_notebook/web/servlet/admin/UserIdListServlet.java create mode 100644 money-notebook/src/jp/gr/java_conf/u6k/money_notebook/web/servlet/mail/CreateMoneyForm.java create mode 100644 money-notebook/src/jp/gr/java_conf/u6k/money_notebook/web/servlet/mail/CreateMoneyServlet.java create mode 100644 money-notebook/src/jp/gr/java_conf/u6k/money_notebook/web/servlet/mail/RegistMailServlet.java create mode 100644 money-notebook/src/jp/gr/java_conf/u6k/money_notebook/web/servlet/mobile/IndexServlet.java create mode 100644 money-notebook/src/jp/gr/java_conf/u6k/money_notebook/web/servlet/mobile/LoginServlet.java create mode 100644 money-notebook/src/jp/gr/java_conf/u6k/money_notebook/web/servlet/mobile/RegistFinishServlet.java create mode 100644 money-notebook/src/jp/gr/java_conf/u6k/money_notebook/web/servlet/mobile/RegistServlet.java create mode 100644 money-notebook/src/jp/gr/java_conf/u6k/money_notebook/web/servlet/mobile/user/DiaryServlet.java create mode 100644 money-notebook/src/jp/gr/java_conf/u6k/money_notebook/web/servlet/mobile/user/TopServlet.java create mode 100644 money-notebook/src/jp/gr/java_conf/u6k/money_notebook/web/servlet/mobile/user/TutorialServlet.java create mode 100644 money-notebook/src/log4j.properties create mode 100644 money-notebook/src_test/jp/gr/java_conf/u6k/money_notebook/test/util/DateUtilTest.java create mode 100644 money-notebook/war/WEB-INF/.gitignore create mode 100644 money-notebook/war/WEB-INF/appengine-web.xml create mode 100644 money-notebook/war/WEB-INF/datastore-indexes.xml create mode 100644 money-notebook/war/WEB-INF/lib/.gitignore create mode 100644 money-notebook/war/WEB-INF/lib/jsonic-1.2.0.jar create mode 100644 money-notebook/war/WEB-INF/lib/urlrewrite-3.2.0.jar create mode 100644 money-notebook/war/WEB-INF/logging.properties create mode 100644 money-notebook/war/WEB-INF/page/mobile/index.jsp create mode 100644 money-notebook/war/WEB-INF/page/mobile/login.jsp create mode 100644 money-notebook/war/WEB-INF/page/mobile/regist.jsp create mode 100644 money-notebook/war/WEB-INF/page/mobile/regist_finish.jsp create mode 100644 money-notebook/war/WEB-INF/page/mobile/user/diary_daily.jsp create mode 100644 money-notebook/war/WEB-INF/page/mobile/user/diary_detail.jsp create mode 100644 money-notebook/war/WEB-INF/page/mobile/user/diary_monthly.jsp create mode 100644 money-notebook/war/WEB-INF/page/mobile/user/diary_weekly.jsp create mode 100644 money-notebook/war/WEB-INF/page/mobile/user/top.jsp create mode 100644 money-notebook/war/WEB-INF/urlrewrite.xml create mode 100644 money-notebook/war/WEB-INF/web.xml create mode 100644 money-notebook/war/admin/data/user.jsp create mode 100644 money-notebook/war/index.html diff --git a/doc/‰æ–Ê‘JˆÚ}.odg b/doc/‰æ–Ê‘JˆÚ}.odg new file mode 100644 index 0000000000000000000000000000000000000000..6f42036bcee28dc556b9f611d9798035b9f10f96 GIT binary patch literal 11433 zcma)C1z1#D*B(kzkZx%KiJ?1`4r!3?ZkQQBT3Wh6y1P@PLmC0;5Kxd#N$G#k>!
WlgUW_v@hC79XX!PL&g-q^|3)DFUI4l;DGurvlM{tXa{@gE_A zwnXji%q-2FK;NOjY(Ox?5aI+jG6VsC*dZYyeRt$PM$iWBAM6Z`jZJM#p)mF!ps^DO zbmzefTN^llqAcQ_;{e#Z162Oq9Rg_YKix62u{VU6{&ePNRK5fKb@x2q5Hnz8e{IwRlI@*ydQn+60>S7X7>=+UDjz*HPdXAV1<4Bfx$X}n^s>c}F zB%1QS@toU}qKcB3!zB-YiGQ!kA`v$S7qxUoGx*lm+;UCdq1YpMA$WYawkBM?q{Sz*)-)?XFm&!6@qPb{=1b8J4;FbZrr`KUuu#uz zt>koe#Iwa)ki4`rcLT0-oyniURwyV*b+!iSkepJLD0uFeYF%eTGS1@T{6BOSl??}k z&S9oYI>jg1NaLqX>?fh(*X;t{Z#`z$1k@D@u3<_N`wudK7nQO&{b zzJ7C~nMh^ti^)Dc5Np?w7;?Lh>m+lP9AQ;s%~$+#mMABaYox&;>2b1d2J|!Gq{LDF zT3?heP{xbbt6^E~)6{Nge?n$8?D8}hdo=Twip)_KTfn>7a|boeJ*j^1Q@46G542V zQq3$PizrE>H1fNefLW9=%E*a)*jQa~+RNxHEJt0GN(Dc8E`BhKx= z374$gravmL_>2>kpON6b?S>@Gp-4{&BwQ8|@kxL!dS+ka8r3r`pH;%w1boqAyIDjt zU0ec4lCx{6JjQgZ2o_jMQw=nSlbix>QKi*ab258L(r_K8xD-qTlm_FlAu-o7#~+YT zmFu?XG*n0t`pB>u7*3ViMef~@KavUC=0dTdu;y07^aNlcVs;pY-ha72of+|t^?sjw z+*4-CpfCV4B8HEPX%YQ+-E%g~6BW$B03MW$XC%gKL~unxeaMEbLAAnu!!X+>cmj{B z&CRM+D_w~JTV=2Y>f3dKTKn0bSkc8a1n+gaz!5Y%ROzH*rtC(5v}-_rR5om6V zjyyh@#W5TdqKM-_t^*zu|6;Pt!(&AgUrJK1M&bIbSPah#!~a&`lKf4{Xx~7iEMfH1 zW2C8INz^lczNFyT2VG-uO7EY2iNSNCgAgLbnn*Lfochq#CAVZYgq~k)Z(@~=ebMJD z!74`jx-3bz-t3Sl@kO?u{1aMzMa|W4F)3>_3Zw=*8j-Ynm~7C0ZpKJOyTfH-h4Ta= zb7k)erb&d}K+?E~L<_;P)0Q<){q5HI%KE~e<}Q^6G%BVAjw`ReRnT%2*%iNudU!x0 z_~|VR|C)65GWAtNqIX21ez*Cp$@J>rw;i&tvl+{)!10Nxhd@ zkFP~0BeRx4V^cNRuA7$8f_bG!Dt0*TBVbH}us3=bypz#iWH#eil5E_r7&squjt?m{ zUx_#C^bDG(NcLsDTYQ}+Jim;jf-l+O>(_;@+$IUb@|Na}Y92$uG|p`_dq=iHFn+)g z?){|T{<1I3Z}H+{Vr)Y2g~IGMMhU&uJ5&2R4PQ^K<$OJFiZou_>8ecv<&@~ZJ*kpyGYwjz_mrUZZPN%t@8aQ&>m5wKFAldyjKb3Ii zCbicISzw=B3QeUpUM)+xvEpg?vf->o+nKe-q!+-K22q{gj&wT`FZu+TIj)&onOPr z*QbH$trv&=q~a-AgBpK@4ro`&`kA zCDfl2?z@*)s&wEM#fg~ks1G_>^)!^am~oTovBsKJj2(&8DK@~Sv~d~8`KmM|qxV=> zGb-RV49+(DQq-KMynAAw64Hneq{oSFRn%YsalsbRlJkcUJRmnAK=h4zi;%{VJ&zPw zkL)im_h4u{TUuE{fH5%gs}1=pkoIIeiLY#G-^^^VRgC0PcgrWUQZQiE?`ut&e1e1l zvCr1dJ=Hgl6r&_2%{4@yKHVR1EUAtxG{9PZ(%4%blqRDqpx?@$Ws{ID(RFOI%wd_9 zeuj78;$bs?);+oVIp(x&L?}eT8#}{`B%}4)5^YAt?R5=*BbTUpjbS5~6Q5eYI`TYq zW06>k*ySQ~=eoYf)y0{D^M{7pDgO6*emb)t?KJ0+mjq=9F!l=EAutt65nmd+pU4+w zaBVdqfLaFOc>NGS3)IVMy~S2^DoQF%0~)*ZYpP04M~%Mv;`1;yO!Q{<+(Ti5tSYr6 zwcA6TKv)wyI1B9r%bma|P5dlB=_g6{#Y0|eNu=Yo#VShT-lEexTzkpV5qajVvwlrQ zeIVuol@>3vxrsMqhw;V%EvdbYeWFwzI?GZm!eo- zKB6V3_Y6jUI|o!A0l&_Yt*jQ<3qCz-72dSfe9pC}I1iU~(VNGAPvqQJABZ(pV=F!3 zypVMo%G8dW^`hkL(PdlXn`?a~XA}TIj4=%=%*^NG4#1H78E#-@VSSTX!p&wt>4LHK6B0F&&dV{6K=bmHQ-(E8;oMNn&EQ(%4;LkFD zMZey?xKLdbcc8(DV)j~Pj&Joze0-Dj;lnM=UG6C`O1XXr%|J1wf99TlN@-D`sS+6C zYGVq%%UTz--bc)HJ!n0nM?=_@OJH=5t!r8&7gx#@=SE8Y0%H+eourukL}}Y8qQ6D3 zKIjxP1kb`p?~p^6e7adAD3?y9{!2WzJ=ZKelF@J&&yk}S4^^5#gOtTS$x&)0WDD)0 zb-c^6k1}SsV7R7Wsj+w1ZyYGEK@$5wff5f7Sw0{o6t~+I!++c(J6NUQ)24q`>X%p? z8lH?-4xMbNL|MV_1(mcnaZf7CmqTU~@V<#aa1)w2H959hYmDmis3H<{189H-R-wJ6 zB?sd23$Nc&$g)xQ1>)hyfnhZ`{ZF?-vHVv;c zu>_&M||sX!@6x*db)+${(f;(Y-vqW@_d4M zm|C$64C#){Li?Fy`i-q4(4`v4i}_l6=d=9jgAbJ=sWft#FiY)l==d43i4{BYNV_(i z2lYJ2GScQ7H2Vo9AY`wS0Lh2Fge%#w)O+a=!^BJ(Le%Kd(>RKvK&RoH!f4zHLboU( z@)rwW-$a*GEzX%;q?G~80V@MF@=;}5K1`Clw~$dbB!w@ ziTJ{eRD_4HJ()ksI<(z;^F;wIpNlw;1OgL-u|h>Rl8z~-(;A5>Di&WLwcSX_fpzH7X&#`NXri0B@7AmCjJ;;U z4kc+)M5U^SOs-MnpoIi{LeRisFN^lslZ~soDk*^1X*xp!x(ips=ebpx`K-CD^K=`0 zoA?}4(G!h{De_QIGPO^nb@4GR5GKwb4!KT3i4QnRlHgE`C-OYk*N=H5ox>J6{grag zMiaMpv-^?D{z6LI;?2eQ{E}CjvII ze7f)lk*N&6byv2RRRcs140i%N&~vEA&YuE(z>?KQmxjvP%-2^D6*oMB3>ZG;4u*yB zm!kBIau^gst1U8!rr|KYE;ya~^#XRmb3JTLfaq z5Q0H`Q7vN@#&?;klr}FR>7wSb!)At|;&;ZTHdt7_Hq0{N#E7w#EOosI{3(dS5u&!~E^)b-55lfTGTbfAXxYwVi52?#trtfta*7=CTuQF)(q+UJv#oxg^VjK_@YIf-Q?xYVBtKDWlkaNP zzoB!Cpzm<>Bd$7n1hg`u>#`=bnzC3AiAGNm?9I}^f}z*I029;lo27=lIC(t2V09%7 z`8G~Qvde#4WH!qGNc7A_ArO+eOM=#dn9RqkLz`-P%1g_u#O%o=nsHW10%}ZsrJJ+q z24B#bRpZ5GAmj_)Cb%YNGH29U$jxusmofEhM$`n^m!#wKHr%r#CG!^8p4(HsP{X1D zpWg%2(tNe@W&RGZ=L?%)r zaSNWM>*RMASr})JAEAa(x^A|d4}lPlX_9j??++V{lIC2)b{RmZini9C6ua!^zfWf+ z+QnGl%!^mRYgFoL_d`NDJP^f{V;MlbVO^eNj=AIt?l6l*k~7HBDdR=6LdbH?K8LM# zj>b}Qeyxi^X@LT~oZxs35u;;>Uww&iDeM)n%$0Ub;I2 zh^m=0q1tv_qMt)~%@KHB3Y8G9M3;K1*SqU&yT<#&uZo<1vATXsNBHj*rsX$@uQA8?s7gs8yRDCw zr!7TD%ir8{g_Er~=f4{NktJmB8TIcW0sy_hpIO3B4#!Q7pSlws0J!^nXW&dBhIcuF zfH3qx?raJILpeA>N>*kTN^(;>V|x=zJ99xwHB|{F9!g;$6ajlPGfQJrzMr%l6O_L* zB!`;Xf%$%P2~s+N?D)PDczkw-wx(b{h%w*qOdj9w+I-&!`f=rjjisHnAf*Ka;=l(4 zy12M7yRb9cgUo@fyu7@?@4b|N4P|2dA3X;rkj-~36JsEhvb*C7!9Z4KR^U(FI}iU? zr|xurcgX=tpFsh?vx)yJ#_u-2W7*r=|HtXOc>D<0ch}iiSU7+`&VPChwzahRUq`&t zWiqz6b%6S5WMlgKpoVsqw*M>4o$mLU{tjRcGBJTV^8XhF>N7jg9B5()F=TSKGG_X&{P)@N{%5v7wE2G9cx;s9-v{M`fDG-xX7->TPW{IR=+=W$!*>KR(_I+92k-|9 zblKT}FTgespuLG18_2|r8G1q~^mEVNEv}Hj_a(NpvxHb0LW2e}y`y-AT%B0Sow%$8 zfPd`$Ve?%VdUG&Ar)(<3#=^?N#KObG#-Yl}&BwyZ$H~sj!TuM(-&F-njQRdx!^z3V z#=*?ZDggZ1f2a8WJo@e04?j#zpuXFgGnxFwatkS{vam?8bIWmXsr)tm|5N$9rLn6q z^vyts^B>xOUH+kKZff^~{uWYz23g_zUH?7Q?96P`>XvrwY~+9M(1)_kR;I=fAUhk2 zEh`(fh?Av_2@@{|&(EOzLi{npe;y%s9K9tNVrfkNJ^J=WcQDZX>|_TKq-5iu1PTfK zwO#mrEaA_y{~&z7{O<(+9mB0^;bd!MXJ}~y210%|nH}uR%hcRCa5P9-+1c`wKJ1`Z z^&6=dhV_ygj=rFEwK3P0H!&;Z7@#r>e?!O?EoMm{?gG@D2>!5^glrp5&&Wp5Q&l*W zNm0=eQMS;=XMQ{Dy>~r)?R9pwceZeOxc~uT;EVec!2&Wj+(y450Ui*-*Etm02s|<3 z2avbzZCRWdbI5YwV6hhFrOHHnaB^4w_9dc0fVuP70)a4U-G~5d9`1S8e(41!%G?r$ zIw{PZa$|-)Fw8Mu2p6lzAg#B79SKKhq|>sAAS(tqPzn zr?Hb-e?CQ10!HnQXLqI8K8JUQF$%Rzx0O2TP?~de6z9HO$W$k-$|s zSQef+zZ5J?I)#@2C1O?GbL78$1vfLK;8QJjZ?1h`Zy>pj@^g`jmy>rO@k8?@Ssr!E z215-b(}xOJXc6lcPal#k^c5+3C-^asru6Y~!&Qws%@f#NF3G`& zuq*|G2bZ%N)!$|jh?h&$5uREhq zqfvUaYc7@xWaliIyVQGI8FF)DV%$C|0dM=5z%bgwRQ2Ui_|oo<0x_j6>FsGt{aZCn zylQ$N^T&mQNlCFe|GdeEC(o*!sUFJo$UQdHQxdW$klWG4T(#DlXu-H|KQOdas0nnY zAgYwwt$D@avv|f%56g5w>uR+R)zc`<=;0Si#M(#N7koY6c9mau z^-7Tup{Z^V4(45i3tooA!p98rg>&_muJHxTg=fP6XyzIe}qT^o_q% zw~ojsvD)0o;)+8)?t4alrc~A%gNB;~_?4ZJ8^jl$utqv!`(jw%1p1r~dwsEH$}OE( zimx}bs>KU4N00Nz?Pu~C2M3u5$TmdguV7>e&tnES%J`)@nk0VCM^R)fVh~LC9oDkMfuTXpY7%kf05U`*@CLJ~b>nRz5AVWLYvlBs|E;GVnoQiPx^3?*8WlXOyO3 zuTbn&Fhb`bu}l1N)zNJ6v0D@2P4RB3jcpzb(|hUmXBZ4ij62Jz*$t*;XJLn(v}*RH zD}zC+7+Lu^^Tr?AaFO)w$ruyV4nxaHvp{es@T}1)nihLsBFflLnx+PL){e)pC-xdT zQJ2nj0NUCYc}jTZ12OYB%3x#xi(70VL1~zR=sH111r?{(#*=_Wlc{u@d_0SSwfqxq zToVeFGB4|w1Mg~PPDK${NrzDV1qf(VyD zMWd-XjRx|DfwpF4ZBQ3Jf2Q$^?%x!#Y^cno{k!24sDIbEK?O(nD=?a*%1K6NHT zuLRIzUUoNqi%h=|#-coSw+$S2jhxJS@7*!k-&Hk`9(RR*$9%muGZV{4006k}{mg0q z#C)OMF<+*TyKl(v+}Ey-r~P~n;jMQDB{r9VxRtE4P4AQuqGXF^gvs_~5&KRgwrf6t ziahW9-*haeGN)P9zjkZb(9iLcO-vER2r%K7@b|7r#BS-twy{1}j3yfItZbxe*|X%- zJgWmQT=q16q701=_Yp?>Xt46!+rce}S6cG^8rAeg_p{y;q`WXPnLdHD^jGRl_Vu&z z99)1W;+4KB(H-I~lezdb;*mB(WsK#EArZ?S3_B!q(}ErNc!~DIVP5K3$Bp<`%ZGCV z%R>h#QdryRTR_J0az=$v;pvy}d8IK&;i%ET6yx(6cEnruR@Ow}(Mh<06BCelHxU!R z^KRd^=)S_3sL6{JR(Sm`4GG0yn;lV2(V9;MYNcqAU)3_r>#AW>aECN{I<|{hsoY>f z=rGijlxsgp&6vw8k7|T45ag%LdA{4WjK{k-tlWP52qm8#VRn=&i?UA&t{PbzrV$9% zy--jNFiKjqI(%{T?d)Y7BPTV&R^iLl1b!P{txPzHbzUG-uaTEK`v9(g@Wp9g2cGV? zz^_?>&l7lx{pUh##0nB7oxB@yHgJl%)WuUs)-a+R-ah^?m{rd@x_PCK+WB&x$H!El zczI`7kIf`kukq8jUUTpXX(KvDMVwRVn0D{Fr-}qy+J~t2_6i)HlDFkiy&?e7=t&;w zosn3dXW`N|io}mhf`tn+5#3~>ddk1n9Cy-4O=MAKW9{vV!fwcGCcx+7Mrn2CzX?zD zkl%-By!IL7<3vym5*$w(^K2XexDjttJ!(bKSreE!K#wp-Z@yJwxn91#~tI| zn-b#;o>Oq|O^UJi){M8yjyKP#FzF?G@6E@mHisQx8a^2>P)Nvg4ZOn9FTHtu7CIiQ zpYbpwJyp}2uSSS^s_EUu{i;RUDPyDS2n}zCMtlARm$bd_6Sd7AxH5iE}D=?PFOh@a9BRwt)Kd|?raQewdnW5#lb z5=Nq=0!JG!=cFY`TWsJz(^?W&kZl|(bd&Lw>D7J?PG}r5kR~#Z)1%?z4NHx~ASsx_%f=K%bqn^T^=+$hp$aTav*q|F)=Ub&E0 zURYJmyVN`=9#|MEf3E#nrnd=@`y_ZCZfEAQFmYBXlk7ZTY`8oL0Xd3iXr1H8EP%mR z6*Eq3v=K`@R2%@o-f?U~n9Sv%oPpKmd2@dY@fq$gJQ3ZP5YBA$X0Ic;CVVZtp9$WV z(3f?vNTUhI9tB8tl}B39<4>0j@ZR&-d(v{tG)ylzeuSXDI|ADaJeoHndPzM}RsV>g zueEe!fX6X2I!5N8n@KC^A??O?cQ4ITEI)2QB5aacr8x+d92@Q|Bo&4$^d)yueiBY$ z@JATpw&MQ&QXPN}wn;*}V5~cKuACLKJRD)HRo|}fdjabuqu#F#Bp73q{L?c|TJ{(w z#hLdSM4!0p!s-Ohh9{_N@UDjX48e?xZhrPnfxS?>iAWuOJ}3(asnvaiYW3&@Ed(QU z$HTH(N#wjk<^w##(7w!&KAS6f#9p<95c5ylm4A!S-bU44cQuElOTD zcM3h`mqC}OR!N9O1W&}ZGKP&OBKQ2>KTZLf1d3jdoE#~NBq`|)FJ)e|JjRlt%kuy2 zFmOgMea4T|a&4II88(6u_`M5sqP*iBqFr%u6wPnv9z72_p8-cHiWo*dM%jDAy1yH* zJhRS!dGKKO)GNbKQo2tAby+-)4Z{>?2%lJIBY0`>09nTtMN!fcm-}(yhdA2iSDZJv z`BnN4UqxKqlYo4z$hEn`xJzQnZVQ-0p}d>9_Y_F*5~! zuRp7ce`?o7{y_YUH=uhl|9x@wvY1s~I=Nswd?YC~+AG5BFQ?tnF%7n=obj_h0ZW%* zf|YY5h$wKwNQ=BF_&xeaxtK+S!ADMrW-QdG-TloyNtEi#Ba#HcI-8!Y*<~h`o$4HoL=yt6;rt{2=uX_nRk9uC=e{9C1dnSiXX}KAQOk^nF@Yx z2t`bd#0Odv)T+cIyeUIbK{Z~l`9VamKONkG2%>8P>kBD_JMydMM-^0Ba*m@Cl zeNC5T(YsfaT|S|D@CFTIfH0D=SFZ(C!Rtn!{dSl}h%k4y3XW~a`M~DPaYl1AkXk=5 z{>}Br16S10q0RE<1ZNs=o%n5qyOq%Wx`kSzdTooA^tDq0N8d{7a?ce{=4R5BVjZpv`}R z{;E^_dtiQ90sb*XJZLEYiSm2h;=kkERWAM#`9IF`=;ko~RR{TVrGFa!&i&uj0sImj zD9*2{fS-2%_RGL8J6~*Qr7n~_z5AWur`6BVet#?bd;G1Sr~k&f{S)Q)$Ku@^+%I|l s@bB+)|Fr!5Hokjo{t{y7z4OP1sG=+a^c4~Sz<~bk!2tkyba!X}2Uu@bB>(^b literal 0 HcmV?d00001 diff --git a/doc/Žd—l‘.odt b/doc/Žd—l‘.odt new file mode 100644 index 0000000000000000000000000000000000000000..fe05c4def8dc5b61742cb52a9fbc60ef9a7ba5d0 GIT binary patch literal 18687 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 + + + + + + + + + + diff --git a/money-notebook/.project b/money-notebook/.project new file mode 100644 index 0000000..bc5c40f --- /dev/null +++ b/money-notebook/.project @@ -0,0 +1,40 @@ + + + money-notebook + + + + + + org.eclipse.jdt.core.javabuilder + + + + + com.google.gwt.eclipse.core.gwtProjectValidator + + + + + com.google.appengine.eclipse.core.enhancerbuilder + + + + + com.google.appengine.eclipse.core.projectValidator + + + + + com.google.gdt.eclipse.core.webAppProjectValidator + + + + + + org.eclipse.jdt.core.javanature + com.google.appengine.eclipse.core.gaeNature + com.google.gwt.eclipse.core.gwtNature + com.google.gdt.eclipse.core.webAppNature + + diff --git a/money-notebook/.settings/com.google.appengine.eclipse.core.prefs b/money-notebook/.settings/com.google.appengine.eclipse.core.prefs new file mode 100644 index 0000000..6289375 --- /dev/null +++ b/money-notebook/.settings/com.google.appengine.eclipse.core.prefs @@ -0,0 +1,3 @@ +#Sun Jun 13 22:46:57 JST 2010 +eclipse.preferences.version=1 +filesCopiedToWebInfLib=appengine-api-1.0-sdk-1.3.0.jar|appengine-api-labs-1.3.0.jar|datanucleus-appengine-1.0.4.1.final.jar|datanucleus-core-1.1.5.jar|datanucleus-jpa-1.1.5.jar|geronimo-jpa_3.0_spec-1.1.1.jar|geronimo-jta_1.1_spec-1.1.1.jar|jdo2-api-2.3-eb.jar diff --git a/money-notebook/.settings/com.google.gwt.eclipse.core.prefs b/money-notebook/.settings/com.google.gwt.eclipse.core.prefs new file mode 100644 index 0000000..2093679 --- /dev/null +++ b/money-notebook/.settings/com.google.gwt.eclipse.core.prefs @@ -0,0 +1,3 @@ +#Sun Jun 13 22:46:56 JST 2010 +eclipse.preferences.version=1 +filesCopiedToWebInfLib=gwt-servlet.jar diff --git a/money-notebook/src/META-INF/jdoconfig.xml b/money-notebook/src/META-INF/jdoconfig.xml new file mode 100644 index 0000000..5f56aa1 --- /dev/null +++ b/money-notebook/src/META-INF/jdoconfig.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + diff --git a/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/dao/AccountDao.java b/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/dao/AccountDao.java new file mode 100644 index 0000000..18b3b9d --- /dev/null +++ b/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/dao/AccountDao.java @@ -0,0 +1,71 @@ + +package jp.gr.java_conf.u6k.money_notebook.dao; + +import java.io.IOException; +import java.util.List; + +import javax.jdo.PersistenceManager; +import javax.jdo.Query; + +import jp.gr.java_conf.u6k.money_notebook.util.CollectionUtil; +import jp.gr.java_conf.u6k.money_notebook.util.HashUtil; + +public class AccountDao { + + private PersistenceManager pm; + + public AccountDao(PersistenceManager pm) { + this.pm = pm; + } + + public AccountEntity findByEmail(String email) { + Query query = this.pm.newQuery(AccountEntity.class); + query.setFilter("email == emailParam && entityState == entityStateParam"); + query.declareParameters("String emailParam, EntityStateEnum entityStateParam"); + + List accountList = CollectionUtil.castToList(query.execute(email, EntityStateEnum.LIVES)); + + if (accountList.size() == 1) { + return accountList.get(0); + } else { + return null; + } + } + + public AccountEntity findByEmailAndPassword(String email, String password) throws IOException { + Query query = this.pm.newQuery(AccountEntity.class); + query.setFilter("email == emailParam && entityState == entityStateParam"); + query.declareParameters("String emailParam, EntityStateEnum entityStateParam"); + + List accountList = CollectionUtil.castToList(query.execute(email, EntityStateEnum.LIVES)); + + if (accountList.size() == 0) { + return null; + } + + AccountEntity account = accountList.get(0); + + String passwordHash = HashUtil.digest(account.getPasswordHashAlgorithm(), password); + + if (!account.getPassword().equals(passwordHash)) { + return null; + } + + return account; + } + + public AccountEntity findByUser(UserEntity user) { + Query query = this.pm.newQuery(AccountEntity.class); + query.setFilter("user == userParam && entityState == entityStateParam"); + query.declareParameters("UserEntity userParam, EntityStateEnum entityStateParam"); + + List accountList = CollectionUtil.castToList(query.execute(user, EntityStateEnum.LIVES)); + + if (accountList.size() == 0) { + return null; + } else { + return accountList.get(0); + } + } + +} diff --git a/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/dao/AccountEntity.java b/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/dao/AccountEntity.java new file mode 100644 index 0000000..cfd02b6 --- /dev/null +++ b/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/dao/AccountEntity.java @@ -0,0 +1,106 @@ + +package jp.gr.java_conf.u6k.money_notebook.dao; + +import java.util.Date; + +import javax.jdo.annotations.IdGeneratorStrategy; +import javax.jdo.annotations.IdentityType; +import javax.jdo.annotations.PersistenceCapable; +import javax.jdo.annotations.Persistent; +import javax.jdo.annotations.PrimaryKey; + +import com.google.appengine.api.datastore.Key; + +@PersistenceCapable(identityType = IdentityType.APPLICATION) +public class AccountEntity { + + @PrimaryKey + @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) + private Key key; + + @Persistent(mappedBy = "account") + private UserEntity user; + + @Persistent + private String email; + + @Persistent + private String password; + + @Persistent + private String passwordHashAlgorithm = "SHA-512"; + + @Persistent + private Date updateDatetime; + + @Persistent + private EntityStateEnum entityState = EntityStateEnum.LIVES; + + public AccountEntity backup() { + AccountEntity account = new AccountEntity(); + account.email = this.email; + account.password = this.password; + account.passwordHashAlgorithm = this.passwordHashAlgorithm; + account.updateDatetime = this.updateDatetime; + account.entityState = this.entityState; + + return account; + } + + public Key getKey() { + return this.key; + } + + public void setKey(Key key) { + this.key = key; + } + + public UserEntity getUser() { + return this.user; + } + + public void setUser(UserEntity user) { + this.user = user; + } + + public String getEmail() { + return this.email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getPassword() { + return this.password; + } + + public void setPassword(String password) { + this.password = password; + } + + public String getPasswordHashAlgorithm() { + return this.passwordHashAlgorithm; + } + + public void setPasswordHashAlgorithm(String passwordHashAlgorithm) { + this.passwordHashAlgorithm = passwordHashAlgorithm; + } + + public Date getUpdateDatetime() { + return this.updateDatetime; + } + + public void setUpdateDatetime(Date updateDatetime) { + this.updateDatetime = updateDatetime; + } + + public EntityStateEnum getEntityState() { + return this.entityState; + } + + public void setEntityState(EntityStateEnum entityState) { + this.entityState = entityState; + } + +} diff --git a/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/dao/EntityStateEnum.java b/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/dao/EntityStateEnum.java new file mode 100644 index 0000000..ebbb2f4 --- /dev/null +++ b/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/dao/EntityStateEnum.java @@ -0,0 +1,8 @@ + +package jp.gr.java_conf.u6k.money_notebook.dao; + +public enum EntityStateEnum { + + LIVES, DELETED, + +} diff --git a/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/dao/MoneyDiaryDao.java b/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/dao/MoneyDiaryDao.java new file mode 100644 index 0000000..db3e605 --- /dev/null +++ b/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/dao/MoneyDiaryDao.java @@ -0,0 +1,51 @@ + +package jp.gr.java_conf.u6k.money_notebook.dao; + +import java.util.Collections; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + +import javax.jdo.PersistenceManager; +import javax.jdo.Query; + +import jp.gr.java_conf.u6k.money_notebook.util.CollectionUtil; + +public class MoneyDiaryDao { + + private PersistenceManager pm; + + public MoneyDiaryDao(PersistenceManager pm) { + this.pm = pm; + } + + public List findByUser(UserEntity user, EntityStateEnum entityState) { + Query query = this.pm.newQuery(MoneyDiaryEntity.class); + query.setFilter("user == userParam && entityState == entityStateParam"); + query.declareParameters("UserEntity userParam, EntityStateEnum entityStateParam"); + + List moneyDiaryList = CollectionUtil.castToList(query.execute(user, entityState)); + + return moneyDiaryList; + } + + public List findByUserAndDiaryDateBetween(UserEntity user, Date diaryDateBegin, Date diaryDateEnd) { + Query query = this.pm.newQuery(MoneyDiaryEntity.class); + query.setFilter("user == userParam && diaryDate >= diaryDateBeginParam && diaryDate < diaryDateEndParam && entityState == entityStateParam"); + query.declareParameters("UserEntity userParam, java.util.Date diaryDateBeginParam, java.util.Date diaryDateEndParam, EntityStateEnum entityStateParam"); + + List moneyDiaryList = CollectionUtil.castToList(query.executeWithArray(user, diaryDateBegin, diaryDateEnd, EntityStateEnum.LIVES)); + + Collections.sort(moneyDiaryList, new Comparator() { + + @Override + public int compare(MoneyDiaryEntity o1, MoneyDiaryEntity o2) { + return -1 * o1.getDiaryDate().compareTo(o2.getDiaryDate()); + } + + }); + + return moneyDiaryList; + } + +} diff --git a/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/dao/MoneyDiaryEntity.java b/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/dao/MoneyDiaryEntity.java new file mode 100644 index 0000000..f045848 --- /dev/null +++ b/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/dao/MoneyDiaryEntity.java @@ -0,0 +1,106 @@ + +package jp.gr.java_conf.u6k.money_notebook.dao; + +import java.util.Date; + +import javax.jdo.annotations.IdGeneratorStrategy; +import javax.jdo.annotations.IdentityType; +import javax.jdo.annotations.PersistenceCapable; +import javax.jdo.annotations.Persistent; +import javax.jdo.annotations.PrimaryKey; + +import com.google.appengine.api.datastore.Key; + +@PersistenceCapable(identityType = IdentityType.APPLICATION) +public class MoneyDiaryEntity { + + @PrimaryKey + @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) + private Key key; + + @Persistent + private UserEntity user; + + @Persistent + private Date diaryDate; + + @Persistent + private String text; + + @Persistent + private long money; + + @Persistent + private Date updateDatetime; + + @Persistent + private EntityStateEnum entityState = EntityStateEnum.LIVES; + + public MoneyDiaryEntity backup() { + MoneyDiaryEntity moneyDiary = new MoneyDiaryEntity(); + moneyDiary.diaryDate = (Date) this.diaryDate.clone(); + moneyDiary.text = this.text; + moneyDiary.money = this.money; + moneyDiary.updateDatetime = this.updateDatetime; + moneyDiary.entityState = this.entityState; + + return moneyDiary; + } + + public Key getKey() { + return this.key; + } + + public void setKey(Key key) { + this.key = key; + } + + public UserEntity getUser() { + return this.user; + } + + public void setUser(UserEntity user) { + this.user = user; + } + + public Date getDiaryDate() { + return this.diaryDate; + } + + public void setDiaryDate(Date diaryDate) { + this.diaryDate = diaryDate; + } + + public String getText() { + return this.text; + } + + public void setText(String text) { + this.text = text; + } + + public long getMoney() { + return this.money; + } + + public void setMoney(long money) { + this.money = money; + } + + public Date getUpdateDatetime() { + return this.updateDatetime; + } + + public void setUpdateDatetime(Date updateDatetime) { + this.updateDatetime = updateDatetime; + } + + public EntityStateEnum getEntityState() { + return this.entityState; + } + + public void setEntityState(EntityStateEnum entityState) { + this.entityState = entityState; + } + +} diff --git a/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/dao/PMF.java b/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/dao/PMF.java new file mode 100644 index 0000000..88c77b8 --- /dev/null +++ b/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/dao/PMF.java @@ -0,0 +1,18 @@ + +package jp.gr.java_conf.u6k.money_notebook.dao; + +import javax.jdo.JDOHelper; +import javax.jdo.PersistenceManagerFactory; + +public class PMF { + + private static final PersistenceManagerFactory PMF_INSTANCE = JDOHelper.getPersistenceManagerFactory("transactions-optional"); + + private PMF() { + } + + public static PersistenceManagerFactory get() { + return PMF.PMF_INSTANCE; + } + +} diff --git a/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/dao/TempAccountDao.java b/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/dao/TempAccountDao.java new file mode 100644 index 0000000..c2df9c5 --- /dev/null +++ b/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/dao/TempAccountDao.java @@ -0,0 +1,32 @@ + +package jp.gr.java_conf.u6k.money_notebook.dao; + +import java.util.List; + +import javax.jdo.PersistenceManager; +import javax.jdo.Query; + +import jp.gr.java_conf.u6k.money_notebook.util.CollectionUtil; + +public class TempAccountDao { + + private PersistenceManager pm; + + public TempAccountDao(PersistenceManager pm) { + this.pm = pm; + } + + public TempAccountEntity findByUser(UserEntity user) { + Query query = this.pm.newQuery(TempAccountEntity.class); + query.setFilter("user == userParam && entityState == entityStateParam"); + query.declareParameters("UserEntity userParam, EntityStateEnum entityStateParam"); + List tempAccountList = CollectionUtil.castToList(query.execute(user, EntityStateEnum.LIVES)); + + if (tempAccountList.size() > 0) { + return tempAccountList.get(0); + } else { + return null; + } + } + +} diff --git a/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/dao/TempAccountEntity.java b/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/dao/TempAccountEntity.java new file mode 100644 index 0000000..6882b0f --- /dev/null +++ b/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/dao/TempAccountEntity.java @@ -0,0 +1,82 @@ + +package jp.gr.java_conf.u6k.money_notebook.dao; + +import java.util.Date; + +import javax.jdo.annotations.IdGeneratorStrategy; +import javax.jdo.annotations.IdentityType; +import javax.jdo.annotations.PersistenceCapable; +import javax.jdo.annotations.Persistent; +import javax.jdo.annotations.PrimaryKey; + +import com.google.appengine.api.datastore.Key; + +@PersistenceCapable(identityType = IdentityType.APPLICATION) +public class TempAccountEntity { + + @PrimaryKey + @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) + private Key key; + + @Persistent(mappedBy = "tempAccount") + private UserEntity user; + + @Persistent + private String email; + + @Persistent + private Date updateDatetime; + + @Persistent + private EntityStateEnum entityState = EntityStateEnum.LIVES; + + public TempAccountEntity backup() { + TempAccountEntity tempAccount = new TempAccountEntity(); + tempAccount.email = this.email; + tempAccount.updateDatetime = this.updateDatetime; + tempAccount.entityState = this.entityState; + + return tempAccount; + } + + public Key getKey() { + return this.key; + } + + public void setKey(Key key) { + this.key = key; + } + + public UserEntity getUser() { + return this.user; + } + + public void setUser(UserEntity user) { + this.user = user; + } + + public String getEmail() { + return this.email; + } + + public void setEmail(String email) { + this.email = email; + } + + public Date getUpdateDatetime() { + return this.updateDatetime; + } + + public void setUpdateDatetime(Date updateDatetime) { + this.updateDatetime = updateDatetime; + } + + public EntityStateEnum getEntityState() { + return this.entityState; + } + + public void setEntityState(EntityStateEnum entityState) { + this.entityState = entityState; + } + +} diff --git a/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/dao/UserDao.java b/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/dao/UserDao.java new file mode 100644 index 0000000..256853b --- /dev/null +++ b/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/dao/UserDao.java @@ -0,0 +1,54 @@ + +package jp.gr.java_conf.u6k.money_notebook.dao; + +import java.util.List; + +import javax.jdo.PersistenceManager; +import javax.jdo.Query; + +import jp.gr.java_conf.u6k.money_notebook.util.CollectionUtil; + +public class UserDao { + + private PersistenceManager pm; + + public UserDao(PersistenceManager pm) { + this.pm = pm; + } + + public List findAll() { + Query query = this.pm.newQuery(UserEntity.class); + query.setFilter("entityState == entityStateParam"); + query.declareParameters("EntityStateEnum entityStateParam"); + List userList = CollectionUtil.castToList(query.execute(EntityStateEnum.LIVES)); + + return userList; + } + + public UserEntity findById(long id) { + Query query = this.pm.newQuery(UserEntity.class); + query.setFilter("key == keyParam && entityState == entityStateParam"); + query.declareParameters("long keyParam, EntityStateEnum entityStateParam"); + List userList = CollectionUtil.castToList(query.execute(id, EntityStateEnum.LIVES)); + + if (userList.size() > 0) { + return userList.get(0); + } else { + return null; + } + } + + public UserEntity findByAccount(AccountEntity account) { + Query query = this.pm.newQuery(UserEntity.class); + query.setFilter("account == accountParam && entityState == entityStateParam"); + query.declareParameters("AccountEntity accountParam, EntityStateEnum entityStateParam"); + List userList = CollectionUtil.castToList(query.execute(account, EntityStateEnum.LIVES)); + + if (userList.size() > 0) { + return userList.get(0); + } else { + return null; + } + } + +} diff --git a/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/dao/UserEntity.java b/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/dao/UserEntity.java new file mode 100644 index 0000000..65e1a9f --- /dev/null +++ b/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/dao/UserEntity.java @@ -0,0 +1,111 @@ + +package jp.gr.java_conf.u6k.money_notebook.dao; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import javax.jdo.annotations.IdGeneratorStrategy; +import javax.jdo.annotations.IdentityType; +import javax.jdo.annotations.PersistenceCapable; +import javax.jdo.annotations.Persistent; +import javax.jdo.annotations.PrimaryKey; + +import com.google.appengine.api.datastore.Key; + +@PersistenceCapable(identityType = IdentityType.APPLICATION) +public class UserEntity { + + @PrimaryKey + @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) + private Key key; + + @Persistent + private AccountEntity account; + + @Persistent + private TempAccountEntity tempAccount; + + @Persistent(mappedBy = "user") + private List moneyDiaryList = new ArrayList(); + + @Persistent + private Date updateDatetime; + + @Persistent + private EntityStateEnum entityState = EntityStateEnum.LIVES; + + public UserEntity backup() { + UserEntity user = new UserEntity(); + if (this.account != null) { + user.account = this.account.backup(); + } else { + user.account = null; + } + if (this.tempAccount != null) { + user.tempAccount = this.tempAccount.backup(); + } else { + user.tempAccount = null; + } + if (this.moneyDiaryList != null) { + for (MoneyDiaryEntity moneyDiary : this.moneyDiaryList) { + user.moneyDiaryList.add(moneyDiary.backup()); + } + } else { + user.moneyDiaryList = null; + } + user.updateDatetime = this.updateDatetime; + user.entityState = this.entityState; + + return user; + } + + public Key getKey() { + return this.key; + } + + public void setKey(Key key) { + this.key = key; + } + + public AccountEntity getAccount() { + return this.account; + } + + public void setAccount(AccountEntity account) { + this.account = account; + } + + public TempAccountEntity getTempAccount() { + return this.tempAccount; + } + + public void setTempAccount(TempAccountEntity tempAccount) { + this.tempAccount = tempAccount; + } + + public List getMoneyDiaryList() { + return this.moneyDiaryList; + } + + public void setMoneyDiaryList(List moneyDiaryList) { + this.moneyDiaryList = moneyDiaryList; + } + + public Date getUpdateDatetime() { + return this.updateDatetime; + } + + public void setUpdateDatetime(Date updateDatetime) { + this.updateDatetime = updateDatetime; + } + + public EntityStateEnum getEntityState() { + return this.entityState; + } + + public void setEntityState(EntityStateEnum entityState) { + this.entityState = entityState; + } + +} diff --git a/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/gwt/Index.gwt.xml b/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/gwt/Index.gwt.xml new file mode 100644 index 0000000..bc68a0e --- /dev/null +++ b/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/gwt/Index.gwt.xml @@ -0,0 +1,14 @@ + + + + + + + + + diff --git a/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/gwt/client/IndexEntryPoint.java b/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/gwt/client/IndexEntryPoint.java new file mode 100644 index 0000000..035c468 --- /dev/null +++ b/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/gwt/client/IndexEntryPoint.java @@ -0,0 +1,44 @@ + +package jp.gr.java_conf.u6k.money_notebook.gwt.client; + +import com.google.gwt.core.client.EntryPoint; +import com.google.gwt.core.client.GWT; +import com.google.gwt.event.dom.client.ClickEvent; +import com.google.gwt.event.dom.client.ClickHandler; +import com.google.gwt.user.client.Window; +import com.google.gwt.user.client.rpc.AsyncCallback; +import com.google.gwt.user.client.ui.Button; +import com.google.gwt.user.client.ui.RootPanel; + +public class IndexEntryPoint implements EntryPoint { + + private final IndexServiceAsync indexService = GWT.create(IndexService.class); + + @Override + public void onModuleLoad() { + Button sendButton = new Button("Now time."); + sendButton.addClickHandler(new ClickHandler() { + + @Override + public void onClick(ClickEvent event) { + IndexEntryPoint.this.indexService.send(new AsyncCallback() { + + @Override + public void onSuccess(String result) { + Window.alert(result); + } + + @Override + public void onFailure(Throwable caught) { + Window.alert("error"); + } + + }); + } + + }); + + RootPanel.get("content").add(sendButton); + } + +} diff --git a/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/gwt/client/IndexService.java b/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/gwt/client/IndexService.java new file mode 100644 index 0000000..294a14d --- /dev/null +++ b/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/gwt/client/IndexService.java @@ -0,0 +1,12 @@ + +package jp.gr.java_conf.u6k.money_notebook.gwt.client; + +import com.google.gwt.user.client.rpc.RemoteService; +import com.google.gwt.user.client.rpc.RemoteServiceRelativePath; + +@RemoteServiceRelativePath("index") +public interface IndexService extends RemoteService { + + String send(); + +} diff --git a/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/gwt/client/IndexServiceAsync.java b/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/gwt/client/IndexServiceAsync.java new file mode 100644 index 0000000..5410172 --- /dev/null +++ b/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/gwt/client/IndexServiceAsync.java @@ -0,0 +1,10 @@ + +package jp.gr.java_conf.u6k.money_notebook.gwt.client; + +import com.google.gwt.user.client.rpc.AsyncCallback; + +public interface IndexServiceAsync { + + void send(AsyncCallback callback); + +} diff --git a/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/gwt/server/IndexServiceImpl.java b/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/gwt/server/IndexServiceImpl.java new file mode 100644 index 0000000..2410709 --- /dev/null +++ b/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/gwt/server/IndexServiceImpl.java @@ -0,0 +1,21 @@ + +package jp.gr.java_conf.u6k.money_notebook.gwt.server; + +import java.util.Date; + +import jp.gr.java_conf.u6k.money_notebook.gwt.client.IndexService; + +import com.google.gwt.user.server.rpc.RemoteServiceServlet; + +@SuppressWarnings("serial") +public class IndexServiceImpl extends RemoteServiceServlet implements IndexService { + + @Override + public String send() { + Date now = new Date(); + String message = now.toString(); + + return message; + } + +} diff --git a/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/logic/LoginLogic.java b/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/logic/LoginLogic.java new file mode 100644 index 0000000..6501bb5 --- /dev/null +++ b/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/logic/LoginLogic.java @@ -0,0 +1,149 @@ + +package jp.gr.java_conf.u6k.money_notebook.logic; + +import java.io.IOException; + +import javax.jdo.PersistenceManager; +import javax.servlet.http.Cookie; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + +import jp.gr.java_conf.u6k.money_notebook.dao.AccountDao; +import jp.gr.java_conf.u6k.money_notebook.dao.AccountEntity; +import jp.gr.java_conf.u6k.money_notebook.dao.PMF; +import jp.gr.java_conf.u6k.money_notebook.dao.UserDao; +import jp.gr.java_conf.u6k.money_notebook.dao.UserEntity; + +public class LoginLogic { + + private HttpServletRequest req; + + private HttpServletResponse resp; + + private HttpSession session; + + public LoginLogic(HttpServletRequest req, HttpServletResponse resp) { + if (req == null) { + throw new IllegalArgumentException("req == null"); + } + if (resp == null) { + throw new IllegalArgumentException("resp == null"); + } + + this.req = req; + this.resp = resp; + this.session = req.getSession(); + } + + public boolean isLogined() { + if (this.session.getAttribute("id") == null) { + return false; + } + + if (!(this.session.getAttribute("id") instanceof Long)) { + return false; + } + + long id = (Long) this.session.getAttribute("id"); + + PersistenceManager pm = PMF.get().getPersistenceManager(); + try { + UserDao userDao = new UserDao(pm); + UserEntity user = userDao.findById(id); + + if (user == null) { + return false; + } + } finally { + pm.close(); + } + + return true; + } + + public boolean autoLogin() { + Long id = null; + + if (this.req.getCookies() != null) { + for (Cookie cookie : this.req.getCookies()) { + if ("l".equals(cookie.getName())) { + String l = cookie.getValue(); + try { + id = Long.parseLong(l); + break; + } catch (NumberFormatException e) { + } + } + } + } + + if (id == null) { + return false; + } + + PersistenceManager pm = PMF.get().getPersistenceManager(); + try { + UserDao userDao = new UserDao(pm); + UserEntity user = userDao.findById(id); + + if (user == null) { + return false; + } + + this.session.setAttribute("id", user.getKey().getId()); + + System.err.println("Account is null: " + (user.getAccount() == null)); // TODO + } finally { + pm.close(); + } + + return true; + } + + public void updateLoginCookie() { + if (!this.isLogined()) { + return; + } + + long id = this.getLoginId(); + + Cookie cookie = new Cookie("l", Long.toString(id)); + cookie.setMaxAge(60 * 60 * 24 * 7); + cookie.setPath("/"); + + this.resp.addCookie(cookie); + } + + public boolean login(String email, String password) throws IOException { + PersistenceManager pm = PMF.get().getPersistenceManager(); + try { + AccountDao accountDao = new AccountDao(pm); + AccountEntity account = accountDao.findByEmailAndPassword(email, password); + + if (account == null) { + return false; + } + + UserDao userDao = new UserDao(pm); + UserEntity user = userDao.findByAccount(account); + + if (user == null) { + return false; + } + + this.session.setAttribute("id", user.getKey().getId()); + } finally { + pm.close(); + } + + return true; + } + + public long getLoginId() { + long id = (Long) this.session.getAttribute("id"); + + return id; + } + +} diff --git a/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/util/CollectionUtil.java b/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/util/CollectionUtil.java new file mode 100644 index 0000000..a66fd41 --- /dev/null +++ b/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/util/CollectionUtil.java @@ -0,0 +1,13 @@ + +package jp.gr.java_conf.u6k.money_notebook.util; + +import java.util.List; + +public class CollectionUtil { + + @SuppressWarnings("unchecked") + public static List castToList(Object obj) { + return (List) obj; + } + +} diff --git a/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/util/DateUtil.java b/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/util/DateUtil.java new file mode 100644 index 0000000..5807fb1 --- /dev/null +++ b/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/util/DateUtil.java @@ -0,0 +1,70 @@ + +package jp.gr.java_conf.u6k.money_notebook.util; + +import java.util.Calendar; +import java.util.Date; +import java.util.TimeZone; + +public final class DateUtil { + + private DateUtil() { + throw new UnsupportedOperationException(); + } + + public static TimeZone getUserTimeZone() { + return TimeZone.getTimeZone("Asia/Tokyo"); + } + + public static Date getNow(TimeZone tz) { + Calendar c = Calendar.getInstance(tz); + + return c.getTime(); + } + + public static Date getToday(Date date, TimeZone tz) { + Calendar c = Calendar.getInstance(tz); + c.setTime(date); + c.set(Calendar.HOUR_OF_DAY, 0); + c.set(Calendar.MINUTE, 0); + c.set(Calendar.SECOND, 0); + c.set(Calendar.MILLISECOND, 0); + + return c.getTime(); + } + + public static Date getWeekStart(Date date, TimeZone tz) { + Calendar c = Calendar.getInstance(tz); + c.setTime(date); + c.set(Calendar.HOUR_OF_DAY, 0); + c.set(Calendar.MINUTE, 0); + c.set(Calendar.SECOND, 0); + c.set(Calendar.MILLISECOND, 0); + + while (c.get(Calendar.DAY_OF_WEEK) != Calendar.SUNDAY) { + c.add(Calendar.DAY_OF_MONTH, -1); + } + + return c.getTime(); + } + + public static Date getMonthStart(Date date, TimeZone tz) { + Calendar c = Calendar.getInstance(tz); + c.setTime(date); + c.set(Calendar.HOUR_OF_DAY, 0); + c.set(Calendar.MINUTE, 0); + c.set(Calendar.SECOND, 0); + c.set(Calendar.MILLISECOND, 0); + + c.set(Calendar.DAY_OF_MONTH, 1); + + return c.getTime(); + } + + public static Date addCalendar(Date date, int calendarField, int calendarAmount, TimeZone tz) { + Calendar c = Calendar.getInstance(tz); + c.setTime(date); + c.add(calendarField, calendarAmount); + + return c.getTime(); + } +} diff --git a/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/util/HashUtil.java b/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/util/HashUtil.java new file mode 100644 index 0000000..ed9ed6e --- /dev/null +++ b/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/util/HashUtil.java @@ -0,0 +1,61 @@ + +package jp.gr.java_conf.u6k.money_notebook.util; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; + +public final class HashUtil { + + private static final int BUFFER_LENGTH = 1024; + + private static final int MASK = 0xff; + + private HashUtil() { + throw new UnsupportedOperationException(); + } + + public static String digest(String algorithm, String src) throws IOException { + return HashUtil.digest(algorithm, new ByteArrayInputStream(src.getBytes())); + } + + public static String digest(String algorithm, InputStream in) throws IOException { + try { + if (in == null) { + throw new NullPointerException("in == null"); + } + + MessageDigest md = MessageDigest.getInstance(algorithm); + + byte[] buf = new byte[HashUtil.BUFFER_LENGTH]; + int len; + while ((len = in.read(buf)) != -1) { + md.update(buf, 0, len); + } + + byte[] hashData = md.digest(); + String hash = HashUtil.toHexString(hashData); + + return hash; + } catch (NoSuchAlgorithmException e) { + throw new IOException(e); + } + } + + private static String toHexString(byte[] data) { + StringBuilder hex = new StringBuilder(); + + for (int i = 0; i < data.length; i++) { + String b = Integer.toHexString(data[i] & HashUtil.MASK); + if (b.length() == 1) { + hex.append("0"); + } + hex.append(b); + } + + return hex.toString(); + } + +} diff --git a/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/util/LockUtil.java b/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/util/LockUtil.java new file mode 100644 index 0000000..ded970e --- /dev/null +++ b/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/util/LockUtil.java @@ -0,0 +1,18 @@ + +package jp.gr.java_conf.u6k.money_notebook.util; + +public class LockUtil { + + private LockUtil() { + throw new UnsupportedOperationException(); + } + + public void acquireLock(String key) { + + } + + public void releaseLock(String key) { + + } + +} diff --git a/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/util/MoneyDiaryForm.java b/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/util/MoneyDiaryForm.java new file mode 100644 index 0000000..927dd59 --- /dev/null +++ b/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/util/MoneyDiaryForm.java @@ -0,0 +1,112 @@ + +package jp.gr.java_conf.u6k.money_notebook.util; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.StringReader; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Date; +import java.util.List; + +public class MoneyDiaryForm { + + private Date diaryDate; + + private List itemList = new ArrayList(); + + public Date getDiaryDate() { + return this.diaryDate; + } + + public void setDiaryDate(Date diaryDate) { + this.diaryDate = diaryDate; + } + + public List getItemList() { + return Collections.unmodifiableList(this.itemList); + } + + public long getMoney() { + long money = 0; + + for (MoneyDiaryItem item : this.itemList) { + money += item.getMoney(); + } + + return money; + } + + public String getText() { + StringBuilder text = new StringBuilder(); + + for (MoneyDiaryItem item : this.itemList) { + if (item.getItem() != null) { + text.append(item.getItem()); + } else { + text.append("(なし)"); + } + + text.append(" "); + text.append(item.getMoney()); + + if (item.getComment() != null) { + text.append(" "); + text.append(item.getComment()); + } + + text.append("\r\n"); + } + + return text.toString(); + } + + public void setText(String text) throws IOException { + List l = new ArrayList(); + + BufferedReader reader = new BufferedReader(new StringReader(text)); + try { + String line = null; + while ((line = reader.readLine()) != null) { + line = line.trim(); + + String column1 = null; + String column2 = null; + String column3 = null; + + if (line.indexOf(" ") != -1) { + int index = line.indexOf(" "); + column1 = line.substring(0, index); + line = line.substring(index + 1); + } else { + continue; + } + + if (line.indexOf(" ") != -1) { + int index = line.indexOf(" "); + column2 = line.substring(0, index); + column3 = line.substring(index + 1); + } else { + column2 = line; + } + + MoneyDiaryItem diaryItem = new MoneyDiaryItem(); + + diaryItem.setItem(column1); + try { + diaryItem.setMoney(Long.parseLong(column2)); + } catch (NumberFormatException e) { + continue; + } + diaryItem.setComment(column3); + + l.add(diaryItem); + } + } finally { + reader.close(); + } + + this.itemList = l; + } + +} diff --git a/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/util/MoneyDiaryItem.java b/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/util/MoneyDiaryItem.java new file mode 100644 index 0000000..2667fcd --- /dev/null +++ b/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/util/MoneyDiaryItem.java @@ -0,0 +1,36 @@ + +package jp.gr.java_conf.u6k.money_notebook.util; + +public class MoneyDiaryItem { + + private String item; + + private long money; + + private String comment; + + public String getItem() { + return this.item; + } + + public void setItem(String item) { + this.item = item; + } + + public long getMoney() { + return this.money; + } + + public void setMoney(long money) { + this.money = money; + } + + public String getComment() { + return this.comment; + } + + public void setComment(String comment) { + this.comment = comment; + } + +} diff --git a/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/web/filter/LoginCheckFilter.java b/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/web/filter/LoginCheckFilter.java new file mode 100644 index 0000000..098936c --- /dev/null +++ b/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/web/filter/LoginCheckFilter.java @@ -0,0 +1,71 @@ + +package jp.gr.java_conf.u6k.money_notebook.web.filter; + +import java.io.IOException; +import java.util.logging.Logger; + +import javax.servlet.Filter; +import javax.servlet.FilterChain; +import javax.servlet.FilterConfig; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import jp.gr.java_conf.u6k.money_notebook.logic.LoginLogic; + +public class LoginCheckFilter implements Filter { + + // TODO 共通ログイン処理を考える。 + // ログイン後、2週間ログイン状態を保持。セッション情報とは別に管理している。 + // ページアクセス時、セッション上のログイン情報が存在しないけどログイン状態は保持している場合、自動的にログイン処理を行う。 + // ページアクセス時、ログイン状態の有効期限を常に2週間延ばす。 + + private static final Logger LOG = Logger.getLogger(LoginCheckFilter.class.getName()); + + @Override + public void destroy() { + } + + @Override + public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { + LoginCheckFilter.LOG.config("LoginCheckFilter処理開始"); + + // 必要なデータを用意する。 + HttpServletRequest req = null; + HttpServletResponse resp = null; + + if (request instanceof HttpServletRequest) { + req = (HttpServletRequest) request; + } + if (response instanceof HttpServletResponse) { + resp = (HttpServletResponse) response; + } + + LoginLogic loginLogic = new LoginLogic(req, resp); + + // ログイン済みではない場合、自動ログインを試みる。 + if (!loginLogic.isLogined()) { + loginLogic.autoLogin(); + } + + if (loginLogic.isLogined()) { + // ログイン済みの場合、次の処理を行う。 + chain.doFilter(request, response); + + // ログインCookieを更新する。 + loginLogic.updateLoginCookie(); + } else { + // 未ログインの場合、ログイン画面にリダイレクトする。 + resp.sendRedirect("/m/login"); + } + + LoginCheckFilter.LOG.config("LoginCheckFilter処理終了"); + } + + @Override + public void init(FilterConfig config) throws ServletException { + } + +} diff --git a/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/web/filter/RequestLogFilter.java b/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/web/filter/RequestLogFilter.java new file mode 100644 index 0000000..ac03d8f --- /dev/null +++ b/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/web/filter/RequestLogFilter.java @@ -0,0 +1,77 @@ + +package jp.gr.java_conf.u6k.money_notebook.web.filter; + +import java.io.IOException; +import java.util.Enumeration; +import java.util.logging.Logger; + +import javax.servlet.Filter; +import javax.servlet.FilterChain; +import javax.servlet.FilterConfig; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.http.HttpServletRequest; + +public class RequestLogFilter implements Filter { + + private static final Logger LOG = Logger.getLogger(RequestLogFilter.class.getName()); + + @Override + public void destroy() { + } + + @Override + public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { + if (request instanceof HttpServletRequest) { + HttpServletRequest req = (HttpServletRequest) request; + + StringBuilder log = new StringBuilder(); + log.append("[Request]\r\n"); + log.append("AuthType: ").append(req.getAuthType()).append("\r\n"); + log.append("CharacterEncoding: ").append(req.getCharacterEncoding()).append("\r\n"); + log.append("ContentLength: ").append(req.getContentLength()).append("\r\n"); + log.append("ContentType: ").append(req.getContentType()).append("\r\n"); + log.append("ContextPath: ").append(req.getContextPath()).append("\r\n"); + log.append("LocalAddr: ").append(req.getLocalAddr()).append("\r\n"); + log.append("Locale: ").append(req.getLocale()).append("\r\n"); + log.append("LocalName: ").append(req.getLocalName()).append("\r\n"); + log.append("LocalPort: ").append(req.getLocalPort()).append("\r\n"); + log.append("Method: ").append(req.getMethod()).append("\r\n"); + log.append("PathInfo: ").append(req.getPathInfo()).append("\r\n"); + log.append("PathTranslated: ").append(req.getPathTranslated()).append("\r\n"); + log.append("Protocol: ").append(req.getProtocol()).append("\r\n"); + log.append("QueryString: ").append(req.getQueryString()).append("\r\n"); + log.append("RemoteAddr: ").append(req.getRemoteAddr()).append("\r\n"); + log.append("RemoteHost: ").append(req.getRemoteHost()).append("\r\n"); + log.append("RemotePort: ").append(req.getRemotePort()).append("\r\n"); + log.append("RemoteUser: ").append(req.getRemoteUser()).append("\r\n"); + log.append("RequestURI: ").append(req.getRequestURI()).append("\r\n"); + log.append("RequestURL: ").append(req.getRequestURL()).append("\r\n"); + log.append("Scheme: ").append(req.getScheme()).append("\r\n"); + log.append("ServerName: ").append(req.getServerName()).append("\r\n"); + log.append("ServerPort: ").append(req.getServerPort()).append("\r\n"); + log.append("ServletPath: ").append(req.getServletPath()).append("\r\n"); + log.append("\r\n"); + + for (Enumeration headerNameEnu = req.getHeaderNames(); headerNameEnu.hasMoreElements();) { + String headerName = (String) headerNameEnu.nextElement(); + + for (Enumeration headerValueEnu = req.getHeaders(headerName); headerValueEnu.hasMoreElements();) { + Object headerValue = headerValueEnu.nextElement(); + + log.append("Header: ").append(headerName).append(": ").append(headerValue).append("\r\n"); + } + } + + RequestLogFilter.LOG.config(log.toString()); + } + + chain.doFilter(request, response); + } + + @Override + public void init(FilterConfig config) throws ServletException { + } + +} diff --git a/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/web/servlet/admin/MaintenanceServlet.java b/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/web/servlet/admin/MaintenanceServlet.java new file mode 100644 index 0000000..49ad5e0 --- /dev/null +++ b/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/web/servlet/admin/MaintenanceServlet.java @@ -0,0 +1,20 @@ + +package jp.gr.java_conf.u6k.money_notebook.web.servlet.admin; + +import java.io.IOException; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +@SuppressWarnings("serial") +public class MaintenanceServlet extends HttpServlet { + + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + resp.setContentType("text/plain"); + resp.getWriter().write("ok"); + } + +} diff --git a/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/web/servlet/admin/UserDataServlet.java b/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/web/servlet/admin/UserDataServlet.java new file mode 100644 index 0000000..f571d64 --- /dev/null +++ b/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/web/servlet/admin/UserDataServlet.java @@ -0,0 +1,122 @@ + +package jp.gr.java_conf.u6k.money_notebook.web.servlet.admin; + +import java.io.IOException; + +import javax.jdo.PersistenceManager; +import javax.jdo.Transaction; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import jp.gr.java_conf.u6k.money_notebook.dao.AccountEntity; +import jp.gr.java_conf.u6k.money_notebook.dao.MoneyDiaryEntity; +import jp.gr.java_conf.u6k.money_notebook.dao.PMF; +import jp.gr.java_conf.u6k.money_notebook.dao.TempAccountEntity; +import jp.gr.java_conf.u6k.money_notebook.dao.UserDao; +import jp.gr.java_conf.u6k.money_notebook.dao.UserEntity; +import net.arnx.jsonic.JSON; + +@SuppressWarnings("serial") +public class UserDataServlet extends HttpServlet { + + // private static final Logger LOG = Logger.getLogger(UserDataServlet.class.getName()); + + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + resp.setContentType("text/plain"); + resp.setCharacterEncoding("UTF-8"); + + long id = Long.parseLong(req.getParameter("id")); + + UserEntity userBackup; + + PersistenceManager pm = PMF.get().getPersistenceManager(); + try { + Transaction tx = pm.currentTransaction(); + try { + tx.begin(); + + UserDao userDao = new UserDao(pm); + UserEntity user = userDao.findById(id); + + userBackup = user.backup(); + } finally { + tx.rollback(); + } + } finally { + pm.close(); + } + + JSON.encode(userBackup, resp.getOutputStream(), true); + } + + @Override + protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + String reqData = req.getParameter("data"); + + UserEntity userUpload = JSON.decode(reqData, UserEntity.class); + + PersistenceManager pm = PMF.get().getPersistenceManager(); + try { + Transaction tx = pm.currentTransaction(); + try { + tx.begin(); + + UserEntity user = new UserEntity(); + user.setEntityState(userUpload.getEntityState()); + user.setUpdateDatetime(userUpload.getUpdateDatetime()); + pm.makePersistent(user); + + AccountEntity accountUpload = userUpload.getAccount(); + AccountEntity account = new AccountEntity(); + account.setEmail(accountUpload.getEmail()); + account.setEntityState(accountUpload.getEntityState()); + account.setPassword(accountUpload.getPassword()); + account.setPasswordHashAlgorithm(accountUpload.getPasswordHashAlgorithm()); + account.setUpdateDatetime(accountUpload.getUpdateDatetime()); + account.setUser(user); + pm.makePersistent(account); + + for (MoneyDiaryEntity moneyDiaryUpload : userUpload.getMoneyDiaryList()) { + MoneyDiaryEntity moneyDiary = new MoneyDiaryEntity(); + moneyDiary.setDiaryDate(moneyDiaryUpload.getDiaryDate()); + moneyDiary.setEntityState(moneyDiaryUpload.getEntityState()); + moneyDiary.setMoney(moneyDiaryUpload.getMoney()); + moneyDiary.setText(moneyDiaryUpload.getText()); + moneyDiary.setUpdateDatetime(moneyDiaryUpload.getUpdateDatetime()); + moneyDiary.setUser(user); + pm.makePersistent(moneyDiary); + + user.getMoneyDiaryList().add(moneyDiary); + } + + TempAccountEntity tempAccountUpload = userUpload.getTempAccount(); + TempAccountEntity tempAccount = new TempAccountEntity(); + tempAccount.setEmail(tempAccountUpload.getEmail()); + tempAccount.setEntityState(tempAccountUpload.getEntityState()); + tempAccount.setUpdateDatetime(tempAccountUpload.getUpdateDatetime()); + tempAccount.setUser(user); + pm.makePersistent(tempAccount); + + user.setTempAccount(tempAccount); + + pm.makePersistent(user); + + tx.commit(); + } finally { + if (tx.isActive()) { + tx.rollback(); + } + } + } finally { + pm.close(); + } + + resp.setContentType("text/plain"); + resp.setCharacterEncoding("UTF-8"); + resp.getWriter().println("ok"); + } + +} diff --git a/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/web/servlet/admin/UserIdListServlet.java b/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/web/servlet/admin/UserIdListServlet.java new file mode 100644 index 0000000..c2cb152 --- /dev/null +++ b/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/web/servlet/admin/UserIdListServlet.java @@ -0,0 +1,48 @@ + +package jp.gr.java_conf.u6k.money_notebook.web.servlet.admin; + +import java.io.IOException; +import java.io.PrintWriter; +import java.util.List; + +import javax.jdo.PersistenceManager; +import javax.jdo.Transaction; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import jp.gr.java_conf.u6k.money_notebook.dao.PMF; +import jp.gr.java_conf.u6k.money_notebook.dao.UserEntity; +import jp.gr.java_conf.u6k.money_notebook.util.CollectionUtil; + +@SuppressWarnings("serial") +public class UserIdListServlet extends HttpServlet { + + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + resp.setContentType("text/plain"); + resp.setCharacterEncoding("UTF-8"); + + PrintWriter w = resp.getWriter(); + + PersistenceManager pm = PMF.get().getPersistenceManager(); + try { + Transaction tx = pm.currentTransaction(); + try { + tx.begin(); + + List userList = CollectionUtil.castToList(pm.newQuery(UserEntity.class).execute()); + + for (UserEntity user : userList) { + w.println(user.getKey().getId()); + } + } finally { + tx.rollback(); + } + } finally { + pm.close(); + } + } + +} diff --git a/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/web/servlet/mail/CreateMoneyForm.java b/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/web/servlet/mail/CreateMoneyForm.java new file mode 100644 index 0000000..8cc1958 --- /dev/null +++ b/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/web/servlet/mail/CreateMoneyForm.java @@ -0,0 +1,36 @@ + +package jp.gr.java_conf.u6k.money_notebook.web.servlet.mail; + +public class CreateMoneyForm { + + private String toEmail; + + private String subject; + + private String body; + + public String getToEmail() { + return this.toEmail; + } + + public void setToEmail(String toEmail) { + this.toEmail = toEmail; + } + + public String getSubject() { + return this.subject; + } + + public void setSubject(String subject) { + this.subject = subject; + } + + public String getBody() { + return this.body; + } + + public void setBody(String body) { + this.body = body; + } + +} diff --git a/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/web/servlet/mail/CreateMoneyServlet.java b/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/web/servlet/mail/CreateMoneyServlet.java new file mode 100644 index 0000000..eacab53 --- /dev/null +++ b/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/web/servlet/mail/CreateMoneyServlet.java @@ -0,0 +1,199 @@ + +package jp.gr.java_conf.u6k.money_notebook.web.servlet.mail; + +import java.io.IOException; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; +import java.util.List; +import java.util.Properties; +import java.util.TimeZone; +import java.util.logging.Logger; + +import javax.jdo.PersistenceManager; +import javax.jdo.Transaction; +import javax.mail.MessagingException; +import javax.mail.Multipart; +import javax.mail.Part; +import javax.mail.Session; +import javax.mail.Message.RecipientType; +import javax.mail.internet.InternetAddress; +import javax.mail.internet.MimeMessage; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import jp.gr.java_conf.u6k.money_notebook.dao.MoneyDiaryDao; +import jp.gr.java_conf.u6k.money_notebook.dao.MoneyDiaryEntity; +import jp.gr.java_conf.u6k.money_notebook.dao.PMF; +import jp.gr.java_conf.u6k.money_notebook.dao.UserDao; +import jp.gr.java_conf.u6k.money_notebook.dao.UserEntity; +import jp.gr.java_conf.u6k.money_notebook.util.DateUtil; +import jp.gr.java_conf.u6k.money_notebook.util.MoneyDiaryForm; + +@SuppressWarnings("serial") +public class CreateMoneyServlet extends HttpServlet { + + // TODO 記帳したよメールを返信する。記帳した内容、今日の合計支出、今週の合計支出、今月の合計支出、ユーザートップへのリンクを返信する。 + + private static final Logger LOG = Logger.getLogger(CreateMoneyServlet.class.getName()); + + @Override + protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + CreateMoneyServlet.LOG.config("メールでお金を登録処理開始"); + + try { + TimeZone tz = DateUtil.getUserTimeZone(); + Date updateDatetime = DateUtil.getNow(tz); + Date diaryDate = DateUtil.getToday(updateDatetime, tz); + + // メールを解析して、記帳する情報を取得する。 + CreateMoneyForm form = this.getForm(req); + + if (form.getSubject() != null && form.getSubject().length() > 0) { + SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd"); + try { + diaryDate = DateUtil.getToday(formatter.parse(form.getSubject()), tz); + } catch (ParseException e) { + throw new ServletException(e); + } + + } + + // 記帳する。 + PersistenceManager pm = PMF.get().getPersistenceManager(); + try { + Transaction tx = pm.currentTransaction(); + try { + tx.begin(); + + UserEntity user = this.getUser(pm, form); + this.createMoney(pm, user, diaryDate, updateDatetime, form); + + tx.commit(); + } finally { + if (tx.isActive()) { + tx.rollback(); + } + } + } finally { + pm.close(); + } + } catch (MessagingException e) { + throw new ServletException(e); + } + + CreateMoneyServlet.LOG.config("メールでお金を登録処理終了"); + } + + private CreateMoneyForm getForm(HttpServletRequest req) throws ServletException, MessagingException, IOException { + CreateMoneyServlet.LOG.config("メール解析処理開始"); + + Properties props = System.getProperties(); + Session mailSession = Session.getDefaultInstance(props, null); + MimeMessage msg = new MimeMessage(mailSession, req.getInputStream()); + + if (msg.getRecipients(RecipientType.TO).length != 1) { + throw new ServletException("メール送信先が1つではありません。"); + } + + String toEmail = ((InternetAddress) msg.getRecipients(RecipientType.TO)[0]).getAddress(); + + String subject = msg.getSubject(); + + String body = this.getMailBody(msg); + + CreateMoneyForm form = new CreateMoneyForm(); + form.setToEmail(toEmail); + form.setSubject(subject); + form.setBody(body); + + CreateMoneyServlet.LOG.config("メール解析処理終了"); + + return form; + } + + private String getMailBody(Part part) throws MessagingException, IOException { + CreateMoneyServlet.LOG.config("MimeType: text/plain"); + + if (part.isMimeType("text/plain")) { + + String body = (String) part.getContent(); + return body; + + } else if (part.isMimeType("multipart/*")) { + + Multipart multipart = (Multipart) part.getContent(); + int count = multipart.getCount(); + + for (int i = 0; i < count; i++) { + String body = this.getMailBody(multipart.getBodyPart(i)); + if (body != null) { + return body; + } + } + + return null; + + } else { + + return null; + + } + } + + private UserEntity getUser(PersistenceManager pm, CreateMoneyForm form) throws ServletException { + String idString = form.getToEmail(); + idString = idString.substring(0, idString.indexOf("@")); + long id = Long.parseLong(idString); + + UserDao userDao = new UserDao(pm); + UserEntity user = userDao.findById(id); + + if (user == null) { + throw new ServletException("ID: " + id + "のユーザは存在しません。"); + } + + return user; + } + + private void createMoney(PersistenceManager pm, UserEntity user, Date diaryDate, Date updateDatetime, CreateMoneyForm form) throws IOException { + MoneyDiaryDao moneyDiaryDao = new MoneyDiaryDao(pm); + + Date diaryDateBegin = diaryDate; + Date diaryDateEnd = DateUtil.addCalendar(diaryDateBegin, Calendar.DAY_OF_MONTH, 1, DateUtil.getUserTimeZone()); + List moneyDiaryList = moneyDiaryDao.findByUserAndDiaryDateBetween(user, diaryDateBegin, diaryDateEnd); + + MoneyDiaryEntity moneyDiary = null; + + if (moneyDiaryList.size() == 0) { + MoneyDiaryForm f = new MoneyDiaryForm(); + f.setText(form.getBody()); + + moneyDiary = new MoneyDiaryEntity(); + moneyDiary.setUser(user); + moneyDiary.setDiaryDate(diaryDate); + moneyDiary.setText(f.getText()); + moneyDiary.setMoney(f.getMoney()); + moneyDiary.setUpdateDatetime(updateDatetime); + + user.getMoneyDiaryList().add(moneyDiary); + + pm.makePersistent(user); + } else { + moneyDiary = moneyDiaryList.get(0); + + MoneyDiaryForm f = new MoneyDiaryForm(); + f.setText(moneyDiary.getText() + form.getBody()); + + moneyDiary.setText(f.getText()); + moneyDiary.setMoney(f.getMoney()); + moneyDiary.setUpdateDatetime(updateDatetime); + + pm.makePersistent(moneyDiary); + } + } + +} diff --git a/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/web/servlet/mail/RegistMailServlet.java b/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/web/servlet/mail/RegistMailServlet.java new file mode 100644 index 0000000..36516b5 --- /dev/null +++ b/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/web/servlet/mail/RegistMailServlet.java @@ -0,0 +1,193 @@ + +package jp.gr.java_conf.u6k.money_notebook.web.servlet.mail; + +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.util.Date; +import java.util.Properties; +import java.util.TimeZone; +import java.util.logging.Logger; + +import javax.jdo.PersistenceManager; +import javax.jdo.Transaction; +import javax.mail.Message; +import javax.mail.MessagingException; +import javax.mail.Session; +import javax.mail.Transport; +import javax.mail.internet.InternetAddress; +import javax.mail.internet.MimeMessage; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import jp.gr.java_conf.u6k.money_notebook.dao.AccountDao; +import jp.gr.java_conf.u6k.money_notebook.dao.AccountEntity; +import jp.gr.java_conf.u6k.money_notebook.dao.PMF; +import jp.gr.java_conf.u6k.money_notebook.dao.TempAccountEntity; +import jp.gr.java_conf.u6k.money_notebook.dao.UserEntity; +import jp.gr.java_conf.u6k.money_notebook.util.DateUtil; + +@SuppressWarnings("serial") +public class RegistMailServlet extends HttpServlet { + + private static final Logger LOG = Logger.getLogger(RegistMailServlet.class.getName()); + + @Override + protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + RegistMailServlet.LOG.config("会員登録メール受信処理開始"); + try { + TimeZone tz = DateUtil.getUserTimeZone(); + Date currentDatetime = DateUtil.getNow(tz); + + // メールを解析して、メール送信元を取得する。 + String email = this.getFromAddressFromRequestMail(req); + + UserEntity user; + + PersistenceManager pm = PMF.get().getPersistenceManager(); + try { + Transaction tx = pm.currentTransaction(); + try { + tx.begin(); + + // 既にメールアドレスが登録されている場合、会員登録はしないで処理を終了する。 + boolean exist = this.existAccount(pm, email); + + if (exist) { + // 既に会員登録されているので、ユーザを作成しないでメールを返信する。 + this.sendReturnAlreadyExistMail(email); + } else { + // ユーザを作成して、会員仮登録する。 + user = this.createUserAndTempAccount(email, currentDatetime); + pm.makePersistent(user); + + // 仮登録したことをユーザにメール送信する。 + this.sendReturnMail(user); + } + + tx.commit(); + } finally { + if (tx.isActive()) { + tx.rollback(); + } + } + } finally { + pm.close(); + } + + RegistMailServlet.LOG.config("会員登録メール受信処理終了"); + } catch (MessagingException e) { + throw new ServletException(e); + } + } + + private String getFromAddressFromRequestMail(HttpServletRequest req) throws MessagingException, IOException, ServletException { + RegistMailServlet.LOG.config("メール送信元取得処理開始"); + + Properties props = System.getProperties(); + Session mailSession = Session.getDefaultInstance(props, null); + MimeMessage msg = new MimeMessage(mailSession, req.getInputStream()); + + if (msg.getFrom().length != 1) { + throw new ServletException("メール送信元が1つではありません。"); + } + if (!(msg.getFrom()[0] instanceof InternetAddress)) { + throw new ServletException("メール送信元がInternetAddressではありません。"); + } + + String email = ((InternetAddress) msg.getFrom()[0]).getAddress(); + + RegistMailServlet.LOG.config("メール送信元: " + email); + RegistMailServlet.LOG.config("メール送信元取得処理終了"); + + return email; + } + + private boolean existAccount(PersistenceManager pm, String email) { + RegistMailServlet.LOG.config("既存会員判定処理開始"); + + AccountDao accountDao = new AccountDao(pm); + AccountEntity account = accountDao.findByEmail(email); + + boolean result = (account != null); + + RegistMailServlet.LOG.config("既存会員判定処理終了"); + + return result; + } + + private UserEntity createUserAndTempAccount(String email, Date currentDatetime) { + RegistMailServlet.LOG.config("ユーザ、及び一時会員登録処理開始"); + + TempAccountEntity tempAccount = new TempAccountEntity(); + tempAccount.setEmail(email); + tempAccount.setUpdateDatetime(currentDatetime); + + UserEntity user = new UserEntity(); + user.setUpdateDatetime(currentDatetime); + user.setTempAccount(tempAccount); + + RegistMailServlet.LOG.config("ユーザ、及び一時会員登録処理終了"); + + return user; + } + + private void sendReturnMail(UserEntity user) throws MessagingException, UnsupportedEncodingException { + RegistMailServlet.LOG.config("一時会員登録返信メール送信処理開始"); + + String content = "以下のURLにアクセスして、会員登録を続行してください。\r\n"; + content += "http://money-notebook.appspot.com" + this.getServletContext().getContextPath() + "/m/regist/" + user.getKey().getId() + "/"; + + InternetAddress fromAddress = new InternetAddress("u6k.yu1@gmail.com"); + InternetAddress toAddress = new InternetAddress(user.getTempAccount().getEmail()); + + Properties props = System.getProperties(); + Session mailSession = Session.getDefaultInstance(props, null); + + MimeMessage mail = new MimeMessage(mailSession); + mail.setHeader("Content-Type", "text/plain; charset=ISO-2022-JP"); + mail.setHeader("Content-Transfer-Encoding", "7bit"); + mail.setFrom(fromAddress); + mail.addRecipient(Message.RecipientType.TO, toAddress); + mail.setSubject("[小遣い帳(ä»®)]会員登録受付のお知らせ", "ISO-2022-JP"); + mail.setText(content, "ISO-2022-JP"); + + Transport.send(mail); + + RegistMailServlet.LOG.config("一時会員登録返信メール送信処理終了"); + } + + private void sendReturnAlreadyExistMail(String email) throws MessagingException { + RegistMailServlet.LOG.config("既に会員登録されています返信メール送信処理開始"); + + String content = email + "様はすでに会員登録されています。\r\n"; + content += "ログインして小遣い帳(ä»®)を利用できます。\r\n"; + content += "http://money-notebook.appspot.com" + this.getServletContext().getContextPath() + "/m/login\r\n"; + content += "\r\n"; + content += "パスワードを忘れてしまった場合、一時的なパスワードを発行することができます。\r\n"; + content += "http://money-notebook.appspot.com" + this.getServletContext().getContextPath() + "/m/onetime-password\r\n"; + content += "\r\n"; + content += "そのほかのお問い合わせは、ヘルプをご覧下さい。\r\n"; + content += "http://money-notebook.appspot.com" + this.getServletContext().getContextPath() + "m/help\r\n"; + + InternetAddress fromAddress = new InternetAddress("u6k.yu1@gmail.com"); + InternetAddress toAddress = new InternetAddress(email); + + Properties props = System.getProperties(); + Session mailSession = Session.getDefaultInstance(props, null); + + MimeMessage mail = new MimeMessage(mailSession); + mail.setHeader("Content-Type", "text/plain; charset=ISO-2022-JP"); + mail.setHeader("Content-Transfer-Encoding", "7bit"); + mail.setFrom(fromAddress); + mail.addRecipient(Message.RecipientType.TO, toAddress); + mail.setSubject("[小遣い帳(ä»®)]既に会員登録されています", "ISO-2022-JP"); + mail.setText(content, "ISO-2022-JP"); + + Transport.send(mail); + + RegistMailServlet.LOG.config("既に会員登録されています返信メール送信処理終了"); + } + +} diff --git a/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/web/servlet/mobile/IndexServlet.java b/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/web/servlet/mobile/IndexServlet.java new file mode 100644 index 0000000..52f5dae --- /dev/null +++ b/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/web/servlet/mobile/IndexServlet.java @@ -0,0 +1,19 @@ + +package jp.gr.java_conf.u6k.money_notebook.web.servlet.mobile; + +import java.io.IOException; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +@SuppressWarnings("serial") +public class IndexServlet extends HttpServlet { + + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + req.getRequestDispatcher("/WEB-INF/page/mobile/index.jsp").forward(req, resp); + } + +} diff --git a/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/web/servlet/mobile/LoginServlet.java b/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/web/servlet/mobile/LoginServlet.java new file mode 100644 index 0000000..181359b --- /dev/null +++ b/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/web/servlet/mobile/LoginServlet.java @@ -0,0 +1,130 @@ + +package jp.gr.java_conf.u6k.money_notebook.web.servlet.mobile; + +import java.io.IOException; +import java.util.logging.Logger; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import jp.gr.java_conf.u6k.money_notebook.logic.LoginLogic; + +@SuppressWarnings("serial") +public class LoginServlet extends HttpServlet { + + // TODO 未ログイン状態でユーザーページにアクセスしたとき、ログインページにリダイレクトする。 + // ログイン後、元々アクセスしたかったページにリダイレクトする。元々アクセスしたいページが無い場合、ユーザートップにリダイレクトする。 + + // TODO ログインは同時に1端末からのみ。別端末からログインした場合、ログイン情報が異なることを検知して弾く。 + + private static final Logger LOG = Logger.getLogger(LoginServlet.class.getName()); + + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + LoginServlet.LOG.config("ログイン初期化処理開始"); + + // 既にログイン済みの場合、ユーザトップ画面にリダイレクトする。 + LoginLogic loginLogic = new LoginLogic(req, resp); + + if (loginLogic.isLogined()) { + // ユーザ・トップ画面へリダイレクトする。 + LoginServlet.LOG.config("ユーザ・トップ画面へリダイレクト処理開始"); + + resp.sendRedirect("/m/user/" + loginLogic.getLoginId() + "/top"); + + LoginServlet.LOG.config("ユーザ・トップ画面へリダイレクト処理終了"); + + return; + } + + // 画面情報を初期化する。 + LoginServlet.LOG.config("画面情報初期化開始"); + + req.setAttribute("email", ""); + req.setAttribute("message", ""); + + LoginServlet.LOG.config("画面情報初期化終了"); + + // JSPへフォワードする。 + LoginServlet.LOG.config("JSPへフォワード開始"); + + this.getServletContext().getRequestDispatcher("/WEB-INF/page/mobile/login.jsp").forward(req, resp); + + LoginServlet.LOG.config("JSPへフォワード終了"); + + LoginServlet.LOG.config("ログイン初期化処理終了"); + } + + @Override + protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + LoginServlet.LOG.config("ログイン処理開始"); + + // 入力を取得し、入力チェックを行う。 + LoginServlet.LOG.config("ユーザ入力取得・チェック処理開始"); + + String email = req.getParameter("email"); + String password = req.getParameter("password"); + + LoginServlet.LOG.config("メールアドレス: " + email); + + String message = null; + + if (email == null || "".equals(email)) { + message = "メールアドレスを入力してください。"; + LoginServlet.LOG.config("入力チェック失敗: " + message); + } + + if (message == null && (password == null || "".equals(password))) { + message = "パスワードを入力してください。"; + LoginServlet.LOG.config("入力チェック失敗: " + message); + } + + if (message != null) { + LoginServlet.LOG.config("ユーザ入力チェック失敗開始"); + + req.setAttribute("email", email); + req.setAttribute("message", message); + + this.getServletContext().getRequestDispatcher("/WEB-INF/page/mobile/login.jsp").forward(req, resp); + + LoginServlet.LOG.config("ユーザ入力チェック失敗終了"); + + return; + } + + LoginServlet.LOG.config("ユーザ入力取得・チェック処理終了"); + + // ログイン・ビジネス処理を行う。 + LoginServlet.LOG.config("ログイン・ビジネス処理開始"); + + LoginLogic loginLogic = new LoginLogic(req, resp); + if (!loginLogic.login(email, password)) { + LoginServlet.LOG.config("ログイン・ビジネス処理失敗"); + + message = "メールアドレス、またはパスワードが間違えています。"; + + req.setAttribute("email", email); + req.setAttribute("message", message); + + this.getServletContext().getRequestDispatcher("/WEB-INF/page/mobile/login.jsp").forward(req, resp); + + LoginServlet.LOG.config("ログイン・ビジネス処理失敗終了"); + + return; + } + + LoginServlet.LOG.config("ログイン・ビジネス処理終了"); + + // ユーザ・トップ画面へリダイレクトする。 + LoginServlet.LOG.config("ユーザ・トップ画面へリダイレクト処理開始"); + + resp.sendRedirect("/m/user/" + loginLogic.getLoginId() + "/top"); + + LoginServlet.LOG.config("ユーザ・トップ画面へリダイレクト処理終了"); + + LoginServlet.LOG.config("ログイン処理終了"); + } + +} diff --git a/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/web/servlet/mobile/RegistFinishServlet.java b/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/web/servlet/mobile/RegistFinishServlet.java new file mode 100644 index 0000000..57d1420 --- /dev/null +++ b/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/web/servlet/mobile/RegistFinishServlet.java @@ -0,0 +1,19 @@ + +package jp.gr.java_conf.u6k.money_notebook.web.servlet.mobile; + +import java.io.IOException; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +@SuppressWarnings("serial") +public class RegistFinishServlet extends HttpServlet { + + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + req.getRequestDispatcher("/WEB-INF/page/mobile/regist_finish.jsp").forward(req, resp); + } + +} diff --git a/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/web/servlet/mobile/RegistServlet.java b/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/web/servlet/mobile/RegistServlet.java new file mode 100644 index 0000000..5e5cac6 --- /dev/null +++ b/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/web/servlet/mobile/RegistServlet.java @@ -0,0 +1,213 @@ + +package jp.gr.java_conf.u6k.money_notebook.web.servlet.mobile; + +import java.io.IOException; +import java.util.Date; +import java.util.TimeZone; +import java.util.logging.Logger; +import java.util.regex.Pattern; + +import javax.jdo.PersistenceManager; +import javax.jdo.Transaction; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + +import jp.gr.java_conf.u6k.money_notebook.dao.AccountEntity; +import jp.gr.java_conf.u6k.money_notebook.dao.EntityStateEnum; +import jp.gr.java_conf.u6k.money_notebook.dao.PMF; +import jp.gr.java_conf.u6k.money_notebook.dao.TempAccountDao; +import jp.gr.java_conf.u6k.money_notebook.dao.TempAccountEntity; +import jp.gr.java_conf.u6k.money_notebook.dao.UserDao; +import jp.gr.java_conf.u6k.money_notebook.dao.UserEntity; +import jp.gr.java_conf.u6k.money_notebook.util.DateUtil; +import jp.gr.java_conf.u6k.money_notebook.util.HashUtil; + +@SuppressWarnings("serial") +public class RegistServlet extends HttpServlet { + + private static final Logger LOG = Logger.getLogger(RegistServlet.class.getName()); + + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + RegistServlet.LOG.config("会員登録初期化処理開始"); + + // パラメータを取得する。 + RegistServlet.LOG.config("パラメータ取得処理開始"); + + long id = Long.parseLong(req.getParameter("id")); + + RegistServlet.LOG.config("ユーザID: " + id); + + RegistServlet.LOG.config("パラメータ取得処理終了"); + + // ユーザが存在するかチェック。存在しない場合、エラーとする。 + RegistServlet.LOG.config("ユーザ存在チェック処理開始"); + + TempAccountEntity tempAccount; + + PersistenceManager pm = PMF.get().getPersistenceManager(); + try { + UserDao userDao = new UserDao(pm); + UserEntity user = userDao.findById(id); + + if (user == null) { + throw new ServletException("ユーザID: " + id + "のユーザは存在しません。"); + } + + TempAccountDao tempAccountDao = new TempAccountDao(pm); + tempAccount = tempAccountDao.findByUser(user); + + if (tempAccount == null) { + throw new ServletException("一時アカウントが存在しません。"); + } + } finally { + pm.close(); + } + + RegistServlet.LOG.config("ユーザ存在チェック処理終了"); + + // 登録ページを表示する。 + RegistServlet.LOG.config("フォワード処理開始"); + + HttpSession session = req.getSession(); + session.setAttribute("id", id); + session.setAttribute("email", tempAccount.getEmail()); + + req.setAttribute("message", ""); + + this.getServletContext().getRequestDispatcher("/WEB-INF/page/mobile/regist.jsp").forward(req, resp); + + RegistServlet.LOG.config("フォワード処理終了"); + + RegistServlet.LOG.config("会員登録初期化処理終了"); + } + + @Override + protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + RegistServlet.LOG.config("会員登録登録処理開始"); + + TimeZone tz = DateUtil.getUserTimeZone(); + Date updateDatetime = DateUtil.getNow(tz); + + PersistenceManager pm = PMF.get().getPersistenceManager(); + try { + Transaction tx = pm.currentTransaction(); + try { + tx.begin(); + + // パラメータを取得する。 + RegistServlet.LOG.config("パラメータ取得処理開始"); + + HttpSession session = req.getSession(); + long id = (Long) session.getAttribute("id"); + + long reqId = Long.parseLong(req.getParameter("id")); + + RegistServlet.LOG.config("ユーザID: " + id); + RegistServlet.LOG.config("ユーザID(パラメータ): " + reqId); + + RegistServlet.LOG.config("パラメータ取得処理終了"); + + // ユーザ、一時アカウントを取得する。 + RegistServlet.LOG.config("ユーザ取得処理開始"); + + UserDao userDao = new UserDao(pm); + UserEntity user = userDao.findById(id); + + if (user == null) { + throw new ServletException("ユーザID: " + id + "のユーザは存在しません。"); + } + + TempAccountDao tempAccountDao = new TempAccountDao(pm); + TempAccountEntity tempAccount = tempAccountDao.findByUser(user); + + if (tempAccount == null) { + throw new ServletException("一時アカウントが存在しません。"); + } + + RegistServlet.LOG.config("ユーザ取得処理終了"); + + // パラメータを取得して、入力チェックを行う。 + RegistServlet.LOG.config("入力チェック処理開始"); + + String password1 = req.getParameter("password1"); + String password2 = req.getParameter("password2"); + + String message = null; + + final String PASSWORD_PATTERN = "^[0-9a-zA-Z]{7,}$"; + + if (password1 == null || "".equals(password1) || password2 == null || "".equals(password2)) { + message = "パスワードを入力してください。"; + RegistServlet.LOG.config("入力チェック失敗: " + message); + } + + if (message == null && (!Pattern.matches(PASSWORD_PATTERN, password1) || !Pattern.matches(PASSWORD_PATTERN, password2))) { + message = "パスワードは英数字7文字以上を入力してください。"; + RegistServlet.LOG.config("入力チェック失敗: " + message); + } + + if (message == null && !password1.equals(password2)) { + message = "2つのパスワードが一致しません。もう一度入力してください。"; + RegistServlet.LOG.config("入力チェック失敗: " + message); + } + + if (message != null) { + // 入力チェックに失敗したので、ページを再表示する。 + RegistServlet.LOG.config("入力チェック処理失敗による再フォワード開始"); + + req.setAttribute("message", message); + + this.getServletContext().getRequestDispatcher("/WEB-INF/page/mobile/regist.jsp").forward(req, resp); + + RegistServlet.LOG.config("入力チェック処理失敗による再フォワード終了"); + + return; + } + + RegistServlet.LOG.config("入力チェック処理終了"); + + // 登録する。 + RegistServlet.LOG.config("アカウント登録、一時アカウント論理削除、処理開始"); + + String password = HashUtil.digest("SHA-512", password1); + + AccountEntity account = new AccountEntity(); + account.setUser(user); + account.setEmail(tempAccount.getEmail()); + account.setPassword(password); + account.setUpdateDatetime(updateDatetime); + + pm.makePersistent(account); + + tempAccount.setUpdateDatetime(updateDatetime); + tempAccount.setEntityState(EntityStateEnum.DELETED); + + pm.makePersistent(tempAccount); + + RegistServlet.LOG.config("アカウント登録、一時アカウント論理削除、処理終了"); + + // 会員登録完了ページにリダイレクトする。 + RegistServlet.LOG.config("会員登録完了ページにフォワード開始"); + + resp.sendRedirect("/m/regist/" + id + "/finish"); + + RegistServlet.LOG.config("会員登録完了ページにフォワード終了"); + + tx.commit(); + } finally { + if (tx.isActive()) { + tx.rollback(); + } + } + } finally { + pm.close(); + } + + RegistServlet.LOG.config("会員登録登録処理終了"); + } + +} diff --git a/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/web/servlet/mobile/user/DiaryServlet.java b/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/web/servlet/mobile/user/DiaryServlet.java new file mode 100644 index 0000000..9679984 --- /dev/null +++ b/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/web/servlet/mobile/user/DiaryServlet.java @@ -0,0 +1,125 @@ + +package jp.gr.java_conf.u6k.money_notebook.web.servlet.mobile.user; + +import java.io.IOException; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Collection; +import java.util.Date; +import java.util.List; + +import javax.jdo.PersistenceManager; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + +import jp.gr.java_conf.u6k.money_notebook.dao.MoneyDiaryDao; +import jp.gr.java_conf.u6k.money_notebook.dao.MoneyDiaryEntity; +import jp.gr.java_conf.u6k.money_notebook.dao.PMF; +import jp.gr.java_conf.u6k.money_notebook.dao.UserDao; +import jp.gr.java_conf.u6k.money_notebook.dao.UserEntity; +import jp.gr.java_conf.u6k.money_notebook.util.DateUtil; +import jp.gr.java_conf.u6k.money_notebook.util.MoneyDiaryForm; + +@SuppressWarnings("serial") +public class DiaryServlet extends HttpServlet { + + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + String mode = req.getParameter("mode"); + + if ("daily".equals(mode)) { + this.executeDaily(req); + req.getRequestDispatcher("/WEB-INF/page/mobile/user/diary_daily.jsp").forward(req, resp); + } else if ("detail".equals(mode)) { + this.executeDetail(req); + req.getRequestDispatcher("/WEB-INF/page/mobile/user/diary_detail.jsp").forward(req, resp); + } else { + throw new ServletException(); + } + } + + private void executeDaily(HttpServletRequest req) throws ServletException { + HttpSession session = req.getSession(); + long id = (Long) session.getAttribute("id"); + + String reqBegin = req.getParameter("begin"); + String reqEnd = req.getParameter("end"); + + SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd"); + formatter.setTimeZone(DateUtil.getUserTimeZone()); + + Date beginDate; + Date endDate; + try { + beginDate = formatter.parse(reqBegin); + endDate = formatter.parse(reqEnd); + } catch (ParseException e) { + throw new ServletException(e); + } + endDate = DateUtil.addCalendar(endDate, Calendar.DATE, 1, DateUtil.getUserTimeZone()); + + PersistenceManager pm = PMF.get().getPersistenceManager(); + try { + UserDao userDao = new UserDao(pm); + UserEntity user = userDao.findById(id); + + MoneyDiaryDao moneyDiaryDao = new MoneyDiaryDao(pm); + List moneyDiaryList = moneyDiaryDao.findByUserAndDiaryDateBetween(user, beginDate, endDate); + Collection moneyDiaryCol = pm.detachCopyAll(moneyDiaryList); + + req.setAttribute("moneyDiaryList", moneyDiaryCol); + } finally { + pm.close(); + } + } + + private void executeDetail(HttpServletRequest req) throws ServletException, IOException { + HttpSession session = req.getSession(); + long id = (Long) session.getAttribute("id"); + + String reqBegin = req.getParameter("begin"); + String reqEnd = req.getParameter("end"); + + SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd"); + formatter.setTimeZone(DateUtil.getUserTimeZone()); + + Date beginDate; + Date endDate; + try { + beginDate = formatter.parse(reqBegin); + endDate = formatter.parse(reqEnd); + } catch (ParseException e) { + throw new ServletException(e); + } + endDate = DateUtil.addCalendar(endDate, Calendar.DATE, 1, DateUtil.getUserTimeZone()); + + List moneyDiaryFormList = new ArrayList(); + + PersistenceManager pm = PMF.get().getPersistenceManager(); + try { + UserDao userDao = new UserDao(pm); + UserEntity user = userDao.findById(id); + + MoneyDiaryDao moneyDiaryDao = new MoneyDiaryDao(pm); + List moneyDiaryList = moneyDiaryDao.findByUserAndDiaryDateBetween(user, beginDate, endDate); + + for (MoneyDiaryEntity moneyDiary : moneyDiaryList) { + MoneyDiaryForm moneyDiaryForm = new MoneyDiaryForm(); + moneyDiaryForm.setDiaryDate(moneyDiary.getDiaryDate()); + moneyDiaryForm.setText(moneyDiary.getText()); + + moneyDiaryFormList.add(moneyDiaryForm); + } + + req.setAttribute("moneyDiaryFormList", moneyDiaryFormList); + } finally { + pm.close(); + } + } + +} diff --git a/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/web/servlet/mobile/user/TopServlet.java b/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/web/servlet/mobile/user/TopServlet.java new file mode 100644 index 0000000..9e008b6 --- /dev/null +++ b/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/web/servlet/mobile/user/TopServlet.java @@ -0,0 +1,122 @@ + +package jp.gr.java_conf.u6k.money_notebook.web.servlet.mobile.user; + +import java.io.IOException; +import java.util.Calendar; +import java.util.Date; +import java.util.List; +import java.util.TimeZone; +import java.util.logging.Logger; + +import javax.jdo.PersistenceManager; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + +import jp.gr.java_conf.u6k.money_notebook.dao.MoneyDiaryDao; +import jp.gr.java_conf.u6k.money_notebook.dao.MoneyDiaryEntity; +import jp.gr.java_conf.u6k.money_notebook.dao.PMF; +import jp.gr.java_conf.u6k.money_notebook.dao.UserDao; +import jp.gr.java_conf.u6k.money_notebook.dao.UserEntity; +import jp.gr.java_conf.u6k.money_notebook.util.DateUtil; +import jp.gr.java_conf.u6k.money_notebook.util.MoneyDiaryForm; + +@SuppressWarnings("serial") +public class TopServlet extends HttpServlet { + + // TODO ログインユーザと別のユーザーのトップを表示しようとした場合、「そのユーザーはお小遣い帳を公開していません」エラーとする。 + // TODO 当日の合計支出、先日の合計支出、今週の合計支出、先週の合計支出、今月の合計支出、先月の合計支出を表示する。明細はその先のページで表示する。 + // TODO ログアウトを作る。 + + private static final Logger LOG = Logger.getLogger(TopServlet.class.getName()); + + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + TopServlet.LOG.config("ユーザ・トップ画面表示処理開始"); + + HttpSession session = req.getSession(); + + long reqId = Long.parseLong(req.getParameter("id")); + long id = (Long) session.getAttribute("id"); + + if (reqId != id) { + resp.setContentType("text/plain"); + resp.getWriter().println("reqId != id"); + + TopServlet.LOG.severe("reqId != id"); + + return; + } + + PersistenceManager pm = PMF.get().getPersistenceManager(); + try { + UserDao userDao = new UserDao(pm); + UserEntity user = userDao.findById(id); + + TimeZone tz = DateUtil.getUserTimeZone(); + + // 今日の収支明細を取得する。 + Date diaryDateBegin = DateUtil.getToday(DateUtil.getNow(tz), tz); + Date diaryDateEnd = DateUtil.addCalendar(diaryDateBegin, Calendar.DATE, 1, tz); + + MoneyDiaryDao moneyDiaryDao = new MoneyDiaryDao(pm); + List moneyDiaryList = moneyDiaryDao.findByUserAndDiaryDateBetween(user, diaryDateBegin, diaryDateEnd); + + MoneyDiaryForm moneyDiaryForm = new MoneyDiaryForm(); + + if (moneyDiaryList.size() == 0) { + moneyDiaryForm.setDiaryDate(diaryDateBegin); + } else { + MoneyDiaryEntity moneyDiary = moneyDiaryList.get(0); + + moneyDiaryForm.setDiaryDate(moneyDiary.getDiaryDate()); + moneyDiaryForm.setText(moneyDiary.getText()); + } + + req.setAttribute("moneyDiaryForm", moneyDiaryForm); + + // 今週の収支合計を算出する。 + Date weekStartDate = DateUtil.getWeekStart(diaryDateBegin, tz); + Date weekEndDate = DateUtil.addCalendar(weekStartDate, Calendar.DATE, 7, tz); + + moneyDiaryList = moneyDiaryDao.findByUserAndDiaryDateBetween(user, weekStartDate, weekEndDate); + + long totalMoneyThisWeek = 0; + for (MoneyDiaryEntity d : moneyDiaryList) { + totalMoneyThisWeek += d.getMoney(); + } + + weekEndDate = DateUtil.addCalendar(weekEndDate, Calendar.DATE, -1, tz); + + req.setAttribute("weekStartDate", weekStartDate); + req.setAttribute("weekEndDate", weekEndDate); + req.setAttribute("totalMoneyThisWeek", totalMoneyThisWeek); + + // 今月の収支合計を算出する。 + Date monthStartDate = DateUtil.getMonthStart(diaryDateBegin, tz); + Date monthEndDate = DateUtil.addCalendar(monthStartDate, Calendar.MONTH, 1, tz); + + moneyDiaryList = moneyDiaryDao.findByUserAndDiaryDateBetween(user, monthStartDate, monthEndDate); + + long totalMoneyThisMonth = 0; + for (MoneyDiaryEntity d : moneyDiaryList) { + totalMoneyThisMonth += d.getMoney(); + } + + monthEndDate = DateUtil.addCalendar(monthEndDate, Calendar.DATE, -1, tz); + + req.setAttribute("monthStartDate", monthStartDate); + req.setAttribute("monthEndDate", monthEndDate); + req.setAttribute("totalMoneyThisMonth", totalMoneyThisMonth); + } finally { + pm.close(); + } + + req.getRequestDispatcher("/WEB-INF/page/mobile/user/top.jsp").forward(req, resp); + + TopServlet.LOG.config("ユーザ・トップ画面表示処理終了"); + } + +} diff --git a/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/web/servlet/mobile/user/TutorialServlet.java b/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/web/servlet/mobile/user/TutorialServlet.java new file mode 100644 index 0000000..d713f74 --- /dev/null +++ b/money-notebook/src/jp/gr/java_conf/u6k/money_notebook/web/servlet/mobile/user/TutorialServlet.java @@ -0,0 +1,20 @@ + +package jp.gr.java_conf.u6k.money_notebook.web.servlet.mobile.user; + +import java.io.IOException; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +@SuppressWarnings("serial") +public class TutorialServlet extends HttpServlet { + + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + resp.setContentType("text/plain"); + resp.getWriter().println("tutorial"); + } + +} diff --git a/money-notebook/src/log4j.properties b/money-notebook/src/log4j.properties new file mode 100644 index 0000000..d9c3edc --- /dev/null +++ b/money-notebook/src/log4j.properties @@ -0,0 +1,24 @@ +# A default log4j configuration for log4j users. +# +# To use this configuration, deploy it into your application's WEB-INF/classes +# directory. You are also encouraged to edit it as you like. + +# Configure the console as our one appender +log4j.appender.A1=org.apache.log4j.ConsoleAppender +log4j.appender.A1.layout=org.apache.log4j.PatternLayout +log4j.appender.A1.layout.ConversionPattern=%d{HH:mm:ss,SSS} %-5p [%c] - %m%n + +# tighten logging on the DataNucleus Categories +log4j.category.DataNucleus.JDO=WARN, A1 +log4j.category.DataNucleus.Persistence=WARN, A1 +log4j.category.DataNucleus.Cache=WARN, A1 +log4j.category.DataNucleus.MetaData=WARN, A1 +log4j.category.DataNucleus.General=WARN, A1 +log4j.category.DataNucleus.Utility=WARN, A1 +log4j.category.DataNucleus.Transaction=WARN, A1 +log4j.category.DataNucleus.Datastore=WARN, A1 +log4j.category.DataNucleus.ClassLoading=WARN, A1 +log4j.category.DataNucleus.Plugin=WARN, A1 +log4j.category.DataNucleus.ValueGeneration=WARN, A1 +log4j.category.DataNucleus.Enhancer=WARN, A1 +log4j.category.DataNucleus.SchemaTool=WARN, A1 diff --git a/money-notebook/src_test/jp/gr/java_conf/u6k/money_notebook/test/util/DateUtilTest.java b/money-notebook/src_test/jp/gr/java_conf/u6k/money_notebook/test/util/DateUtilTest.java new file mode 100644 index 0000000..5204c95 --- /dev/null +++ b/money-notebook/src_test/jp/gr/java_conf/u6k/money_notebook/test/util/DateUtilTest.java @@ -0,0 +1,137 @@ + +package jp.gr.java_conf.u6k.money_notebook.test.util; + +import java.util.Calendar; +import java.util.Date; +import java.util.TimeZone; + +import jp.gr.java_conf.u6k.money_notebook.util.DateUtil; + +import org.junit.Assert; +import org.junit.Test; + +public class DateUtilTest { + + @Test + public void getUserTimeZone() { + TimeZone tz = DateUtil.getUserTimeZone(); + + Assert.assertEquals("Asia/Tokyo", tz.getID()); + } + + @Test + public void getNow() { + TimeZone tz = DateUtil.getUserTimeZone(); + Date a = DateUtil.getNow(tz); + Date b = new Date(); + + Assert.assertTrue(Math.abs(a.getTime() - b.getTime()) < 100); + } + + @Test + public void getToday() { + TimeZone tz = DateUtil.getUserTimeZone(); + + Calendar c = Calendar.getInstance(); + c.set(Calendar.YEAR, 2010); + c.set(Calendar.MONTH, 6); + c.set(Calendar.DAY_OF_MONTH, 20); + + Date d = DateUtil.getToday(c.getTime(), tz); + c.setTime(d); + + Assert.assertEquals(2010, c.get(Calendar.YEAR)); + Assert.assertEquals(6, c.get(Calendar.MONTH)); + Assert.assertEquals(20, c.get(Calendar.DAY_OF_MONTH)); + Assert.assertEquals(0, c.get(Calendar.HOUR_OF_DAY)); + Assert.assertEquals(0, c.get(Calendar.MINUTE)); + Assert.assertEquals(0, c.get(Calendar.SECOND)); + Assert.assertEquals(0, c.get(Calendar.MILLISECOND)); + } + + @Test + public void getWeekStart() { + TimeZone tz = DateUtil.getUserTimeZone(); + + Calendar c = Calendar.getInstance(); + c.set(Calendar.YEAR, 2010); + c.set(Calendar.MONTH, 6); + c.set(Calendar.DAY_OF_MONTH, 20); + + Date d = DateUtil.getWeekStart(c.getTime(), tz); + c.setTime(d); + + Assert.assertEquals(2010, c.get(Calendar.YEAR)); + Assert.assertEquals(6, c.get(Calendar.MONTH)); + Assert.assertEquals(18, c.get(Calendar.DAY_OF_MONTH)); + Assert.assertEquals(0, c.get(Calendar.HOUR_OF_DAY)); + Assert.assertEquals(0, c.get(Calendar.MINUTE)); + Assert.assertEquals(0, c.get(Calendar.SECOND)); + Assert.assertEquals(0, c.get(Calendar.MILLISECOND)); + } + + @Test + public void getMonthStart() { + TimeZone tz = DateUtil.getUserTimeZone(); + + Calendar c = Calendar.getInstance(); + c.set(Calendar.YEAR, 2010); + c.set(Calendar.MONTH, 6); + c.set(Calendar.DAY_OF_MONTH, 20); + + Date d = DateUtil.getMonthStart(c.getTime(), tz); + c.setTime(d); + + Assert.assertEquals(2010, c.get(Calendar.YEAR)); + Assert.assertEquals(6, c.get(Calendar.MONTH)); + Assert.assertEquals(1, c.get(Calendar.DAY_OF_MONTH)); + Assert.assertEquals(0, c.get(Calendar.HOUR_OF_DAY)); + Assert.assertEquals(0, c.get(Calendar.MINUTE)); + Assert.assertEquals(0, c.get(Calendar.SECOND)); + Assert.assertEquals(0, c.get(Calendar.MILLISECOND)); + } + + @Test + public void addCalendar() { + TimeZone tz = DateUtil.getUserTimeZone(); + + Calendar c = Calendar.getInstance(); + c.set(Calendar.YEAR, 2010); + c.set(Calendar.MONTH, 6); + c.set(Calendar.DAY_OF_MONTH, 20); + + Date d = DateUtil.getToday(c.getTime(), tz); + c.setTime(d); + + Assert.assertEquals(2010, c.get(Calendar.YEAR)); + Assert.assertEquals(6, c.get(Calendar.MONTH)); + Assert.assertEquals(20, c.get(Calendar.DAY_OF_MONTH)); + Assert.assertEquals(0, c.get(Calendar.HOUR_OF_DAY)); + Assert.assertEquals(0, c.get(Calendar.MINUTE)); + Assert.assertEquals(0, c.get(Calendar.SECOND)); + Assert.assertEquals(0, c.get(Calendar.MILLISECOND)); + + d = DateUtil.addCalendar(d, Calendar.DAY_OF_YEAR, 7, tz); + c.setTime(d); + + Assert.assertEquals(2010, c.get(Calendar.YEAR)); + Assert.assertEquals(6, c.get(Calendar.MONTH)); + Assert.assertEquals(27, c.get(Calendar.DAY_OF_MONTH)); + Assert.assertEquals(0, c.get(Calendar.HOUR_OF_DAY)); + Assert.assertEquals(0, c.get(Calendar.MINUTE)); + Assert.assertEquals(0, c.get(Calendar.SECOND)); + Assert.assertEquals(0, c.get(Calendar.MILLISECOND)); + + d = DateUtil.addCalendar(d, Calendar.DAY_OF_YEAR, 7, tz); + c.setTime(d); + + Assert.assertEquals(2010, c.get(Calendar.YEAR)); + Assert.assertEquals(7, c.get(Calendar.MONTH)); + Assert.assertEquals(3, c.get(Calendar.DAY_OF_MONTH)); + Assert.assertEquals(0, c.get(Calendar.HOUR_OF_DAY)); + Assert.assertEquals(0, c.get(Calendar.MINUTE)); + Assert.assertEquals(0, c.get(Calendar.SECOND)); + Assert.assertEquals(0, c.get(Calendar.MILLISECOND)); + } + +} diff --git a/money-notebook/war/WEB-INF/.gitignore b/money-notebook/war/WEB-INF/.gitignore new file mode 100644 index 0000000..e3a0a0d --- /dev/null +++ b/money-notebook/war/WEB-INF/.gitignore @@ -0,0 +1,2 @@ + +classes \ No newline at end of file diff --git a/money-notebook/war/WEB-INF/appengine-web.xml b/money-notebook/war/WEB-INF/appengine-web.xml new file mode 100644 index 0000000..2a3c4e2 --- /dev/null +++ b/money-notebook/war/WEB-INF/appengine-web.xml @@ -0,0 +1,21 @@ + + + + money-notebook + 1 + + + + + + + true + + + mail + + + diff --git a/money-notebook/war/WEB-INF/datastore-indexes.xml b/money-notebook/war/WEB-INF/datastore-indexes.xml new file mode 100644 index 0000000..bade366 --- /dev/null +++ b/money-notebook/war/WEB-INF/datastore-indexes.xml @@ -0,0 +1,14 @@ + + + + + + + + diff --git a/money-notebook/war/WEB-INF/lib/.gitignore b/money-notebook/war/WEB-INF/lib/.gitignore new file mode 100644 index 0000000..057b56e --- /dev/null +++ b/money-notebook/war/WEB-INF/lib/.gitignore @@ -0,0 +1,10 @@ + +appengine-api-1.0-sdk-1.3.0.jar +appengine-api-labs-1.3.0.jar +datanucleus-appengine-1.0.4.1.final.jar +datanucleus-core-1.1.5.jar +datanucleus-jpa-1.1.5.jar +geronimo-jpa_3.0_spec-1.1.1.jar +geronimo-jta_1.1_spec-1.1.1.jar +gwt-servlet.jar +jdo2-api-2.3-eb.jar \ No newline at end of file diff --git a/money-notebook/war/WEB-INF/lib/jsonic-1.2.0.jar b/money-notebook/war/WEB-INF/lib/jsonic-1.2.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..09f9bec102d3d8368e10d30e178a429026abeec6 GIT binary patch literal 143651 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

jLfIvBo+QDJ+ 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

0HQMbM!p$6k$DQ#Xam%^ z*Ybv_{$J)I{6voCa!YVU1`6!MnnIxjr|%pIFj$qT~H(W4I}j6-5s?3WBS&q)^dDcC+EQI zdao_k|CP0GHxBLGD6$x)l>qEq4n!B=r9TS-&S3VpzW%z;fEG^9E!(dL2IF%ej0^un zqx>Js;;-<14_Xg2P)F@AB?adz7MF!U6k!;UV|yBSV0*BE?>>XdHT0{HQR{BeqLOlT zAml9&Rao|5DD%)`c4x2qdFWEO|3D((nT6+=pieaj414?xb_SI?yGg+T~f+ zq37+HbAC@x^=lu|rDE7+R<)yN{xYFDKty+@-7c|d_&3C#lZOL9bZ>0$0wosF0}n*% z16*|f60pk^B*8pjk|_1;hPQnoX}`A6?RD8I2t522*;>_8w!DeIYJr(7+)d(2gCrB)&Kwi literal 0 HcmV?d00001 diff --git a/money-notebook/war/WEB-INF/lib/urlrewrite-3.2.0.jar b/money-notebook/war/WEB-INF/lib/urlrewrite-3.2.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..214518b3672bb401b1b72e7f3ad384f57faa1f1c GIT binary patch literal 198436 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�X;b-`KJRJV_53X|B4we)4xQ}M>d`<6 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%0DI0oAB-R}*7T9Zh(FgAYNQt?c^ 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 +# +# +# + +# Set the default logging level for all loggers to WARNING +.level = CONFIG + +# Set the default logging level for ORM, specifically, to WARNING +DataNucleus.JDO.level=WARNING +DataNucleus.Persistence.level=WARNING +DataNucleus.Cache.level=WARNING +DataNucleus.MetaData.level=WARNING +DataNucleus.General.level=WARNING +DataNucleus.Utility.level=WARNING +DataNucleus.Transaction.level=WARNING +DataNucleus.Datastore.level=WARNING +DataNucleus.ClassLoading.level=WARNING +DataNucleus.Plugin.level=WARNING +DataNucleus.ValueGeneration.level=WARNING +DataNucleus.Enhancer.level=WARNING +DataNucleus.SchemaTool.level=WARNING diff --git a/money-notebook/war/WEB-INF/page/mobile/index.jsp b/money-notebook/war/WEB-INF/page/mobile/index.jsp new file mode 100644 index 0000000..be759b0 --- /dev/null +++ b/money-notebook/war/WEB-INF/page/mobile/index.jsp @@ -0,0 +1,37 @@ +<%@ page contentType="text/html; charset=UTF-8" + pageEncoding="UTF-8" %> +<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %> +<% + response.setDateHeader("Date", System.currentTimeMillis()); + response.setDateHeader("Expires", 0); + response.setHeader("Pragma", "no-cache"); + response.setHeader("Cache-Control", "no-cache"); + response.addHeader("Cache-Control", "no-store"); + response.addHeader("Cache-Control", "max-age=0"); +%> + + + + + + + + + + + + + + + + 小遣い帳(仮) + + +

小遣い帳(仮)

+ +
+ + diff --git a/money-notebook/war/WEB-INF/page/mobile/login.jsp b/money-notebook/war/WEB-INF/page/mobile/login.jsp new file mode 100644 index 0000000..c3da496 --- /dev/null +++ b/money-notebook/war/WEB-INF/page/mobile/login.jsp @@ -0,0 +1,42 @@ +<%@ page contentType="text/html; charset=UTF-8" + pageEncoding="UTF-8" %> +<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %> +<% + response.setDateHeader("Date", System.currentTimeMillis()); + response.setDateHeader("Expires", 0); + response.setHeader("Pragma", "no-cache"); + response.setHeader("Cache-Control", "no-cache"); + response.addHeader("Cache-Control", "no-store"); + response.addHeader("Cache-Control", "max-age=0"); +%> + + + + + + + + + + + + + + + + ログイン - 小遣い帳(仮) + + +

小遣い帳(仮)

+

ログイン

+ +

+
" method="post"> + メールアドレス
+ ">
+ パスワード
+
+ +
+ + diff --git a/money-notebook/war/WEB-INF/page/mobile/regist.jsp b/money-notebook/war/WEB-INF/page/mobile/regist.jsp new file mode 100644 index 0000000..c57dae8 --- /dev/null +++ b/money-notebook/war/WEB-INF/page/mobile/regist.jsp @@ -0,0 +1,44 @@ +<%@ page contentType="text/html; charset=UTF-8" + pageEncoding="UTF-8" %> +<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %> +<% + response.setDateHeader("Date", System.currentTimeMillis()); + response.setDateHeader("Expires", 0); + response.setHeader("Pragma", "no-cache"); + response.setHeader("Cache-Control", "no-cache"); + response.addHeader("Cache-Control", "no-store"); + response.addHeader("Cache-Control", "max-age=0"); +%> + + + + + + + + + + + + + + + + 会員登録 - 小遣い帳(仮) + + +

小遣い帳(仮)

+

会員登録

+ +

様の会員登録を続行します。

+

+ +
" method="post"> + パスワード
+
+ もう一度
+
+ +
+ + diff --git a/money-notebook/war/WEB-INF/page/mobile/regist_finish.jsp b/money-notebook/war/WEB-INF/page/mobile/regist_finish.jsp new file mode 100644 index 0000000..15c49b3 --- /dev/null +++ b/money-notebook/war/WEB-INF/page/mobile/regist_finish.jsp @@ -0,0 +1,45 @@ +<%@ page contentType="text/html; charset=UTF-8" + pageEncoding="UTF-8" %> +<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %> +<% + response.setDateHeader("Date", System.currentTimeMillis()); + response.setDateHeader("Expires", 0); + response.setHeader("Pragma", "no-cache"); + response.setHeader("Cache-Control", "no-cache"); + response.addHeader("Cache-Control", "no-store"); + response.addHeader("Cache-Control", "max-age=0"); +%> + + + + + + + + + + + + + + + + 会員登録完了 - 小遣い帳(仮) + + +

小遣い帳(仮)

+

会員登録完了

+ +

+ 様の会員登録を完了しました。
+ ようこそ! お小遣い帳(仮)を有効にご活用ください。
+ チュートリアルでお小遣い帳(仮)の使い方を簡単に説明します。
+
+ ">[ チュートリアルを開始する ]
+
+ チュートリアルを飛ばしてお小遣い帳(仮)を使い始めるには、トップを表示します。(チュートリアルは後で開始することもできます)
+
+ ">[ トップを表示する ] +

+ + diff --git a/money-notebook/war/WEB-INF/page/mobile/user/diary_daily.jsp b/money-notebook/war/WEB-INF/page/mobile/user/diary_daily.jsp new file mode 100644 index 0000000..e1de4ae --- /dev/null +++ b/money-notebook/war/WEB-INF/page/mobile/user/diary_daily.jsp @@ -0,0 +1,43 @@ +<%@ page contentType="text/html; charset=UTF-8" + pageEncoding="UTF-8" %> +<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %> +<%@ taglib uri="http://java.sun.com/jstl/fmt" prefix="fmt" %> +<% + response.setDateHeader("Date", System.currentTimeMillis()); + response.setDateHeader("Expires", 0); + response.setHeader("Pragma", "no-cache"); + response.setHeader("Cache-Control", "no-cache"); + response.addHeader("Cache-Control", "no-store"); + response.addHeader("Cache-Control", "max-age=0"); +%> + + + + + + + + + + + + + + + + トップ - 小遣い帳(仮) + + +

小遣い帳(仮)

+

一覧(日毎)

+
+ + + + + + + +
円
+ + diff --git a/money-notebook/war/WEB-INF/page/mobile/user/diary_detail.jsp b/money-notebook/war/WEB-INF/page/mobile/user/diary_detail.jsp new file mode 100644 index 0000000..eb39054 --- /dev/null +++ b/money-notebook/war/WEB-INF/page/mobile/user/diary_detail.jsp @@ -0,0 +1,46 @@ +<%@ page contentType="text/html; charset=UTF-8" + pageEncoding="UTF-8" %> +<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %> +<%@ taglib uri="http://java.sun.com/jstl/fmt" prefix="fmt" %> +<% + response.setDateHeader("Date", System.currentTimeMillis()); + response.setDateHeader("Expires", 0); + response.setHeader("Pragma", "no-cache"); + response.setHeader("Cache-Control", "no-cache"); + response.addHeader("Cache-Control", "no-store"); + response.addHeader("Cache-Control", "max-age=0"); +%> + + + + + + + + + + + + + + + + トップ - 小遣い帳(仮) + + +

小遣い帳(仮)

+

一覧(詳細)

+ +
+

の一覧

+ + + + + + + +
円
+
+ + diff --git a/money-notebook/war/WEB-INF/page/mobile/user/diary_monthly.jsp b/money-notebook/war/WEB-INF/page/mobile/user/diary_monthly.jsp new file mode 100644 index 0000000..80955d9 --- /dev/null +++ b/money-notebook/war/WEB-INF/page/mobile/user/diary_monthly.jsp @@ -0,0 +1,70 @@ +<%@ page contentType="text/html; charset=UTF-8" + pageEncoding="UTF-8" %> +<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %> +<%@ taglib uri="http://java.sun.com/jstl/fmt" prefix="fmt" %> +<% + response.setDateHeader("Date", System.currentTimeMillis()); + response.setDateHeader("Expires", 0); + response.setHeader("Pragma", "no-cache"); + response.setHeader("Cache-Control", "no-cache"); + response.addHeader("Cache-Control", "no-store"); + response.addHeader("Cache-Control", "max-age=0"); +%> + + + + + + + + + + + + + + + + トップ - 小遣い帳(仮) + + +

小遣い帳(仮)

+

トップ

+
+

記帳メールアドレス

+

@money-notebook.appspotmail.com">

+
+

収支合計

+

+ + + + + + + + + + + + + + + + +
今日():円
今週(~):円
今月(~):円
+

+
+

+ 今日の収支明細
+ + + + + + + +
円
+

+ + diff --git a/money-notebook/war/WEB-INF/page/mobile/user/diary_weekly.jsp b/money-notebook/war/WEB-INF/page/mobile/user/diary_weekly.jsp new file mode 100644 index 0000000..80955d9 --- /dev/null +++ b/money-notebook/war/WEB-INF/page/mobile/user/diary_weekly.jsp @@ -0,0 +1,70 @@ +<%@ page contentType="text/html; charset=UTF-8" + pageEncoding="UTF-8" %> +<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %> +<%@ taglib uri="http://java.sun.com/jstl/fmt" prefix="fmt" %> +<% + response.setDateHeader("Date", System.currentTimeMillis()); + response.setDateHeader("Expires", 0); + response.setHeader("Pragma", "no-cache"); + response.setHeader("Cache-Control", "no-cache"); + response.addHeader("Cache-Control", "no-store"); + response.addHeader("Cache-Control", "max-age=0"); +%> + + + + + + + + + + + + + + + + トップ - 小遣い帳(仮) + + +

小遣い帳(仮)

+

トップ

+
+

記帳メールアドレス

+

@money-notebook.appspotmail.com">

+
+

収支合計

+

+ + + + + + + + + + + + + + + + +
今日():円
今週(~):円
今月(~):円
+

+
+

+ 今日の収支明細
+ + + + + + + +
円
+

+ + diff --git a/money-notebook/war/WEB-INF/page/mobile/user/top.jsp b/money-notebook/war/WEB-INF/page/mobile/user/top.jsp new file mode 100644 index 0000000..8bfcb9a --- /dev/null +++ b/money-notebook/war/WEB-INF/page/mobile/user/top.jsp @@ -0,0 +1,75 @@ +<%@ page contentType="text/html; charset=UTF-8" + pageEncoding="UTF-8" %> +<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %> +<%@ taglib uri="http://java.sun.com/jstl/fmt" prefix="fmt" %> +<% + response.setDateHeader("Date", System.currentTimeMillis()); + response.setDateHeader("Expires", 0); + response.setHeader("Pragma", "no-cache"); + response.setHeader("Cache-Control", "no-cache"); + response.addHeader("Cache-Control", "no-store"); + response.addHeader("Cache-Control", "max-age=0"); +%> + + + + + + + + + + + + + + + + トップ - 小遣い帳(仮) + + +

小遣い帳(仮)

+

トップ

+
+

記帳メールアドレス

+

@money-notebook.appspotmail.com">

+
+

収支合計

+

+ + + + + + + + + + + + + + + + +
今日():円
今週(~):円
今月(~):円
+

+
+

+ 今日の収支明細
+ + + + + + + +
円
+

+
+

+ /diary/daily/20100101/20101231/">一覧(日毎)
+ /diary/detail/20100101/20101231/">一覧(詳細) +

+ + diff --git a/money-notebook/war/WEB-INF/urlrewrite.xml b/money-notebook/war/WEB-INF/urlrewrite.xml new file mode 100644 index 0000000..3cce99a --- /dev/null +++ b/money-notebook/war/WEB-INF/urlrewrite.xml @@ -0,0 +1,31 @@ + + + + + + ^/m/regist/([0-9]+)/$ + /m/regist/?id=$1 + + + ^/m/regist/([0-9]+)/finish$ + /m/regist/finish?id=$1 + + + ^/m/user/([0-9]+)/diary/daily/([0-9]+)/([0-9]+)/$ + /m/user/diary?id=$1&mode=daily&begin=$2&end=$3 + + + ^/m/user/([0-9]+)/diary/detail/([0-9]+)/([0-9]+)/$ + /m/user/diary?id=$1&mode=detail&begin=$2&end=$3 + + + ^/m/user/([0-9]+)/top$ + /m/user/top?id=$1 + + + ^/m/user/([0-9]+)/tutorial$ + /m/user/tutorial?id=$1 + + + diff --git a/money-notebook/war/WEB-INF/web.xml b/money-notebook/war/WEB-INF/web.xml new file mode 100644 index 0000000..c4eea66 --- /dev/null +++ b/money-notebook/war/WEB-INF/web.xml @@ -0,0 +1,158 @@ + + + + + + + gwt_IndexService + jp.gr.java_conf.u6k.money_notebook.gwt.server.IndexServiceImpl + + + mail_CreateMoneyServlet + jp.gr.java_conf.u6k.money_notebook.web.servlet.mail.CreateMoneyServlet + + + mail_RegistMailServlet + jp.gr.java_conf.u6k.money_notebook.web.servlet.mail.RegistMailServlet + + + mobile_IndexServlet + jp.gr.java_conf.u6k.money_notebook.web.servlet.mobile.IndexServlet + + + mobile_LoginServlet + jp.gr.java_conf.u6k.money_notebook.web.servlet.mobile.LoginServlet + + + mobile_RegistServlet + jp.gr.java_conf.u6k.money_notebook.web.servlet.mobile.RegistServlet + + + mobile_RegistFinishServlet + jp.gr.java_conf.u6k.money_notebook.web.servlet.mobile.RegistFinishServlet + + + mobile_user_DiaryServlet + jp.gr.java_conf.u6k.money_notebook.web.servlet.mobile.user.DiaryServlet + + + mobile_user_TopServlet + jp.gr.java_conf.u6k.money_notebook.web.servlet.mobile.user.TopServlet + + + mobile_user_TutorialServlet + jp.gr.java_conf.u6k.money_notebook.web.servlet.mobile.user.TutorialServlet + + + admin_MaintenanceServlet + jp.gr.java_conf.u6k.money_notebook.web.servlet.admin.MaintenanceServlet + + + admin_UserDataServlet + jp.gr.java_conf.u6k.money_notebook.web.servlet.admin.UserDataServlet + + + admin_UserIdListServlet + jp.gr.java_conf.u6k.money_notebook.web.servlet.admin.UserIdListServlet + + + + gwt_IndexService + /index/index + + + mobile_IndexServlet + /m/ + + + mobile_LoginServlet + /m/login + + + mobile_RegistServlet + /m/regist/ + + + mobile_RegistFinishServlet + /m/regist/finish + + + mobile_user_DiaryServlet + /m/user/diary + + + mobile_user_TopServlet + /m/user/top + + + mobile_user_TutorialServlet + /m/user/tutorial + + + mail_RegistMailServlet + /_ah/mail/regist@money-notebook.appspotmail.com + + + mail_CreateMoneyServlet + /_ah/mail/* + + + admin_MaintenanceServlet + /admin/maintenance + + + admin_UserDataServlet + /admin/data/user + + + admin_UserIdListServlet + /admin/data/user_id_list + + + + + RequestLogFilter + jp.gr.java_conf.u6k.money_notebook.web.filter.RequestLogFilter + + + RequestLogFilter + /* + + + + LoginCheckFilter + jp.gr.java_conf.u6k.money_notebook.web.filter.LoginCheckFilter + + + LoginCheckFilter + /m/user/* + + + + UrlRewriteFilter + org.tuckey.web.filters.urlrewrite.UrlRewriteFilter + + + UrlRewriteFilter + /* + REQUEST + FORWARD + + + + + index.html + + + + + + /_ah/mail/* + /admin/* + + + admin + + + + diff --git a/money-notebook/war/admin/data/user.jsp b/money-notebook/war/admin/data/user.jsp new file mode 100644 index 0000000..a5ee8b7 --- /dev/null +++ b/money-notebook/war/admin/data/user.jsp @@ -0,0 +1,43 @@ +<%@ page contentType="text/html; charset=UTF-8" + pageEncoding="UTF-8" %> +<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %> +<% + response.setDateHeader("Date", System.currentTimeMillis()); + response.setDateHeader("Expires", 0); + response.setHeader("Pragma", "no-cache"); + response.setHeader("Cache-Control", "no-cache"); + response.addHeader("Cache-Control", "no-store"); + response.addHeader("Cache-Control", "max-age=0"); +%> + + + + + + + + + + + + + + + + 小遣い帳(仮) + + +

小遣い帳(仮)

+

管理 - ユーザー・データのバックアップ、リストア +
+

バックアップ

+
+ ID: +
+
+

リストア

+
+ JSONデータ +
+ + diff --git a/money-notebook/war/index.html b/money-notebook/war/index.html new file mode 100644 index 0000000..0eabae8 --- /dev/null +++ b/money-notebook/war/index.html @@ -0,0 +1,12 @@ + + + + + お小遣い帳(仮) + + + + +
+ + -- 2.11.0