From 696c58921d33aa9de008ee9a8981098feec35af6 Mon Sep 17 00:00:00 2001 From: r-ca Date: Tue, 23 Jan 2024 05:32:57 +0900 Subject: [PATCH 01/47] =?UTF-8?q?=E3=82=A2=E3=82=A4=E3=82=B3=E3=83=B3?= =?UTF-8?q?=E3=83=AA=E3=82=BD=E3=83=BC=E3=82=B9=E7=94=9F=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/ic_launcher_temp-playstore.png | Bin 0 -> 6365 bytes .../res/drawable/ic_launcher_temp_foreground.xml | 15 +++++++++++++++ .../res/mipmap-anydpi-v26/ic_launcher_temp.xml | 5 +++++ .../mipmap-anydpi-v26/ic_launcher_temp_round.xml | 5 +++++ .../main/res/mipmap-hdpi/ic_launcher_temp.webp | Bin 0 -> 768 bytes .../res/mipmap-hdpi/ic_launcher_temp_round.webp | Bin 0 -> 2332 bytes .../main/res/mipmap-mdpi/ic_launcher_temp.webp | Bin 0 -> 630 bytes .../res/mipmap-mdpi/ic_launcher_temp_round.webp | Bin 0 -> 1422 bytes .../main/res/mipmap-xhdpi/ic_launcher_temp.webp | Bin 0 -> 1004 bytes .../res/mipmap-xhdpi/ic_launcher_temp_round.webp | Bin 0 -> 3182 bytes .../main/res/mipmap-xxhdpi/ic_launcher_temp.webp | Bin 0 -> 1376 bytes .../mipmap-xxhdpi/ic_launcher_temp_round.webp | Bin 0 -> 4940 bytes .../res/mipmap-xxxhdpi/ic_launcher_temp.webp | Bin 0 -> 1868 bytes .../mipmap-xxxhdpi/ic_launcher_temp_round.webp | Bin 0 -> 7112 bytes .../res/values/ic_launcher_temp_background.xml | 4 ++++ 15 files changed, 29 insertions(+) create mode 100644 app/src/main/ic_launcher_temp-playstore.png create mode 100644 app/src/main/res/drawable/ic_launcher_temp_foreground.xml create mode 100644 app/src/main/res/mipmap-anydpi-v26/ic_launcher_temp.xml create mode 100644 app/src/main/res/mipmap-anydpi-v26/ic_launcher_temp_round.xml create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher_temp.webp create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher_temp_round.webp create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher_temp.webp create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher_temp_round.webp create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher_temp.webp create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher_temp_round.webp create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher_temp.webp create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher_temp_round.webp create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher_temp.webp create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher_temp_round.webp create mode 100644 app/src/main/res/values/ic_launcher_temp_background.xml diff --git a/app/src/main/ic_launcher_temp-playstore.png b/app/src/main/ic_launcher_temp-playstore.png new file mode 100644 index 0000000000000000000000000000000000000000..f83a7d3a2b044d71753e08afa67947b541607fcd GIT binary patch literal 6365 zcmeHMX;_n27QP9{qU?-6oo1U>|_Ah z^{Idk$X1Z8Nx%?Mku|c*F2poIKtc!v!hA`v?fjnhhn@aPa=-W9d%kndJ@qh}V$a=sO~IDWOYY(P7IZo@La!V5 zqSH-pWaQ2+*y!Y%oDZITPaeX?hH`3|(c=r)bu$0CaU>0Knt{kUI&0 ztu15~Tnzw~y8sZ0(f~;B{tNOa^$T%&xjr^M*OJHPayt*(Me_PEUG!Vn#K;3qv`~aK zlfgz!$CDA$^Q=gfbf9Zh!Mas>sWrE9jD)=zA{d~tR&O7cfXOj44=(QfZm6tU*<^MD zt_~(0G<9HS+iu>I1{q+l-!r}(F+{&j%VU=ZH2v!SF@;#k6&tM3?FVe0S-8VyHBFQ^htxKv5#@c(NY#4 z?UgfNqD1W01CJn>Ja9$8i37jO5Pb`A3Cb&F@|nGyqa50fy}k6GRlpm4 z@FHF#VXHE6kb<-hM4RLY&){d9FpOFn)gfh?U^YY*$g-y2F3I`g+7g(tu2M9&nxK^@ z7jxd2Pb% z$ny`l{Kj4lsfxCozbBA)fk#kIChY>o*^vea{AiV_Amb2;&~ln`|BFD{!1kVwX}@^v zrr4+BoXv9Jsyguf29DZv6povEQQGxDu|5Au0I%fzmVM<40sgLE(}cK{_gen>PM>jA zL6tnH_#9RS=Kuvl2I41x!wTkOHZ~7k4PQXDC-6ERtZFlM@s90sT+bB0u;STed^CjJ?z8diMHo z*V8IllKSeSOB3U6gRw&o!j_UTg&Iz4<*w;EsiEQ&_(q<12``J{x2(_Z99bDnCoH>` zRSc&PqavU{&2#e-7nlEmlNII2g;d}gj|K7VtL<&Em=Dg=TpwG+Ay)ENI%oW_>!Wc+ zo6`aoPg}^}{S~V{Ao$_si5PRwNi@N^w@ilFGm@oEStz6*A)jl;EU1ET$RpbD(Z@9E z$%Sg`RC5nR)4+?CJJZ|9w05&B96oedKu{6S;J(-BLBew zDSz+g!$*7QH?pO~u37{*ep{YH$t&|1ajG~edP0E0NUaTJQpZ5U zC&R|L64hsgMGIcpQ?SI30P8wV_sf^gjOLpWuOA`~+gQ|I@8GU@Y=()~p9B`Q{PgbA z!fR!p1q$9!!d7^M&wDuMB;J1_)39Jb$eY3-(#`n;I!RiTZ8+S-GPf(E`c8PXrTC~_ zD1yz64(k-;u${Ix$8DPtPREc2Wxpz&Xi*iP7B@xWggdp2A39^4ENisGM#dss(EID` zMA!l3#qgRJcZ!6aiH z8nT_o>ul9XY~EuGvyF)0O@{e05?Q11elAT9lG^iSmni3~XY;Ki-!uK&{o1#glyy`f z^6Cj8%vY?%=zYr5k(VkyF4JGj(MUOigcA!8k#kH^R!H#z8n|Dk@-TQ{4sw;Wd2|40U|K2(Voti|&-0ME@Bg>L^9CS#* zY#GwF)^GroW>ZJdqzCRReey%k)qoYoA{DCFS$i}u?*XVud5~!y4>YfN9!j6;8EN@% zr|pN??*C(xBxxUrXAg!(GD6uKNtmPuE_d|=a2yg2+q6UG?6~aQR<0wlLS(7%-{DrH z`Jq;*N5?>iDNH2=5RXU$M|ChS2mVY$TF1aO{yT>O{7epO?m6?q4R2@K>sOXM=&ePm z`CJunw1oej{7}H`(SzA4LoU$z8mJ`vu_xI_p4b{N)%A8IN@NdXft@7T58?n&7&$+U zov#a;LW_^rlC%oo+JcVCa%tiq%p_+Jc5J7p#t?DR;LR>kW%hMhn8IvRBn8S5bZmrC9dJ)>lplal z`xIgQ{r%~T?;TAF;oR7lgpyzC8}wsRysV9bA-3b=Zd`y4U_z{K%DE}cEUN1z+RI3L>6}QPg)x(qHAGjS zcdJqW7P@<1c??p%=+|QiF4rnV3Eod7(kIk5B-+a@9o)qJkbYcua@a+7`kiL-zZMLJ z9Rz{+VvB8+*VbE83Ky_zUeH}Uxk3MZjMBX^I-YMQ7~)&Bm<~iVk#RjMZ*TG@BdeeV z5~<3H{2QtO6;#945qybgJ(2o&#;Q()E@cUeNrVLjkCDT!&_WZ}IS#?rS31kul+hM> zHq@Gk!rp~^2_Z6)X&B}Am^?J+nkkKJz@@Br43ASVhwW! zgjJQ@wZQZ;y9!&ts3yeBm#!Pu^V>(%Bos@T*r+bM9vXrnCb`V)PgXASW^~u30-*82jM{lbFcOfd5?CEYI<}COpxc@oK)_D&I z6okyzxcvO=nH7uD&nXxzwL)6Uya{Vwv}cI&RiyL7@%ix^ss$yciDo7zpPJP zO&|$#scbC0ZuQZ}g%`JhxUn2aG(<;z2yQqn5h%1l;nM8NY{lB-`Yw)`f3gn(8JZ2vol`0Z66QjFtr_0bfOU+uKf2dOZ95vGtfUbejp9--62gI>Q*zMA(B2}4~VM=JJ<@O1CGe0z~vPt!_PVI5Q zJ961$mU*7CMQCA9p?;Jveq_G}tO2?Xo_4_w^ig=IOm_n2Yo)hbU%c=gN77S@87(ll z6J9nDPd-TYN+SVOCeSTX1x9r-Gh<=GrYyR(X5m=vFok!vTVe z&WZvcD>gE7#)j%9;zAUn2i%4gb{-Upv~nqG?qX TsdESV+X9?A;dH#j4t3){`a24y literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/ic_launcher_temp_foreground.xml b/app/src/main/res/drawable/ic_launcher_temp_foreground.xml new file mode 100644 index 00000000..3cf3c7d5 --- /dev/null +++ b/app/src/main/res/drawable/ic_launcher_temp_foreground.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_temp.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_temp.xml new file mode 100644 index 00000000..08dacb68 --- /dev/null +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_temp.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_temp_round.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_temp_round.xml new file mode 100644 index 00000000..08dacb68 --- /dev/null +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_temp_round.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_temp.webp b/app/src/main/res/mipmap-hdpi/ic_launcher_temp.webp new file mode 100644 index 0000000000000000000000000000000000000000..83854c1d31a2796652d1fe72b175c896d610effc GIT binary patch literal 768 zcmV+b1ONO|Nk&Ha0ssJ4MM6+kP&iEN0ssInN5ByfFXSeYBuC1gQ`Rf*DLj8rPe7|3 z8jvH~R#o*rxHI%@NSt(-`q$$&l4Mtzxv#(XO)yD-T*yBLt>wavZCiD-?h|vQMig;d z>Of7X99CqC-2pS(Hvj|#1O#-U0RaI41zJ#tfNFOx&%14V8gyCJ=R6$Jmge?fqjl2! zt^fPO_0Hh`_bHe2?tXV_ms#9aq2J$&4x&MW`2D@;*sa%4qIon6i7E|2NEAhs2!#aG zV6coPB2?9?L8nqsszmAE_6pDaN0J;URgJ3pqh8u)`*~g4s+miT6Z8ANUALqr+h51{ z|Gd7QuhVYami6hfDW|V|cLy>4+VgcXZNj!D6SHF^#58FCQtk8T|0G!OBMOP4l|)jI z1SKRu!f#MTNce4$b|0h&&VtbVclqJ}fBgTx%m1fN!{dh7ujb)xzj}1#-yz$!Z9|eG z%eHOXwr$&1qU`J+@4f@$o@l*AoO>fOqW_NEHgY6tPC3u)enI>9F4_x{&#V;73&a#+$? zJ5C_Jt09XnU=xbxs^4JPg44^g4rky$L3bw65uHWuOQ%@vg+vE*ra{yuTt=~!$8@%o z(uB}~Ty+(ISZb_igv&sVa|~vAM=)9qj+({0K9j16hq}IyO8ouL2N4lSerY*TSst{a zQzy|`$)7@QMKw`nHn^%9qH6nZGup0gAgasK%`AVQ(K>t{_49tv&-+UJ`?H1n{VCp2 zKASoO`o65x*D&%~P9TUkjPCF!J$--m^Ls!)zfbh@JMcf#2An>YZMgqygDh)s{~yO# zMxCA;2$p+)K46h1+COCV%Ju+c<3yOh)MzaPCiQ%sUkUH>b38FHO`{hd8kIgbIWwh{ ynpMjDHJ-8qygOq~%Q;_EXdE&)VuQmYB86wGpcskFk`q!=g@@A6xN-o5|4<>r^@K|R literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_temp_round.webp b/app/src/main/res/mipmap-hdpi/ic_launcher_temp_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..6dbf2e7722fbb25e165e405c3f64de543702aa70 GIT binary patch literal 2332 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 C9(sBJ literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_temp.webp b/app/src/main/res/mipmap-mdpi/ic_launcher_temp.webp new file mode 100644 index 0000000000000000000000000000000000000000..9b879b55af288d77e3f9ae9f33caa39d133f319d GIT binary patch literal 630 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_temp.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher_temp.webp new file mode 100644 index 0000000000000000000000000000000000000000..b4efa44e9958c3d82189b7cbc3c9c22990f4b557 GIT binary patch literal 1004 zcmV@lDb;tBRh z9?5HAHT!o^e&I7MCYwn7pKr4LE58<#O;Yt>QfAq@CBO%D`rCbUOlSXJc=@}1vb#%c zK|~OlS_0892x7!3wIDK45Q!)tfT+xfGa^$31RYlMY^1;4C!D%ptbJL#?q73mG=xv$ zG)msC&r3Df_wEGnqG2!z6Jo&#gIYo+0EsBz(~rPAuX;je3pz>vah@Bq4HY=vq-qc( zj3yE!8U#d?L;wL?_8f)C&z3cT>< z1R{N%#tJ9z(^?qw{(z5v{pEj$_P=5JYPbhA+(aZmK@z=d8Cs<4Hck#kkecqg) z$V+*BMjs#d1lP8OM zX}Vca4k2>u!ZSkM;@xe1qZ|aAqZ389eE(HVc>_w^bZo7B&&F)7M(X(27N+)JbA)0*>pqbO$qVjE1$hMa+a&D&DcJA{=A@H z%xk{=^FI7}G5)+Bf4RzUxk^Z_#M=2xX-zFsM?T8ycEg?mt(Va+hr0JdW?kCz%f9Ov zU3F(SrmYk5Qbrvp^))tJQjY6^ a-jKnA6!TcS1S7~yTzrCZo-^W?5(WU*lj{@! literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_temp_round.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher_temp_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..bcb2669884ce0758731a0afe6f02d8626778a13c GIT binary patch literal 3182 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 U7_&&owe4hbQZ$*gZP&OM0K3mTZ~y=R literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_temp.webp b/app/src/main/res/mipmap-xxhdpi/ic_launcher_temp.webp new file mode 100644 index 0000000000000000000000000000000000000000..ccd89e0a961321cf4b947dd4f0cfd5983f5a2bec GIT binary patch literal 1376 zcmV-m1)us-Nk&Fk1pok7MM6+kP&iCX1pojqkH8}kX9qWuY}d-nx#Iti#w7&uFOtH- z`uZ+92H25ptBTg%=i*gj}J z+qP+E-TN8awpFv5kn|w6w8CnXZL?+;o#%UmrU`2%?*IVQzX1KW|GEIeKm>>Y3Q&Mb zayh3%8=wJI_AelSNxDRkH>Z6_*)JFGY9(L?=1d3FpnC?%rIavSO70ih>8+DPj*?aS ztk2=^cE4qe+1Lk?J{+bB7<5@Y6;_*0G9G4k9@g;qJv*A*+tho|4wYpYJv8}ioSkE_ z6e7h6OW<~q)0&KSQSaJhuH2~CDXSKlyZ>D8*Kr}Jf)f6(XJC5k^HleuDJmJrr!2I} zYMo;g5#8JC!P;|>Yewwampac$dH zZQHhOTWh2CdbhT1+qT{QiuL5=P2FZ@l1xPZ8M%$5DCzE5ywbo2RDY@Ied`YIRWO%F zZYuLT_=K!0~7JZ7}hBOn|0f=C;~k0|tjNNYjG2qx@rKISKuY0_c@C}w3kpU0ej zU#8FJAs{{{Wh(#bf5-V}1_!JW9F;OTo436{@_n*8%k=;L* z0gJ_b-x5^c^rK*STEzKx1l_l1A(iykgbV3HK;_UIPLSsUAo5g^Co;0cx169HlhVag zMMm=fyNfeUmi`X>wZW5z<;lQvK`Kw>mkSpcl_vwwvq$AgemI_cFCUkuC_K0Q`ayVZ z6Q1Xu@Vpm<=e;RBxBYw}JpVPq^B?+Ch+y=wQkM*a(#syA3KpYpicQoU>K5oK^r4XKRH{lt#{Y8ZE%o`D&c}M?J zp=T~UX0}D)lTr88@R-zsHLExuSlykO;MNI_s%7-K;%Mqv@5@{Yixnw@ZLo|$Q|l`W zmV;vPis@ghn;@XBX;tmOf{lhy8p!n3JVpQH#`QjVv7l!-Kqh z0LbLjE$nwLoAFfcK~lrp`c iv5Bc<#%m>sU|G*7RdFJv8kqr5mMJA1N&!gzP?7+igqOwu literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_temp_round.webp b/app/src/main/res/mipmap-xxhdpi/ic_launcher_temp_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..f4b04e3ad1d3b9a070c2801e96c3e77a80fe84a3 GIT binary patch literal 4940 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 KD`mIqI+q2ji-1G` literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_temp.webp b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_temp.webp new file mode 100644 index 0000000000000000000000000000000000000000..91502f73266ff85534d2133479aa9a8a45497227 GIT binary patch literal 1868 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/values/ic_launcher_temp_background.xml b/app/src/main/res/values/ic_launcher_temp_background.xml new file mode 100644 index 00000000..94a6cd1e --- /dev/null +++ b/app/src/main/res/values/ic_launcher_temp_background.xml @@ -0,0 +1,4 @@ + + + #A386EB + \ No newline at end of file From 64d7a536163d013665193a6c2072c354572979f2 Mon Sep 17 00:00:00 2001 From: r-ca Date: Tue, 23 Jan 2024 05:35:42 +0900 Subject: [PATCH 02/47] =?UTF-8?q?=E3=82=A2=E3=82=A4=E3=82=B3=E3=83=B3?= =?UTF-8?q?=E5=A4=89=E6=9B=B4,=20=E4=B8=80=E9=83=A8=E3=83=95=E3=83=A9?= =?UTF-8?q?=E3=82=B0=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 2 +- app/src/main/java/one/nem/lacerta/LacertaApplication.java | 7 ++++++- .../src/main/java/one/nem/lacerta/utils/FeatureSwitch.java | 2 ++ 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index a5ae62e6..1680ef09 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -17,7 +17,7 @@ android:allowBackup="true" android:dataExtractionRules="@xml/data_extraction_rules" android:fullBackupContent="@xml/backup_rules" - android:icon="@mipmap/ic_launcher" + android:icon="@mipmap/ic_launcher_temp_round" android:name=".LacertaApplication" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" diff --git a/app/src/main/java/one/nem/lacerta/LacertaApplication.java b/app/src/main/java/one/nem/lacerta/LacertaApplication.java index 448349b5..78dae9ae 100644 --- a/app/src/main/java/one/nem/lacerta/LacertaApplication.java +++ b/app/src/main/java/one/nem/lacerta/LacertaApplication.java @@ -6,6 +6,7 @@ import android.util.Log; import com.google.android.material.color.DynamicColors; import dagger.hilt.android.HiltAndroidApp; +import one.nem.lacerta.utils.FeatureSwitch; @HiltAndroidApp public class LacertaApplication extends Application { @@ -15,7 +16,11 @@ public class LacertaApplication extends Application { if (DynamicColors.isDynamicColorAvailable()) { Log.d("DynamicColors", "DynamicColors is available. Applying to activities..."); - DynamicColors.applyToActivitiesIfAvailable(this); + if (FeatureSwitch.Meta.disableDynamicColor) { + Log.d("DynamicColors", "DynamicColors is disabled by FeatureSwitch."); + } else { + DynamicColors.applyToActivitiesIfAvailable(this); + } } else { Log.d("DynamicColors", "DynamicColors is not available."); } diff --git a/utils/src/main/java/one/nem/lacerta/utils/FeatureSwitch.java b/utils/src/main/java/one/nem/lacerta/utils/FeatureSwitch.java index 5c808841..aae02397 100644 --- a/utils/src/main/java/one/nem/lacerta/utils/FeatureSwitch.java +++ b/utils/src/main/java/one/nem/lacerta/utils/FeatureSwitch.java @@ -4,6 +4,8 @@ public class FeatureSwitch { public static class Meta { public static boolean canOverrideSwitch = false; + + public static boolean disableDynamicColor = false; } public static class RecyclerView { From af53ba6c86804a5645f96afd362e6634682ec21e Mon Sep 17 00:00:00 2001 From: r-ca Date: Tue, 23 Jan 2024 05:43:40 +0900 Subject: [PATCH 03/47] =?UTF-8?q?=E3=83=91=E3=83=BC=E3=83=9F=E3=83=83?= =?UTF-8?q?=E3=82=B7=E3=83=A7=E3=83=B3=E3=83=81=E3=82=A7=E3=83=83=E3=82=AF?= =?UTF-8?q?=E3=82=92=E8=BF=BD=E5=8A=A0,=20=E4=BD=BF=E3=81=88=E3=81=AA?= =?UTF-8?q?=E3=81=84=E6=A9=9F=E8=83=BD=E3=82=92=E9=9D=9E=E8=A1=A8=E7=A4=BA?= =?UTF-8?q?=E3=81=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/one/nem/lacerta/MainActivity.java | 17 ++++++++++++++ .../scanner/ScannerManagerActivity.java | 23 +++++++++++++++---- .../main/res/menu/scanner_result_toolbar.xml | 10 ++++---- 3 files changed, 40 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/one/nem/lacerta/MainActivity.java b/app/src/main/java/one/nem/lacerta/MainActivity.java index f74b20a7..d7fac694 100644 --- a/app/src/main/java/one/nem/lacerta/MainActivity.java +++ b/app/src/main/java/one/nem/lacerta/MainActivity.java @@ -1,5 +1,6 @@ package one.nem.lacerta; +import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.widget.Toolbar; import androidx.core.content.ContextCompat; @@ -11,6 +12,7 @@ import androidx.navigation.fragment.NavHostFragment; import androidx.navigation.ui.NavigationUI; import android.content.Intent; +import android.content.pm.PackageManager; import android.graphics.Color; import android.os.Bundle; import android.util.Log; @@ -85,6 +87,21 @@ public class MainActivity extends AppCompatActivity implements FragmentNavigatio }); } + + @Override + public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { + super.onRequestPermissionsResult(requestCode, permissions, grantResults); + if (requestCode == 1) { + if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { + Toast.makeText(this, "Permission granted", Toast.LENGTH_SHORT).show(); + } else { + Toast.makeText(this, "Permission denied", Toast.LENGTH_SHORT).show(); + Toast.makeText(this, "カメラの権限は必須です.", Toast.LENGTH_LONG).show(); + finish(); // Exit app + } + } + } + private void initializeApp() { Log.d("Init", "Initializing app"); // Set feature switch override to default value diff --git a/component/scanner/src/main/java/one/nem/lacerta/component/scanner/ScannerManagerActivity.java b/component/scanner/src/main/java/one/nem/lacerta/component/scanner/ScannerManagerActivity.java index dcfc89fa..80cf6ae5 100644 --- a/component/scanner/src/main/java/one/nem/lacerta/component/scanner/ScannerManagerActivity.java +++ b/component/scanner/src/main/java/one/nem/lacerta/component/scanner/ScannerManagerActivity.java @@ -1,6 +1,8 @@ package one.nem.lacerta.component.scanner; +import android.Manifest; import android.app.ProgressDialog; +import android.content.pm.PackageManager; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Bundle; @@ -11,6 +13,8 @@ import android.widget.Toast; import androidx.activity.EdgeToEdge; import androidx.appcompat.app.AppCompatActivity; +import androidx.core.app.ActivityCompat; +import androidx.core.content.ContextCompat; import androidx.core.graphics.Insets; import androidx.core.view.ViewCompat; import androidx.core.view.WindowInsetsCompat; @@ -92,6 +96,14 @@ public class ScannerManagerActivity extends AppCompatActivity { return insets; }); + + + if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) + != PackageManager.PERMISSION_GRANTED) { + ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CAMERA}, 1); // TODO-rca: リクエストコードを定数にする + } + + MaterialToolbar toolbar = findViewById(R.id.top_toolbar); setSupportActionBar(toolbar); Objects.requireNonNull(getSupportActionBar()).setDisplayHomeAsUpEnabled(true); @@ -116,11 +128,12 @@ public class ScannerManagerActivity extends AppCompatActivity { Toast.makeText(this, "保存処理", Toast.LENGTH_SHORT).show(); saveNewDocument(); return true; - } else if (item.getItemId() == R.id.action_insert_exist) { - // 既存ドキュメントに挿入 - Toast.makeText(this, "Work in progress", Toast.LENGTH_SHORT).show(); - insertToExistDocument(); - return true; +// } +// else if (item.getItemId() == R.id.action_insert_exist) { +// // 既存ドキュメントに挿入 +// Toast.makeText(this, "Work in progress", Toast.LENGTH_SHORT).show(); +// insertToExistDocument(); +// return true; } else if (item.getItemId() == android.R.id.home) { finish(); return true; diff --git a/component/scanner/src/main/res/menu/scanner_result_toolbar.xml b/component/scanner/src/main/res/menu/scanner_result_toolbar.xml index 3321aadc..dc815d7b 100644 --- a/component/scanner/src/main/res/menu/scanner_result_toolbar.xml +++ b/component/scanner/src/main/res/menu/scanner_result_toolbar.xml @@ -6,9 +6,9 @@ android:icon="@drawable/save_24px" android:title="Save" app:showAsAction="ifRoom"/> - + + + + + \ No newline at end of file From 93e7c10393aa85c049e4b492257a02cd6fd5c13a Mon Sep 17 00:00:00 2001 From: r-ca Date: Wed, 24 Jan 2024 15:34:37 +0900 Subject: [PATCH 04/47] =?UTF-8?q?VcsLogModel=E4=BD=9C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../one/nem/lacerta/model/VcsLogModel.java | 64 +++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 model/src/main/java/one/nem/lacerta/model/VcsLogModel.java diff --git a/model/src/main/java/one/nem/lacerta/model/VcsLogModel.java b/model/src/main/java/one/nem/lacerta/model/VcsLogModel.java new file mode 100644 index 00000000..366f7a22 --- /dev/null +++ b/model/src/main/java/one/nem/lacerta/model/VcsLogModel.java @@ -0,0 +1,64 @@ +package one.nem.lacerta.model; + +import java.util.Date; + +public class VcsLogModel { + + String id; + String documentId; + String branchName; + String action; + Date createdAt; + + public VcsLogModel(String id, String documentId, String branchName, String action, Date createdAt) { + this.id = id; + this.documentId = documentId; + this.branchName = branchName; + this.action = action; + this.createdAt = createdAt; + } + + // Empty constructor + public VcsLogModel() { + } + + public String getId() { + return id; + } + + public String getDocumentId() { + return documentId; + } + + public String getBranchName() { + return branchName; + } + + public String getAction() { + return action; + } + + public Date getCreatedAt() { + return createdAt; + } + + public void setId(String id) { + this.id = id; + } + + public void setDocumentId(String documentId) { + this.documentId = documentId; + } + + public void setBranchName(String branchName) { + this.branchName = branchName; + } + + public void setAction(String action) { + this.action = action; + } + + public void setCreatedAt(Date createdAt) { + this.createdAt = createdAt; + } +} From 895cf64a158c551e3da0f3068e9d43491f289f9f Mon Sep 17 00:00:00 2001 From: r-ca Date: Wed, 24 Jan 2024 15:37:03 +0900 Subject: [PATCH 05/47] =?UTF-8?q?=E3=83=A1=E3=82=BD=E3=83=83=E3=83=89?= =?UTF-8?q?=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/one/nem/lacerta/vcs/LacertaVcs.java | 7 +++++++ .../one/nem/lacerta/vcs/impl/LacertaVcsImpl.java | 12 ++++++++++++ 2 files changed, 19 insertions(+) diff --git a/vcs/src/main/java/one/nem/lacerta/vcs/LacertaVcs.java b/vcs/src/main/java/one/nem/lacerta/vcs/LacertaVcs.java index 664c45e1..20b3c6bd 100644 --- a/vcs/src/main/java/one/nem/lacerta/vcs/LacertaVcs.java +++ b/vcs/src/main/java/one/nem/lacerta/vcs/LacertaVcs.java @@ -3,7 +3,10 @@ package one.nem.lacerta.vcs; import java.util.ArrayList; import java.util.concurrent.CompletableFuture; +import one.nem.lacerta.model.VcsLogModel; import one.nem.lacerta.model.VcsRevModel; +import one.nem.lacerta.model.document.DocumentDetail; +import one.nem.lacerta.source.database.entity.VcsLogEntity; public interface LacertaVcs { @@ -20,6 +23,10 @@ public interface LacertaVcs { public CompletableFuture> getRevisionHistory(); + public CompletableFuture> getLogHistory(); + + public CompletableFuture> getDocumentDetailAtRev(String revId); + // debug public void printLog(); diff --git a/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java b/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java index 93d701d2..6779df46 100644 --- a/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java +++ b/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java @@ -10,7 +10,9 @@ import javax.inject.Inject; import dagger.assisted.Assisted; import dagger.assisted.AssistedInject; +import one.nem.lacerta.model.VcsLogModel; import one.nem.lacerta.model.VcsRevModel; +import one.nem.lacerta.model.document.DocumentDetail; import one.nem.lacerta.source.database.LacertaDatabase; import one.nem.lacerta.source.database.entity.VcsLogEntity; import one.nem.lacerta.source.database.entity.VcsRevEntity; @@ -147,6 +149,16 @@ public class LacertaVcsImpl implements LacertaVcs { }); } + @Override + public CompletableFuture> getLogHistory() { + return null; + } + + @Override + public CompletableFuture> getDocumentDetailAtRev(String revId) { + return null; + } + @Override public void printLog() { logger.debug(TAG, "printLog"); From 904ae8d39f4085e1f4e828d81ec087e45f6fc06c Mon Sep 17 00:00:00 2001 From: r-ca Date: Wed, 24 Jan 2024 15:38:29 +0900 Subject: [PATCH 06/47] =?UTF-8?q?=E3=83=A1=E3=82=BD=E3=83=83=E3=83=89?= =?UTF-8?q?=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/one/nem/lacerta/vcs/LacertaVcs.java | 3 ++- .../nem/lacerta/vcs/impl/LacertaVcsImpl.java | 22 +++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/vcs/src/main/java/one/nem/lacerta/vcs/LacertaVcs.java b/vcs/src/main/java/one/nem/lacerta/vcs/LacertaVcs.java index 20b3c6bd..5231f294 100644 --- a/vcs/src/main/java/one/nem/lacerta/vcs/LacertaVcs.java +++ b/vcs/src/main/java/one/nem/lacerta/vcs/LacertaVcs.java @@ -6,7 +6,6 @@ import java.util.concurrent.CompletableFuture; import one.nem.lacerta.model.VcsLogModel; import one.nem.lacerta.model.VcsRevModel; import one.nem.lacerta.model.document.DocumentDetail; -import one.nem.lacerta.source.database.entity.VcsLogEntity; public interface LacertaVcs { @@ -25,6 +24,8 @@ public interface LacertaVcs { public CompletableFuture> getLogHistory(); + public CompletableFuture> getLogHistoryInRev(String revId); + public CompletableFuture> getDocumentDetailAtRev(String revId); diff --git a/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java b/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java index 6779df46..2bb23258 100644 --- a/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java +++ b/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java @@ -154,6 +154,28 @@ public class LacertaVcsImpl implements LacertaVcs { return null; } + @Override + public CompletableFuture> getLogHistoryInRev(String revId) { + return CompletableFuture.supplyAsync(() -> { + logger.debug(TAG, "getLogHistoryAtRev"); + ArrayList vcsLogModels = new ArrayList<>(); + + VcsRevEntity vcsRevEntity = database.vcsRevDao().findById(revId); + vcsRevEntity.logIds.forEach(logId -> { + VcsLogEntity vcsLogEntity = database.vcsLogDao().findById(logId); + VcsLogModel vcsLogModel = new VcsLogModel(); + vcsLogModel.setId(vcsLogEntity.id); + vcsLogModel.setDocumentId(vcsLogEntity.documentId); + vcsLogModel.setBranchName(vcsLogEntity.branchName); + vcsLogModel.setCreatedAt(vcsLogEntity.createdAt); + vcsLogModel.setAction(vcsLogEntity.action); + vcsLogModels.add(vcsLogModel); + }); + + return vcsLogModels; + }); + } + @Override public CompletableFuture> getDocumentDetailAtRev(String revId) { return null; From dafb49cca0a63d5fd71b13d41be463fd1084b171 Mon Sep 17 00:00:00 2001 From: r-ca Date: Wed, 24 Jan 2024 15:39:51 +0900 Subject: [PATCH 07/47] =?UTF-8?q?=E3=82=AF=E3=82=A8=E3=83=AA=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/one/nem/lacerta/source/database/dao/VcsRevDao.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/src/main/java/one/nem/lacerta/source/database/dao/VcsRevDao.java b/source/src/main/java/one/nem/lacerta/source/database/dao/VcsRevDao.java index 3213ca28..2df991fe 100644 --- a/source/src/main/java/one/nem/lacerta/source/database/dao/VcsRevDao.java +++ b/source/src/main/java/one/nem/lacerta/source/database/dao/VcsRevDao.java @@ -21,7 +21,7 @@ public interface VcsRevDao { @Query("SELECT * FROM vcs_rev WHERE id IN (:ids)") List findByIds(List ids); - @Query("SELECT * FROM vcs_rev WHERE document_id = :documentId") + @Query("SELECT * FROM vcs_rev WHERE document_id = :documentId ORDER BY created_at ASC") List findByDocumentId(String documentId); @Query("SELECT * FROM vcs_rev WHERE document_id = :documentId ORDER BY created_at DESC LIMIT 1") From b6f0a5554a3066f0343d93b14d0d8f32c44c0ca1 Mon Sep 17 00:00:00 2001 From: r-ca Date: Wed, 24 Jan 2024 15:49:17 +0900 Subject: [PATCH 08/47] =?UTF-8?q?=E3=83=AA=E3=83=95=E3=82=A1=E3=82=AF?= =?UTF-8?q?=E3=82=BF=E3=83=AA=E3=83=B3=E3=82=B0,=20=E5=AE=9F=E8=A3=85?= =?UTF-8?q?=E3=81=84=E3=82=8D=E3=81=84=E3=82=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nem/lacerta/vcs/impl/LacertaVcsImpl.java | 48 +++++++++++++++++-- 1 file changed, 44 insertions(+), 4 deletions(-) diff --git a/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java b/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java index 2bb23258..6bc1093a 100644 --- a/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java +++ b/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java @@ -157,12 +157,12 @@ public class LacertaVcsImpl implements LacertaVcs { @Override public CompletableFuture> getLogHistoryInRev(String revId) { return CompletableFuture.supplyAsync(() -> { - logger.debug(TAG, "getLogHistoryAtRev"); + logger.debug(TAG, "getLogHistoryInRev"); ArrayList vcsLogModels = new ArrayList<>(); VcsRevEntity vcsRevEntity = database.vcsRevDao().findById(revId); - vcsRevEntity.logIds.forEach(logId -> { - VcsLogEntity vcsLogEntity = database.vcsLogDao().findById(logId); + ArrayList vcsLogEntities = getLogInRev(vcsRevEntity); + vcsLogEntities.forEach(vcsLogEntity -> { VcsLogModel vcsLogModel = new VcsLogModel(); vcsLogModel.setId(vcsLogEntity.id); vcsLogModel.setDocumentId(vcsLogEntity.documentId); @@ -176,9 +176,49 @@ public class LacertaVcsImpl implements LacertaVcs { }); } + private ArrayList getRevBeforeTargetId(String revId){ + ArrayList vcsRevEntities = new ArrayList<>(database.vcsRevDao().findByDocumentId(this.documentId)); + ArrayList vcsRevEntitiesBeforeTarget = new ArrayList<>(); + vcsRevEntities.forEach(vcsRevEntity -> { + if(vcsRevEntity.id.equals(revId)){ + vcsRevEntitiesBeforeTarget.add(vcsRevEntity); + return; + } + vcsRevEntitiesBeforeTarget.add(vcsRevEntity); + }); + + return vcsRevEntitiesBeforeTarget; + } + + private ArrayList getLogInRevs(ArrayList vcsRevEntities){ + ArrayList vcsLogEntities = new ArrayList<>(); + vcsRevEntities.forEach(vcsRevEntity -> { + vcsRevEntity.logIds.forEach(logId -> { + VcsLogEntity vcsLogEntity = database.vcsLogDao().findById(logId); + vcsLogEntities.add(vcsLogEntity); + }); + }); + + return vcsLogEntities; + } + + private ArrayList getLogInRev(VcsRevEntity revEntity) { + ArrayList vcsLogEntities = new ArrayList<>(); + revEntity.logIds.forEach(logId -> { + VcsLogEntity vcsLogEntity = database.vcsLogDao().findById(logId); + vcsLogEntities.add(vcsLogEntity); + }); + + return vcsLogEntities; + } + @Override public CompletableFuture> getDocumentDetailAtRev(String revId) { - return null; + return CompletableFuture.supplyAsync(() -> { + ArrayList vcsRevEntities = getRevBeforeTargetId(revId); + + + }); } @Override From fc1c8f66cc622965d4964e8833caf8b3a58e5a3e Mon Sep 17 00:00:00 2001 From: r-ca Date: Wed, 24 Jan 2024 15:53:46 +0900 Subject: [PATCH 09/47] =?UTF-8?q?=E5=AE=9F=E8=A3=85=20WIP?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/one/nem/lacerta/vcs/LacertaVcs.java | 2 +- .../nem/lacerta/vcs/impl/LacertaVcsImpl.java | 24 ++++++++++++++++++- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/vcs/src/main/java/one/nem/lacerta/vcs/LacertaVcs.java b/vcs/src/main/java/one/nem/lacerta/vcs/LacertaVcs.java index 5231f294..1db26d6a 100644 --- a/vcs/src/main/java/one/nem/lacerta/vcs/LacertaVcs.java +++ b/vcs/src/main/java/one/nem/lacerta/vcs/LacertaVcs.java @@ -26,7 +26,7 @@ public interface LacertaVcs { public CompletableFuture> getLogHistoryInRev(String revId); - public CompletableFuture> getDocumentDetailAtRev(String revId); + public CompletableFuture getDocumentDetailAtRev(String revId); // debug diff --git a/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java b/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java index 6bc1093a..a9fd0709 100644 --- a/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java +++ b/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java @@ -13,7 +13,9 @@ import dagger.assisted.AssistedInject; import one.nem.lacerta.model.VcsLogModel; import one.nem.lacerta.model.VcsRevModel; import one.nem.lacerta.model.document.DocumentDetail; +import one.nem.lacerta.model.document.DocumentMeta; import one.nem.lacerta.source.database.LacertaDatabase; +import one.nem.lacerta.source.database.entity.DocumentEntity; import one.nem.lacerta.source.database.entity.VcsLogEntity; import one.nem.lacerta.source.database.entity.VcsRevEntity; import one.nem.lacerta.utils.LacertaLogger; @@ -212,12 +214,32 @@ public class LacertaVcsImpl implements LacertaVcs { return vcsLogEntities; } + private DocumentMeta createDocumentMeta() { + DocumentMeta documentMeta = new DocumentMeta(); + DocumentEntity documentEntity = database.documentDao().findById(documentId); + documentMeta.setId(documentEntity.id); + documentMeta.setCreatedAt(documentEntity.createdAt); + documentMeta.setUpdatedAt(documentEntity.updatedAt); + documentMeta.setDefaultBranch(documentEntity.defaultBranch); + documentMeta.setAuthor(documentEntity.author); + documentMeta.setParentId(documentEntity.parentId); + documentMeta.setTitle(documentEntity.title); + documentMeta.setTags(new ArrayList<>()); // TODO-rca: タグの実装 + + return documentMeta; + } + @Override - public CompletableFuture> getDocumentDetailAtRev(String revId) { + public CompletableFuture getDocumentDetailAtRev(String revId) { return CompletableFuture.supplyAsync(() -> { ArrayList vcsRevEntities = getRevBeforeTargetId(revId); + ArrayList vcsLogEntities = getLogInRevs(vcsRevEntities); + DocumentDetail documentDetail = new DocumentDetail(); + documentDetail.setMeta(createDocumentMeta()); + // WIP + return null; }); } From d5ca5ebc904129563efa409502da9f619426fffb Mon Sep 17 00:00:00 2001 From: r-ca Date: Wed, 24 Jan 2024 16:21:27 +0900 Subject: [PATCH 10/47] =?UTF-8?q?=E5=BF=85=E8=A6=81=E3=81=AA=E3=83=A1?= =?UTF-8?q?=E3=82=BD=E3=83=83=E3=83=89=E4=BD=9C=E6=88=90=20WIP?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nem/lacerta/vcs/impl/LacertaVcsImpl.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java b/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java index a9fd0709..be7e7722 100644 --- a/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java +++ b/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java @@ -22,7 +22,9 @@ import one.nem.lacerta.utils.LacertaLogger; import one.nem.lacerta.vcs.ActionType; import one.nem.lacerta.vcs.LacertaVcs; import one.nem.lacerta.vcs.internal.JsonUtils; +import one.nem.lacerta.vcs.model.action.DeletePage; import one.nem.lacerta.vcs.model.action.InsertPage; +import one.nem.lacerta.vcs.model.action.UpdatePage; public class LacertaVcsImpl implements LacertaVcs { @@ -229,6 +231,21 @@ public class LacertaVcsImpl implements LacertaVcs { return documentMeta; } + private DocumentDetail applyInsertPage(DocumentDetail documentDetail, InsertPage insertPage) { + // TODO-rca: 実装 + return null; + } + + private DocumentDetail applyUpdatePage(DocumentDetail documentDetail, UpdatePage updatePage) { + // TODO-rca: 実装 + return null; + } + + private DocumentDetail applyDeletePage(DocumentDetail documentDetail, DeletePage deletePage) { + // TODO-rca: 実装 + return null; + } + @Override public CompletableFuture getDocumentDetailAtRev(String revId) { return CompletableFuture.supplyAsync(() -> { From 3d01ff3d816ec8af275c8fceb82b2709632d62ca Mon Sep 17 00:00:00 2001 From: r-ca Date: Wed, 24 Jan 2024 16:27:35 +0900 Subject: [PATCH 11/47] =?UTF-8?q?=E5=BC=95=E6=95=B0/=E6=88=BB=E3=82=8A?= =?UTF-8?q?=E5=80=A4=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java b/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java index be7e7722..81ad3be4 100644 --- a/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java +++ b/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java @@ -14,6 +14,7 @@ import one.nem.lacerta.model.VcsLogModel; import one.nem.lacerta.model.VcsRevModel; import one.nem.lacerta.model.document.DocumentDetail; import one.nem.lacerta.model.document.DocumentMeta; +import one.nem.lacerta.model.document.page.Page; import one.nem.lacerta.source.database.LacertaDatabase; import one.nem.lacerta.source.database.entity.DocumentEntity; import one.nem.lacerta.source.database.entity.VcsLogEntity; @@ -231,17 +232,17 @@ public class LacertaVcsImpl implements LacertaVcs { return documentMeta; } - private DocumentDetail applyInsertPage(DocumentDetail documentDetail, InsertPage insertPage) { + private ArrayList applyInsertPage(ArrayList pages, InsertPage insertPage) { // TODO-rca: 実装 return null; } - private DocumentDetail applyUpdatePage(DocumentDetail documentDetail, UpdatePage updatePage) { + private ArrayList applyUpdatePage(ArrayList pages, UpdatePage updatePage) { // TODO-rca: 実装 return null; } - private DocumentDetail applyDeletePage(DocumentDetail documentDetail, DeletePage deletePage) { + private ArrayList applyDeletePage(ArrayList pages, DeletePage deletePage) { // TODO-rca: 実装 return null; } From 85dba22f574a43dd84c57ba57a67f0c38a5950b2 Mon Sep 17 00:00:00 2001 From: r-ca Date: Wed, 24 Jan 2024 16:28:39 +0900 Subject: [PATCH 12/47] =?UTF-8?q?Revert=20"=E5=BC=95=E6=95=B0/=E6=88=BB?= =?UTF-8?q?=E3=82=8A=E5=80=A4=E4=BF=AE=E6=AD=A3"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 3d01ff3d816ec8af275c8fceb82b2709632d62ca. --- .../main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java b/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java index 81ad3be4..be7e7722 100644 --- a/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java +++ b/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java @@ -14,7 +14,6 @@ import one.nem.lacerta.model.VcsLogModel; import one.nem.lacerta.model.VcsRevModel; import one.nem.lacerta.model.document.DocumentDetail; import one.nem.lacerta.model.document.DocumentMeta; -import one.nem.lacerta.model.document.page.Page; import one.nem.lacerta.source.database.LacertaDatabase; import one.nem.lacerta.source.database.entity.DocumentEntity; import one.nem.lacerta.source.database.entity.VcsLogEntity; @@ -232,17 +231,17 @@ public class LacertaVcsImpl implements LacertaVcs { return documentMeta; } - private ArrayList applyInsertPage(ArrayList pages, InsertPage insertPage) { + private DocumentDetail applyInsertPage(DocumentDetail documentDetail, InsertPage insertPage) { // TODO-rca: 実装 return null; } - private ArrayList applyUpdatePage(ArrayList pages, UpdatePage updatePage) { + private DocumentDetail applyUpdatePage(DocumentDetail documentDetail, UpdatePage updatePage) { // TODO-rca: 実装 return null; } - private ArrayList applyDeletePage(ArrayList pages, DeletePage deletePage) { + private DocumentDetail applyDeletePage(DocumentDetail documentDetail, DeletePage deletePage) { // TODO-rca: 実装 return null; } From 3c237d3751c0d8a39fdcbc02888110c1cf567d6b Mon Sep 17 00:00:00 2001 From: r-ca Date: Wed, 24 Jan 2024 16:37:54 +0900 Subject: [PATCH 13/47] =?UTF-8?q?=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/one/nem/lacerta/vcs/LacertaVcs.java | 2 +- .../one/nem/lacerta/vcs/impl/LacertaVcsImpl.java | 13 ++++++------- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/vcs/src/main/java/one/nem/lacerta/vcs/LacertaVcs.java b/vcs/src/main/java/one/nem/lacerta/vcs/LacertaVcs.java index 1db26d6a..5392e9b2 100644 --- a/vcs/src/main/java/one/nem/lacerta/vcs/LacertaVcs.java +++ b/vcs/src/main/java/one/nem/lacerta/vcs/LacertaVcs.java @@ -26,7 +26,7 @@ public interface LacertaVcs { public CompletableFuture> getLogHistoryInRev(String revId); - public CompletableFuture getDocumentDetailAtRev(String revId); + public CompletableFuture> getDocumentPagePathListRev(String revId); // debug diff --git a/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java b/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java index be7e7722..56eebe43 100644 --- a/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java +++ b/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java @@ -231,12 +231,12 @@ public class LacertaVcsImpl implements LacertaVcs { return documentMeta; } - private DocumentDetail applyInsertPage(DocumentDetail documentDetail, InsertPage insertPage) { - // TODO-rca: 実装 - return null; + private ArrayList applyInsertPage(ArrayList fileNameList, InsertPage insertPage) { + fileNameList.add(insertPage.getIndex(), insertPage.getFileName()); + return fileNameList; } - private DocumentDetail applyUpdatePage(DocumentDetail documentDetail, UpdatePage updatePage) { + private ArrayList applyUpdatePage(DocumentDetail documentDetail, UpdatePage updatePage) { // TODO-rca: 実装 return null; } @@ -247,7 +247,7 @@ public class LacertaVcsImpl implements LacertaVcs { } @Override - public CompletableFuture getDocumentDetailAtRev(String revId) { + public CompletableFuture> getDocumentPagePathListRev(String revId) { return CompletableFuture.supplyAsync(() -> { ArrayList vcsRevEntities = getRevBeforeTargetId(revId); ArrayList vcsLogEntities = getLogInRevs(vcsRevEntities); @@ -255,8 +255,7 @@ public class LacertaVcsImpl implements LacertaVcs { DocumentDetail documentDetail = new DocumentDetail(); documentDetail.setMeta(createDocumentMeta()); - // WIP - return null; + vcsLogEntities. }); } From 3fbdc761dd147bfc55e0bf2fcc33cb5ff8603dda Mon Sep 17 00:00:00 2001 From: r-ca Date: Wed, 24 Jan 2024 16:42:17 +0900 Subject: [PATCH 14/47] =?UTF-8?q?LogEntity=E3=81=ABActionType=E3=82=92?= =?UTF-8?q?=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../one/nem/lacerta/source/database/LacertaDatabase.java | 2 +- .../nem/lacerta/source/database/entity/VcsLogEntity.java | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/source/src/main/java/one/nem/lacerta/source/database/LacertaDatabase.java b/source/src/main/java/one/nem/lacerta/source/database/LacertaDatabase.java index e3d6a6b9..47e0e4bb 100644 --- a/source/src/main/java/one/nem/lacerta/source/database/LacertaDatabase.java +++ b/source/src/main/java/one/nem/lacerta/source/database/LacertaDatabase.java @@ -19,7 +19,7 @@ import one.nem.lacerta.source.database.dao.LibraryDao; import one.nem.lacerta.source.database.dao.VcsRevDao; import one.nem.lacerta.source.database.dao.VcsLogDao; -@Database(entities = {TagEntity.class, DocumentEntity.class, LibraryEntity.class, VcsRevEntity.class, VcsLogEntity.class, FolderEntity.class}, version = 5) +@Database(entities = {TagEntity.class, DocumentEntity.class, LibraryEntity.class, VcsRevEntity.class, VcsLogEntity.class, FolderEntity.class}, version = 4) public abstract class LacertaDatabase extends RoomDatabase { public abstract TagDao tagDao(); public abstract DocumentDao documentDao(); diff --git a/source/src/main/java/one/nem/lacerta/source/database/entity/VcsLogEntity.java b/source/src/main/java/one/nem/lacerta/source/database/entity/VcsLogEntity.java index 17628e8e..152d5333 100644 --- a/source/src/main/java/one/nem/lacerta/source/database/entity/VcsLogEntity.java +++ b/source/src/main/java/one/nem/lacerta/source/database/entity/VcsLogEntity.java @@ -40,6 +40,12 @@ public class VcsLogEntity { @ColumnInfo(name = "created_at") public Date createdAt; + /** + * アクションタイプ + */ + @ColumnInfo(name = "action_type") + public String actionType; + /** * 発生アクション */ From f6f7c3a630e977a8e92fa374b87e2b31175fb459 Mon Sep 17 00:00:00 2001 From: r-ca Date: Wed, 24 Jan 2024 16:49:42 +0900 Subject: [PATCH 15/47] =?UTF-8?q?getDocumentPageListRev=E5=AE=9F=E8=A3=85,?= =?UTF-8?q?=20=E4=B8=8D=E8=A6=81=E3=81=AB=E3=81=AA=E3=81=A3=E3=81=9F?= =?UTF-8?q?=E3=83=A1=E3=82=BD=E3=83=83=E3=83=89=E3=82=92=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nem/lacerta/vcs/impl/LacertaVcsImpl.java | 50 +++++++------------ 1 file changed, 17 insertions(+), 33 deletions(-) diff --git a/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java b/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java index 56eebe43..322da58f 100644 --- a/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java +++ b/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java @@ -216,46 +216,30 @@ public class LacertaVcsImpl implements LacertaVcs { return vcsLogEntities; } - private DocumentMeta createDocumentMeta() { - DocumentMeta documentMeta = new DocumentMeta(); - DocumentEntity documentEntity = database.documentDao().findById(documentId); - documentMeta.setId(documentEntity.id); - documentMeta.setCreatedAt(documentEntity.createdAt); - documentMeta.setUpdatedAt(documentEntity.updatedAt); - documentMeta.setDefaultBranch(documentEntity.defaultBranch); - documentMeta.setAuthor(documentEntity.author); - documentMeta.setParentId(documentEntity.parentId); - documentMeta.setTitle(documentEntity.title); - documentMeta.setTags(new ArrayList<>()); // TODO-rca: タグの実装 - - return documentMeta; - } - - private ArrayList applyInsertPage(ArrayList fileNameList, InsertPage insertPage) { - fileNameList.add(insertPage.getIndex(), insertPage.getFileName()); - return fileNameList; - } - - private ArrayList applyUpdatePage(DocumentDetail documentDetail, UpdatePage updatePage) { - // TODO-rca: 実装 - return null; - } - - private DocumentDetail applyDeletePage(DocumentDetail documentDetail, DeletePage deletePage) { - // TODO-rca: 実装 - return null; - } - @Override public CompletableFuture> getDocumentPagePathListRev(String revId) { return CompletableFuture.supplyAsync(() -> { ArrayList vcsRevEntities = getRevBeforeTargetId(revId); ArrayList vcsLogEntities = getLogInRevs(vcsRevEntities); - DocumentDetail documentDetail = new DocumentDetail(); - documentDetail.setMeta(createDocumentMeta()); + final ArrayList[] fileNameList = new ArrayList[]{new ArrayList<>()}; - vcsLogEntities. + vcsLogEntities.forEach(vcsLogEntity -> { + if (vcsLogEntity.actionType.equals(ActionType.INSERT_PAGE.getValue())){ + InsertPage insertPage = (InsertPage) JsonUtils.fromJson(vcsLogEntity.action, ActionType.INSERT_PAGE); + fileNameList[0].add(insertPage.getIndex(), insertPage.getFileName()); + } else if (vcsLogEntity.actionType.equals(ActionType.UPDATE_PAGE.getValue())){ + UpdatePage updatePage = (UpdatePage) JsonUtils.fromJson(vcsLogEntity.action, ActionType.UPDATE_PAGE); + fileNameList[0].set(updatePage.getIndex(), updatePage.getFileName()); + } else if (vcsLogEntity.actionType.equals(ActionType.DELETE_PAGE.getValue())){ + DeletePage deletePage = (DeletePage) JsonUtils.fromJson(vcsLogEntity.action, ActionType.DELETE_PAGE); + fileNameList[0].remove(deletePage.getIndex()); + } else { + logger.debug(TAG, "Unknown action type"); + } + }); + + return fileNameList[0]; }); } From 8d4d9cab9a2ebe06b11d1099df8e155e47af7fe7 Mon Sep 17 00:00:00 2001 From: r-ca Date: Wed, 24 Jan 2024 16:54:49 +0900 Subject: [PATCH 16/47] =?UTF-8?q?=E3=82=B3=E3=83=A1=E3=83=B3=E3=83=88?= =?UTF-8?q?=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java | 1 + 1 file changed, 1 insertion(+) diff --git a/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java b/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java index 322da58f..2881724c 100644 --- a/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java +++ b/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java @@ -222,6 +222,7 @@ public class LacertaVcsImpl implements LacertaVcs { ArrayList vcsRevEntities = getRevBeforeTargetId(revId); ArrayList vcsLogEntities = getLogInRevs(vcsRevEntities); + // finalで宣言しないとLambda式内で扱えないので final ArrayList[] fileNameList = new ArrayList[]{new ArrayList<>()}; vcsLogEntities.forEach(vcsLogEntity -> { From aa2ebce32c1a8fa89775e587a3eb7501545ddf4d Mon Sep 17 00:00:00 2001 From: r-ca Date: Wed, 24 Jan 2024 17:01:33 +0900 Subject: [PATCH 17/47] =?UTF-8?q?=E3=83=95=E3=82=A1=E3=82=A4=E3=83=AB?= =?UTF-8?q?=E5=90=8D=E3=81=AE=E4=B8=80=E8=A6=A7=E3=81=8B=E3=82=89Page?= =?UTF-8?q?=E3=83=AA=E3=82=B9=E3=83=88=E3=82=92=E4=BD=9C=E6=88=90=E3=81=99?= =?UTF-8?q?=E3=82=8B=E3=83=A1=E3=82=BD=E3=83=83=E3=83=89=E5=AE=9F=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/one/nem/lacerta/data/Document.java | 3 ++ .../nem/lacerta/data/impl/DocumentImpl.java | 28 +++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/data/src/main/java/one/nem/lacerta/data/Document.java b/data/src/main/java/one/nem/lacerta/data/Document.java index 70610913..3491fc7d 100644 --- a/data/src/main/java/one/nem/lacerta/data/Document.java +++ b/data/src/main/java/one/nem/lacerta/data/Document.java @@ -6,6 +6,7 @@ import java.util.concurrent.CompletableFuture; import one.nem.lacerta.model.document.DocumentMeta; import one.nem.lacerta.model.document.DocumentDetail; +import one.nem.lacerta.model.document.page.Page; import one.nem.lacerta.model.document.path.DocumentPath; import one.nem.lacerta.model.document.tag.DocumentTag; @@ -25,4 +26,6 @@ public interface Document { CompletableFuture updateDocument(DocumentDetail detail); CompletableFuture getDocument(String documentId); + + CompletableFuture> getDocumentPageListByFileNameList(String documentId, ArrayList fileNameList); } diff --git a/data/src/main/java/one/nem/lacerta/data/impl/DocumentImpl.java b/data/src/main/java/one/nem/lacerta/data/impl/DocumentImpl.java index 7a303ec5..523c7277 100644 --- a/data/src/main/java/one/nem/lacerta/data/impl/DocumentImpl.java +++ b/data/src/main/java/one/nem/lacerta/data/impl/DocumentImpl.java @@ -173,6 +173,34 @@ public class DocumentImpl implements Document { }); } + @Override + public CompletableFuture> getDocumentPageListByFileNameList(String documentId, ArrayList fileNameList) { + return CompletableFuture.supplyAsync(() -> { + ArrayList pages = new ArrayList<>(); + FileManager fileManager; + try { + fileManager = fileManagerFactory.create(deviceInfoUtils.getExternalStorageDirectory()).resolve(documentId).resolve("raw"); + } catch (IOException e) { + logger.error(TAG, "FileManager resolve error"); + logger.trace(TAG, e.getMessage()); + logger.e_code("1210ae5b-dd2f-42ef-bc15-40b9a9bbdb16"); + return null; + } + + fileNameList.forEach(fileName -> { + try { + pages.add(new Page(fileName, fileManager.loadBitmap(fileName))); + } catch (IOException e) { + logger.error(TAG, "Bitmap decode error"); + logger.trace(TAG, e.getMessage()); + logger.e_code("6f9ba0dc-ac63-401c-8f50-a2bd9ff5cb91"); + } + }); + + return pages; + }); + } + private CompletableFuture> getPagesByXmlMeta(String documentId) { return CompletableFuture.supplyAsync(() -> { FileManager fileManager = fileManagerFactory.create(deviceInfoUtils.getExternalStorageDirectory()); From 5fc8a501ad01660e2136a03afe4bc04dc7100884 Mon Sep 17 00:00:00 2001 From: r-ca Date: Wed, 24 Jan 2024 17:03:50 +0900 Subject: [PATCH 18/47] =?UTF-8?q?=E3=83=95=E3=82=A1=E3=82=A4=E3=83=AB?= =?UTF-8?q?=E5=90=8D=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../component/viewer/ViewerMainActivity.java | 9 +-------- ...TopFragment.java => ViewerPrimaryFragment.java} | 14 +++++--------- .../src/main/res/layout/activity_viewer_main.xml | 2 +- .../res/navigation/component_viewer_navigation.xml | 6 +++--- 4 files changed, 10 insertions(+), 21 deletions(-) rename component/viewer/src/main/java/one/nem/lacerta/component/viewer/{ComponentViewerTopFragment.java => ViewerPrimaryFragment.java} (92%) diff --git a/component/viewer/src/main/java/one/nem/lacerta/component/viewer/ViewerMainActivity.java b/component/viewer/src/main/java/one/nem/lacerta/component/viewer/ViewerMainActivity.java index 435e472c..218fe7b0 100644 --- a/component/viewer/src/main/java/one/nem/lacerta/component/viewer/ViewerMainActivity.java +++ b/component/viewer/src/main/java/one/nem/lacerta/component/viewer/ViewerMainActivity.java @@ -2,7 +2,6 @@ package one.nem.lacerta.component.viewer; import android.content.Intent; import android.os.Bundle; -import android.util.Log; import android.widget.Toast; import androidx.activity.EdgeToEdge; @@ -10,12 +9,6 @@ import androidx.appcompat.app.AppCompatActivity; import androidx.core.graphics.Insets; import androidx.core.view.ViewCompat; import androidx.core.view.WindowInsetsCompat; -import androidx.fragment.app.FragmentManager; -import androidx.navigation.NavController; -import androidx.navigation.fragment.NavHostFragment; -import androidx.navigation.ui.NavigationUI; - -import com.google.android.material.bottomnavigation.BottomNavigationView; import javax.inject.Inject; @@ -62,7 +55,7 @@ public class ViewerMainActivity extends AppCompatActivity { // Navigation getSupportFragmentManager().beginTransaction() - .replace(R.id.nav_host_fragment, ComponentViewerTopFragment.newInstance(documentId, documentName)) + .replace(R.id.nav_host_fragment, ViewerPrimaryFragment.newInstance(documentId, documentName)) .commit(); } } \ No newline at end of file diff --git a/component/viewer/src/main/java/one/nem/lacerta/component/viewer/ComponentViewerTopFragment.java b/component/viewer/src/main/java/one/nem/lacerta/component/viewer/ViewerPrimaryFragment.java similarity index 92% rename from component/viewer/src/main/java/one/nem/lacerta/component/viewer/ComponentViewerTopFragment.java rename to component/viewer/src/main/java/one/nem/lacerta/component/viewer/ViewerPrimaryFragment.java index 6e456d16..b7cda2a5 100644 --- a/component/viewer/src/main/java/one/nem/lacerta/component/viewer/ComponentViewerTopFragment.java +++ b/component/viewer/src/main/java/one/nem/lacerta/component/viewer/ViewerPrimaryFragment.java @@ -1,12 +1,10 @@ package one.nem.lacerta.component.viewer; import android.app.AlertDialog; -import android.graphics.Bitmap; import android.os.Bundle; import androidx.appcompat.widget.Toolbar; import androidx.fragment.app.Fragment; -import androidx.navigation.Navigation; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; @@ -16,24 +14,22 @@ import android.view.ViewGroup; import android.widget.Toast; import java.util.ArrayList; -import java.util.concurrent.CompletableFuture; import javax.inject.Inject; import dagger.hilt.android.AndroidEntryPoint; import one.nem.lacerta.data.Document; -import one.nem.lacerta.model.document.DocumentDetail; import one.nem.lacerta.model.document.page.Page; import one.nem.lacerta.utils.FeatureSwitch; import one.nem.lacerta.utils.LacertaLogger; /** * A simple {@link Fragment} subclass. - * Use the {@link ComponentViewerTopFragment#newInstance} factory method to + * Use the {@link ViewerPrimaryFragment#newInstance} factory method to * create an instance of this fragment. */ @AndroidEntryPoint -public class ComponentViewerTopFragment extends Fragment { +public class ViewerPrimaryFragment extends Fragment { @Inject Document document; @@ -46,12 +42,12 @@ public class ComponentViewerTopFragment extends Fragment { private String documentId; private String documentName; - public ComponentViewerTopFragment() { + public ViewerPrimaryFragment() { // Required empty public constructor } - public static ComponentViewerTopFragment newInstance(String documentId, String documentName) { - ComponentViewerTopFragment fragment = new ComponentViewerTopFragment(); + public static ViewerPrimaryFragment newInstance(String documentId, String documentName) { + ViewerPrimaryFragment fragment = new ViewerPrimaryFragment(); Bundle args = new Bundle(); args.putString("documentId", documentId); args.putString("documentName", documentName); diff --git a/component/viewer/src/main/res/layout/activity_viewer_main.xml b/component/viewer/src/main/res/layout/activity_viewer_main.xml index 73290603..89617f07 100644 --- a/component/viewer/src/main/res/layout/activity_viewer_main.xml +++ b/component/viewer/src/main/res/layout/activity_viewer_main.xml @@ -9,7 +9,7 @@ + app:startDestination="@id/viewerPrimaryFragment"> Date: Wed, 24 Jan 2024 17:04:36 +0900 Subject: [PATCH 19/47] =?UTF-8?q?=E3=82=B3=E3=83=B3=E3=82=B9=E3=83=88?= =?UTF-8?q?=E3=83=A9=E3=82=AF=E3=82=BF=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../component/viewer/ViewerPrimaryFragment.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/component/viewer/src/main/java/one/nem/lacerta/component/viewer/ViewerPrimaryFragment.java b/component/viewer/src/main/java/one/nem/lacerta/component/viewer/ViewerPrimaryFragment.java index b7cda2a5..740be76f 100644 --- a/component/viewer/src/main/java/one/nem/lacerta/component/viewer/ViewerPrimaryFragment.java +++ b/component/viewer/src/main/java/one/nem/lacerta/component/viewer/ViewerPrimaryFragment.java @@ -55,6 +55,16 @@ public class ViewerPrimaryFragment extends Fragment { return fragment; } + public static ViewerPrimaryFragment newInstance(String documentId, String documentName, String revisionId) { + ViewerPrimaryFragment fragment = new ViewerPrimaryFragment(); + Bundle args = new Bundle(); + args.putString("documentId", documentId); + args.putString("documentName", documentName); + args.putString("revisionId", revisionId); + fragment.setArguments(args); + return fragment; + } + @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); From 778473f89879b6c6a49a720fa5df1f32d6cbfa89 Mon Sep 17 00:00:00 2001 From: r-ca Date: Wed, 24 Jan 2024 17:09:32 +0900 Subject: [PATCH 20/47] =?UTF-8?q?=E3=83=AA=E3=83=93=E3=82=B8=E3=83=A7?= =?UTF-8?q?=E3=83=B3ID=E3=82=92=E6=8C=87=E5=AE=9A=E3=81=97=E3=81=A6?= =?UTF-8?q?=E5=91=BC=E3=81=B3=E5=87=BA=E3=81=97=E3=81=9F=E5=A0=B4=E5=90=88?= =?UTF-8?q?=E3=81=AB=E3=81=9D=E3=81=AE=E3=83=90=E3=83=BC=E3=82=B8=E3=83=A7?= =?UTF-8?q?=E3=83=B3=E3=82=92=E8=A1=A8=E7=A4=BA=E3=81=99=E3=82=8B=E3=82=88?= =?UTF-8?q?=E3=81=86=E3=81=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../viewer/ViewerPrimaryFragment.java | 43 +++++++++++++++---- 1 file changed, 34 insertions(+), 9 deletions(-) diff --git a/component/viewer/src/main/java/one/nem/lacerta/component/viewer/ViewerPrimaryFragment.java b/component/viewer/src/main/java/one/nem/lacerta/component/viewer/ViewerPrimaryFragment.java index 740be76f..34696b6a 100644 --- a/component/viewer/src/main/java/one/nem/lacerta/component/viewer/ViewerPrimaryFragment.java +++ b/component/viewer/src/main/java/one/nem/lacerta/component/viewer/ViewerPrimaryFragment.java @@ -22,6 +22,8 @@ import one.nem.lacerta.data.Document; import one.nem.lacerta.model.document.page.Page; import one.nem.lacerta.utils.FeatureSwitch; import one.nem.lacerta.utils.LacertaLogger; +import one.nem.lacerta.vcs.LacertaVcs; +import one.nem.lacerta.vcs.factory.LacertaVcsFactory; /** * A simple {@link Fragment} subclass. @@ -37,10 +39,14 @@ public class ViewerPrimaryFragment extends Fragment { @Inject LacertaLogger logger; + @Inject + LacertaVcsFactory lacertaVcsFactory; + private static final String TAG = "ComponentViewerTopFragment"; private String documentId; private String documentName; + private String revisionId; public ViewerPrimaryFragment() { // Required empty public constructor @@ -71,6 +77,7 @@ public class ViewerPrimaryFragment extends Fragment { if (getArguments() != null) { documentId = getArguments().getString("documentId"); documentName = getArguments().getString("documentName"); + revisionId = getArguments().getString("revisionId"); } } @@ -91,16 +98,34 @@ public class ViewerPrimaryFragment extends Fragment { }); recyclerView.setAdapter(viewerBodyAdapter); - if (FeatureSwitch.Viewer.showProgressBarWhenLoading) view.findViewById(R.id.loading_progress_bar).setVisibility(View.VISIBLE); - document.getDocument(documentId).thenAccept(documentDetail -> { - ArrayList pages = documentDetail.getPages(); - logger.debug(TAG, "pages.size(): " + pages.size()); - viewerBodyAdapter.setPages(pages); - getActivity().runOnUiThread(() -> { - viewerBodyAdapter.notifyItemRangeChanged(0, pages.size()); - if (FeatureSwitch.Viewer.showProgressBarWhenLoading) view.findViewById(R.id.loading_progress_bar).setVisibility(View.GONE); + if (revisionId.isEmpty()) { + logger.debug(TAG, "revisionId is empty, loading latest revision"); + if (FeatureSwitch.Viewer.showProgressBarWhenLoading) view.findViewById(R.id.loading_progress_bar).setVisibility(View.VISIBLE); + document.getDocument(documentId).thenAccept(documentDetail -> { + ArrayList pages = documentDetail.getPages(); + logger.debug(TAG, "pages.size(): " + pages.size()); + viewerBodyAdapter.setPages(pages); + getActivity().runOnUiThread(() -> { + viewerBodyAdapter.notifyItemRangeChanged(0, pages.size()); + if (FeatureSwitch.Viewer.showProgressBarWhenLoading) view.findViewById(R.id.loading_progress_bar).setVisibility(View.GONE); + }); }); - }); + } else { + logger.debug(TAG, "revisionId: " + revisionId); + if (FeatureSwitch.Viewer.showProgressBarWhenLoading) view.findViewById(R.id.loading_progress_bar).setVisibility(View.VISIBLE); + LacertaVcs lacertaVcs = lacertaVcsFactory.create(documentId); + lacertaVcs.getDocumentPagePathListRev(revisionId).thenAccept(documentPathList -> { + logger.debug(TAG, "documentPathList.size(): " + documentPathList.size()); + document.getDocumentPageListByFileNameList(documentId, documentPathList).thenAccept(pages -> { + logger.debug(TAG, "pages.size(): " + pages.size()); + viewerBodyAdapter.setPages(pages); + getActivity().runOnUiThread(() -> { + viewerBodyAdapter.notifyItemRangeChanged(0, pages.size()); + if (FeatureSwitch.Viewer.showProgressBarWhenLoading) view.findViewById(R.id.loading_progress_bar).setVisibility(View.GONE); + }); + }); + }); + } return view; } From 7822fdd3c518109707134e0acada50ab798f0b42 Mon Sep 17 00:00:00 2001 From: r-ca Date: Wed, 24 Jan 2024 17:10:48 +0900 Subject: [PATCH 21/47] =?UTF-8?q?=E3=83=AA=E3=83=8D=E3=83=BC=E3=83=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...rimaryFragment.java => ViewerListFragment.java} | 14 +++++++------- .../component/viewer/ViewerMainActivity.java | 2 +- .../src/main/res/layout/activity_viewer_main.xml | 2 +- .../res/navigation/component_viewer_navigation.xml | 6 +++--- 4 files changed, 12 insertions(+), 12 deletions(-) rename component/viewer/src/main/java/one/nem/lacerta/component/viewer/{ViewerPrimaryFragment.java => ViewerListFragment.java} (94%) diff --git a/component/viewer/src/main/java/one/nem/lacerta/component/viewer/ViewerPrimaryFragment.java b/component/viewer/src/main/java/one/nem/lacerta/component/viewer/ViewerListFragment.java similarity index 94% rename from component/viewer/src/main/java/one/nem/lacerta/component/viewer/ViewerPrimaryFragment.java rename to component/viewer/src/main/java/one/nem/lacerta/component/viewer/ViewerListFragment.java index 34696b6a..09343c94 100644 --- a/component/viewer/src/main/java/one/nem/lacerta/component/viewer/ViewerPrimaryFragment.java +++ b/component/viewer/src/main/java/one/nem/lacerta/component/viewer/ViewerListFragment.java @@ -27,11 +27,11 @@ import one.nem.lacerta.vcs.factory.LacertaVcsFactory; /** * A simple {@link Fragment} subclass. - * Use the {@link ViewerPrimaryFragment#newInstance} factory method to + * Use the {@link ViewerListFragment#newInstance} factory method to * create an instance of this fragment. */ @AndroidEntryPoint -public class ViewerPrimaryFragment extends Fragment { +public class ViewerListFragment extends Fragment { @Inject Document document; @@ -48,12 +48,12 @@ public class ViewerPrimaryFragment extends Fragment { private String documentName; private String revisionId; - public ViewerPrimaryFragment() { + public ViewerListFragment() { // Required empty public constructor } - public static ViewerPrimaryFragment newInstance(String documentId, String documentName) { - ViewerPrimaryFragment fragment = new ViewerPrimaryFragment(); + public static ViewerListFragment newInstance(String documentId, String documentName) { + ViewerListFragment fragment = new ViewerListFragment(); Bundle args = new Bundle(); args.putString("documentId", documentId); args.putString("documentName", documentName); @@ -61,8 +61,8 @@ public class ViewerPrimaryFragment extends Fragment { return fragment; } - public static ViewerPrimaryFragment newInstance(String documentId, String documentName, String revisionId) { - ViewerPrimaryFragment fragment = new ViewerPrimaryFragment(); + public static ViewerListFragment newInstance(String documentId, String documentName, String revisionId) { + ViewerListFragment fragment = new ViewerListFragment(); Bundle args = new Bundle(); args.putString("documentId", documentId); args.putString("documentName", documentName); diff --git a/component/viewer/src/main/java/one/nem/lacerta/component/viewer/ViewerMainActivity.java b/component/viewer/src/main/java/one/nem/lacerta/component/viewer/ViewerMainActivity.java index 218fe7b0..6c079c11 100644 --- a/component/viewer/src/main/java/one/nem/lacerta/component/viewer/ViewerMainActivity.java +++ b/component/viewer/src/main/java/one/nem/lacerta/component/viewer/ViewerMainActivity.java @@ -55,7 +55,7 @@ public class ViewerMainActivity extends AppCompatActivity { // Navigation getSupportFragmentManager().beginTransaction() - .replace(R.id.nav_host_fragment, ViewerPrimaryFragment.newInstance(documentId, documentName)) + .replace(R.id.nav_host_fragment, ViewerListFragment.newInstance(documentId, documentName)) .commit(); } } \ No newline at end of file diff --git a/component/viewer/src/main/res/layout/activity_viewer_main.xml b/component/viewer/src/main/res/layout/activity_viewer_main.xml index 89617f07..f077ceec 100644 --- a/component/viewer/src/main/res/layout/activity_viewer_main.xml +++ b/component/viewer/src/main/res/layout/activity_viewer_main.xml @@ -9,7 +9,7 @@ + app:startDestination="@id/viewerListFragment"> Date: Wed, 24 Jan 2024 17:31:21 +0900 Subject: [PATCH 22/47] =?UTF-8?q?=E3=82=A4=E3=83=B3=E3=82=BF=E3=83=95?= =?UTF-8?q?=E3=82=A7=E3=83=BC=E3=82=B9=E4=BD=9C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lacerta/component/viewer/model/RevSelectListener.java | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 component/viewer/src/main/java/one/nem/lacerta/component/viewer/model/RevSelectListener.java diff --git a/component/viewer/src/main/java/one/nem/lacerta/component/viewer/model/RevSelectListener.java b/component/viewer/src/main/java/one/nem/lacerta/component/viewer/model/RevSelectListener.java new file mode 100644 index 00000000..f1a69486 --- /dev/null +++ b/component/viewer/src/main/java/one/nem/lacerta/component/viewer/model/RevSelectListener.java @@ -0,0 +1,5 @@ +package one.nem.lacerta.component.viewer.model; + +public interface RevSelectListener { + void onRevSelect(String revisionId); +} From 5639117e0ee941722dc0a6effea6efd8766a903b Mon Sep 17 00:00:00 2001 From: r-ca Date: Wed, 24 Jan 2024 17:32:58 +0900 Subject: [PATCH 23/47] =?UTF-8?q?=E3=82=A4=E3=83=99=E3=83=B3=E3=83=88?= =?UTF-8?q?=E3=83=AA=E3=82=B9=E3=83=8A=E5=AE=9F=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nem/lacerta/component/viewer/RevAdapter.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/component/viewer/src/main/java/one/nem/lacerta/component/viewer/RevAdapter.java b/component/viewer/src/main/java/one/nem/lacerta/component/viewer/RevAdapter.java index eb5c634f..4ad968c1 100644 --- a/component/viewer/src/main/java/one/nem/lacerta/component/viewer/RevAdapter.java +++ b/component/viewer/src/main/java/one/nem/lacerta/component/viewer/RevAdapter.java @@ -12,6 +12,7 @@ import java.text.SimpleDateFormat; import java.time.format.DateTimeFormatter; import java.util.ArrayList; +import one.nem.lacerta.component.viewer.model.RevSelectListener; import one.nem.lacerta.model.VcsRevModel; import one.nem.lacerta.utils.FeatureSwitch; @@ -19,11 +20,14 @@ public class RevAdapter extends RecyclerView.Adapter{ private ArrayList revModels; + private RevSelectListener revSelectListener; + public RevAdapter(ArrayList revModels) { this.revModels = revModels; } - public RevAdapter() { + public RevAdapter(RevSelectListener revSelectListener) { + this.revSelectListener = revSelectListener; } public void setRevModels(ArrayList revModels) { @@ -52,6 +56,13 @@ public class RevAdapter extends RecyclerView.Adapter{ } holder.revId.setText("RevID: " + revModel.getId()); + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + revSelectListener.onRevSelect(revModel.getId()); + } + }); + } @Override From 615d58f3cae96d8f9eeb2312b151c6bcd58af5e6 Mon Sep 17 00:00:00 2001 From: r-ca Date: Wed, 24 Jan 2024 17:43:10 +0900 Subject: [PATCH 24/47] WIP --- .../component/viewer/ViewerListFragment.java | 4 ++-- .../viewer/ViewerVcsRevListFragment.java | 15 +++++++++++---- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/component/viewer/src/main/java/one/nem/lacerta/component/viewer/ViewerListFragment.java b/component/viewer/src/main/java/one/nem/lacerta/component/viewer/ViewerListFragment.java index 09343c94..4c306755 100644 --- a/component/viewer/src/main/java/one/nem/lacerta/component/viewer/ViewerListFragment.java +++ b/component/viewer/src/main/java/one/nem/lacerta/component/viewer/ViewerListFragment.java @@ -98,7 +98,7 @@ public class ViewerListFragment extends Fragment { }); recyclerView.setAdapter(viewerBodyAdapter); - if (revisionId.isEmpty()) { + if (revisionId == null) { logger.debug(TAG, "revisionId is empty, loading latest revision"); if (FeatureSwitch.Viewer.showProgressBarWhenLoading) view.findViewById(R.id.loading_progress_bar).setVisibility(View.VISIBLE); document.getDocument(documentId).thenAccept(documentDetail -> { @@ -154,7 +154,7 @@ public class ViewerListFragment extends Fragment { if (item.getItemId() == R.id.action_open_vcs_rev_list) { // Open vcs rev list getParentFragmentManager().beginTransaction() - .replace(R.id.nav_host_fragment, ViewerVcsRevListFragment.newInstance(documentId)) + .replace(R.id.nav_host_fragment, ViewerVcsRevListFragment.newInstance(documentId, documentName)) .commit(); return true; } else if (item.getItemId() == R.id.action_rename) { diff --git a/component/viewer/src/main/java/one/nem/lacerta/component/viewer/ViewerVcsRevListFragment.java b/component/viewer/src/main/java/one/nem/lacerta/component/viewer/ViewerVcsRevListFragment.java index 237c1564..a86d7e88 100644 --- a/component/viewer/src/main/java/one/nem/lacerta/component/viewer/ViewerVcsRevListFragment.java +++ b/component/viewer/src/main/java/one/nem/lacerta/component/viewer/ViewerVcsRevListFragment.java @@ -34,15 +34,17 @@ public class ViewerVcsRevListFragment extends Fragment { LacertaVcs lacertaVcs; private String documentId; + private String documentName; public ViewerVcsRevListFragment() { // Required empty public constructor } - public static ViewerVcsRevListFragment newInstance(String documentId) { + public static ViewerVcsRevListFragment newInstance(String documentId, String documentName) { ViewerVcsRevListFragment fragment = new ViewerVcsRevListFragment(); Bundle args = new Bundle(); args.putString("documentId", documentId); + args.putString("documentName", documentName); fragment.setArguments(args); return fragment; } @@ -66,17 +68,22 @@ public class ViewerVcsRevListFragment extends Fragment { // Init arg if (getArguments() != null) { this.documentId = getArguments().getString("documentId"); - logger.debug("ViewerVcsRevListFragment", "documentId: " + documentId); + logger.debug("ViewerVcsRevListFragment", "documentId: " + this.documentId); } // Init vcs - lacertaVcs = lacertaVcsFactory.create(documentId); + lacertaVcs = lacertaVcsFactory.create(this.documentId); // Init view RecyclerView recyclerView = view.findViewById(R.id.rev_list); // Init adapter - RevAdapter revAdapter = new RevAdapter(); + RevAdapter revAdapter = new RevAdapter(revisionId -> { + logger.debug("ViewerVcsRevListFragment", "Selected revisionId: " + revisionId); + getParentFragmentManager().beginTransaction() + .replace(R.id.nav_host_fragment, ViewerListFragment.newInstance(this.documentId, this.documentName, revisionId)) + .commit(); + }); // Set adapter recyclerView.setAdapter(revAdapter); From daab41620fbeb3de448987401e85ec3bacd59efb Mon Sep 17 00:00:00 2001 From: r-ca Date: Wed, 24 Jan 2024 17:45:16 +0900 Subject: [PATCH 25/47] =?UTF-8?q?=E3=83=AA=E3=83=95=E3=82=A1=E3=82=AF?= =?UTF-8?q?=E3=82=BF=E3=83=AA=E3=83=B3=E3=82=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java b/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java index 2881724c..c865ede3 100644 --- a/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java +++ b/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java @@ -197,10 +197,8 @@ public class LacertaVcsImpl implements LacertaVcs { private ArrayList getLogInRevs(ArrayList vcsRevEntities){ ArrayList vcsLogEntities = new ArrayList<>(); vcsRevEntities.forEach(vcsRevEntity -> { - vcsRevEntity.logIds.forEach(logId -> { - VcsLogEntity vcsLogEntity = database.vcsLogDao().findById(logId); - vcsLogEntities.add(vcsLogEntity); - }); + List logIds = new ArrayList<>(vcsRevEntity.logIds); + vcsLogEntities.addAll(database.vcsLogDao().findByIds(logIds)); }); return vcsLogEntities; From b58e80f7eab1d8e8093f4f150da03396f00d7c73 Mon Sep 17 00:00:00 2001 From: r-ca Date: Wed, 24 Jan 2024 17:48:00 +0900 Subject: [PATCH 26/47] =?UTF-8?q?=E3=83=AA=E3=83=95=E3=82=A1=E3=82=AF?= =?UTF-8?q?=E3=82=BF=E3=83=AA=E3=83=B3=E3=82=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java b/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java index c865ede3..af89c423 100644 --- a/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java +++ b/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java @@ -195,13 +195,11 @@ public class LacertaVcsImpl implements LacertaVcs { } private ArrayList getLogInRevs(ArrayList vcsRevEntities){ - ArrayList vcsLogEntities = new ArrayList<>(); + List logIds = new ArrayList<>(); vcsRevEntities.forEach(vcsRevEntity -> { - List logIds = new ArrayList<>(vcsRevEntity.logIds); - vcsLogEntities.addAll(database.vcsLogDao().findByIds(logIds)); + logIds.addAll(vcsRevEntity.logIds); }); - - return vcsLogEntities; + return new ArrayList<>(database.vcsLogDao().findByIds(logIds)); } private ArrayList getLogInRev(VcsRevEntity revEntity) { From cd1a58dcc01628420cb59490e75d352967fddf11 Mon Sep 17 00:00:00 2001 From: r-ca Date: Wed, 24 Jan 2024 17:49:45 +0900 Subject: [PATCH 27/47] =?UTF-8?q?=E3=83=AA=E3=83=95=E3=82=A1=E3=82=AF?= =?UTF-8?q?=E3=82=BF=E3=83=AA=E3=83=B3=E3=82=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java b/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java index af89c423..81dc5b3d 100644 --- a/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java +++ b/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java @@ -203,13 +203,7 @@ public class LacertaVcsImpl implements LacertaVcs { } private ArrayList getLogInRev(VcsRevEntity revEntity) { - ArrayList vcsLogEntities = new ArrayList<>(); - revEntity.logIds.forEach(logId -> { - VcsLogEntity vcsLogEntity = database.vcsLogDao().findById(logId); - vcsLogEntities.add(vcsLogEntity); - }); - - return vcsLogEntities; + return new ArrayList<>(database.vcsLogDao().findByIds(revEntity.logIds)); } @Override From 8c4e651a7956ec43f913109ec110353d5e66c462 Mon Sep 17 00:00:00 2001 From: r-ca Date: Wed, 24 Jan 2024 17:55:23 +0900 Subject: [PATCH 28/47] =?UTF-8?q?=E4=B8=80=E9=83=A8=E3=82=92=E9=9D=9E?= =?UTF-8?q?=E5=90=8C=E6=9C=9F=E3=81=AB=E3=81=97=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nem/lacerta/vcs/impl/LacertaVcsImpl.java | 40 +++++++++++-------- 1 file changed, 23 insertions(+), 17 deletions(-) diff --git a/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java b/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java index 81dc5b3d..c0a55ac8 100644 --- a/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java +++ b/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java @@ -5,6 +5,7 @@ import java.util.ArrayList; import java.util.List; import java.util.UUID; import java.util.concurrent.CompletableFuture; +import java.util.concurrent.CompletionException; import javax.inject.Inject; @@ -180,26 +181,31 @@ public class LacertaVcsImpl implements LacertaVcs { }); } - private ArrayList getRevBeforeTargetId(String revId){ - ArrayList vcsRevEntities = new ArrayList<>(database.vcsRevDao().findByDocumentId(this.documentId)); - ArrayList vcsRevEntitiesBeforeTarget = new ArrayList<>(); - vcsRevEntities.forEach(vcsRevEntity -> { - if(vcsRevEntity.id.equals(revId)){ + private CompletableFuture> getRevBeforeTargetIdAsync(String revId){ + return CompletableFuture.supplyAsync(() -> { + ArrayList vcsRevEntities = new ArrayList<>(database.vcsRevDao().findByDocumentId(this.documentId)); + ArrayList vcsRevEntitiesBeforeTarget = new ArrayList<>(); + vcsRevEntities.forEach(vcsRevEntity -> { + if(vcsRevEntity.id.equals(revId)){ + vcsRevEntitiesBeforeTarget.add(vcsRevEntity); + return; + } vcsRevEntitiesBeforeTarget.add(vcsRevEntity); - return; - } - vcsRevEntitiesBeforeTarget.add(vcsRevEntity); - }); + }); - return vcsRevEntitiesBeforeTarget; + return vcsRevEntitiesBeforeTarget; + }); } - private ArrayList getLogInRevs(ArrayList vcsRevEntities){ - List logIds = new ArrayList<>(); - vcsRevEntities.forEach(vcsRevEntity -> { - logIds.addAll(vcsRevEntity.logIds); + private CompletableFuture> getLogInRevs(ArrayList vcsRevEntities){ + return CompletableFuture.supplyAsync(() -> { + List logIds = new ArrayList<>(); + vcsRevEntities.forEach(vcsRevEntity -> { + logIds.addAll(vcsRevEntity.logIds); + }); + // TODO-rca: ソートしないといけないかも(順番が保証されているわけではない + 順番が変わるとほぼ確実に壊れる) + return new ArrayList<>(database.vcsLogDao().findByIds(logIds)); }); - return new ArrayList<>(database.vcsLogDao().findByIds(logIds)); } private ArrayList getLogInRev(VcsRevEntity revEntity) { @@ -209,8 +215,8 @@ public class LacertaVcsImpl implements LacertaVcs { @Override public CompletableFuture> getDocumentPagePathListRev(String revId) { return CompletableFuture.supplyAsync(() -> { - ArrayList vcsRevEntities = getRevBeforeTargetId(revId); - ArrayList vcsLogEntities = getLogInRevs(vcsRevEntities); + ArrayList vcsRevEntities = getRevBeforeTargetIdAsync(revId).join(); + ArrayList vcsLogEntities = getLogInRevs(vcsRevEntities).join(); // finalで宣言しないとLambda式内で扱えないので final ArrayList[] fileNameList = new ArrayList[]{new ArrayList<>()}; From 929ba7347ce526afd999355e32d125a43764fd72 Mon Sep 17 00:00:00 2001 From: r-ca Date: Wed, 24 Jan 2024 17:56:26 +0900 Subject: [PATCH 29/47] =?UTF-8?q?=E3=83=AA=E3=83=95=E3=82=A1=E3=82=AF?= =?UTF-8?q?=E3=82=BF=E3=83=AA=E3=83=B3=E3=82=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java b/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java index c0a55ac8..9e4ee843 100644 --- a/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java +++ b/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java @@ -215,8 +215,8 @@ public class LacertaVcsImpl implements LacertaVcs { @Override public CompletableFuture> getDocumentPagePathListRev(String revId) { return CompletableFuture.supplyAsync(() -> { - ArrayList vcsRevEntities = getRevBeforeTargetIdAsync(revId).join(); - ArrayList vcsLogEntities = getLogInRevs(vcsRevEntities).join(); + logger.debug(TAG, "getDocumentPagePathListRev"); + ArrayList vcsLogEntities = getRevBeforeTargetIdAsync(revId).thenCompose(this::getLogInRevs).join(); // finalで宣言しないとLambda式内で扱えないので final ArrayList[] fileNameList = new ArrayList[]{new ArrayList<>()}; From f59c4445dcea41dcf9ea9bd7003adb2f47d99760 Mon Sep 17 00:00:00 2001 From: r-ca Date: Wed, 24 Jan 2024 17:56:44 +0900 Subject: [PATCH 30/47] =?UTF-8?q?=E3=83=A1=E3=82=BD=E3=83=83=E3=83=89?= =?UTF-8?q?=E5=90=8D=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java b/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java index 9e4ee843..ed81a493 100644 --- a/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java +++ b/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java @@ -1,22 +1,15 @@ package one.nem.lacerta.vcs.impl; -import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.List; import java.util.UUID; import java.util.concurrent.CompletableFuture; -import java.util.concurrent.CompletionException; - -import javax.inject.Inject; import dagger.assisted.Assisted; import dagger.assisted.AssistedInject; import one.nem.lacerta.model.VcsLogModel; import one.nem.lacerta.model.VcsRevModel; -import one.nem.lacerta.model.document.DocumentDetail; -import one.nem.lacerta.model.document.DocumentMeta; import one.nem.lacerta.source.database.LacertaDatabase; -import one.nem.lacerta.source.database.entity.DocumentEntity; import one.nem.lacerta.source.database.entity.VcsLogEntity; import one.nem.lacerta.source.database.entity.VcsRevEntity; import one.nem.lacerta.utils.LacertaLogger; @@ -197,7 +190,7 @@ public class LacertaVcsImpl implements LacertaVcs { }); } - private CompletableFuture> getLogInRevs(ArrayList vcsRevEntities){ + private CompletableFuture> getLogInRevsAsync(ArrayList vcsRevEntities){ return CompletableFuture.supplyAsync(() -> { List logIds = new ArrayList<>(); vcsRevEntities.forEach(vcsRevEntity -> { @@ -216,7 +209,7 @@ public class LacertaVcsImpl implements LacertaVcs { public CompletableFuture> getDocumentPagePathListRev(String revId) { return CompletableFuture.supplyAsync(() -> { logger.debug(TAG, "getDocumentPagePathListRev"); - ArrayList vcsLogEntities = getRevBeforeTargetIdAsync(revId).thenCompose(this::getLogInRevs).join(); + ArrayList vcsLogEntities = getRevBeforeTargetIdAsync(revId).thenCompose(this::getLogInRevsAsync).join(); // finalで宣言しないとLambda式内で扱えないので final ArrayList[] fileNameList = new ArrayList[]{new ArrayList<>()}; From f6bc9167d232b3b4d8d71d592e7daa505bc74a4b Mon Sep 17 00:00:00 2001 From: r-ca Date: Wed, 24 Jan 2024 17:58:13 +0900 Subject: [PATCH 31/47] =?UTF-8?q?=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java b/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java index ed81a493..280628aa 100644 --- a/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java +++ b/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java @@ -159,7 +159,7 @@ public class LacertaVcsImpl implements LacertaVcs { ArrayList vcsLogModels = new ArrayList<>(); VcsRevEntity vcsRevEntity = database.vcsRevDao().findById(revId); - ArrayList vcsLogEntities = getLogInRev(vcsRevEntity); + ArrayList vcsLogEntities = getLogInRevAsync(vcsRevEntity).join(); // TODO-rca: リファクタリング vcsLogEntities.forEach(vcsLogEntity -> { VcsLogModel vcsLogModel = new VcsLogModel(); vcsLogModel.setId(vcsLogEntity.id); @@ -201,8 +201,8 @@ public class LacertaVcsImpl implements LacertaVcs { }); } - private ArrayList getLogInRev(VcsRevEntity revEntity) { - return new ArrayList<>(database.vcsLogDao().findByIds(revEntity.logIds)); + private CompletableFuture> getLogInRevAsync(VcsRevEntity revEntity) { + return CompletableFuture.supplyAsync(() -> new ArrayList<>(database.vcsLogDao().findByIds(revEntity.logIds))); } @Override From d3afdbcef5824804b70fd12665a3729f998c3e46 Mon Sep 17 00:00:00 2001 From: r-ca Date: Wed, 24 Jan 2024 18:02:57 +0900 Subject: [PATCH 32/47] =?UTF-8?q?=E3=83=AD=E3=82=B0=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java | 1 + 1 file changed, 1 insertion(+) diff --git a/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java b/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java index 280628aa..4e6d3d56 100644 --- a/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java +++ b/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java @@ -210,6 +210,7 @@ public class LacertaVcsImpl implements LacertaVcs { return CompletableFuture.supplyAsync(() -> { logger.debug(TAG, "getDocumentPagePathListRev"); ArrayList vcsLogEntities = getRevBeforeTargetIdAsync(revId).thenCompose(this::getLogInRevsAsync).join(); + logger.debug(TAG, "Query finished\nSize: " + vcsLogEntities.size()); // finalで宣言しないとLambda式内で扱えないので final ArrayList[] fileNameList = new ArrayList[]{new ArrayList<>()}; From 826f8928d12ce594a004ae93c7aed1b8e48e033b Mon Sep 17 00:00:00 2001 From: r-ca Date: Wed, 24 Jan 2024 18:06:10 +0900 Subject: [PATCH 33/47] =?UTF-8?q?=E3=82=B3=E3=83=A1=E3=83=B3=E3=83=88?= =?UTF-8?q?=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../one/nem/lacerta/vcs/impl/LacertaVcsImpl.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java b/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java index 4e6d3d56..a2a47081 100644 --- a/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java +++ b/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java @@ -185,7 +185,6 @@ public class LacertaVcsImpl implements LacertaVcs { } vcsRevEntitiesBeforeTarget.add(vcsRevEntity); }); - return vcsRevEntitiesBeforeTarget; }); } @@ -197,12 +196,18 @@ public class LacertaVcsImpl implements LacertaVcs { logIds.addAll(vcsRevEntity.logIds); }); // TODO-rca: ソートしないといけないかも(順番が保証されているわけではない + 順番が変わるとほぼ確実に壊れる) - return new ArrayList<>(database.vcsLogDao().findByIds(logIds)); + ArrayList vcsLogEntities = new ArrayList<>(database.vcsLogDao().findByIds(logIds)); + logger.debug(TAG, "getLogInRevsAsync finished\nResult size: " + vcsLogEntities.size()); + return vcsLogEntities; }); } private CompletableFuture> getLogInRevAsync(VcsRevEntity revEntity) { - return CompletableFuture.supplyAsync(() -> new ArrayList<>(database.vcsLogDao().findByIds(revEntity.logIds))); + return CompletableFuture.supplyAsync(() -> { + ArrayList vcsLogEntities = new ArrayList<>(database.vcsLogDao().findByIds(revEntity.logIds)); + logger.debug(TAG, "getLogInRevAsync finished\nResult size: " + vcsLogEntities.size()); + return vcsLogEntities; + }); } @Override @@ -210,7 +215,6 @@ public class LacertaVcsImpl implements LacertaVcs { return CompletableFuture.supplyAsync(() -> { logger.debug(TAG, "getDocumentPagePathListRev"); ArrayList vcsLogEntities = getRevBeforeTargetIdAsync(revId).thenCompose(this::getLogInRevsAsync).join(); - logger.debug(TAG, "Query finished\nSize: " + vcsLogEntities.size()); // finalで宣言しないとLambda式内で扱えないので final ArrayList[] fileNameList = new ArrayList[]{new ArrayList<>()}; From 93cef07ce5674beb36db819bcb7f32111c5c2353 Mon Sep 17 00:00:00 2001 From: r-ca Date: Wed, 24 Jan 2024 18:06:45 +0900 Subject: [PATCH 34/47] =?UTF-8?q?=E3=82=B3=E3=83=A1=E3=83=B3=E3=83=88?= =?UTF-8?q?=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java | 1 + 1 file changed, 1 insertion(+) diff --git a/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java b/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java index a2a47081..7626692e 100644 --- a/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java +++ b/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java @@ -185,6 +185,7 @@ public class LacertaVcsImpl implements LacertaVcs { } vcsRevEntitiesBeforeTarget.add(vcsRevEntity); }); + logger.debug(TAG, "getRevBeforeTargetIdAsync finished\nResult size: " + vcsRevEntitiesBeforeTarget.size()); return vcsRevEntitiesBeforeTarget; }); } From d778840484c50e04b6593e52a154fe79e1dab3d6 Mon Sep 17 00:00:00 2001 From: r-ca Date: Wed, 24 Jan 2024 18:09:56 +0900 Subject: [PATCH 35/47] =?UTF-8?q?=E3=82=B3=E3=83=A1=E3=83=B3=E3=83=88?= =?UTF-8?q?=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java | 1 + 1 file changed, 1 insertion(+) diff --git a/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java b/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java index 7626692e..3d71e76b 100644 --- a/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java +++ b/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java @@ -221,6 +221,7 @@ public class LacertaVcsImpl implements LacertaVcs { final ArrayList[] fileNameList = new ArrayList[]{new ArrayList<>()}; vcsLogEntities.forEach(vcsLogEntity -> { + logger.debug(TAG, "getDocumentPagePathListRev: processing " + vcsLogEntity.id + "(Type: " + vcsLogEntity.actionType + ")"); if (vcsLogEntity.actionType.equals(ActionType.INSERT_PAGE.getValue())){ InsertPage insertPage = (InsertPage) JsonUtils.fromJson(vcsLogEntity.action, ActionType.INSERT_PAGE); fileNameList[0].add(insertPage.getIndex(), insertPage.getFileName()); From 6e9606b05097f629ab9f4e98b8ad0bf829257f7a Mon Sep 17 00:00:00 2001 From: r-ca Date: Wed, 24 Jan 2024 18:10:37 +0900 Subject: [PATCH 36/47] =?UTF-8?q?ActionType=E3=82=92=E8=BF=BD=E5=8A=A0?= =?UTF-8?q?=E3=81=99=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java | 1 + 1 file changed, 1 insertion(+) diff --git a/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java b/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java index 3d71e76b..e1bb62f8 100644 --- a/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java +++ b/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java @@ -57,6 +57,7 @@ public class LacertaVcsImpl implements LacertaVcs { vcsLogEntity.documentId = documentId; vcsLogEntity.branchName = "master"; vcsLogEntity.createdAt = new java.util.Date(); + vcsLogEntity.actionType = ActionType.INSERT_PAGE.getValue(); vcsLogEntity.action = JsonUtils.toJson(insertPage); database.vcsLogDao().insert(vcsLogEntity); } From 4b1ae7326b53646a22138233a0521ef1d9104a1d Mon Sep 17 00:00:00 2001 From: r-ca Date: Wed, 24 Jan 2024 18:11:25 +0900 Subject: [PATCH 37/47] =?UTF-8?q?ActionType=E3=82=92=E8=BF=BD=E5=8A=A0?= =?UTF-8?q?=E3=81=99=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java b/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java index e1bb62f8..c60f2c76 100644 --- a/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java +++ b/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java @@ -76,7 +76,8 @@ public class LacertaVcsImpl implements LacertaVcs { vcsLogEntity.documentId = documentId; vcsLogEntity.branchName = "master"; vcsLogEntity.createdAt = new java.util.Date(); - vcsLogEntity.action = "ph-createDocument"; + vcsLogEntity.actionType = ActionType.CREATE_DOCUMENT.getValue(); + vcsLogEntity.action = ""; database.vcsLogDao().insert(vcsLogEntity); } From dfd488329b83e636ad4234652a3e99a28aa0c267 Mon Sep 17 00:00:00 2001 From: r-ca Date: Wed, 24 Jan 2024 18:12:35 +0900 Subject: [PATCH 38/47] =?UTF-8?q?CREATE=5FDOCUMENT=E3=81=AB=E5=AF=BE?= =?UTF-8?q?=E5=BF=9C=E3=81=A7=E3=81=8D=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB?= =?UTF-8?q?=E3=81=97=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java b/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java index c60f2c76..3dda05d7 100644 --- a/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java +++ b/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java @@ -233,8 +233,11 @@ public class LacertaVcsImpl implements LacertaVcs { } else if (vcsLogEntity.actionType.equals(ActionType.DELETE_PAGE.getValue())){ DeletePage deletePage = (DeletePage) JsonUtils.fromJson(vcsLogEntity.action, ActionType.DELETE_PAGE); fileNameList[0].remove(deletePage.getIndex()); + } else if (vcsLogEntity.actionType.equals(ActionType.CREATE_DOCUMENT.getValue())) { + // Ignore + logger.debug(TAG, "getDocumentPagePathListRev: Ignored action type: " + vcsLogEntity.actionType); } else { - logger.debug(TAG, "Unknown action type"); + logger.error(TAG, "getDocumentPagePathListRev: Unknown action type"); } }); From 16dfccca1443a9ba6406ac4137a07044ce5d3b2e Mon Sep 17 00:00:00 2001 From: r-ca Date: Wed, 24 Jan 2024 18:21:59 +0900 Subject: [PATCH 39/47] =?UTF-8?q?forEach=E6=96=87=E3=82=92=E3=82=84?= =?UTF-8?q?=E3=82=81=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nem/lacerta/vcs/impl/LacertaVcsImpl.java | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java b/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java index 3dda05d7..04a13c59 100644 --- a/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java +++ b/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java @@ -219,29 +219,30 @@ public class LacertaVcsImpl implements LacertaVcs { logger.debug(TAG, "getDocumentPagePathListRev"); ArrayList vcsLogEntities = getRevBeforeTargetIdAsync(revId).thenCompose(this::getLogInRevsAsync).join(); - // finalで宣言しないとLambda式内で扱えないので - final ArrayList[] fileNameList = new ArrayList[]{new ArrayList<>()}; - - vcsLogEntities.forEach(vcsLogEntity -> { + ArrayList fileNameList = new ArrayList<>(); + for(VcsLogEntity vcsLogEntity : vcsLogEntities){ logger.debug(TAG, "getDocumentPagePathListRev: processing " + vcsLogEntity.id + "(Type: " + vcsLogEntity.actionType + ")"); if (vcsLogEntity.actionType.equals(ActionType.INSERT_PAGE.getValue())){ InsertPage insertPage = (InsertPage) JsonUtils.fromJson(vcsLogEntity.action, ActionType.INSERT_PAGE); - fileNameList[0].add(insertPage.getIndex(), insertPage.getFileName()); + logger.debug(TAG, "getDocumentPagePathListRev: Inserting " + insertPage.getFileName() + " at " + insertPage.getIndex()); + fileNameList.add(insertPage.getIndex(), insertPage.getFileName()); } else if (vcsLogEntity.actionType.equals(ActionType.UPDATE_PAGE.getValue())){ UpdatePage updatePage = (UpdatePage) JsonUtils.fromJson(vcsLogEntity.action, ActionType.UPDATE_PAGE); - fileNameList[0].set(updatePage.getIndex(), updatePage.getFileName()); + logger.debug(TAG, "getDocumentPagePathListRev: Updating " + updatePage.getFileName() + " at " + updatePage.getIndex()); + fileNameList.set(updatePage.getIndex(), updatePage.getFileName()); } else if (vcsLogEntity.actionType.equals(ActionType.DELETE_PAGE.getValue())){ DeletePage deletePage = (DeletePage) JsonUtils.fromJson(vcsLogEntity.action, ActionType.DELETE_PAGE); - fileNameList[0].remove(deletePage.getIndex()); + logger.debug(TAG, "getDocumentPagePathListRev: Deleting " + deletePage.getIndex()); + fileNameList.remove(deletePage.getIndex()); } else if (vcsLogEntity.actionType.equals(ActionType.CREATE_DOCUMENT.getValue())) { // Ignore logger.debug(TAG, "getDocumentPagePathListRev: Ignored action type: " + vcsLogEntity.actionType); } else { logger.error(TAG, "getDocumentPagePathListRev: Unknown action type"); } - }); + } - return fileNameList[0]; + return fileNameList; }); } From da5b134a2b15ee7b9da4bada8d7a3b2c1cf69ed1 Mon Sep 17 00:00:00 2001 From: r-ca Date: Wed, 24 Jan 2024 18:25:59 +0900 Subject: [PATCH 40/47] =?UTF-8?q?Index=E3=81=8B=E3=82=89=E6=BA=A2=E3=82=8C?= =?UTF-8?q?=E3=81=9F=E3=81=A8=E3=81=8D=E3=81=AE=E5=87=A6=E7=90=86=E3=82=92?= =?UTF-8?q?=E8=BF=BD=E5=8A=A0=20WIP?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java b/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java index 04a13c59..e81ffa7d 100644 --- a/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java +++ b/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java @@ -225,7 +225,12 @@ public class LacertaVcsImpl implements LacertaVcs { if (vcsLogEntity.actionType.equals(ActionType.INSERT_PAGE.getValue())){ InsertPage insertPage = (InsertPage) JsonUtils.fromJson(vcsLogEntity.action, ActionType.INSERT_PAGE); logger.debug(TAG, "getDocumentPagePathListRev: Inserting " + insertPage.getFileName() + " at " + insertPage.getIndex()); - fileNameList.add(insertPage.getIndex(), insertPage.getFileName()); + if (fileNameList.size() <= insertPage.getIndex()) { + logger.debug(TAG, "Index out of range, appending"); + fileNameList.add(insertPage.getFileName()); + } else { + fileNameList.add(insertPage.getIndex(), insertPage.getFileName()); + } } else if (vcsLogEntity.actionType.equals(ActionType.UPDATE_PAGE.getValue())){ UpdatePage updatePage = (UpdatePage) JsonUtils.fromJson(vcsLogEntity.action, ActionType.UPDATE_PAGE); logger.debug(TAG, "getDocumentPagePathListRev: Updating " + updatePage.getFileName() + " at " + updatePage.getIndex()); From 749cad231c56230506879d6c8505142571836edd Mon Sep 17 00:00:00 2001 From: r-ca Date: Wed, 24 Jan 2024 18:29:19 +0900 Subject: [PATCH 41/47] =?UTF-8?q?=E5=87=A6=E7=90=86=E3=81=AE=E9=A0=86?= =?UTF-8?q?=E7=95=AA=E3=82=92=E6=94=B9=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../one/nem/lacerta/processor/impl/DocumentProcessorImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/processor/src/main/java/one/nem/lacerta/processor/impl/DocumentProcessorImpl.java b/processor/src/main/java/one/nem/lacerta/processor/impl/DocumentProcessorImpl.java index d2312b91..5b580cf8 100644 --- a/processor/src/main/java/one/nem/lacerta/processor/impl/DocumentProcessorImpl.java +++ b/processor/src/main/java/one/nem/lacerta/processor/impl/DocumentProcessorImpl.java @@ -74,13 +74,13 @@ public class DocumentProcessorImpl implements DocumentProcessor{ logger.debug("addNewPageToLast", "called"); String filename = UUID.randomUUID().toString() + ".png"; // TODO-rca: 拡張子を動的にする + lacertaVcs.insertPage(this.documentDetail.getPages().size(), filename); + Page page = new Page(); page.setFileName(filename); page.setBitmap(bitmap); this.documentDetail.getPages().add(page); - lacertaVcs.insertPage(documentDetail.getPages().size(), filename); - this.fileManager.getNewInstance().createDirectoryIfNotExist(DEFAULT_SAVE_DIR).resolve(DEFAULT_SAVE_DIR).saveBitmap(bitmap, filename); logger.info("addNewPageToLast", "finished"); From 70380df8fdcb5bcd7ea36714eb26044fc67799ae Mon Sep 17 00:00:00 2001 From: r-ca Date: Wed, 24 Jan 2024 18:31:45 +0900 Subject: [PATCH 42/47] =?UTF-8?q?Dao=E3=81=ABDelete=E3=82=92=E8=BF=BD?= =?UTF-8?q?=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/one/nem/lacerta/source/database/dao/VcsLogDao.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/src/main/java/one/nem/lacerta/source/database/dao/VcsLogDao.java b/source/src/main/java/one/nem/lacerta/source/database/dao/VcsLogDao.java index 7721555f..df6e7471 100644 --- a/source/src/main/java/one/nem/lacerta/source/database/dao/VcsLogDao.java +++ b/source/src/main/java/one/nem/lacerta/source/database/dao/VcsLogDao.java @@ -52,4 +52,8 @@ public interface VcsLogDao { @Update void updateAll(List vcsLogs); + + // Delete + @Query("DELETE FROM vcs_log WHERE id = :id") + void deleteById(String id); } From 383b34c3d24f332a4095a583b6fdbe2ed24c999b Mon Sep 17 00:00:00 2001 From: r-ca Date: Wed, 24 Jan 2024 18:33:56 +0900 Subject: [PATCH 43/47] =?UTF-8?q?=E6=9C=80=E5=BE=8C=E3=81=AE=E3=83=AC?= =?UTF-8?q?=E3=82=B3=E3=83=BC=E3=83=89=E3=82=92=E5=89=8A=E9=99=A4=E3=81=A7?= =?UTF-8?q?=E3=81=8D=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/one/nem/lacerta/source/database/dao/VcsLogDao.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/source/src/main/java/one/nem/lacerta/source/database/dao/VcsLogDao.java b/source/src/main/java/one/nem/lacerta/source/database/dao/VcsLogDao.java index df6e7471..7e132ce0 100644 --- a/source/src/main/java/one/nem/lacerta/source/database/dao/VcsLogDao.java +++ b/source/src/main/java/one/nem/lacerta/source/database/dao/VcsLogDao.java @@ -56,4 +56,7 @@ public interface VcsLogDao { // Delete @Query("DELETE FROM vcs_log WHERE id = :id") void deleteById(String id); + + @Query("DELETE FROM vcs_log WHERE document_id = :documentId ORDER BY created_at LIMIT 1") + void deleteLatestByDocumentId(String documentId); } From 113bca723f75f0f6376b23df443701d44d96b945 Mon Sep 17 00:00:00 2001 From: r-ca Date: Wed, 24 Jan 2024 18:34:25 +0900 Subject: [PATCH 44/47] =?UTF-8?q?=E6=9C=80=E5=BE=8C=E3=81=AB=E8=BF=BD?= =?UTF-8?q?=E5=8A=A0=E3=81=97=E3=81=9FLog=E3=82=92=E5=89=8A=E9=99=A4?= =?UTF-8?q?=E3=81=99=E3=82=8B=E3=83=A1=E3=82=BD=E3=83=83=E3=83=89=E8=BF=BD?= =?UTF-8?q?=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- vcs/src/main/java/one/nem/lacerta/vcs/LacertaVcs.java | 2 ++ .../main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/vcs/src/main/java/one/nem/lacerta/vcs/LacertaVcs.java b/vcs/src/main/java/one/nem/lacerta/vcs/LacertaVcs.java index 5392e9b2..cccc44ac 100644 --- a/vcs/src/main/java/one/nem/lacerta/vcs/LacertaVcs.java +++ b/vcs/src/main/java/one/nem/lacerta/vcs/LacertaVcs.java @@ -16,6 +16,8 @@ public interface LacertaVcs { public void deletePage(int index); + public void undo(); + public void createDocument(String documentId); public void generateRevisionAtCurrent(String message); diff --git a/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java b/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java index e81ffa7d..5e193bcd 100644 --- a/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java +++ b/vcs/src/main/java/one/nem/lacerta/vcs/impl/LacertaVcsImpl.java @@ -67,6 +67,11 @@ public class LacertaVcsImpl implements LacertaVcs { } + @Override + public void undo() { + database.vcsLogDao().deleteLatestByDocumentId(documentId); + } + @Override public void createDocument(String documentId) { logger.debug(TAG, "createDocument"); From 6b3d0c0dae389892810481752a17059a64b654f7 Mon Sep 17 00:00:00 2001 From: r-ca Date: Wed, 24 Jan 2024 18:36:08 +0900 Subject: [PATCH 45/47] =?UTF-8?q?=E5=A4=B1=E6=95=97=E3=81=97=E3=81=9F?= =?UTF-8?q?=E3=81=A8=E3=81=8D=E3=81=AB=E3=83=AD=E3=82=B0=E3=82=92=E5=89=8A?= =?UTF-8?q?=E9=99=A4=E3=81=97=E3=81=A6=E3=83=AA=E3=82=AB=E3=83=90=E3=83=AA?= =?UTF-8?q?=E3=81=99=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../processor/impl/DocumentProcessorImpl.java | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/processor/src/main/java/one/nem/lacerta/processor/impl/DocumentProcessorImpl.java b/processor/src/main/java/one/nem/lacerta/processor/impl/DocumentProcessorImpl.java index 5b580cf8..fea8396f 100644 --- a/processor/src/main/java/one/nem/lacerta/processor/impl/DocumentProcessorImpl.java +++ b/processor/src/main/java/one/nem/lacerta/processor/impl/DocumentProcessorImpl.java @@ -76,16 +76,22 @@ public class DocumentProcessorImpl implements DocumentProcessor{ lacertaVcs.insertPage(this.documentDetail.getPages().size(), filename); - Page page = new Page(); - page.setFileName(filename); - page.setBitmap(bitmap); - this.documentDetail.getPages().add(page); + try { + Page page = new Page(); + page.setFileName(filename); + page.setBitmap(bitmap); + this.documentDetail.getPages().add(page); - this.fileManager.getNewInstance().createDirectoryIfNotExist(DEFAULT_SAVE_DIR).resolve(DEFAULT_SAVE_DIR).saveBitmap(bitmap, filename); - - logger.info("addNewPageToLast", "finished"); - logger.info("addNewPageToLast", "filename: " + filename); + this.fileManager.getNewInstance().createDirectoryIfNotExist(DEFAULT_SAVE_DIR).resolve(DEFAULT_SAVE_DIR).saveBitmap(bitmap, filename); + logger.info("addNewPageToLast", "finished"); + logger.info("addNewPageToLast", "filename: " + filename); + } catch (Exception e) { + logger.error("addNewPageToLast", "failed: Unknown error"); + logger.e_code("d9191286-6092-40b3-80ed-9239106a8c65"); + // Recover (Undo latest action) + lacertaVcs.undo(); + } return this; } From 0b7b499624d029363c00b2ff0ddfbc1c41b7f42a Mon Sep 17 00:00:00 2001 From: r-ca Date: Wed, 24 Jan 2024 18:36:59 +0900 Subject: [PATCH 46/47] =?UTF-8?q?=E3=82=AF=E3=82=A8=E3=83=AA=E5=A4=89?= =?UTF-8?q?=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/one/nem/lacerta/source/database/dao/VcsLogDao.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/src/main/java/one/nem/lacerta/source/database/dao/VcsLogDao.java b/source/src/main/java/one/nem/lacerta/source/database/dao/VcsLogDao.java index 7e132ce0..5e1eec55 100644 --- a/source/src/main/java/one/nem/lacerta/source/database/dao/VcsLogDao.java +++ b/source/src/main/java/one/nem/lacerta/source/database/dao/VcsLogDao.java @@ -57,6 +57,6 @@ public interface VcsLogDao { @Query("DELETE FROM vcs_log WHERE id = :id") void deleteById(String id); - @Query("DELETE FROM vcs_log WHERE document_id = :documentId ORDER BY created_at LIMIT 1") + @Query("DELETE FROM vcs_log WHERE document_id = :documentId LIMIT 1") void deleteLatestByDocumentId(String documentId); } From c1c705729a6ae44bf211446bab964089c9ceca8a Mon Sep 17 00:00:00 2001 From: r-ca Date: Wed, 24 Jan 2024 18:40:11 +0900 Subject: [PATCH 47/47] =?UTF-8?q?=E3=82=AF=E3=82=A8=E3=83=AA=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/one/nem/lacerta/source/database/dao/VcsLogDao.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/src/main/java/one/nem/lacerta/source/database/dao/VcsLogDao.java b/source/src/main/java/one/nem/lacerta/source/database/dao/VcsLogDao.java index 5e1eec55..b8923de9 100644 --- a/source/src/main/java/one/nem/lacerta/source/database/dao/VcsLogDao.java +++ b/source/src/main/java/one/nem/lacerta/source/database/dao/VcsLogDao.java @@ -57,6 +57,6 @@ public interface VcsLogDao { @Query("DELETE FROM vcs_log WHERE id = :id") void deleteById(String id); - @Query("DELETE FROM vcs_log WHERE document_id = :documentId LIMIT 1") + @Query("DELETE FROM vcs_log WHERE id = (SELECT id FROM vcs_log WHERE document_id = :documentId ORDER BY created_at DESC LIMIT 1)") void deleteLatestByDocumentId(String documentId); }