From 2fb7d2b636ead874f0d1d9e9bd0e1a36cd82667c Mon Sep 17 00:00:00 2001 From: josfranmc Date: Mon, 18 Nov 2019 22:01:57 +0100 Subject: [PATCH 01/27] =?UTF-8?q?Refactorizaci=C3=B3n.=20Se=20eliminan=20c?= =?UTF-8?q?lases=20y=20se=20simplifica=20el=20proceso=20de=20descarga.=20N?= =?UTF-8?q?ueva=20forma=20de=20manejar=20los=20par=C3=A1metros?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- jar-flat/lib/hamcrest-core-1.3.jar | Bin 45024 -> 0 bytes jar-flat/lib/junit-4.12.jar | Bin 314932 -> 0 bytes .../gutenberg/download/AbstractDownload.java | 214 ------------------ .../gutenberg/download/DownloadBooks.java | 183 +++++++++++++++ .../gutenberg/download/DownloadFactory.java | 33 --- .../gutenberg/download/DownloadGreedy.java | 189 ---------------- .../gutenberg/download/DownloadMode.java | 18 -- .../gutenberg/download/DownloadSoft.java | 148 ------------ .../gutenberg/download/DownloadThread.java | 31 +++ .../download/IGutenbergDownload.java | 131 ----------- .../download/JGutenbergDownloadFactory.java | 21 -- .../client/JGutenbergDownloadClient.java | 126 ----------- .../gutenberg/util/GutenbergException.java | 27 +++ .../download/DownloadParamsTest.java | 72 ++++++ .../engine/DownloadEngineFactoryTest.java | 0 .../engine/DownloadHttpUrlConnectionTest.java | 0 .../download/engine/DownloadResultTest.java | 16 ++ .../gutenberg/util/FileScrapingTest.java | 31 +++ src/test/resources/links_to_download.html | 212 +++++++++++++++++ src/test/resources/zips/10293-8.zip | Bin 0 -> 124086 bytes src/test/resources/zips/10506-8.zip | Bin 0 -> 58743 bytes 21 files changed, 572 insertions(+), 880 deletions(-) delete mode 100644 jar-flat/lib/hamcrest-core-1.3.jar delete mode 100644 jar-flat/lib/junit-4.12.jar delete mode 100644 src/main/java/org/josfranmc/gutenberg/download/AbstractDownload.java create mode 100644 src/main/java/org/josfranmc/gutenberg/download/DownloadBooks.java delete mode 100644 src/main/java/org/josfranmc/gutenberg/download/DownloadFactory.java delete mode 100644 src/main/java/org/josfranmc/gutenberg/download/DownloadGreedy.java delete mode 100644 src/main/java/org/josfranmc/gutenberg/download/DownloadMode.java delete mode 100644 src/main/java/org/josfranmc/gutenberg/download/DownloadSoft.java create mode 100644 src/main/java/org/josfranmc/gutenberg/download/DownloadThread.java delete mode 100644 src/main/java/org/josfranmc/gutenberg/download/IGutenbergDownload.java delete mode 100644 src/main/java/org/josfranmc/gutenberg/download/JGutenbergDownloadFactory.java delete mode 100644 src/main/java/org/josfranmc/gutenberg/download/client/JGutenbergDownloadClient.java create mode 100644 src/main/java/org/josfranmc/gutenberg/util/GutenbergException.java create mode 100644 src/test/java/org/josfranmc/gutenberg/download/DownloadParamsTest.java rename src/test/java/org/josfranmc/gutenberg/{ => download}/engine/DownloadEngineFactoryTest.java (100%) rename src/test/java/org/josfranmc/gutenberg/{ => download}/engine/DownloadHttpUrlConnectionTest.java (100%) create mode 100644 src/test/java/org/josfranmc/gutenberg/download/engine/DownloadResultTest.java create mode 100644 src/test/java/org/josfranmc/gutenberg/util/FileScrapingTest.java create mode 100644 src/test/resources/links_to_download.html create mode 100644 src/test/resources/zips/10293-8.zip create mode 100644 src/test/resources/zips/10506-8.zip diff --git a/jar-flat/lib/hamcrest-core-1.3.jar b/jar-flat/lib/hamcrest-core-1.3.jar deleted file mode 100644 index 9d5fe16e3dd37ebe79a36f61f5d0e1a69a653a8a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45024 zcmaI81C*p&lQmqnZQHhOn_aeT+qTtZ+wQVmUAC*b%)j2bGxN>8@64Yo^W@64;>nfg zWbD|nBO+5l8W;o$00062fW7oo0N{VzAOS!CWJOg3X(i>v=s(8+02Kby6as+l+w|#c zNwVhK91suy0OkAnzfENYJ+q&~~XcVMg@)Q>u853k!`i`Ur45 zyu5Cd37@2HgH)`Wy1`l;*oM6)AovI`MZ*5P^GAe-{5dEZG0FFgLIHB7%e7m@~IKQ2JFQMZ<9=GfFm*%A&yCZ2FhNHwGWyrhp(buKg?hqDS+*3t9 zd{fJ?i!iu3WWuibV>u(s!C7Y9Ec@WNo2&8wt$(Q78NE9faKyXMFZx?z#3g=W!ggoW zxBju_^2Gk#d1;@npM{AJMlo8%y|Ejj#qPY!E?ZE}{zt!8D)Sevt(Mlx?wUpBu7Pd- z+&=5f)$cT0MHpK#AxKNtLgIJ;1o0;w;U`Im=XE0^FJ`(EW^RqEi|ti|O73QiforP# zZ4`hWX!GNBWxLS!_Nha8kt+qvaywJz^&^fC8TLt%rr#0pz;rRNvOOFu-M3nI=avGe zGeQvShWz>WK)WN5I{5e2?{Wf-#LUiZA$BZ*U2cs9(rD%v`A}Y>;3#xQ{>62Eo>{k^kl!@X(KI9@K zP|&oX8WJ<-Sx`mN@Uw|3vJ}OpTfpgEQ$i8C2HuxCnNO7>v;M|S?XW0&?ONp#Xsq{bsj*Uh;RjX%HgjZ zDcD81yIB87fQn~>(|C4lNp49A0PPu*kkf1B#@2_ChL&1Ygu98+J^LoG$hkZK#b=S&+3y>I$q^Pesl7%RmMS5C%3|Beac-R%1#O@FxO1 zgA!Vxayv;1V*Dj>CYT#C3woj>nT!jiIa1715Fwi6L6eK+)cMN&Tz(BxQ|^%LTr5K$ zk^Rrc^G%HwiAcP{>{ZKiZ<@NrpM`v~-eSWZ$sa8#XjdrgO{MX{fuTSLc!5`kTVoSg zkx^J3fwyDpx4}j+V|NjI`)N0O`^5TV&nOHkC@tDhIZTCD*PJKU(a}w;ry|kT2x(5AaXMUN2y6CRpK%|^ z8zX`PGgBCxWr6}~wM(DmZ$S+2^~1@X-|@^qkVAw$29(R2s*U(<$*W+veIM?&1gJPA z&jf1a4fTmkn53m2AI{uCYb&0EV)^%2xmcvmVyAR)RO^<|r`!`65={#m>2uhQQ>R6q zQx_b-V^1_t0Pgy{x}^j^q|~2G_ahv3mo>AId%ES4yqvQ~v8lEeZ_z%B_ieJ3Z)0QK zZgcByNKyTkZ_(dX1=S6VKZE0a81awaxMFw1BjKIjVQWvH5&YC=RY*#lFGPD|<8DG@ z{dV$TrV`K?NrvOmfP+?bE+P)Njmu~#HT>#nOqe*YgBh(ThQp)|_Fic28i__O?DHtS z4;ay#B`2=r(=q4#h+nQDB{wf80Mq1S%nkyiP{Y(WV@p~AV#*upqgtb+h`}c<5-t-0 z?NT2Dulu5m0bZIZnVAoH)2|uZ>`B`M>^)^ew$8l6#^Z829~mNHxDT_>If7E zVJZSK$$4y{Q9kc!rXpDH(YAKf%!_SKQSzA)*@R@N`V{}zz}8bbEn+T??gM;5gCjXS zh^u~U93JSUN$b*BTt2fqUm4q*p~FT5wH z!9xXmu2r!m{0{U$Lh-o1|EI;6AhI)SSfnTj?f_6Oq3|J3W^^WA{|^!L0%)^ARi%AM zTXpnxxUoy&%^J!kUFz0O%vO6imp|qV16Bi8gXhylzQHo*=yUewfamJtOZSm8hre*d ziAQ4~ejr!WVOrINRH8K*Qu{UN4F_$FD6}$BZDvR5@KAp7-qtVQv@q30h)M!0D_ZYx-={x%~$*|j6x@uqG^rA#UV;D`c4 zTxv57a%R2oCZ}LDmAB1J<%hx#^|gV~FUIvWsNA47P^?iz-xx=i;F4>KOiX_Y-Rr^+ z-Ec`ePh78D_TT?~PewAJJ(R@>8vF}Jfs=4?hmcmqX^vdX=V_UfBu)yMBwuy+6m_mU>2c@>7 z+PLl1WXwrH4SkNh503CP;up1p17UO14ZUS>Z7QorCE`_Llo+vhjLss~uGOIsbEfxC zZiTU1!R5K6stovuuLs0S%G|r6Dv7xIE}m&@_e}CPkj9ttE-0>xU3}9nGvn(H@iW;k z{J*Cf<)rvf+CTsR0^dnH-v5?r$Qn2snVUHNm1e{!>pIN~pzuOBH35dqYgtr(+#s(* zsg0udPcOQ97rKaHcu&%dL2VF1Ceir5Q~S)n?!e!Ob8dNafEZRz+FzSKC{L~X!S)s49! zrBz7HE9nzwy`iWhIr`{rbNtR*3*Y{`R-R$8-5hGh-b6lIYUa)Z^DIT<_I#_ILB;45 zj2zJPz=<7*z62@tS_fz}o|$|Y5_n$(2726rT7BIoG)0P44DCv3*iie?re=h$-E;GT zN1l!6J?#TXwKvX9uUCfH6cCj_=^5m%*j z*M`v>9qnGo2C_W^cXFXsYM~UKT{r`$G`*;dcs%-U^GdyrzDa^u-hpp*(LTnIkEYKB zg#x|IHI;(CKqTeV{|fZuqY-4uF*=g;r-n!~%vUQ?fh`DmWgDgiYXXtnz-5{ex zTYwCd9eFoP1;7%z0^F-j*n=X!pX!L#Y<;-PX5m>xs9|xy9Jed??lk+PPj37Ch+lis zfGI+&M0B2;FYw>p@~*f3Pu{mXPJTcB%`JuPY>h4cmHUz~{^gc7(SlF|3<#oM=FM7B zuB3FjZEW{2qWvLlHz16#Hc~PK5qQ%f;5Q0}kvrr3llXj-Z?#YRkoh9HM6wBp4UOHL z-=bc6psS%&O;EG(@;L_?jhndXVVp%AQ%k!n9Z_wWwdzoPw;28+%vuTv;-w$slxnIw zEmz@QRK{tcZlNTJ2qE?B#Sr%tum@{IPzF-$mJCBYZ)9o@{-HeG`+w9e{w2lVS9d7Y zzh$!icY;syPsIJdt^I{NLJ1x-cd-Vd!YZ`t43vOvY2cYc8*rOas!eU35ff?E+&utXsq1i=YQ~QH z`jBQl`iKSswH6dn1Z>6zvKKW)bvsYpVpMIz&PLm6ZM%#*Y&u+JmtI5rFm158(XavZ zT0vr>3aT^_Yt$a)()hc@JpBSp+nP&NTPWumB>vpoZR@G}_onh!IBh)%vAQhQ=-RdNgZX%P)bJhv*h+`h5gTcCyRi;}2fE#DftKNa`hpF3@| z_Xkhxe39monl3yD{(X0Tu+AuV*_n~6oto{FV~2ME=*=tIJ5uF1uB{T&zFtY^Q#P%J zv}=yJVL*RKGblm~qJJG4Km|#Z#EXfIDnZ5FXpA~S$=|Sqpq@5HvIZ!3>jRUsYz7do z7JUL4DYhONi?mGB?8h*bhS!wq_^^j7YJYn{kik|204wDxeJocCCmEy16 z`4~C{;F~hUYKn7PBLmW=1DI;mAEZ!7%O`W1P&*N$`@-Fu;H#qqHGQT7OrOqt)}7PL zhz?wE$UvP(3DC`w7dQvdH#t1;#WmU-^`I*|!zi)1LVpFfSCrEvy9NJy%ppIz9M<@z z!e8H1NdA8VQ_jx$Z`ce`7W@|{ex{OuAV8~Cr)b%rQY&cx|}58su?>Ovh}x6JCTwlwa@ExnX2Z!wu*8gI=GjaS*S<{M<^?YW>ku9$(>j@`FcagxfEDjg zZuWp51dLUJ4|>BqZRfGQ-=3lut(Lk17OmW_oVs|5>F>L0#KDQxi104O*s*ctn>mSC zGao{b!R114pRmPD@;ht%bMo4nU%uOXja)r*8Wgt;{Bl;hrY?&Z0)|F&k1)4}$ofBP z5cCJ@^x2D4MjF7MQZ3q%YmK_=hnaOUOWi;f&?HX`DNRpTJp1cBE~!h7QFVo{&H9@# z)b{1XkaDPRLX<9k7m4|Gf!&r%KwPq{pnO-w=He5o>YPY?<4-b50F*b2O}20dx(*#fP@NxL@Mi2p!t4ntJ~>96Kf@mF_z`8dSCpQR$y;ikE_<%q<|X!DJspGuPKqN$p~7fKRmGK|@cI|M&+X(mttr?tVLE z#do!v@c(vBWoHxnzbGR|j?s2N03jRH$Os%lHM0q&xL*oen}vWxT7qs8obKoVhso^x zDm=NiWCzegWeBra!oSj*nY*!*`R&h}56DeqeHb`Au~6KS%ZsRn>BW{Qku9psT#!Qe7i z>@WSBpS@RcS)15S7d z8PLX;<4J@V*T8J*o;X{r=JI2djTF}Z%#^=n~+#DbvD%^-qP`c zc+l9!X2Z@V2~4!CV^XAB;(%2u)`R>-ax1sG-&WV}jsrA#tu(z0XJVO7xJ>+&=gxmP zQPhbRHS~(hnBjhDKk}^%sFJJMT8|Q~TFX6U>L}dc{>!nHxF8KTqQ)H8wd_zv*0tNC zF$wuk+ErT7$|ZFS`jXP}Y$TdtjzXZwXlx>P%k&^?T9-w0qH+SA9e^bVRKjkzxM7pW z+X-Fc)x$+cISKzxPi@jlAoWTC$$|BBJ91$&aaD?^d!@a#@sddl{*~CuK8SkCY=9hO z5Jn7P7FG>`T@JFjcDl6nfd9!om3v2OwOl?Mz<>YQf07T zydEOtd;Q6Qcf5632K>`0>#f6pc}bMok>q?fGl*;z1D6y7NV-&i2N{(gkaTF<(#a-h10=i$Y-(|b zNhi;MyF)~uP~|iA?lNfdH;eV|;xLY13DDu4^&H&dbzDOQ4G6^PBh1i5ftWmQLQT^B zPkI`eIHoO_T^2b|wF&o}sHRJ(J<4DR_M8v`BNI>nWy?d4*&AHM2N7Sz(7~>huQ&1# zWvUtMiLtng)LktHJegHP@4>i$nL#^#?wMmn5)C27)MK4OC;vlc{;O3bI`dxC`VGw! zS^xn2e}|`|$$!dBr@s)oqzUPbV}k0JbYYr!YTuOHQcv6BpIKy645ZZnBFvRM%u;O& zN2r!-y{S+UMHm&(uN0AUq!kKv};5sM>%y3J1hf;xk1=T*5O)#GAyX z{2n0a$SyJo9?7jFQXbK*1rmIMyGDTcjv`VVpG?X`H zkI-Hvls9ZH$*l{Le8O`m&~~sL<&DiVT*Nii4ev8wL>cNcAP&*3FcLq}tr4g%5I^ZH zGpH|Iufk5+4K-+Pfd0e{HfC;0K9y;yY^P}8c*m+-p)~CNNT@O{^p&a zgv~Oa*p!R#ef=VsJERvFlim#@L(R?o)tc2rZx)A#%bBIdXUC1@X0D$KkNcsSy9`y8 zHBGshR=%4twOBljR?IBY~x-fR_Yc6kO2>vjNdE8@SJ5NnNt2bi>0!Yt477BU&laQprGO z;8ZYjX|q=1cQ9S7x*i6mmR3-3w0d!IhMIO!wEM%*PWFJ>Dps)uF{RcRU&y^Ab>jdB zi@lW6B`QJIo{UvtjX@-u3TToZq90Ub1PhbZEgM7utA)N$hq8F{v}L+PWSv#;x;TYE z(|#*B6#KuMXvCLnNmdzRTnrvNex7QGdTP3Xkmj@Nfbr;A_SYDK9v5X_=aYVnk1S{B zo=xshFb5{x12!T-qje6*Xt(6bVco0o_WpdwUM;t+n3`v>s4Qk?vz1kDHhu$+iZm-(m^Bna;wfoOS8fl^`O*sIHuu0!wF%ov^7Fx@ zmq8v0X9hhL#A=)mRce+e#t1bRA5`4wm|m<9^H_P2Qu&6Wf8MaVIYgWtut#hZ-Fkd4 zg9D2O@we?muAocdX^RY12I>i zKyt#G!?t2SSf!Q}{nPqS-Kz^8#b}vqAEHMK_6Xppprhk%F?(_J0#;aixXpH(GuopK zuJ=L-{i_cQ&>ib&MeB~;>uQaywRKl*yVMZmg!ef_+&2$l+yaUKkA<+M)ljR36NY#W zj#=#F202GpJSJDTR#wo4YKAH|XWI;M3cDJ`j;u3^_BfMt%~-hb#Zf11^rZhZvB*mc z(}oFTBewOC-jL~ZLFiQ`^o=|G+{4W7$6(>$!V9vD6KtOF7pommB;8M3S>f@STKHaI zA8^$!qnA9>mfq|G3f)!1Rc(xMjB{5wqgPI2Q%9w5-6`?thYv-I;BZ7S2D?g*G%a)g zT0&FdR$!yg#nR4sfBlSvn%LFC#tpN~waKoxak%GcsTfszSgpX*UNVs`Qs1W-cRyxi zffxS6@L!8C40+(n50Gaa)O$r(d0xaq-cAhb*18r{Ja=Wy=HJQIutdRoIFAO z7R##`xQ8lH@_H7|NcI`gf!W5c~h_)NVxY3{w z-v!xP+V8;-i!#Irk?z8v6V>pRM(CS9Hpsj0*8@~{tW)3VVFvU<4MMHwO$g&=f`$T#^{PX-~|$%YYhCOr!^M;#lv%chQAMg5Grm~+FhLk z{spY)#v&}}#$rr*a8__TZ$y~v>km7+@yjWlg$p#a9cT{?YGc4HqF~*TK|NN=i)y?J z8;DME4afzB#%{XVOt3=QC)Yam5})yP~A55^cH0gqNgyO7#|`c`n?Dq zH38$i_+L>TMDigd4f^RPX*YGBw6BkaBHPoXul@)vv0*-BBp0{?y!E-;$a#PIee-|F zcOeU2AqBG76QF*wzri~axIqhIdBl70#d~=ZpxzL&y)wY;xZuUU?jkbeqba%LhOU1B z{aunRWE?HMe9P7DZ&^n0Z#kcfle3-8-^Yi%t z+M|kaW2oR!wmm{{tRX3t=TkH z2UlvR4NYlLQF6mzv+`?|_k<~D_9MVpo-RR}DN@u2VY~Jk=zD>C^5lsx&DAZvR|tji zI`-XR3-dkzAzGYjq*(ks!CaYE01?r`m^@$C0`cVj1XcThm)dC2#tj^oFL)hz#C)`h zLUuYI?Yy9|V?OAZSJe>*WZbsecsjmtpX)`4wRJ%o#lKT{FE2e84K2Tbl~0T4rhZG#W-nN@)eTGs+sJ zlK5ime3f1hEAPQGGZH=2q%;YiYIZ(?k62Ghoual7mSNoDI;&5B0q#Dwag8W1MzH02 zz#+|qHjEl&+w{_IY-igaNj zlBFHBG}~Cxj}+Tl(zgo)#bqMIR}hH!{6e~QXvnZFwKg3zRok0EN-hlKgZiYny&zi! z!G1WL%;5Cux#q?<^Lu}PN9_YvX_P2R7ov;_qA_es6NEB_Gr=jf=MNzcor2~>4I(!* zd~>WSDZ{wSk^W3&*Qv=CQ-4$9lnrf8RZ(iibfxl3t>g_IYG+4)!Nx5gn)tDZ-ZT7G z1F_4K)yaD`al_{)b5fAafaAimZ2|N0>v33weL5)OQEa)h{^Sn&Hqgq8!kcIY7VY7Z z4tRdWY4*%7znP|TjqKM2OanblT!D(_l};UTW_4Z1Wc;a=xC8EU@s7cSXVZ_F%FmKI zm&WeR9x25YXm4$vq+N;-?BTqSSujTqQ;x1ukE@P>-7BMQNHL+)GG*<_YARX@R&fxE z$B=Rg^?>tKVUj@sur(ApnCwEKy04b_g6CEbjJ=fErVrKJxu5^xKoRAp9Gw;gYS_6H z3vgu?-4=~Pr^&+ll7#z6ml?fcvCt>cVcGn1E?+0ji5>&htRrSE zjCb(4?*eV5Q>ax2s2q5~*n2y_Wr~4Nzu8@!y9k|j+PdIHi9Ix*6bN(ulIhPPI*%o? zdnKIXV)~q`a%RUG<>82$z(~8a<-Nj{76oWPv37gKMxcOpb?$<61?J*~IcvYkI4m)E zpo7ICh)YYpjzpMv8^q*Bl{6f2_ zz|1Yi@)L*RXEttmGBvn|N$zs4x4;opAeE59qJe(eHWJt;N0>Ss))`Id;KpL{Kev?6 z9KXGWO7AZYLLHd^0XEMhyJK?{YkIMDYhqb3S z$?QuF;z|tYzL0;x+e8{Pp!iwEpioY|3I zkG>bQ5xv32AKQ&iZz(P&YrR3Y2b5ZO5Gc9Ie%gzqw$l7I6yvY|9tr+yE|8C(Yq9M+ zG=lwa&HDevk)`E{1Q9;55)k`AT~u%C;UE0hL>k0X>>XGc3GIIv8uG9T53*Tc&odi6 zo(+E)@uZvYeYfi|t@_dvhHnv%8J1K}uN6Wzgg!E~SplrVJT!AK(IQwix9;ef>e z^Wq<>rj`vu1gaooRDs`1Abbm>DYGz*xsEzWv()(fnmnV(hd+)UPA^`?;!UAnBz03_ z+ZS7d&^fd!s_z={2^mRHj*iSVWP!daP4M-Pb}_M6*xls!cRu`0hyT_t7O^le zv$b=wur>QzCY6#XEx#dvF#46n;c(Fr5}c^CK0g}q7%>GQEk=_w z$`E@E4rx0A8b>Pv7~daW)x~u`k&LqXY>>yzmzn!K3txQ&!1ZQa3{akyXD|~Mct&-#9V&UmHcPE^32&kAFEI0Szs{Z&LRHi-QOD(XmTA2q z;hCQa6YealUYD_j{BokLtn@N$Rp;KXn~hK%XY@{+oAdtz`>F_RwZd!bbGthZJ4!#uT>)WEP$5u#S6&M$r;l8ZH# zlh9dRN!^geIsSR^N>w#*;bb2EVz@-ltzIXD2U7>GoH)qQ z<-N&D}P|j6$WG2AnCk*_7mpkQEBHA-Aee`u(LBhvr>@E zgc1JZhMCr<&&RFpK7GHhPjdgPpRqZ8TGcn$x?lO+Fy{w*0&*1gQ7aGA^=1xXG87an=2od|5LlKD zklIE%T~@ems$zvls>_a;8-HZURVv)-OjsZ?VG>N3W(|l*ry6-s!#p+a(#VB!Sd6J+ zE-uLh?aA6|!qGpivtD7DP8|h`l-aJUE;JAEGE{8!ESa>iWIGL-xo-O3*U`H$-1Ksd z*BfID=hIg1s)E{Z+t`=|rmD(zj=E*StTX`k<*X}b+B3S%41|P{MfL(i&>t+i@I$DYk(;DYTI*4T<+>no7;Cw~ znbjqQfd2fvPi=J0M+~~yc=#Mka4GG83%(mpIwf4l6ty z`!a)@W4u8nwu3CplHPJZ)TZAn=j6UnD$7ms27NSq6P;fc@*x|t_)2g3TFitl*0x6# zXC|-O>4m*;DP)p`12<>Kq~zkH&%OdS%on4G;NJEh*DKfx}5iCzZ? zQF#3zRP}j=R;@gh>?4+0I0J=-erXavH6G-arp=61yb<1j9szjVQHCc;;3beJ==Gam zQX}mgzdbwW-KAAf8E^IK7oDsmz(VwvVGwOJ^xWXhHGIO2?;#o@zK6c>{2qx#h$CR7 zYaPAg^a~CKI!t-3(4V3yY%;Z&Qnbx!pxptxdxnw*Mx}kC)*{QM`(BK5+e9GSCD?ik zIoEyOz43cR-0@ZO)q7L17r#dxLdLW*jS+Kx(ICjX#JBDE1e2)R^8^GB`O0?pl5)Q4 zPTq5xp3urCfa1$KPJwvu4IQh+|LMpkW_ST_A}@zjeeq|u>leWyTM#KZ2LXMe+#bPg z_xl6?ckr{in&{Df$HspN$bXBEf8)py#lPaCk(H6vQiUqQmw*?e`;DQfLPZ%`zZAS) zsw`8fcB1T=J9*GJUXy@Fq=5#?54&r0Y@p?t_==e{9 zUFK?LYG~rt!K<=%J`P?XpJGGWOCGa<;jyXPnHTvlZHu9?-y2#1^YshX(G4DWcO_EU z=1z=%1Pg@B{R-$TuV{O{5FWo6$`K)?>8P%@sZ@nfC;SJox{%Zr+#bLp8_x=lJhR}^ z>eRN*S1IZrp#FZy0TQQIP~Q=D1MGh(?EL2;3pzQOI6D7lfK|~}M^eQ24IbZbARlGeThc+t`C@HzS&FXwy9woo@2>p#=KRW;=mFf*FZ1g@lww zV%_A9%$dpW;uv0pO(XkaDvuZghU&ED%U1_AW+uxP5j4AwL}h8Oih@5*3nvUwo-qbg zx{Oe_g`U~WO_`Y6N>e(D%xadbQw+#34OFffg_cagz^B9yNm%sdheF=uUd4x#A}jYG zVf!jhrn5@AA)ajE|8*LQ^yqOwT zAq_bN3RX~eX;QT~uQNmS=tw@zpsu>qCNMph7O71_BOd#jsqqP2u`;#x6}P5SVX}BR zoJT%^srA#EfUizkueAM5z@5K3Q#ukB*qjTB*j$F(K|x!0ObAqC4a5ehL2K&=>|3jQ zm-0iZf>l8&tLEGf9+IdK=kB6>LC;rr$oTylT#~Z3c4!AzQCCx-z0X4x8Bw|h$wqH- zO*gcE!3g`w#~KuCzn3taE?`^|JrPV9SFPaQ&6H>@jlV>@3c(uchT?R|0Sv0SMmZeE z8xYRsHddy~nxa9tE|{)JUK(V6+6eE& z0Y^iJYz;a`E=Xkx>Yu<|K-*Yj6tpU1^nKgyz zNhV)l?_L0Hy)5c3GU_12Ab3)$6?)n(vP&3j;1GwHfd0>!o&d;X>&Wj6rS|*rZ<&g+ ziM8oplFsluz5feH+z)mud|+T;!eDZ)V6LuUaAIIJ$%}gjg_FgL@!n!!ny`8Ah0Y(* zLz@SMi+e~u=yf`RlBT}7&88R%4)(qlijEc9rgBuoLH72Ra#$jwN~U@pdTNH6M8rWX zk$^v?Ffc&`BJZ7${>(poBsC}{Nv~pHVqm6Y2>2(2Bm`sxfDRe{08NyEvHpifaTFNr zx&AJ=n0^O@f72++&W_(3_&0U>U9OYI`YzXr#fN|n6B(j5H$4VMMLsQCRsNJj)=ILp z_SX54%-U8tq4XB_s+FW>DZBpk`Lon46&3xrIlk-TWV`n^yV>;n%iAAxe@SZzjHG@B zI%5B-XmAYp1Xe-=C3owmY3LR;rR7`KNDMN_^_$7JE zmcldewWWQdnzTis5PBw%R2JPvH41v(hKZdSOwwtDDJw2NeQqjyCvg&{p*u0f>Whj} zvd7p3yOd@sVJf?H@U;d{6&8=Baa--uQv9kvmUD}-v{SPYrSzAy0`_3EMT!Fq89ji* z)Nio)K*Q+bIs`FDfmc;6B#bay5rW>950Uiw>q;1&^Q{FTY+_{>7QrmUZ?0DRP6_%s zW9rQ^a~SZlpU%@Ybn|IO;bpuj6B}YvG6zHv5Ia1y81jTC$bNZJ2^MyoQou z2*T`xv%gyr`l0ls-I4nNQ0if%G-7rbmoYkc<$lfjO}!VCYOf=@fhKVlsZo|V4@%`^ zW)3Tpva8~70(MU`%obY8Ry(GV8QO08Pqa4AF!*ibG>K@7SD$M=sO`q1TfFY;HI6du z_T1}evbMfR#+-|8F`3iOh~B0nriQZ$Ohdbgqgy=aT1tO7EnnvUiKe0mQ_z?!KGhc`? zK>QjOZ#iImN^f{M4*!ciDol6yQm#I)<8g?RuOLSuPo<}T*D1gro6lG9{x>PtqhU^w zi-=#|+OPqa=}>?i0t$mrkK!FwF_rKrPGh+e2ztpchTL^p2{!HcA!Z(O8o{rDC_ayX zny<1vqHP+FvIyHyileI%`6S~xD$f?UkK~1p{QM{LkA_OG{v#FRi>f)lzcZ*0JDEw^ zH-kccYZRJ)YLx$~ZvS86URBp=K@5c#n>vA51PA-U|i-4;sf}58YaLU%+&oL0Dt(th6ZKAHS}h0X{*-hnzQpfE^n&` z+#VMmRc8N)1nF6@pZ5Kyz_3kychT&OJk(Vo$$oAihb`0uJ<+E+W|YHZ_$nzTD&_oh~&{o@o*pYf9RDj7rN z^9e8GCAE%;#Hw=yxyT&TwX)3^vqqXQ>D+XJt;;9uy$t-r#3w*Vt_8NXeek!7QI@tm zW~7$>=HLh&VRE65YTJhMB=5|{YRS7k3}&_7m(VYfwI*4+fXvy@j!8QP3F#bKOGZUz zo1T_!Tl+Fw7Mg})%bZdJ8;n@W#{k7USD7@yC_^Z;Aq3O~^EKR+Chf{k2%CKyq$ zk{Y~5u?#U3>nWHAdJPm}l;&DRd1DH_HnVVx0TOUS25)8|u>N9W&n{Yb%sVC-yO$>R z=Ze$UkRB~r%Uu<2i7O|DY;LXyLOolpfS%Uzht9!p=(!8g!9(CKs`DJ5GD&L)MLJx{ zK~_brVa~~Nj*tZ=HI?_!H>wKve4>ctn?vLGnnEzy5vrWTBCMI}OKmmdUqkVt)$43- z-Z|}+hG1qYC=4_C`1)3J^H_tMw{Td48AWYG0pJ;=SK6C@-iQyI-owd%cxH8I#CD;y zBc|Dlm>TwpP-WOIx$+L$-u3elH;LMgbsW#Smsqm)5}KScW|xvXM{^K1pHP!JgXFkv zXNJ;91|H2iq9G0EmeoQx+0Al^RTjGS-w$9%cNgozpr5)$s(shFG-V9Y(#+GYMEA8D z2EWbB!(1QF^yrezoncTrY)#KQtmvROx>}HRYet8H8Wx>;gBu zT1BJ65%3FZ(RT@ZH%5&CQ_O^a9>*Kf3k^Z`Ze8|RIPS7=W~#->BtbizCW5qmDUj-8 z4CK59Fv$BM z1j!vxg!O8FY|cn`1$AU_apIjDo}rF_GMrPxl@Nq(47iH-V=aeFh+$+IJ%hM~km8T=sMYk$2WR zV^Mj)l*ueJsA&RGGLH&oQLRgUY(B^E@~BujUfrN)lSry(y>f3V+6v?F7?bGqV--f- zD*~F2)F;pGRPM5`glhp?=E*nkr68f*(L>ZeTPmkg);@>V42?7*%lhm~f|3Y@oP#;K zRmWRf!Gg~y{R*r@-$w>hZ9Yz-69o|^D}$@mDpm1NJM?nIm8cPz$g8}%Ga)Q?j!l;+ zarY)Q{!IsGa5y!uhdSKg>Jai&HG)uB2>~~j`i+%Y<`G@kN9!64=GaoU*TVK-oPCB_ z_cElTXyb#vB6(e0Ed~T#mSO4X|D)`kq9l#7tHIEh}sD zKWDU{nF#{gm3{KJ4l6I%=uzy%8AV z@cuNyDY~b6@u3>8Kg$ereOS2G4{WemM+76mjIcqAbW*#4QDbmjR<9J}CH|4HOQIKQ z%g`F@bKOXS=u*4SSq{;zWcqIzXhgqbk6u-N1~)G5t1NHqa{xD4V%mXo}e z?eEq#_pD>jE3|;lNq%12wzfzgR?j3&w^1IgOAvG!2Cg4I@dFBJMVy?0v7k4M9hrak zx`_<&x=6yuq57DUg2Be>z2FPoc7i26Y<^}%85?P1VA?M9UWln~ zImor%cyRmqgi>^$DRt;S$xfN~@=atByyM76uZ%g4Eie|%J^jp=N561Uy$tu0 z8X$L6@f;{cK+eU$zX9)E5jdhR)9D^W?!Ql!|88;N zx3ZEo`Nv^lS#`q^SsCNYI%8U!A|HLASS2W<#Jp1v(Oi;6j;_CjfR+}t%PLX2Gmgx; zF&OO{op0$@dz2mDOCKkD-hU$M^&qh4_2_G_@HM-!lYF{bifin|$z-)|K-F`eYb?uoc(|tHp)mzRx z%~;W#p6RE__hl_67RWbCD@;6E49AcAGlBKF2$QcgRNFRJ2L}p%UnHJE4;^-7r1ipP zCMQ{OJA7IriuWUV-r8t-+9`_>63s*eJldk=%_NJHi>(}|%zLiA=p=F(beQVj>66(r z3NtMZy~)C(t%W&@45QS0e6(@!yJHk?w1kkVU+WO1ru3HPj%Ay^LewR&-t$Y)FZox{ z1FO4jmLx=Kbl$OLa|z|gG-f9L)#9LJO3E@STHRxUl50Bn{z2L2^N9#!H(QPCB&6%8 z+M&>=2vbR9Bx6*IDgs?Dr|0#{A>`ndkfdx18S9g5jbnd`yUOX!6g}ii)yBPg^eSN7 z>nl)3ms!fYnTF0h>)Eb4oYv1d;xd|5gC0!JAnI#2Ub93Cn)_MC#AnV#=8HD8mllG( zLG}O-h~o{sb4W?Sc?&{-gXJ zcYdbTBe!(#h`Q|$*)e2(**5c9`olKmRjm%eg$RFuO{j|^s4i@^i$Q>507f5DwOqSA zm@)wDf2vw_eyO=p>^;QJJ7C`F}sUXg^>{XI@afPrw!u@crUTSFg;_7~D1983g zfdFR5H?Xn*FSEd~g!))H_~^Ym9F1TDz;gCGZ%mm(G4_^f>sZbUk!bCtvw$zyYVNGJ z`%B~Oc5h*?rOD>*boRXI{<#1Ep}gMEuyl%>vefLJi43cZjMVtmXcE(`9ZCgv6O=Nk zp=lCse^^dw3k9q)Bo5bPOIrZB=$7Z&xX2t6j@H!Q<0iqUC!7>l{WHHm-6Pr*^dW*- zs5?)TR)gSC;aFKa<7{RWSDFzha{|5W)q*UL{6x3jn#io=U-GzXU4cDT9 z+sq_I1U=e+Oql$ViEK*sC88y_ z&{4OM^B$!~Lszf7Rr-k11$UduJc)jnE2<4-?j8YVLs0G>rjzI@rlZd zF6g5YqK!dX@>UrnbI$3wve(ys2eGbo(YO5K5C3>)_!%LQXVA6`0)vRYACfCV5=C_f zMXv zq@6mN$WdMPp(2(#B-d4;u}DwkO1+yEs2JsRvreq_y~$U_prT_hJ0Ke zAV70Ao^-xPMc}SWdu)MD_(EZ*hUBv02Csa;b7|y_H5!H=eej&HYrmUqTL;_Lb`x*X zuJu;YH^x93@ydL_J4b?huzs{E49GJzI$NFCsC~>5-E@9PJ?W9!pqJ?T;hXTN=@p}V z%V~4}veolVZN;WO*L9jQ15)Rh05S9D7{(V>m8to_HTu*IPA^9%+p~+P3&YEXvY~r^ zdK`MpMk|mF85AN>j?RuXq_VERsNA&>VrjWnY!z zqp5{oC7~m$1S1NfAmaZ#h{YLcv~|iBjF%RKBj(1^iqhz&FWlfgi10))Vu_*U7d?k<Zaz|9RI?WxxljEJKWjCJ|sMAY-Kg zj?y=+`a?*XeBE^$w-Z;|MXEd=nWmOp(RIW+`-15%edr`BdkxnKjTl7=zvxz*NE#5IQ>JUKo9G02LGF<42{GgMe;MAR1VjhA{aO^Ge z8g{wn6F%SHbH{s++*oJD6&YOFbC~WpxpEVZ9R)z&a*v$PX}DBNq+aHn%-nN~>X@_{ z*6PvsVEdxA9r+;b9HG#3=^h?PP_K4VnWk6Lnx%^3tW<;^j7m^mtff)MTX<}?m^k4> zasTTR=2L`wF*Y@22bnyK=0`kV5T5romPfHCTyE|;&-j4~k2}+JrwV!Fqu(;QG8sjG2D1ug=uu~TF^}w-u~8e$yFeG?DYXwD0rEOX-?)E zBA@@aaO(h)HhL<{+C*bLhEA}$33Q|KMcQW>^o+F|$AP!E0if$t>DWTd_7JD+fdwr* z++lSOtgV6YYn+j}Df7{&ER+L&b#hL=!%w?2dIV%^Y7X3qTCi4*zOehRx7pPFlyVQI zecvCDt(iI83C6PzS(^ID7LMNOJ7BHV5Im0j6O(9HAPzX->C&E~t(L;rjV^8v{MP9g zcdih}S2}=i_D~xpN+I2Q#xTZU+40+I_(xP(piUnv?UhTR1$~VWcmU1&I=P(FdaP$1 z1JhGM#-za&0ssS7WJ!=y%e@zJ_x?ht=l5rv!SAvVE+h!Mzb25&H2k6`q#LYo4 z3ULYS<{Msxa^kC#f@Dw?9QlMHa$5q0rKOB-M`GOUMMifDgg( zG#RI@IH#{c3Nv$2R^zRe7SzPZ+n^o+4A>w6(G^183wTz+27(hf{?jN-3d(roZdn3Qd^uxElq`lpfXm)f?Tp-8H^A-dpKTv!Pf|lDGye}N`nT4 z2DGqcz8Nh_weh|_O1v*fF7rHZ(=&!cDq(Mg3EV*^fxE7n926E6v`8{&;Y5JE`OjDp z#9@C9lBu~MOy{VA0S1(id0g1Exr2H1bB~f352#_j(uNPw45t!vI_WGmQdp{F(bS0} z#o|0%v0}hJ;%mjwoo8mk!6p*BwKOAW|0piYkGQ!wOX@`uy~F-t^_EOeLW2V z5z-%JH(yz4Tdh;FLD`_NIdDkVA4CZ#9DcVD!Blb7dfl(!m)mU4!pMrTfEi-ytA74Grp4- z&t;SSGae$rW8WaWe=`z{3SqX`WxCz(Sq{HmZ?7kqnu6I%icoM?w^^g{v7dX&c zhhAN0%VN=(a$fuAiRw}TMMlyggCP9kCW>h}KygZ*#d1`y`OiY} zhIcblw~kpEt$D0=8KwLrqn-+RY2=FS8e$K+8nS*8p=kRvx%Xeuv$M#Owf~JClW+9! z|Nlmhu({KBebK+*r}#T)u=pK~cl;%#wU_}!=P%%oCZ^~=Of7!T2LeQCt=t?jfoQ-=3V#X;%Z}JbNTjhJWBsVR=!aWU;}Er$!xzP z@U!x@*#zJp9tuN6=ui7#)gjE1G9#K$CC<3c&94ACZ`A3Ty!k)c+PR|VmGmG>W(j;Ly5$&svAkc zEa|bz`MQ!ktgbLe$UP!qv16^Y1cLRQ!LYG>|A?TnV`8B{Bf!j zA%gO`!hr!D@3+r4MM?;XU?{kmvK@x2F;G00F{cMEvEGz?IZR*l0WqT{vhh?pn`kxm?ZXE^I zVx@h_iss2^)?undy*O3YXl!WKVV3rByFpd2D$ULujUpeW^VxF|*2c=ENig>6sLFWb zFtnwL616ulQw%tz32F4mKb#7eQ{@>J(~Kku{VQbbm;=xr!BX0jl~}$Fy7cyi6lRP= zcOL5H)>I)>+grnR&6P-Bw<4a#Tf3M$q`6kUh0%fC$lT@k7-Q`|n{Xx9uasFQ_5c&K zBwQVCy)lw|`sC{*De3u&^uG&|IxP*+Y-sK3Y)ib7%gq-Djt)}IZrU7M4l((aH5qI_ z2K79tVQ_~+^;yILRt)6^^hs{=rWoQm`BFX3s_&o!a!pW!g)Wf1raCnzDcZ)=rlOBT z;!vkXwXp$hs){r^xv_w+Di^9 zlxPb_M)qw5;L_7-jZK94Msp{MWT>k-df65!q~)Y$W2#! zUy_Z1SGzOzpaszrh&|JXb$Ufnh{dDI8|ql`sF{GzMUOdAHbWyun?_7$D>ti<_#qO) z2z4m)fjf6t&#s`Aq*2QZ6Zp7%`I~j8eZo@ERAMbi{mIxcqia$Myui`|LeFQWZ6YOd ztcGbp7kSK&x}N=4o&3!($6G@u8+_u1Yzh2=bA)+8v0gW|?8ldQMGkv-@|g6JvQgga zp&b0buI7(A+y__4Mw~xhW{Tql3trmBe#fJ-Co=>Z%VCq2u4Z8T>DY~FatOo_3CnaO-OKuZatdjsN)&=&jL+#1}tLf}}s8N1*Z4>{;q4rPvh_Mm>KWi0=Ri;(3 zl~KN=krLuCH6;9zDA1blUjmeZqDdIPq3<_P2XQx@}D$2&Fi9N2e#dueV&UueaYiZSRhM_kP0dI(wn=qqJ(w2XA<# zhwt)s;SUg~ng~zn=SaE|sr79^pv50b(gncRkpS?19h`kY;OV7T;@dk1=hoaE61v_{ zfN%=@y3?oFlqLir+ja6!kH}Y{QC@YZ(xMzkyL6eVnap(PAh8^FT47SE<{%?bN})B5 z#sumxbuLWPNt}%6m!jr9zDN|eRH3zKP-Yzy%`KgGqhn7YoZKzZs$fd|L9;sCk*I4L zAv_8g0#t`WBe!o(54-=AA1$&dFK+6Ou%hlJ&_rWqxiZsQR-z^*K<0*8$1W8edQR}` zE7Bp@BsW!#o>rZ7H#s=)8m|ed87n6JBiDXq16IYFyqn97BQOt}lG7lWVHynSI7O%O zad|n>6M8?YyH&e%FnM&SWtNb&!6UGVdSB;8z&8i~)V&fZ)(@IY9QnDnx26dGP`@AM z?1eP9v8m>#%NC*2U0s+s+)`CVijCHvi8$92Yb3*Z=><~6+rWvZ&)2Nh4z@(s?04}+ zB-?18ho|$~;&VaBdV9`Ll)6K0nWlLvMM;sgK-w(BW}L_Se(XSIGNKrJ!-LCK~bZ(tNjf9THyL;zg^}yN}z>Wpz9AO1y@xP>>*`ui~Vv;%Aw5UB|1c2oJRmU$cv}Tct1@u zx(tA7mJ|&fq}dv*3MW{CqlaTLV~Ia4;(=n7tMyzHz&eMW$ii5D2}W-gPEA{EI~`uF zO-XH@|GhS6Q(AIpSJ2lW6dk0}TMOK}-Ouq)Daco)e%HQ(^E%VB6=|f9ouJo>hfR!M zzsb5BE#wgfUqbqtV#&M9DF_)2zXbx5l%m#nmhp=@DkLP_!_?xLy3sh>-dC|85VBga5t62YN{W%my)9t_Dm9VEXurc;S~|P2TYn zG-@~E{L?mIroZ+xh(Y+~vcP#JSNxLbj#ebWt27tI9(@6C-K%Z1HK4qYPNu7GJf62{ z5f3wK!t3i=_ai1S=6Y^#b931Ic!eL6Ug4Gx7D3#Scr!cb6p0XzI4d#fk%zQLpbdVa zLu1km)mAUbE^-V&wO!=3QO0Atm!YXbKDn%s^1#!s{)-6ucWYf_+PYvVK6o0D%c02l zwKDgWpP^lB3ht+FZkiv%iqT z`fpCiqXKSIwf{;CGyU8>^T6zd22Rjb4Wcy^ z`{mB*zh`JVP0V))zDH%|w;KPSbu(cXOfdS5K#)`ZuoHq)uQ(WH<2ebaL(KC`$cdv*N{?UiJsN8@Pcl| zqhNl)8fso}>t8ShVOMB#&P#>NTMt$p$}EWtFVS$f?vLHW%oEj~R&24bhKTDH4+xYe z>5_hjSXSG+Cm3>WpV&P65ISs?#+Q?=Yb-mbMbw!kE!t%ghFaw1&%rCkhqq8eE|6{F z2W@;&2bUZ&Wm)fO=!vhJxVf!2WS*F*+HSWW;1>^x18^Pg3{jU2t9?f5lK%J<{8Dyw zR<1q7Tg#w~yW7%XW2rQ_Q_RHn@OcdL{}Zr5-PnDHTy22t<+o!X#z`-oxr!UwLfC*; ziSd`KJRVuL6g!FV&u&UoEpWVkfiDXTzX4gppYz)6#7-ZW?9oZ{kqQO56$!9Gr6VNc z3Cpf^Oa~=oWx_hJL4)3v)74yi85izLww^uR`Gp=5RoaW%2Ni>6S!^+4-^~EqgrFWj zOy9Mo@8Jj6Hhiity$Y*|s#KlBxuHOk(8*SAxHG#6-$UwNzT&0PYPK1i=*i`<6x-EnkR5f1i2J;vEetrOv1k|HF!U!>_ z?rt1m!I`;yo)d;BRL_tq6yCmNh`zeRak!>A=+3TY$hkL|ieB^r%HNUlU9trj=C5c< zSU!;^-Js4yk-uY8ud;dtsuDYs$jj@?Ie!)qlL?9@B`YqAJo^-Vs`tH}$}wwRmbBV% z&sAM3{5(7=PL~sgv@e?I*U1>W*Xp+Je=p!I;65$h_P)h5q&f+lAY9`z)99uZ6sY`m zQJVNdLenYSDMWnLFD#1mDc}`v{h@%7$DEuqvnsAo!prArb;VxSenAiMF4RgeVuo9S z8%8YD^X-}A*b>3Dmf8g)kd1j7uW6;cradH-T@1&X9QGFP0XNf~Z9y5aE= zvF{c|LVV*6;s{}wqkgT>@xd!IK234(DR=`trQg;%0EcK_)i(2`I9;xRh%J?xJLw9E z?=X|L61-#fUUcmb-+^R=07bafF?8;+4l@U*-t?6b)b=MJS`WrmW4vGg7C6`|EfQY& zcJlrBzQg8!1rGjOk{AEy@|B(J>xdAGcCcZ(gB-Y!+B<-ApQy7)K$2 zgw4=AbJB*R>43{|b9J)zbb!xQXjs79^FudjztMBlzRy1b!}MLR+mA9^&94L zC6cI%NTJ;>+H0&jw(-V23yf~(K^rArPtlN1OHLz0n7EoK6EgCg1Cct;Z_uekst?I@ zqRH@~;?Bh-W4DNF~(kFn?Nd3sFW!jp|p)v$u=jI5(?! z@lxwqn@1F}&2QUG+f6jH(qhC*+pX1cQze7+NiN$4#kCIwRpU- z^#OkTF>R+-%sgQtu%(-OF&N^N%G|sg2yZ1_apMh*bdD!!qxmtBZAnA%F{}21`rmmk zfl*|f^Rj}HecDYEwXlvsCVsYXdgrX&ni%CO(p#lb)iu2~HgP0I72_v*p=5oht-0hm zw^r&Z5$X5cib}>Z!R2P@N=}XSJ?hNADxp!LvzU0%TG16|yiWpWUm5m{6=a?}Pi~PG zGzS#DT$A$h#*_B##t@YJ%z@~e1v^2|4~7D{%>KXKL#WIFbBD7D~ zYII-J2EP|Iaa2#-<3;9Z{42%wSv>+im07yAftRKxdpHg{@t%)>?vSR-m`^C%WxZ_3 zo}dk09ES{_8Gp`hKlrWpAVYowPJgDSWBpMvCX z(#e{m+(MDTW*xGUlhFLyOY`fvGhkPTFQR6R`511*>qMF zbb){z>=kOqRRqy5#N`Ev2BeLZMC_Doh^q^@W^Pr-e;t5Ju?R{3S9|P!_UXbEkZ|wR zX7|&k3y!xG+5Wx$iIp0H8`59*xrnB zqU?bVWuC>`6)Xe5!H!COx#<`&SP{AWHBs3JOQ6iLu`5=hw00D^KALR;^b6S22uBUC zVGM%}uwFFUVIh)tT+i`hHGW3x)q_`g{b|V>e%?qyZ-|2}RHG{i=YheMmG*#{#U!iklyV~IhS8$2CW+nHoi4etXn96qr1|h<8-Mdt z_Xy$isC0rZR*q;uNp#e(U06k9iTJUFWn?d>U5p`-N%he7H0U`s(~iC1U}vOada-Y|q*)p+Eb@~W zZ@K;mmb;XGhFZ}`)ESV&?|5F0K%WX8rw?>{-S$kvViy}aleAdO6!X-vE~7k3%hHN` z$@&D2CZ6;J@*OhoIHG01g&>c@+y1{1@LWGK%Q3!fXSMMEp-8u>e3E5k$>7v%>smq*c}B8U{eRuQbH0aC71phBTiwjz$9cVQI3 z94K(v{b)e{yKlAU86eoHqFG#Xcy=baYT+x4|Bl`KHU*Oyo-TJXnYHoD(|70B&L7jy z_v6*kAFsFCAlYqeAc(fY^D&b0Q+g@B+c5y98Wun{MU4O;P=GkXivc|ZCm;46kw%XZ zhBN?8D-xhxhM1Ih+w6cL+0~5~GBZb0=^(x`)n$Z+Zk%zFMR5+DE?lm(WIQ;X8(*0MDV#VhPPtB9MYFw)@+Pn_>+Hei9qCYL zD9Wh>D@9+BBl>NHT6>vQV+&`kFe?nNL^t%Ox0aAcLgriJ^x69<9ok<6;kbh{ZCYm8 zLgEZ^lNmbmu}oUYz|pNnMB}h^@A@Y6KTl25Zbucmvr{c~Bt=op`Khs$BH76o$Bf+7 z=_d@K=pQ=YD?RX^2n^6+5V`9VgTfCPY{J^YQ4uTM=%X}=wnxE1IJS^SLWzD2j1v9o zFNNVQ&XH&@zUo-SL(JV{6EtYFg$A$Vj+zzr@+agPiO>jj*48*oI3&{zxlIn^ekO>j z74{0W6~@_rv~D&>xCMe^z**BGI<+8mQ000XZE(q(cevXHB?YJwoV-I9f){?JX!i{EPmLU)B2u{g0#=$<>(x}f9PNn z17%$utFL@GCXldI;{7FimV|v#h(99pN=-_7gDq&CCGyiLKmN7I@XU2l%76VwbNm5t zoza;oh)jHmgMxn^M~QQz60?c7QY&u#5<2jXk;-$gFuSIBo; zeAd6xB&!L>7$}BzI9*qcXZn+)Xs<@3BU&+45$yeOj_Ll z>U?^*UJ`6l)^lFa2Uew6R5jPiv(hOhPS6&=;IAycMDUl4qmV(WLsPhc5E&Q5_P;L1 zOCA4l_)_F-f{CNne z5RN~Ojq*$uttuwRF5cS8BP1-PwvK+90JkV^U+|_?;Hgz0YM-LQ8LR{=f3+Wk8m^h` zSWP7~>lxk>qd>J|XEOxj4xu4T@fUl2u{W>KA<_CTi>8^U6}9YbJ6~J+a%Pi_v9SEP zF~zP>?m(sr_XqvIvf1);cx7bY6wUj0BIIx(dq0HbFyM@< zU&ve~?@C>H;~|p{H^Ov$C{bofy4PW>>!|3=;}U{|kV$titIz27TW=(Q9LUSZ!m0liEw$d65HmFJEmYf5*Gt48B$ zws`=0s^&GcS`eA`UL|@t{j&8ULbw;#BJ)uENAPPL!s-yW!GooN>z1qVpmqi49!r|# zdeXykGvF^ed`+a}nP-P{Bl;D)^-e`&!l8Om2<(Q7S7PfDa>OZ5yR^66CNY;&@o!Dn zXWB(WUZeG#MJH;j4M4+U@dz4cTukG$+$hJ)Nt!5|{~On%+){mzB$vbHU3?7E4h>Ny z@hmO8lUGzI*W+z?jOa6q|Ln8>YmN-Te5H0+dDF4{qp>Ut;1BJ5}l51Ap2@ z1cDee>M>2o@zFlK$J6iuvlt$^mrqaYZlQAs6LVJ47m5H^)w>GLeR3fgL|!=a zeH0+B^%6xvE>!wZr;ad1((HiAF|nHjkX6v<+A!gpJna-RuSPL>E^9d6gSlHMolC$R zY3RsbI?f!i7~_4;5Xag0FkV3#kE}Q3#u3Vp90Mlu68XTR=f#wrv1|f+8mt7gO~LO| zA)0B~)_oFx3Z8Tgajh{;nB_jT;8M*kJ6U5Jaif@HN|BMGU`rhNiFpq&d-N)a4OXq> z<}iY*Bp^nS7K`6v2iDK464-$!2nU|6+14DwimE9~g316Gk|; zH=JVj^MiY3BM();Ba_5Fx<)^kq>fDO7=m74ANzsa|K3#KQ);Xig~}$}B*%V%!`~-h zZ(G6!YHD{NQAzbiCB;5iEg(e*xc?(2KJ-CD#P>x0q7d!}sw!xoQmS#t(Jo_^9A|&K zr2)QLt)cRi<-Z@!VzlPE%f3fU=r>hE@*f2=aYu0*M<;z7L*xH3mPV^+Yho)S_^^ws zv(fw%fCSaRqA(DnsMqMt2)k1+r(8lRUyAiez)2XMw(00Bm-`?->sIZ~^QLKjbbtS; z^PK3F)d-m>TgT3AdX$y!ew@wO`S#T7`w6;>u!J7x{~Az*?E1Mw0ZKuG9{0t4+X+aDIE`)JS#|8%R2pu3M<|Ee+)NHAhw ziM|6lE)pOYP{VkUexT?k2H7VNIv0Fsd6Ib`4vTr?b=MY}T>EZ0L*R*j^&WiB-PoACe52 zfy4Q0@ui;z)ImevUj6L2C+zgH8_2S9*_gOQ{!_lfq|%<<+7wZkE@E-@3$>E7ize*k zCUH)4#frTt=ytJC3<6Dyb+oZ0NV1+83F)VIaEQMaYpg7!<5rtFq{{~Fl0-Ne;s%mU zNh3Q~K7G!BPOI9f6&tA-PNya-PW6;4i)JAn9cIWW!_Nhmx6O<8nY$Qs+=Rqj%us_) zUQOPkk@Et_+1%)B5A13zYOIoK%;7{wZKUvRt4w9;*;Q7?6v65HPJ)@rFhRvzFcame zJ>1*8;xuSe99Zz*!8-q zIZojmIUfLDDOJjked^#lOxta@o?HOdC=rYuO!GUB4|@8ud0}I;;_n$;lXO8_ypF$< zx@Es>n$Ds1yzE>yYIo@o-JXT2R;iPCmwUu!`95Zhv*+&#C%wevVRoVwOfez5sdX&H zhnMtx`a*bp#^bn~lFDJRT+4Y+Gili3zdY(tB;F*0x9D+z@Z+0dWZ%9o9RE_Izxx$y zf_^!M4>+Z^XCU6}^alPk@fqX^ZqRnB%~Pvp)d^MV20B-*h$ySIIWPDLfT+JP$AHn3 z7tA|`gF@4jzbwH`d8L2jOFT4wn-j`n6IjnJhKNCXt}~b)^I9KJ_#7y+N&fwjiYSm| zkwK(Wa{IGJFS~6D=@BQp4B-{DmT0mXQJPi5Cc13ZEnCe4{dzv8>{fMRpS+!n)JM?l z7mj7?vSr2fqfKoF9Bn&TR0=Wj=t9uDA@pdtbMo(S*(4!%4k?l8%RzYB*=yM z>+DZb4pEJ;K3JqI$O6~!G41>VAe*L?HOm>S?a~Dj*S~}|Z3m@sHNaa{vHT>6IS$B3 zeE9rjq`qgya2=%z50yzaSpH$Dqye!MY#%#%i1^3>?(Dfc)0JHV4|LIglEJ=suS811 zbwP8RZmDTteNyYRo;2;BRCIq&2YyL69u=$Gitkry+5!|+ZQlRwCL_kr2%Woc8VV8o z|4r`_cl^G_=%1^UlBMjT9EQ(2Y=;YKl0Ej=Fty>Lw36If7Es`jkpKV{ z7y&Qj79#eKsd`_8P&_$OjzMzu3P=$r1naO0JZt2j+jbLGxnOaLhQ^>wx5Gyg5!ypU z{+hJpKEoC}r6Ns9V-jcDJnYttL)geGyXNLT!Y0e)k~v2$_PR`?%0g9vLPdfpiEV|1 zvuwRn%TpHro1CrO;FV8>xp{eNH147d_Yn8F%-L~sqmS^hm+9N0(_mC(DI6k34e*KBx z=>)KgM{y5{Yu8w=OvBBQERCrWcBj^&y6mu;wdS54g5=$+uz+HQm}uz1rs}d5^K3c! zuG|=(B=DGIi$ppmzAzjWFF3yb$#A+S`iq)Ba#$L&*-8wVDHYb|R%s-r4hdD!QI%t3 zarVM}%$SO4C7i{Bv(RG`-wiiREA{>Q1E%k4AFMw!nH<#O?2%hJq+a9m7f09pq8_>R zZMAD0!$^vCR-+u`-*#gpHT?suPeqDVo3AJ%+m>->wt(R(dG{6OD!^?dPJ3|+KMvMB zc9bd}3eBg`q&M?YDWz&LKNO|(8U&m68KZt`B-%9L5z2O`6+b5 zEriwtWq?97asnOI`KJjRJS%y_yMUVQPXughTwzlIwF}12H#{4XPgpMi%uhUgLXh8t z7|)wT3}WMX18jChpg8@`Q*M0?iRia}r@RAM;P+QJWQ^b8y&v#kt|9z*w(G}9SxM?t zY4`pa6UkZ51R2Lx|C6zhn3MuyG@g2!{TNl()j;(d zJ% z{jaMA|9SHGucFw0{9FFvJx1WoEOG{bNI-WBh-=!2Yh<8Nq>@olRZ}TL9WGEnY_r8A zcQ{;(xgdNH>A3loqQ$uh0}2ruTQ=5Y-UWy*FJ^K$9ZgI=j;~{Nf2`C~5(g?^O{!Pz z_5>+oQYH;4q|}Ev*LxD|5e}LuGqadR5~@?MVJL8$NE%~QnumDIowF!c&SY}AlUbAu z`~_=ev46~_JQi!jJhCWRro+FDF(_|QRFRUTz1{%l)vjfb3I>+#IPQO0E3@d<`BNZQ zK8SlLRt%FEyw3PFHp#`leyBQasBBL)3=cDfG67bDagbs`owA~I9+XBOq!u!@@%Ap}@ zZPp^SUfBtt6ABJ#B)N|i| zp?aPvxCC$X_lEKCO$&RleSnd^ty%{jg)h6gEBj$PYDG_6036wh95K4sl9BryetbhXich*D7#ca@HyN4RHj-5JGJ< zDwqS=0HbO@UFs>##;>CD2}}7Gv-}_x;<#;+^Dy5_raqGdAG&T5{bDig_Rl%WVZAI# z4{>^5XOF?3?(_npQbVRG0~@oDC=AZ}Fc@eXl(^6Er8mVWFK5(;WqSRb6%ZSu>o+v5 zkYVVMuE;{RT>S?ag(N-N5I?*O**eKq8Y05AzGMIVB75joK|#bEZli7*S8$`pMmI;< z)S0+PXRyYumunix9Zz`BRkVL!e|O(>kqSbWb(S)Ks-Ad*{~>fY7(9-zjNtaC7mC4(y&|_X$XSw(tf-hI}(jKM_iP~60R_SBV+}gi( zD;~^NIW)%b9Lrn2NEr<5A;(ZC5s#lrxm@dK8`Qex&}*KF^8v6?dX`vl1B81w5OT(` zaS0){B3;im8xMJ*N&;IhnNccgRx6s^SMP%Gm1tIxleK$CIs+(<6Z<~43Ehl|EFzn1 zB%6gDil~|=fh%d>Av<;yJU1;FPo(!WbG8slChN4Mka%EsJp3=Y^yjVaDeS63-IxOR z5-YSv;oA)3?-n=^#ozDc>c}%8#4_?wt!>ibWAm#lY6#(5oZ z*mo7u@nzU!HuqF^J>Ebjz%J7O(YKr8H-=Y{h!)*PkGzr>YYzH<`dwCxaDm-7+46`d z<055C%K$O{uvS=Yk)AMC$@=;W1;)wg^G|6o>z4907WxY|Vuat7x{EBso>;dUUX0Cs zjoB+FR*8|*aC6Svr;&)y&)p+?ZG2yHgunkb^-4D1` zN}phd&|3-|;-)z?W0H!nu%#y;N8o>)xM72~^Io+8);`ZE*i5;Ewm&1CBy^Yo)2WiW z`Cfh*pJ7gCi*ek7?gUearaoioqWWXzLGCYMiQk20L?I?aaul;AaB(UG;cyJadThws zy7ns20YD%SRyBpB z3mxKkFgs^WWE;vJU8t?%99hx$LB?G(*y z9h?lEo&K3C`7fp7A4pGDwpK)vNAaPfqZ@c6qD;?Uh-}XjvDJW(H&;iq05yNK_Lpwq zPf<@PF?l8aTW;%fE2;QLjafSP4e=xCY;y}#Fr`6%&2hHfH20q87?18dRq_e7%d_%+ zGVBBox9{*nH4Z`#O#D+UybX(wec_iDvi(*pp46LN;D-8V+Wnr%k5&eHKuZ`mOb_fZ zO_EaK$Xu#>36CnkxVQmNmqA%@Jaw5wP*z2=mcnF94wJ5}sEDbf9*>?98&t45{Z<&8 zo;7`vbn!v|M8+I-T8bGbd5cO&6(fkVTkIy3Nkdq>!uCL!c=QP)0JA$UNfkwKzXus* zDnZ0+R0A5_Nif<}vO^#3>?o@zel@JQL^X`R4E4~s*`KBUcUV$!u>OQ}-|q)U_kt}W zz~&eEfWv3H21DXJIm~B)1~rC;&h#mapab=Rv}LVD_?{ghdK@{z&HO3++&5MX`+LaLT*!9ALHVkOMbqR zZAYa74g*)7ihYrea0`mFa%l<7GPLP;QSM6;*hF!XUBaV^)1T<0r2N9qq$a5@A zEvYWZ81m`XkL!E|6B02iZ)N-ec}>#2r6xJ@eMn7cK+uTv;3llAEDRO0(rt>NqZX5N zC7XrGX}oK?|Np7%Jm9hX{{K%%xb00wHrab;-9#aYWW;TgRQ6tR8)bKAXA{aMD|^dM z$;h6GvNL~|&!@USu8%(d|M&8^jmN`zo^xH-xz2UYd5_ojR3_ZoJU#W2*s?T5!!{eP zo^lRX4$pO*q%66YI% z=|e%EG-EoCDL=g}74LmXkb18&Cf{nAI+>){bJn#FpXar_sLB`Akl7Bm_C1s2dgB?o zDOaVtIGzFnO=uZSQG)#uDKj zzbzKN^K6PaA;{Cm0@DC;Em}fyOGwdj%4`?DN;wtFTZ`8J_?wM_I@|g)dzFr5CU_urZrD~|5r@PU z51R+{yOhToTFrEurcJP%ES7f!Lemrj2d^@SIj}}PubWN#tvYc8;v!LK7!4EsBK95O zE$P?WoV#IhRql*{I!!QQrf3o9G-dyfP6M?y zwZ9F-eEmJRhel1<4)T(;UU9Y>F@;f&f8aZM4WZCueMt~QjUX_-jlmQWGTGBT*2<TmY9P^C3I&Q8rzFIS{R71L9I=pPn96j|}Exf@smKGb{5_Y{g+T%U>ve;VN zY>wkVM4ME8M$zlR{>XO}!V)=D8C*X=sl z!(7Is2&HHaGTU!Mp4y#PY1Z!&>|po-hncxskd<)QphCLu6m~Sy+0!V>X(T4hJ@)lb z(sG{Toe~FTA^UY$`xXKB)AFx$5pyY}u?i?J?9eOUlv?#omBtdEOjR3l$6l|t%9ndY z-|fqzPWy!>nni~6t`C$`tB^D$jH*d;OSP(XG;OQ3EUMDtdgIBQ}dx-v3(dpgh;0e;i*!a-A$lGe{1CyHyv z=PjPq8m%_5_b_8!-KCyON|WT&dylQnwJhAtVw^wkk?8k|G{UIn{v}%3kL~=aJC?%k zpGBS-3Wrarp_Lz@xKzkg`fkbD6UMw+=I@5w#$Fo&#hVs)#t<$5eWecQD{TKUz-T(a z>>N(@79cPXh_y9zwyN@9d0g!Dv>=qP^#c}1^PD2He`(%1BH5(L9^AV?pN*b@?5gYg z_{X9XUGbp{5LJ8ISjBLaX>?&%s#mOSJ3QI24y__wLfTqq>qZMOrsyQMyrvTND87BK zqI+_+O@vpRxH$>gJD9Eb#N!6dg3}2GhBu8X_?q+zg zSrOG*uBOz+Z!x@RZrvC5gZC!G$FFRfjr{W6h#vfmFlWk|n#G08(aE07>{rvVtW!CQ zpQa2uJzDD7?xiR+mc1L0e69q!rZ+km>m|+Yn<|9sT)xYyuT*q{WQmsj5!-~uc* z>{w2byE0ksq*gE8pX-MsxR>c1mNrk=mn(KN(xNt_B8${mv?8d=OsbUgLG~6Uf+zL| zZ)+tJDwcP84PR#y^AlaUrnJ=o8wPVA*9um<9Tt}2DA_cjLmVgZo{xFSf~WkJ*%$Ox zCZi2}pTMqX)H>`!w;vAW=J&sQ_;&O2E+{yVfbeqgFt9Gt1lIq5=q!%L_J6&QPDPOh zJX6)Ak|lsopz7=Bv>1^HQ4wDEGg9b&V;J18BW5Wn6Q^RQYvf*gJ=-t_p>;FtF z!>%V>CDTHOkf8Kcd{W%1SJnR4hPq>~!}EntoxRW_Z}RywU*YPKeue%GUER}VzRCX4 zR%2ky^fH1xZ@Px%xg(Eo&9Lc>*KQw*Rnu=8UHD4#h1D%L<2H6qX^o!AjSrzAu;>NL zgDTgfh=vk_ZhQFT3ymqd;q;J6JQearvcKwfkT4 zjfM8^P^l>yVtz7tQSxA^%dzUcm?f)<&hu(?r|WV?Lib5HstiP|{4Xa_@>>XTJ2+*P zd%f)eM1`t!MeIF35`-I-y1#$IpeTQ#KnOAu2B%=5JYT!4&9vM?jjQLusb7*{+aOi4dPFj2 zFDiI3a3k150b?p4V&NPbH`5%|&Dn(+tyC{89AXFkM#koI*{pO4e$OvJzkwd(nBf*7YO^H2$eB$>ukThXsCqekkDc2J&``wfxZa!ko6 z-ZZQ?`C)JX@^7XQbN^BbJRNg@;p|_bvsShaW_GqP8y;CZJD967@COVKp!oUbeWrKf z*w}VF_}sRdQ(MpWZr?eE`-B`JBDNz0s_}x~e4^^3($KG0;~z^1XCtWU5+n&91knz-Be5INqeN6PG<8 zJLL28VG|=Le6eOm%sMiaXV8_Qx|QJ0`Wtllv{@J9N{w-nb=(PufUwD!%Ien4^p9L7 z3R;QcO*$PhPPL7BX6(xxYc48R!>fPzspVhA$@fskq9na*Nah}LDY3)0?-7sArg?Ep zCLJPec`c+qj{ix4czK(ae3V)FV4al}TU+;WsOZE}*;Re}p$F~7E??2j4B8*5&=vLt z!f@C(bzMR%&cD!$Z6RoCr_5ihYMi%~9SP-NKd>&~wC?;aMKr#l74N>3!bc@!F+~-1 zex8fdsJ{`X#+2fU{M)VNP~Gkr6`R-Z9jN@p+Ninh)fp3vGiaD|w>HZ+^Ri_r6p!V- z;CWxIZ)_!{@ip6|KG(mS-I~Siz``5l6D&+D^dW~lK1aXecAkp(3!1S!Ux7T5QEq7O z8?|P3ePx&O+=ChIfim1^{9vaJ+wW0%k6~`&ST|ZOT*?{B#v~uW%@mW{mfjo`mC4(= zFo?$+FM-|_utOLxDzl3c8NMi{_|c8u?ZOO`NKyFk8x;PlGq?&?f>@;TiL|EJWN^0G z3m9+JBo0-XevG60@g$v-k{M&DGoOU6!vuHcYZ(>lh6$&WjTEFAiH_{3*r|3i&gBkm zKG2{9V!)r2$#|3dCeP1)z^Wj0Rm!~Ba4-U=k_=QyN*l<~Ar_K%Ta?0dljv0 zP0fBj0SGNU&5KZyBR6L!OgL6dKmf|6J6KWUFc>Ze{0T)vXgkqU8yGkxEMEt*L09Bkbd#)f-9u&AH7bfrWL?Z1tUkAH5GOP;C9~ zT{WsAeH%+?tQ{mqx@H~Q=1z6r7Uz5I@Mn#p6k`o}>MXrNrVn#u9`qlosRUnH?h?>h z>9oZ6eFzx7@hDvO^2TKS<<|*jJrTN|meTwn%Be$X;JxG-%+C{TX&qc3|HKl*WWvX&^pSIiH@Q`34XGBf;`rbFc zrK-CT?7~2qfKiURw(#pI{Bts`}m$2w$nBVMZtQ$%!>JG*MvDeO`{fx zxRgiOsyPRfu}R(_|UL^aqJ|BMjU5}BDC+>a7~0ZtH*XE(^pD+31>EE6D=v| z{viC=IvCs$m(iar>AQy>e@pj;SB#NT?=i#9hqCkqZ^_5yTaf#D*?pQZYJIi`ArxFW zctos=lF*N9#h3irweAei6PciksM{sxk5Sl0eic5PM^CMu6?m$aCKke^Arxe(E$l!d zmX=DdDhL@MQZRdwwh@(~bsAK&E%ueAy4+lyq<+Z^Uukm2_sCCgh{Rw!YPSIEm2P0Y!t=+G=CmS!Hq6HH z=U#p2P1O^*FV8Pbjx!ZZ9@#fW)`#E(Agr5M!gz=@1L8qg1O+082E~Q zuvE`ho(kfJL(aAC7LDQf6d^R9ZcEZa(c3GzUGEBJMm>50s}w#oD(H&10&(}}ev?Tw zp}6oONPiV0SY~k}rHe6V&BQ`l8X*r?lz6(=!+vFlk?$!@jxixSttbs);>F-pI%V}- zuiF+XVy{f&yzo|srKOUyl!rtAv58b1@qs=WhDCcqX~SR1 ze#kZS9ioom_3Gye6dPG+Kj(J9HFAw@@IEs%-OrU?EOP}XZg`r>T=iMZV(E2?=Zj8l zRZi(g)U85x=e@=*>nXpw9*@Ax-BuWC<;XSBO0c2QyY6ta?4!=LmAxycd&KVT)gVb= z+QkbPYefE+9&vgShKN4NltchOcEn=|vx3Ey&Wa)oYO=-O*a%&0rm)eL^T-y5o+-F`Z2}jp&YeS1s&`pet&TBJbZATE+3xp4 ztgZf*N36u!WVphrolEag>1aamrRCGCYqE}#jEXdb(wNf`8Fnuys)z{_8Py{3&>d}7 zH@joT8T&V^J|?*BKa%_$6i6oIYL00q{CY0z?F-Su48;VCpd!X4@%7=p)S2Qip;rPF z3uIbK7zyh&IWtxMw;qPVb{bPH0gi!g@Q+F8{a4EVkxnK6u&c_sR` z+O7!6f#}-eRn$9V?+>x(Fo__^=8l81EOhS&v#T53=B_Ge!*0$*{P64P(w`!aD##im zY2q75Ug*ozT$FQN^&ji%o!5d?a15aZqvlfkKR(B zy2+;x?CfA|jW>qYe?D<3K|M!;2KdSW(;tznB^jU>{ywl!fO*kh2LZ}g*^^&Xp|@nY zl+_e@jyh2Qb&y|0FQ5nmMR$&el=FdqLIuV+lD~@m{Vl`y#8&gWsH&`*vLaOT7PqP* zl7NCD1giX3)hH+@mE!=+2X+>KJMphN|J__5?a$BSq{N9n)JX|T*nJZ_Gkb?qMZuL3 z{VMraWjf%Zf7wm{Sv9yk*{SkD;PStxkx0hhQlIwdml7@kuY);Y000tv{5~>#YXHV| zWqGKYCY0O3#Q|KfAw5mwGH}a$fD6s=yBG>ehVO}L=&AFTgV~$?OP2-A%VDO&)&oW& z8KCrud&I9J!}k$zS^vd5wM7DEt=AQ8Bm;nVz~?mU0s)8x?ERZsofzqu`2Jo`f>{T{ zlkB&F3uFkKE7Pw=0Y5W*Xa3CkyLF~#6ItiKw&(z7+76s4>nWlKa4k=rDYA8d8`Xb8 zxpuVNrT|zjaMv!Kf>M(I5vu86_VDaBy4pJsngM6c4rDU8cnT**@h9BBNhgmpwD%zW z4M17s`rG0D7c9efnEGF&--?MpZ86}R0hW44!rn21VgD9>2h+d`;7A%8+nKaqiYfou z`M|2sNGg;AME%D@akfS@xW!;$UL>0qxV)#j&Og}yzA-1G2UzeG$sz*ghNoF)%fEtK z2Nn%Q66yIs#8VQYU=CPW6UmY12XoHQ*#zUjT75{Ij4%lIpEnjPM~CEO0#m0`7wjkJ zpW<}jR)IyikhHJjAlm5(`Pp|9ERBW4l}mteXA5P48wl18LJ}9GLBwCr#UGS}z+|v! z36k6{_XqNS-Waf40g^|n1mgYm9{q=S0k~=4Y|uy)w%VB}WNv6M3Y?4-iTa><77Ce& z^ykU`S87slW#HVE$jV5x|JTaS$Ycqw4xH!^S)I1d|5tTqcVcj=F(me~!CBb9$2enT z;xTYL!3lYgKyBl*fd5F(14e-pa3E1d=4YXPrQ-l|z@hs{PM!7HoYR5)U>-PV8p%W4 zKb!aG5Na?R94v=q|FA!s{g2Q&Fbo_PgM{h3oDBm9$$*Jq_j4ps(erHLZ)bEc3hbPV zMA`fN0rlHe7t8`XKq6UskI!Zy-66p&u)i6SB?>=_^+)eBFc|C`g9Oh7p9wz0QwGcg zyG|gPR8RlRJncvUW`a%ZNTy=gpP68TJD3W##UiQp5oc1*w9JC3U>g>a8W|0u{$7ur zVbKC(!S(?p_UZFKVgGC`0Mo&Hf=K#y{GaHjCnW#aAq2z0+e=9Jg{1!hetNU%#x)GU UgpPtD2z>DYYp}SJr5?)v0beu;=l}o! diff --git a/jar-flat/lib/junit-4.12.jar b/jar-flat/lib/junit-4.12.jar deleted file mode 100644 index 3a7fc266c3e32283a2b21fe12166ebdcc33a1da1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 314932 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

&R7;REBZd0NaNVcN6Eoy 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

?@Ib4$R$ZbA6MIsF(ZEk4Ii=sfRBa)&Yo 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�^9Ew!K(j87!gFtE+SC|A#I#UVt_@yA-l7(**V4qD^4ptMm z6GaRn1&jJ%az?1}^NJ_fR#63mp@PL8qZJ-fl9^Ug znbf4ZM++F6Mxu@f{WX?}8F6pD4Os@KQz4oDFW^U%p3?6mFk zDmt(c%0mC$KZ4KBC&x-%E}>7`DOI4mW9c3+GCu{r?Z@>w3uOD9KOicqZo zS^VviU_O4M>Cy3%4g(?ei7I31`xGlLPc@Sqd3htVfS2Z2?TUHGkZ9SHB{xmw<4rXD z(J4t%6TShX7IZ|EtGaa}O3f)oTfxYIMY!Y=To^4Wsi{qvhJ;rYc3VMgO>ueUJ)uK4 zF{72#z>h>DsiqF|ARu(&C^TS)e$tvm2{yZ?rk%J;>Imisiv{* zH^>ed>z=V+vS^)jMr(b#9-X7wl9Fl^D0z#2^zxB=>@Ehq#;m-CDDb+QYjIuJL2`LP zyvCfAQT237NV)k&Ad0d~5RMeaXJf~h76GFwo8acxP5)T~a*dxV$WIbH{7ICE%AHZk z{R-yc)el}7M=$I2f)YHTPVW;}A+y9Qnbu-u?woT@s-HYJ0{g4A(aK>Zx7+&Ao?V0_YJihBm1}_5v*=hW(-#R(Z z9yQEw`}{vYVEqidGX+pESkX{JcMO@Yh5|z4L+e9Dkhf>`NoU|Xz!9jRtF_~26=CW2 z!$V70yj#GzZ+Vf`Os-#vvy)Gmnf@1D?;ITKyKM`{wr$&5v2EM7R-6^vwr$(CZQIF; zlP|w>&OLkI`u44Q8})W||IyEUFvlEYOb<3c{M``82ToW%$z1T6i9=9C?pvh~>46y& zN0kA3mQD&G|E|Ck(0$IdZlZk^*cuBr9Ra7WLIny{ng!Kbr+a^gu~FqrK}Kec+AIaz z8IiUCfE%zGJ0i6Q1XP9NKmITYn{o-^yY(ssOY=qWIh88lZe@{&P@iXVre*A zX!B41h{epD>O|wDl_Vvo^m}Gm_qYRcl)-2eH&1B+mbULoAea11;*I7p!LiJ8noQ;@ zjRWmC>Z^pKN(F8!b;w*t7nWBMse9;&2*X8vgy^rIcx6E^p|}a zt}v1hhKeaK5EX2md!tDQvdfGcifvA)MYgjk)ha99>j^AoRcUX4^JPaMx=V8lutFRr zn5xCmPFG_RqX`kgg>eRJqlI4l{kOCR#Smi5TZ<21KNLqurcYl`w-@boMrz^~9DsWa zcGjq#og?={qmenv4rl@0v2RY@P!_nhhbn`2&fVZ|E*KcQAmh#Uwhch_|Hvjma4E2; z*EG+*^N%Djuy~akX;kiXWR05^Kt|29Kb*hE1jjgkz%_8;p)&?(kZm1HzrvOKb9-F_ zJ@^;t>D9pS{DQV1A;+GHmXsWX_SrE;FRiFd_gU|DNK)aoTU9zX8Ox1-Kh^Hht?0L5 zn$O@Mh`BSIyMO}R6>d{M6ezRFD_9RInRF>(#nI1dPF?aip>}1?mB|Z&4M$JqTX60avDBVS~k>R>TVgmLIqYT%P=n!T6FdK9gp z>ecKN^Ca$$Z-$nS0|>5EA+Okin5HH27$aXXP<+mioIfi(XxA31mwy=|>JI+&mX*2`JMt$DM+wEn)~u`(s)n`G)06 zk&2}$RN>D)HzAPW-(z@U&?F`UU%ls~K=b{aqr!G|2zY+e%d6>4A3d+tuOFxx{OaO{ zV#GZc(qRvySA4a2*$_X+f#;kSZ2&Y9#zF8&7+Cg(nc5t}#3Noj@PSLz5H~aWNKLm8 zVn1$1HA%eh!W31+6Rgq&`TK@J69aT^fUg zYywm7K^-4QnPN~6*eqe$okP*ZAX^t$UkC@qGXiN;pA>lf5jg2K$nV-5^KD5o3O_Lp zL%nC2wnR6tZ!}^r$rq&fzgDM;x9|LNlUwfj#r8-7dtR_+-r#umi2MGxG4IbjzTBdjBSLAVdD2jMKPKO4rG(OGE&BQM(>3qXP?=#Nzf0z+TMyVgjup>T z9bf0yUD4yk^Znj0@DhcJdC3M)e1sc+v z`#i4+gx_BhA0eORR@PH= zd^*M>cdx?uc*cYjvXm$1xhTi>cQpGAuPwMs(c!yY1co?fdgY$08LN_0a2i1%z^%nse7)b{^x=LH!WgoJVjK?|>GlU8c%`Do1OecMJ23{5aw9DpK~4}p8mbEN2J%)0 zQk;ZA)IhNZp3hN}dp75>Vw(zVR#YspLE6l%>~e!W;e zBV36f8b+WsCoO8OIW2c<$>co{w_%FxKtmL2a-NedooCfswU=c~m;SUnMnrVPWz;wK z46a_TfC=#R#=<_ zRjf#Qox9#RYGl9`Z0efog)m5}SuANfn zcLI}r)LP3%YCX0(oERw~JvV4e%rL0^hK8y)D!yACnc_CYaF*y%wRYH^TJ8kR?xI6n zU1y~#8KBejd3>9i0^{V>&gWA!xBJ92;9S2uc=)Z8z-qJY*W&7i%X{odEB;Bvet9$) z|Cgu=HymyNmT)>dFHtr;3z{k2S;x&XM>%4S9p3FUpg1e;2-&JY35eLhZr&+!8xCTx zh&i(xK+0@-Pr__w@6)h&JKro3NkG}3OkDU=m{~U4jT{!a6*g5hGk>xXNqJPr73X&) z6DOBQCHW_6_6%Fwj&pQIpd+|GB2(S(6yq9Z_j%T|>-3~fBUd02y1iemr!2Fl^Ki-Sftj^bAmW4X;)+p#Z%@UsY#TGHDkrqGK=}|)*Owkm6&HWDT+kM5U-=L| z4@Y-gr*aq-+IIeh4F6MI^r)1HcKewu;0OQ!hppEkTAe&-YD8>+&%(6`~ z%zz0BSjjLIZ6l3B8V7OmIb20kd@{U>w7J31DuPfc0u3k1(SC4ObdRtDX2f0_hFm!l z968d@WEJiqxp%cq$i~&(b7)o`$bhtiF%ht6< z@*yjnHq}~FMp@7}3n8jJ|Ke!bozqIQVq}R0)RQ_SLp_aNT?Hjg0JK2gA(1urrZsKJ zC+Z)iaL12pZYt(Xs8r#h~s9M#Eo5Be(T>Tq8vR-;sSJ)Ta<7 zX47vTxNiiTv#SJ~ zv*)y3G!$RF2i@lerblI-YV_z-y+`d;wT}(EV<@Q+o@%-th3YRz{}k!>aTu{^ zxP`jLHB!9{J!zW{ymd_`QjP;*4f)5x^^k+8^_s3|l*U%$J*mi()I|^t!=Yzq zm$v34Uj;2R4x(Uk&63l%ORGWbIv%HS6!J5XjZY-qVJ0vQB%UMkFf#2$QRJ4SwteXO z2m~<~HFM;e0RJmgPs=f4rjXO1k^!UoccpkAN0TU`7d!yTU!m7F~_2hV`Bo} zJf*9`eF?u|Wh`-(02?pJf*^Hpe=SVb}P_&1?FQ}aDXM!hP5>8h#S+iXXuxF4qqZIPP zoor~nm=mE(xkhAIo1G%Z15`qDllad08)ibO?MVsLwiFfQ0M3=T?#pZ9!>i#?vi7y7 z+Gt$?m+Goc5W|ONh-ns=4|B7{jAfme`+qu8U_<>D=)-u|85WhKOu^f27fEcugH^`SkiW6CKE@sg((dz1_ zqvgKRZS$`axPq#O^$s!A^$!tjK=b!M@Vh1qk8s^O!Bh5Mdhp3Ujj4YCCFjsO)@LxD zQ`*<_@<+;VAQ%nxu-sjOr~2Bf4Y-Tzvt|ar5o65^JDIPK7>K}8i?#dokwVEHFwv!> zencnZ=BZnSrvDDq8sMz-0B_P7%72>d@wLlpD9(BUGUe)*j`)riJ+6o_xHicB%`_PR zGlv)5Kku_XDoCkgaht>2oHj`H2gVOMO!`b ziPB->7r_%90P<_lCG?@{1MZ-?x7KjiWvKT6gtr#p_NrCr&7~xm$) z!bOs2BBc9U8Zc|MtD_wgMP8^#C}r@U0KDbrZUI=r5;SW@_%oTD%zw9Xe*DU;^}R8K zQduW5qqvW4X!Pg$CF4TBvE5=IHCam{^brW1L~Ss`m4#5;{fN3ICU zJ55r3<}W%z;~Cg|Zh+fAduvs24_En?&hdn*tN(%qY(Nyg#N)IC+TN>*k4^;NySI+G z=ubcEPm3D?1UyJc=3NlR5DAQ40)QsLB3a#JzVDO3B}URzGN_Yl4)vGl8dr#hbX6c- zMa1|?9Q^g)aekpBHx_%#3kPz4(HOL8vfFD4pi;$Mbvw@eV*m~(iN+0XMWJv5c4k0< zwXQjOWN>9wk#L^sfpb??QLFW8PM^EBd|nxm{BD-l?@WYgn(dS63on2ETZ)Is-=-S$ z_)PAo>|DWav)_RQ??L|6d1wB^L{4lmCqX1u3~7;ma4)Xn#EwuRO|5 ze5tuGoi2+9L3(N~dZ-z+Dh=IMVF&dWEppUw0AKHq$6)mj%{{~VSC&sq+S$m-#;-q6 z%M0TA)58$QHsMfcXf!lT#@B6Hmry$=Hhl~l7q_0eu5Fen7kB{>=mux|{x5e0)ZnW3Bj&YsckZM$!rSE}O@_>oeaI#GC%Msvb_sV=+xs zE6#A7j($RL*)v&k{FSFS7_JM1G;nv&d)U8*zLFIF(?+1*QyQrCS8V3h0R4SX4+}%(MF#^q!FXX z?$g|3#Hfqzc$NLzF#eOb1)$sU$Ndar*UvCg{fC+SzlO;FByT3h|7MFE6({v0ct;7E z5qDpr3Wa)E9>f?FHjJc>g1n0}52aK73mnOzzHYpJF6UT59SPk+_M>^vn%|8G(wW?B zb2{!g+3xo3>;ziv4-W$|l^J9#DR@Oei&vL63?saNByH0{A5W-ua&a8(mBk!}(;j(f zJ6LJM4dr;lHxj>;5PN%vshju6>f^B2@+VYEh~|K9hs~pNA1IctK4ycQfRsIt#%7HpitrD*w^0DOL^KxD6f4b~x@)pEdq=Su$30 z!?O!9`GOerlG1+Y{re7C&JM$TndiO-R!$jR#P*AMa{V=nrN9boTN~s59;Ng2eM1BFKH1hBwbC~_F zxSY9rY(>rkK+#tR0O>$AryZQAV2GpoYv=B2UJ5W_CBIVAXG>QaTs~JFp0%Hx#j|2t@t-c{jY-Txi zF7n{4B@!8tBi}xjYE48&_aW@a+jA$gMPnUcz$&V&i@r zLpL4%4D_6y@NLSE!oipHrUz~>15x=P2%#Hwcqj0#MezQL;fpR1ec(kFBP?VLkfZ~RG&B-a!-$VHPSa?cjpeDY2W}R?P~^N{Z6l9 z^d+SKQ;g}YF7iuDy$h%Bdzakc!w%vbz0Z}KIDs!}_lL?pt9@7k#7TjwYLck{nC2rO z+80Zeas=fb*iS{1P!Y&R6f-VqQcC5ntd=jLgQmb*t}1?h*q|$pbvQ=>lY?xK6H~h6 zR;^g2AS1X!6O&wP30u*`gc*0^BKT0x-Hj;9rluA}9#eGC);V-lhve@U zckt@WwBoc#^o@*p5skOkOzPJudO`a30jes4yakRvhe_%0=i zWZ_ud=WnQm%wSAmBX628w+n+U>Cr}-@`uf%J^s&kk(mojZONFsZmI)0Q>0Ai`&mmw z9@Y$BMT0%ydVv1Xn27fD(5T=G|jZ9{y_&_cwk8`8R zT}hBkS}#kXOi!h*^FuX}vK7o)T#b$k2P6*AE3Kkv2zlmrg&)cfKj=MmTHB06pJ5bA{g+2XM z%M~|I){Vq3;IW$WCqTyZOc4x8SsIK?;v{U=BZ|e2jOs3g5>-`_)*Q>U2;*bbU^=*L zJRwb$<3Nd`8v;Z+M1us2S2mC*oZWVi_tz(rNN9SqWXnDwySBJ>fPAjLYhhNy+Fw}U zD!Xi9YFHn*qlrRhIS9iHLc^C^-J=AE(OO1>a&{BRPfR0=!&0S?azq$AK9Qb)%y5K6 z?6%@wvm`0|Y%DUj%v}Wa_pj=aZ_dx&kc62%vl3U(bHbxyT?_y95o7Z>P@K(oc~ROv zZ(+zr2+XK#G**ubBU5w<1y?=B$#gw~GP%8n-STxe-=rP*meBHgdSvI9tr$kX7uUrr z`GrIW$r-9aDdbrTmZ>$RbUYl{r`Vo=_ zx9@sSv$DA8ceZ+sjJ58apwv5FqG9ua+PO4&tkj&2nv6$XsS_3t9-m{=s560arAQuB z4;n{3Xzbbe8Il63=+4Arv#nBFQ|015eeIJD&1Lm)DRp8t#P6!G-MzUE^(n`3g7$}M zq{H=#iYilNtct_p6|6B`rS%HkY(L{T8TzW-_%HvLI91xMWT$P=02dr$&sb#&H&gbQ z7NnD}qGqHe`szkth#zt;G@Ew5fRQ^T+FQF96RV9T*mii!+@9unX&zezEtu>9%oSEv zm|4M@w6iQV!V`EuQ z5z%ZfXQpDPZn>|rIvk0@1PA+jzy1+F<7ciaBHw?Fyox{B)jCQ42 zZXAWKnB{Uh5-*|&{$-iK<^2Zf3wRUZJG6+Vr4@@ygiCg%Tb8}O2`~A1)d~T@9;kSx z;!!4zclC1xlbj3th=7bUAG9BAQ=OHhFfLW=Mx_@Zn^SXVkrq;h+eyr0rihMqLt?P3 zg@3UubJp<{SFq2)SglL3mt?^3kW55jSjRDGb}Rj6_G4gKi*4B!0kt8@v;@ypg`%9; zy8}yLyfEbu`TDuJDvaX6#9L4w(RZl#?;((a)8$(*&vUV0$|Qugq9gN)7j=V8y=3^gx^P4osQd4wVYj7KwkY?SHs|vwWL*7sCxbuGudR<64M)?{YIE(ttoIGZ%aTC zTSzB;n%ziIORx_M?egJSCB31y;SIjGV>#d08s0uTd#a3ah8gCB47t=Va$VKx@p|@EQX|+7n)2(swd$7E>Z<&75aN0sdrEb zX$5tbNyET7+wkhj)h6Mq-k&e^^~yGWTa9j)c<2RbvYd3h8I$ADD6G)dfo`vU)A3B! zg?S=YS~IiZzWL~Y4Rt5SyTZ*8;z&X2lq~6E)8w`eocd4ainIwWi?9nIAsH8jghR-_ zurlEHRIN$&!-Fy!HbVfg3SsE+myu1_+bQemwv`KqOsfhKIS1}3|9jfR2Y5G1S2#;& zyo`})Vg?tqzV>@ifzr8~mOO47w8!88DBfS=j977FTn}JSn+g8=4{VRE-_(LUlcAdgo3x zBK4Fr;>N+v8W<>YBi24~vmrreh)x?lD4%FpV@4rXq#&bep=&H#EZ~(W-Q-3nEgGpd z#H`bl&hU7JD8zW)q2b9-6!_piJG8`uZE!l)5WC?jLmIB@0=L+1wUH&OPQN#!> zn}?v>_x^hIRNHfV0(lMM{I-rfhT;jYmNg9+b8n0q?mWwFAi<@{eTOk?$r75Ow0Bzy?YL3Pl!!2KE^`)A|S zYuO=JCdsLccW}vH2~-K+l_6&@ zJ`G%^{x2fB4Ea-EN#<>;HsEA5!nV2BDB!~Y$emd-U_%zbO;Yyu+;zkzsp=&)XQ5N$ zMZbP7{VIm`GeLR>R=}^f38T8>`-W8+=}mML0$Qwm5hwS>I6p{Wv$=t1I__c<%)_@M zmN{T9mt`Yl?>ENr+Vwk&KWWo{%TDJ{#y7>By(S^~=SGg>7KT)pdH1kx5h zG<*Hk;VpB%qVZF!pFkJXN;ej`?<*$$j5UYwrSeAaxWIp*h;=$}>9@M}~4T--9MZ2{*2l_IbfuLpi0sb=4VPAj32u1-eP6OVCT1$>>a^(YKbEv^j?RinW z5E7ZYBkJi6aCxEA3b?U|GtATz%fipK1%&GKJAIEtYgj;Rh-~x~77jlyaTrD{7V~Wo z$feL3Quzy>4Wx37Mxh&?HTC>Jfml+a9&?(H_c;BPP?{Qocyavl_8PIH`?zEo^?_eM z{1wXhXf!-9u^ODyiq*t~zJV1~x3p9`!s-Q&T_M&4)>-{aaO?CB)20NWErk#xlg~KK z2Qxg@09{LM0L)KMqq3WmO%S$I{c57+F-`SBl{y1eR6Kj-R&DA`?xNIRyeGHq%X=oF zd#n1e7oyH#cS(DDrmdSWnZLbW+|lKK;ot{nLA}T$mUzTq4^(60kAQ-IioDy=Bo_{u z^}t?|6Ufr(Ta4~0Ns+Phh`4%XnUdjY7?&pauZPC2g9zE&F;u%4ypb%l(ymSvqWwt) znKt*Wt>ApY7%r>@nGqjudqsIW^4=wB?jZd}>o|;&MC(k7u_Y&Fqd5a)skmd39&SG} zWT+$AGZm9y}QVva9j-9c{h9j@Gi`E1jqD)`BBwN)ht0lf7M)nohq( zc)`RIUyqq9qE~W<@W^sjT)hHXo~hOLo!CRaM>*0?3}>2-lVnwPWMf??ON5ds#vp(B zM9uSJ;b>yzXiS~ptIL@Q|0{E2^p2p$L7`4>>k!D6FAOZYgf~J6nxk`5po0gzsqLTZ zGp+a=>PrJWqTl1!>KFdMaI1gnZka`W=~O>%a$-Lw)s+7sFBY=1u{UtEaI&-guXq1A zhWvMi9HpwGglvZ5!v-m#zJfsHk0dOzh|pcAX#-k?!CwG4C$Cwjnrw`W_TblneFXl3 z?lG6)+L*PM-&M-&-+C2h+rQ6YR?+8P1l)F6GFx(RKd8x)?#aQ*Q5r>lVq?UvLjV$vIRc*WXt6g@eW zTk#GSui^cvVQtr5~2;^9;$yKP1=JuW11?|Wcl&r&0L}eMXVv(L^b>X3a+Fa zbz_ctI$yUO6H2qBm>D`juK1)F1;_FAvi~pu6f_Q~jcYhKfssnYOvNvr?79DOxINAZ zMiP}u`ZzOP*U)yG3F;WkX-!kWz7Mj&kZT2%1nCUk&#M$uT^T`Ki*VPh2jqO`hit;-r#O)Mz$ZSgAB>S~rw!i%A>Z^DXTZ$Usvu z*A(;vGr`llQbJCQBPbY9d&wT`6Ki_EFxW}jmI&29FYix&@XVTl|Couk;;ak8+Elv6 zI5ryXDlu#Y18b(3FN76Vc77pYU*1G%>}Optm96=U{}_pFU~TmtCJiiGY1da=93tqf zywQ?Vr@Z|!v1EO92-ONCLC6ZVB$is#ALyR%+cjG7@ zixv>M3({$)dv5wCNQdCFX@GcPa0#k7UVbyNd)!20FX-;WS+tL_Jz9|MP%R zfNt`TqLXhBagAv!ToFE^oC)7x$u(Z#sv0IiLesEuuuMaEa=RcPTgB!?uFi_l1|jv~ zi+BX+D}LkeF5>N?@S;X_iVwB@A*Tq3ULBEB0Q$;G-z{l)Azuu+v8O1uIbb-5gt0A% znl|UH?Tm7rA2t+jb}&w^;@fTQ6kv6ZH7K=>T#l+F4JnxCP^K@(7RdJo*@x*nAF-jj zz>`_Z<#ZG%(N^~aMRgECVG$4VB7?fWYY|Dl%c6i5C;!w6wHMQQ1mtp^pA;oY(eEhD zb*Q7;bb;Te2Z@tvr=J78M@G^o@U04o>l9?V&i1}UP9gB*4qTVoxt22d?ex4;7>PJz zN2nRHE_MU3NS*}XD*yY9@)gzJG3f=R+9uGyC#a?BzpB1nrVESUv!S0Nj+7DZq z%kHa{{kA24pgRXK8h1lj>XHLK4d9hW$_ISQ)@oy`Z)F4zCC?TLBOP0{|Mreur`Stm zV-lD3BH@tdaCJg)NT~|=o}FuWYZ8AmIiCL8gYPfcpK@_-A)}rqyT)RWHL34O_ktom zC!}kW_*RrD&z+6XZ;#x=j(5prV-`@Qeyca%|9io`K-^4n_*rm+VE_PV{=xLB z<&Zq5=52nMW~Z^Eiv;|D2gclh32?#NWw>98OezMmy~<5ZTJ3GPZkJ^~W{t|OOJ^Rq zg}yd6SyO)?ph-TS5Ez-vWndLMGg&pUiM}c}oJz02dT(ZP-g*YmQnsT_8kS16SxMG} zHxJOhe{Zw!`kmL=O94}o0x86IApfheo_(w`(A-yAq|y7GgxYj@hQ+hTN59E+Occe; zO?IqPw<9tWXB8KyWQTQjCK^R_a}<;?(itRI>3It-Yib&<+I1+7oPy#)jx16X3E6c+ ze<+`gC(v=?z2{=#WTBUzdgB#izLcC4sI2h&!nHCti!*a{!KPcxeS9^~3G?T)SI&Ag z9u=8tBZ#Zrb&z~Qb$mBeKr%_m)nXuj+!j@Bfv@Ox>|LZ?$-Z|W#b={b01~~?yL3|- z!5;(fQiWK*zD7H_^>I}3qlcO#dde6W7v6MS(~Oj0WH&jmKuHJ51eFO?8N6aQZGy>+%B_FK>ufsX^i~}7lb5FHb%oR+?@CvT)P9GcE=^38N zkyEa%>V6fcbl&lhD@rjYn5k(#vO$^6WEWDUHSndD@$=5dV(>%lm174sS1Y&@W?RLq z2A5=+pqvE*+-X5Fk8*mAopaCJPx#NptGOWj7&)LN+-sO zvJ^k5lHV|FPGHdQ+v;VHnf~{e-u{r6(cTd>-nmrXAv2ogsnXij#B!FJk-my+PB6IVM&kddzN*2TCboQSTCbJEiZEU4#$A4YU-1xBkY&$e)v%coK;N* zzbp5k-Vt-p0RuCGgRXJ7c;zU)SRSQWiPWYk&$>c7 zf!CwehSYYU)jqDAZ%^0_4OeMd`cd=c%{mG6q$dmW*vc)bvV)MtO#n_B4GOY>7VK!( zhk%>gw7w?nRucmIktI$_(bancpryKcckoTX59cl{?tQ;mFT39hR@gevmuQMPT{8m;N-oLa`!g#EmHJc-Y+$qV9EN zREo6@5LQb#HjVc}0=G~8asM=e@r>``ma|9Qd)4J0@Me5kzoU@_o%M8@^=z00<(f+h z;uV2MoQ9n!#n%!X&>vxPjUEc^c0lalQq5JKr^RTDygs+*g20ECaRS7;#gP-P^}wT_ zt%p%L9mZUTBAFEmgL^{{u8eg4I_(nO?9g za>-S7|H*`wzBjC1eFk0TA7au>9mv*GaQ>~crpl;nzAks-fj7uvmQeC*K=1nBNuB@H zkj__2zT1ELsVZOq0O0(GrTf2&ga1=NO0iJaK0+P&wo^B4g&B;kHTHvn9G~PLOjXYK zqoFQ}0ZBqgCKz=Lgr3SUxl5z5xSZacZrS7-!PsQkQdp7R+`qV37(rIGWV^mp{Z{q4 z=wsRQc*c3--L~1b$>=`*FzKD*dHwyF^* zdgn_wIN$AV2+)wtoEuA*NG<`wCbj%(90n^0+Oz0^sGh0is`&L>h|!|bTn5IRk>`_f z;zoG`0}rAM^K?S>L1ahfgath2^O!ep$wO73&6kGNgf+1*{T zpEDB{z8&tq0*{g?RZ+}@0h&5QVkF6a!JIP-B07Q)i#5NGilt@9lX|$u@T0kO?z{;M z+uyWdo!=&-+WH9*X;me@FS(5Iu4e|6H4et<=fmc7)%Cft=foCRBDswAMe!+pV;jUg z*kPC+UL)Ed*frwee3cG$mzS4^YWYgJ=8K_4E{^26Tw9j|d$o=54Oy1T9jhWl^E86> zfDPBCtRyE*6#B`wXjfN?C0SLI?HMX!A&uwy)c<_OKu`s?I$qhK@$@KOf!EA*VREc^ zE>-x>#CQ_lAY_xv{`P^mC;4T=nq?xw|v9Z(UGmH)G*Q*B@ZpSG39S9QIm4k zmh%W1DZkP0j*qS861Lb;60u18#F#)urwhFa*T?dOR9P(Ic4MvXU&wM|C6Qfo%8Ai2 zS9fkiRS(r<^;8+RAM91U)_tn@uDLTIbb;QdpjC}v&j-PY{f9M->q*jN@gJ1lPsE*< z16!+SLVT_sx8VRF=UG6wVPzIv>x#vKWEQt8E%)q?t)WtQAFClbyDEMa)|p{2ZGFjn zCKDU0_pEH5S#Y!N4fZs7C2Qwq)-E03e9wF6FQn|(kGpD{ZUNW>c%5TWdQL`*0Xy~w zEt?q6yT3PIc-Y}QZozFkhoUI)iv{*7TxF#^$*{0lFUK~<|enb4S*n0;}p2T(YNoVwxq^lZI#cyG6saw^v zcx$O;+pw`Mh-rDThrfQ>vvbQp8`vcOD0jvS)Ks}Y03zPZA#a9-jbhYH)S~W z$BaX^z9lOjh-7nm?VN+-;SqSw;mzEyC}Li4*sRO8g~8{N6g zL;~MqA*^jo1I?aCb-7LErh@`)B=V&-bBw?C#}fHw6XeTEm@tQ^@v23^3OLCbESG`> z+98=LqBbiVD=8PH2I0uOBz=ZO5S*)wW^X_Y(ph1wnUq?t4|&{hu2Y;7>QqC5NaZ$P z6iOv+xD|6Nz8HijG!{f^JD-F-9u{7WM%7qhH&9as!v|ZrPFcT57n({s*;)(Fu)Lp{ zg2rCKk^~%>t=uu9d^7*trG(1avI$|yrCQlpojNFk67Qp$$r-ZfM4p8sVjo&t@sbA} z$DqTn-<3GbranxSiXSa2qu1j#_*k@b6&ibq4QWmG*m;@y0VJ%!%VvSpErULeSO$I1 z$}-#U8PYN^J-vYvGh7_qQ%6Z-B2OBgsah7vM!Vl%ypYy3qKIq-A6@Ck>+>cL_bN_?gd%;v9{B$=P{GX#5=DI5a*Yc*tda6!m< zHyAtA%M7!QB^fbFII`=TkCHm0>wmENs9mO>d`sr9$aRWop{u41MR-27UHcXq*K+E@ zQZ!ynSSA4}bwvko-NRAL8$>K}lZ^{fH>fv- z`_L86Ae}k6OAw=32#3YctP)d;cP&%C1I0~qi2rl%Do%lYo~ysoiO@SteCC9dl}1r0 zF1jtg+I75Jy0C^r95!N6zVN`d(1+-$Beq+#u;zp`t5%#G#bPn3ahviTEUx>E;Jr6&6^d|`iI;4OV}~~O1wGyfzr}PG zIz+Hkiz8PTs{JzgmMHvoj2)((ZzahZ)`6Y}myEA=u>8zmyYY3L4=Lvb&Aa&XSiWrB3@7y+&V1ZfTKMX|&;0h}_~y*4x(d zVn&)InOyPw4|6Zp`IaedoG`+TeC>7@3)v~!D~mb%0`l3TU6p-Zo)uc9;pgc|9&hnU zc2QN(rUT~OfLbI=6}dTXdBCv=&m1w3s+t{r024*!#bXItmjD%e5*-@Zw+^+*5SuOZ zs(Fr`s>D)3<~20!2B!(g#ozh`3c6?G)cbsh%cm|5FYqoq9J_RWG70_ydEtPZT)}C%?zrtVqmJ-u|5sgYt*V z(FnPSkIrEfvhTPJp^;1Qw$n)NlHc!CsO@wFt8M};&gMIWrWH4or|Ex>+7e4xb$$6p_ZS0T)5PZs&#~w(FSAScmSvCTIA-5Gq&tbSA6h zZiDjb@`y)-A*+hAAN&SsDBQEFV z>8QSh7@Cyw-=2zS8ftqU2_~1#J{?^6x{2Da9aYTxgw%RDBe+XK;l_&W6Azd+Os9Be z3KUB<+!RY#Xp_}UQa0RvuC8sAE?Q8lSq6BptWFHH(VpO;x}4&iYO4B%x$0RBxQWK< z*p=c|LC^J7tUs6==%JWJ(1Sg~kr$1o`46ZhqYJf?>sF0G!?9x9QKv~I4hfGM##=WXYiiZ$G^*w%H4P7f%jlJpU@0b`NqFHT1EL$G zz;yV0kmIw=vCRqZd@2lgOi0EhTeAK7<#h5xM&n_Ae^^<$0dTFWAdJGcD7059Fi;wx zwJvMT5|j`EGC@T}-Jo(+-ZYr~6*Dv%|97@QC&ZxZdc1n=0e6GB=!QcuUFjVjGd{+8 zeZz<%nJzdv1Ln@Vg%-onWdjlXE0@$bpydrkqp}0-hP|yZzy&4Jv*r?UK-GJ4EzXNz zyZyfD^%At|hJA2!0MKHfr(TF(7Cj@+hXB9=bsg6AtZ!~5EK$|3PqW8w+- z1|C)=JZW6cg5(YcyNKBY_%ILS)tla$jBBzKRAx}v>Y zBkamq4?9;ii*?8_ApC5n9gH`p^H`3h{1x56@iz|mKz~`_NmX|3Xz7PLZ=A2wqf{@A>j+-DW0u@ftON_f1id_%&Bs#@G6HzLp zq#1crEedH!3F$x#!t$4YYi9dT#@lFJ{&(Rg(^dVU#1j37jQ1bbq_l;Tv&oN-;D6`6 zE^-~R1N;b?uw<^2LWPlu@PEk2Ezv{$m6It#=k+c@ttYb@e-D3)_JQ9jg#HqPfQ+Mc zRV_$c+nT9)h6h;TkaI}ikBmKQ??$c@RM$zivBRpt6Y06vKN7K7ea*Li%23T>le2uF zah>gmj;Np|gx_wmZP!h;cbfeS>2ir4VqX@fzDbF3pv>UXgopsvP+)b^jo7)k2j7qy zx`-7@6|1(+G#jW7XGc!{9{MncK<~-fy3wruNaRl?P>n~3jt%s)k30*dtVc9M3}Axy z_D`_;*W~<%AZm{u9w#-qFt4#K_se@c-Do{d%%n;ROQ&69U6?1(S6J zqZ0-D>!1G-zj%lw3T6sB#UKhsw-SE1=pR4%(P`)kW=p`w(bGu5xkSrMo)jlQ0FckY zNJ*|jPhCe77bn0~!9w34%vVLh$lk==L!pH)0VxkG9_J%#sN3G{tBAIWWe_MYE~?m+2`JtNqS~})||s14IbTp z80mklIsc=-`!87f|B%_E{!y>;qws7bg9$dGq8ti=($1ohpdbbkh0prS4q@_drRy(6IkB%Cs!quQmQo2p$X4_NmLDd+(!VClrgxkEm`Ax(OmL2%~v@<`k1NUu! zQRuPu2*V6Mgzb^jv*07|QiJumg#I0cJ|SqBEc4dTUpvQkT1}wn2@}UUf&f$JZxK;7 zKG$vk`?XsnIon_9a2fBnOj`{$F_SqMgE_uU1`Ex#yFbkt+ku4fDaIDB#=~YK6`ezI z0_X_s8EdCjTx0vy%dwxvVfWdp#}+e$8fWVtnZ~gE^22WQp*j{1sAI}U{%oeRq@X^A zbzxr}H<1+>20!Z-2NQia5B6N2Ufi6HZWQ_7nc-R}?ncd*F)NUnvJgTT(v;QAk?-*WLyKI4`W81ck zj?uAg+qP|WY}@vVZCf3i9ix+*-h1DDzH{$+o;822AN9^rHR~;mQ5Wh0$9ceJO(++$ zWGjKG=yvP~FvO6a!MG2~R|~Ds+N3{CjWEHqlZ$p#LjF({pdYKsjM<#ctInj(w44J+ zeGS1zBhN}&!nLY&!n{%{JC6w=koX?|)^o3LHFkq}q}8ml5QGvWS^*bvNikLVCBLF` zth_Dah}+5Q1e?9d=vZ?uA6uGv%(0R5z0J7)yJZ+=8yIz02hZA$V-(V;7&7G0euLPz zjBG;TnH~;J<^PjSM&R*A74yhLIt0cu1Gc ze4Dx!bRZ!l^<(Bu(qLP_pOYvK5$2!}{o5!tlGE~Ur8;hJIt zAxzZ6F{Lvp-%hX2=n0}JcT8$Re7=Tq$FDqBE7|RvY z1hIrR&7Ck(9_#8cqSBs5PRyP{e}=l*2uh}`?7N1&F^{9jLtPz&=bOR_Av67%bqTR^ z4dzeC@#>FD@Cl8as|$S($o%dGVak0|%$=99XMd_#>+sft&At2K-!!2#4y(BV^Czb* zE*^##Yc)EY%W+icNukjt&roQDyu}$+Ub(*72m)Yio}m@GXFRRqM(NqdQ1*udI#_7t zAVj$=Rz_l`lU(fE3-TtB-XRrZkSBr3_o*`Mg%q-%8n04wsiM@HKuyFZVW?O`lOH&% zEINv5`AUV5mh$0c3o-9N#|8VL>w%OGt|=G%l+ zcdXOucU;RP2$9?5ei1aAx`kEcRgp5)@0gH|S+$Upg{H~LDx!O%Bp+7~=)?X8 z0RLLlq^_oM_hr%Gmqlp*^``#-@P8YlY!qksJUs*i`ajmZfCSU}eY_iBf)(nY1c5-n zze6Z~VtoXaf9j(nQhpd480+sC&VHi;K7@jZ4S_AdWyZ%r$F)8}OmXC7G%!Gk@^45C z58W*UvFY5CV8+J4XltS7a65Ij)^>C+2z8qy_z5MaQ+kF|OVf_kHs};8YP+4D-d8U6 zb{RsksvgSYltW)YZ`|n=PPn)`- z#U}G-({aD}M~5!4M{6p1#FfJqn+$`u-NTffQgtmoJg@qb-t>^CRz64&+dod}ubXD3 z8+^cgx#`gVO1%DaO8;6Xbg}*4iIl(Z-+0JFCxcJ4o#4CFrKGe>l=9CZ3m~3Pc8b zfkXS8h-ik2HE%o7buP_d2bPa#g6y$8id>s2go_I_ha*!Ztuaky({A0ajT(%|XzJNq4ybC;mH98*uIsq6>vI<=+PDGEYOY)X%RXy9&bietl|wC+wpv@C zFIQ8>%vjVRdRKq&kGX$&e9W}p^#kO1g@mJCq{!LkwM?ATwo~S~$wfaY7W7W}zy0XzsKRVeBu7{%;z*qsO%My2R+6qbD(6zm zV8y8Nz~07Xbnlovbj-=WlMbqst|)Ya%_+XKPDHnFo_3OkzST}Vc8D2Ez3~nT;#wK+ zls%Sm>7Lw~kkK53k=7NzKEY)^m8?7Pgn!ezwjz6>XbkUzBUUTiTsF36X*v`EXGnQT zVD1jAWqqbjtUa=V?N+6%WoZ-HmO8AL9!;Gv59y;3X;I~D8{b(XpRSqnsP3~Nx7l^! zs%0l#10ZybFWv?%TnE+qSvE4=Mz|W@}s7;X_*a-li80;k;ey z6kXo%_WEdJ1K{3hv03eGu~IR^QOYy&yVq~x#Fv3(b>l8qH`J$68p<#xz7$58el+JX zV$t}crRds|-GI{Nno&N^o9JM8dqh`$5SQ&}=!$&|{0Ag^ZXny03lFc3`(n_)@n^(F zU!9-64(-)yxh=)I7myWqdh|!EaT5Xt^GoUwGLspYl0}&>cVY|qT9{U;>mahLnyGzl z_B#3&POHeOu^nqSZ${+Urq*JX4-=%yLOnkS`Bb?yu|a8un%KhQckWAT6{S&C@DRmV zS|*h+p1luc=UKiaX*~0knBp@>v3O;)QvHmCmTahHMAM;3qRH{F-&CcrsJPj96+LlO zr6q+Bmr#Sne+hJ`yp&tbQTo=UYnML&Z=Tr9vq= zmHlyJ4U7e{m%*ZUT?-MMUcvdf?aiX3vz^X%YtFTm?7U3I649Ntkt)mT_~B`^%~e2b z`@}VM84)B-NwkVC^P|Q4^?hP}-@%IzTW={!K>8R(M#9W6_HrCJpVz3IbD>GlVd&sY zp!D)W>hUnpBT)KkTXC!xYRuQzoOag?^|ubX?zh)dS01jUmbaE6@Jkhom6E-sn1>-k zSqNE3GGZqZe+SBB)GgIwaONP_ehI0L3+l6iu_{mvwpE0%5)4j~SrSPAICFe5=jMVS zHyQ1_YyVQ!Jl{o8L6>aK4-8as;CPb zym+a#B!B_U9+|d%nyJ!oq7(;-%PRyJurY@fmSk7 z>FuF)Kw8T?e+`=t!H4j^<3B~iGQ4-3PvB&j0rjOXbZ=5P+b&F zVMCY*!@}0=ouJ5SK~H|FJrf0OM=riTaa1CY@vRK;_;m!(z&%=&QdY|epy3g?YZTR+ zU%z$LfWt^N-$&KV&>@+7VXV@61ux+qXaHzlK|*>>{-XQD5-JF^XJn=}$<5nB?(#n`>C<(EXCGXJ4kFL>Y8< zoVzFX05AAa{KEudy=>$Oy8i0#P~9s9{Q3M~1%@7i!QM$%0$i+*n)hb+Rnxgm&r0tW z&owM5visKZ_fU@=SAnrye#3ijNny+Df99k&q2L1$xXj&|O>WIjW!&q>_GWJXp!4_U zww`?N&=J)GGXBnHaQwq_u0ZWXBaap6`x5D>`K?fc{-Ia}rcU$*YZ8p7L_(oaz+wF1 zk9=#t<$|}H9fscu**{~z=7o)yUJRlLcHh#EdJs@!$@IR-AJ$I^Q9xCT(eX`F(7qD! zTFuRzcqL-CA(ABYhpG&H6UWSMdS(g;xHFs`@0U&}Qf(On(@o^CgtG^Wk*u$-cI6_8 z)77zV+>j~J2=TI|Sx*Ac`9Qjv8OrRhl5v$)pAePm59}Z1$xyB;)NhiWv3jh{9eh`m zv3(As_0{e)f)_BYhW1W+X;?xoWv#pJ23{iA1egEQus3y>dhX z$h?%Is9luP1+EJrNB6Zzlg~_;4-+1KBKL+uvpbj*r5H;8XnQh=^aVlN1a)-Jty+zO zhuignxcn{hpo9M|=~dL$W@BR&-v}UYR({$1nmJ_=OgwG=v0D>qn zC|h#xS_~!O=0#Z*vR*v+y2WVFQ4?P3s#8>1-?tKJ)*O0s&SB>bP9*$T!u2`uByzF@n2a** z0gkRw=8E&U$vvpkw?l50E)wzpHTW>WRKB;HqYs!S-pjK_13RuKtOZ@=_zHQiTR1#& zdw%e76`IPMkMJggGX38ZLUY4vhSr|(a76~X_0k-V{?LW_=F~Bk-x{R}j*lOb`z_Dn ztYDK^YWt=D>^)E_PqB6$GKE#x^V@*Se0(RmlBIbAOVSdOgF?%WblbjXRbuM=iLoSb z1S6ryBF{qHN7^g=31pOi=ktqhEVo7?fJ44zS#If z#d(So-A=31#Cxir6V&q1HX0lW#q+clA=2oA(Q$@~hsd7N#`hMlu&ZUr=k)+!yY_Jm z-vsZFD&n|OA~}2lAKBB&b(x<(5R$2nV$4RLc<4C9K5`n1g0POhk;tczIeqcJZ|zcQ zq{Zw2RYo1f5zLtKU?`B$g+isw0*kB2sr}fV8E_{%%gD5k33oo_tT@3crZTfQD^aL` zg(xwhLY$tzH(=&Izxa)=|+b(>y5yjOYucI88+)hm+q@V!d$fwC&GSc9iO+pu^o zdth;CDXo~3PP6%u=Y@n$^BH$aWM>Ly(fBmM67FZOH%|lVq$1r<=fg*aA?jG&l-4mF zxPS?%+!8Pi%~dw(Z}tN=$CQf;_9HJY>q&kaqaQfdb}YQcLIoi^<_RdLoz7UY5Tnq4bI;x^a?tlJ24RMB#;-#3%SRgax$y1mwa%q^B49 zx$Q4}y!)vK+(t?sN;v1e`3eE)2baJ~j4b=(>Op)4Wk)d*K)omqQcEc62l_{^1Uvcz zlVtD*ea`l9OoFh|sR|d|8M62vAYKVQkkqieh%a_;y{GxL;&JK|Ua7+NqPud+YRuxw z<6qoCH4>($9r4=YZz^ruxv9=*?dLQnIQOWJY+Pc$?pOa{m||};UD4_&pm-cPtfQ1` zAe)cP&liSc8$UD{XfjAmEG1~Xl2&7uR2rKUYib~Rl!$KJ1q(oLL#C+?y1!s)qN!&W zv$-YzW<1TiN}BVcz!?^?$)|G1AGk0u-XpnrEUa61Q1(X=SV~;=gZ01XaJ++B5AX(j zOGgL01o9?23rRldx@YaALXS8^jhSP)r=wH{Ubh?AGyLHliA7fng%pk`@&3B30<$m3=o2c3 zAIo*)H}~J9=ONuxH2zWWBYCMjTcPKUMU`Ts+;YQG}X}9>*XNl)tJpk&Z|&zNPpN( z`N4rZp_Sf2k98pqy1#YX1>Sl1ug~-yvfX&#O-hp^%K*6rZ@1-nD%win@YP~2`CumSKRG@zEQ6p^# zQQ@BcdcA?(o&c#|#n8j0SgG^U^gsHR9ml8o-*ORU_O{Qog_LDJfj8r$%*vL_K)r$Q zYoVjYPr@Lv)!GJh^+9Lm;KWyOxToi?az-`Q7qCP{Vhbo%HXSH)O26z-zj*6IvtwE3cc1kSD&_AIV8Gb081U1^-7Gbj7W~QA7sueD}q2k?* zl3Gm1Zv|a-_nhOx-LvKt`^;k-Q!Ov-dBvJ4zlmCW)<5|!6Ow)Q-gxl?m$g0*kPv@B zUYX~?olKqaz}18{M^ui^H0BNARvfe|Pu-QpT9pM@onnh_jHk|n!_SfH3S@W2eRt}b zw+A`60L>-HFL*`k|4`THM25Vnm~Y0WyOB$(ae>TUIq}QW0;w35Ln^}NK^M;32Bs;~ z>*M)@Q7Ig{0(`iCqTm{;iaP;c#gu~?A(_c3%X_^XASn;2HxWd$ zv~g#sIVg3isViFP!C5`zPSSd`K2K)fjLM}@C`3i+!H@7l6*4VAA4_B%Rcg7!`Z1Ka zSd*^{0bd{-Jx?SpcYF_9CZF*W5M=yYGuQ{m)wjIp_1EV=%Hw}KN6z*{SO{O$WZ186 zHR*o~dM55)O~Jp#WT$_L`UsmC**O~gcX`YwVas+w05N3dXvEbfv5Cw^Nizc#ngbp& zppB*?IFOo1gs@rV8m|#fR!K{9qgTk`8!~D#48DJu;H0gpZFs@>yt|p}(FRN7zk5bG zyAg0O04YX?nLgwzsYbKJx87kP9_HQjle8PG3Ns3xDa>VveV*8c?Q}@`=ThOUCu8s2 zK6fmIcYlKgt*m)Yld}87r>uOwaKn%9J(!LT$gmWs8hE4zjGS=7q&|36#smdP`PClp zPQ&}Gl6%VE^zImuex!u^q?ZqB3=qcj7xI{z)2TWPE_gF98A3Lju69!;=A)B)WR1!5 zi*ue*d1bR3hwu!KC+tfL--hS!x`6NR7|mva-j=b)D7JI%tvNf(q}RE-KRP5t#Sw^F zqJO$PDKqP|opjXgwzUPZVaQl_nCnjs8ewRyny$8ch&wyone|92(Tl4Y#ZxYk%UHa0 z6uS*DA+TJ`-_`Y=6whuJlX^;kSL9dk=8AvSVKBi4+Xx7bl_UIfUCA7gnFIDGFmW3p)5aYq3T#OhHOc@ z|M^Ru)J`-?#k@TVPv_UdgNg>f-o+HETGU?3xaB{`tpCt7XO%Kr;c zKa89$T>n+J`(KP&*-A2YU!d~A0XSrEkkTnE2;^JX6S=Hs_;UnM=SND42Y|$kugRng z4>gndfqozzOTt0I+aHS&ZEK=e$P1HNdziW&O^r-P|DCzP6Cik-V5}<_*NU%ZmON3m zM^MFbtFzhZ4uAkIEq3rH#!mL5ri61 z$>X>OcxUTojhmn3ye?M3_s5^-w#AoDw=1e0!U*(wV}UYr-EVQEEULqtH@|4&nU|` z$ul#=1CT$?8U|rtkjkrB;QoS}&e|nSxKhvS8kOtap$lD;!ip#gGqCE33~pab(|TjZ=olZ4(4#+67B;t5y$}8!K(fs@xaVT)Rpb>2kd_}!#PH&$XVGSh znl%nS%9XZKCw4JEXBi;Td|mC|w@T;sFokPnuH9HATzLuGE@pQ(lLcA3`^Ut>U+~!9 zxDKCvfd}p@8WH|q;Q3qaRWfmQvHy3MD@5_%pxJM8Wg;iDp<*ox@dbJj5bm;vIx7Z) zq9PQQLL8|EfMKlQRIfDoMZt&@-hwjgn{Th8W_!2u16#3F@ z+cs9QGfAN!vB{yonD9i22gOES{s`)v8y_82-;GY6DDoI-lU!him|-C1WL0hd85Zn8 z60)s!OiRNd-yVAqwfd-q*ZOdv?2Sa^J=vIbx@C8bC;+KfQoiUFG0L32Rwc%lL8NJp za<e@>;G_RuxkQ7T38ujTonq`Z?yKfet0yy;A+cL$8f8~!$W2Hs+JF8JqPM>|(I2S{ zN&X5j7+(tNcMI`dX)m+E(Ls~KEc^shOg?Hs6<6ccs}Y%LF|IqcWpiiN zv{~L9He$cIck)hCbYVbkQ{9S!R7_wD|$esfsRR|{Iq#&TfX}WD3%<6 z8)zWMm3Oho0TrF*fIN_0=w9c~&$)EfO^Z;u0KH;)DZqMHp1((9PdXGKhO>1CbXOMm z_c@t0Wf4?|m~tC^SKfI69Pu2o2&^1WR`q`1u?&MG&BmcqV(%++^Wi+Z=hqd zgk>V@+Fth|88*;dZ|w3gm94#&!vhwt;LJ6yYc4u4L;LoAHrgfTunOGC9?HlweRd*A zw}utA<>+Tt5;OF=m)$v0$ug1QJ1>}?h*$9Kaaeno=>fJ#=oN3e410S#;htNx2oD|#B5)N)FwjB|La zY=mDfdMOWj4}O#!Mq;gox#_GPPw>*TVUi0t(Ho?t(lO(=^|c}`;CV{@bz`MLY1oe> z1um{TZt$G6Xz&$Vynfq4giO{FreF`^&F`Z_`)TNo;Oq_)qzO#8P@Yc)=w!o34*=}O zF^**GTQyV1@ci6ednezQx7xG5Z`q;ZOp&dIXHd(?Z37F;GZ-F?y`r0Bn_a4bshDhG zKVdz-qq7dR^Wdx`Ra{0ydu8xnZSJE?GJ+_oLnRF!~_B>4jKyayhyILAy8_i+#C_+=wV?zgUFe zdM^>@sC-Mg;#2ErhrM}d6XO!;Z<`q33Ai?CB<5CNwYDUBC8ktkF{wA!>h;ajyNxawdQ?5>aw%2YU&CIXTSt?eV^8Wq?Zui`p$6F$igK3E!buzQX+RLCKJXA{4!bGYq1On5F09pGDdP}Q z>=<4gRl-}bRp2X25o^{|HjCYM$i1oMGnvF_hjCYaURNhI&HHv5nCI^M4|RsW7}Y+D=GHPH_B>AR zcHQ-N!uD$N{o`$)!XJxAWj4qgHiRP*S}^TInEh(>peT?ksfZnKAUaTXGr6zo{%Eg_ z;vzyX8e1=e1_ zE=sJy64vWo$au|%DnojQ3PW?Fa(>lXj?y6mTzT_TQxTO$bpZkb*08K=O&WRa`B8$> z6ZR%D!(&A!l{r4FkYg*Oao!7ZbLcU&O_Ws>%zBfsXHfx$1ey?L>~4J|^N~ulfRT7^ z@#7@RB(~c@4Hz0bQ;i{#T)5pf6bE|QezI9VqqnWjQSM#Eaa`-{hz z_v7yf6kfNH$I11Ky3CLE?nk=I$g?T(R!i7KjJ_Nxu-_Ay#jSHfGof=r`D^hQL_G+9 zj3Fp1NTdnksAQXZ9SP=K!e>pHHw6#Wn4a+P^emWyQP)tpMqT4&1o+zdfN@DjSxuV1 zLk?l}J~gz-(iNo^W+1*eTmD$!w-o@fyH+02+iGlwc>@k1YPgT%9^h`YxPpuNjW!95g zq?4DOODr^lQ4=-um_m|B>15_rf>YB|P1nby(>xZM%F4nC2^%6L<9(nC1hw>$DbeM> z(bcqFNA7jgL>BD$U3I2QFRUch>RkgS+CSH3+7kzA`CK7;9c5@nn%n5ZE!uQP;C{H< zchT}84@z#TPp^r&c+-Xh@zHOvpRUsU!ZB&n2$ef&BMTpYpRQ&G(1{Ojlb^-lP|#F0}PXF!=C5I}DUAHnMQ{Xu^41c!mR3!6KAiyrgT z4iz(Tr}Yow!bczu!~uD(@jJ3FKthq0M(NfKCWuHweFG^dpE;wj#XX<(}=FG|a70q_3 z4sXZFkS7l|;&8d80VYe_DJ#lQy5vWL{x2+NShZK_bH*_T*Rnb&D!#I=EnwUNMgl7ESyHMC5qjsT{b48 zmpUTF4|#7dB^IVjJUm_$`lWreNO_CSY0$vORYw@i9v1z4J$f=*F; z`XFO*LjT0yklyGoYFP}Aj&^qh1VTfqu&+s)WR%!U6Bx z`T=o44rtqFjBv&_9&Lb7a+a>6WC1HLO5hEaQ`ebx$c(!Fxy_kFF&?1>so^s^ZajIJ zM3h#4VYmeMSk!P@)=W;%smF4Qvn@sw<_q`{T}d-Fg3W&;pko{j}C7GTTPk3c|k1|!vcnx@x!>Fg18Wf}dixDiibHbJ5_AYTNGuD9F{0^X zAZx+vCh-rNfZ}aW9IoKX5lJacyVi>u!Ty<~NI&QNN(T>5)NQnggZNl^H_WEx5Dk|2 z^u^5OhwHimRs@rBL-Nuo^N*qUYlW!I^|VZ$g-8>pEdkwZ_*2-mkLZD}n*73n2UDA% zx9(rK_@)$dv(FvI_KuCsnE0~6woUU`=uo$M(iI*R`taGR(-5+&*#U2fMRQZ`O5#fK z;^|B(+}UB9{rhD~?wcyI>xSCmKo4SfQHk0)(e#vk5$wUC%Z1mSwo~=~{J^TeZ!bmC zouQ`B9Jr?SB{-CF4%DYyw8ma-v|CfFR`N2OzGKDWZCV`R)35;Vg3J!fx9BNUA7UP0 zsKeqJWDTUpmkLpIEY^ZPvOpB-NPtKq5Coe^8N+TfJ(Gjbk@Px(DW_7n`Wv^vpXXDJ zI^m776(LpVyTg9iA0VBexTD=r_I+s^J7%c{V$m9c*9Qz6Tr{RX{FY_}xXUT0`633; z4bl;a*(dgTN)Bp^Fv&5@xpBSL#s88KyRbfTi$XT9G_1EtSVencDFUvCaAW~oezY$Vfv{d*c#_iSo$foXSSYiU;$GV$ejje=9g3d(+ zo{TeQ0AsuQkd8JKk{!xx)^wkx_-n4}Gw{NwV$RohHVI1=L$fNMG6 znFg>>qP zCLIpel^e6k5|7hMauPH~G)7_555is?(e~X&`i~!bfg?Gx-mFka~yd*`=KuBKrrS4D2@<+JBS@X>*Keh9YE9k)Slj= zN#j*3Kv$bf`63wMQuIkvdBhgBr?c_&VM3!$)52IVG~ubHl(V5SCz6$j?$_00X#sC%xqSX7NAtBHzj9lz(u-l#z~PBfwT#=q#S96~ z5fKU7M#9AiUTS1+u-+3Z3^!##x)2i510!Edk0n)^L4HM@>e#xR&jZ%Zw?M(>G6YF? zUVY-#X}p_}&f7AILHjz-RM>IAHG)p2_Hse3EEEX=p*hTdVYE?g!iFGw^Kh1si=2rhY&Rz>*gxQ)g z%klZ;mh<$sIm0sZ=X$L4Th#~*)MliYW*ycObUVWjN6FDYg4^^5--xcoce35(M*s(( zTMnHR-$0&D+-u+YNpY_em)=mGf%qs7gt+)F9}=k$^;Q<0yUyNT2EmTuYbeop+(img3= z4voFzqCcTLZ7bVPh^0VwN0wu=^Du`wpa9sNeI*U0F5cX+W_!=FxWASVbGdfbx(_YP z33x5>Sy);!+qW9={5GFxolFHdTH0Usq6>fE%*}R=xmx=*hMJs;f8_kZHr&{hkQ#Vb z*rlixSUK=p*->lvG!Oj zcyTW?U8u^k5HB8pQOe;o!gK55X4a_Ofp`LUjliGESy!$n(Xhx@b8dKqb(wQjup!&= zw@~WfW|=sTvG`%7a?DNVr1-_F;--QS#xwI^K5$lfM*40O>9^W+CqiA?C;xW2oRoam zu7ktXe6sN}8K;z0&$G~~W2R5aF_Ss%9GcUTZ2?xgw&>gM(%M09$58E*E<4dK;-ER% zQrga6l<~~SZ?HQ74wVLS@f+d znz$UZStMeT5@t`58d_Y#cFOk-wJ!{x3vT1mxm)kS5GzTx+gbzer3G!89jOWj$T zn8KWSddvHl`lHO3n6AuLR+jQusew)t9|+sd8cB|qwjs81`OFIPs!|hjugYP!MYg{uV<__KPiNqDJxSZ>~VFhT@&f9D*CN;jMzy z#!#E3Ao_FK^Fclkp;7GB&`WUe`lVjJ3wC>;S|)q>(damhPO8{ztY^LkY;-$pobfB1 zjYiHxKzY{rbBj{b!B%7R@}{{h-MUAz$Q1JHN77#jW^mj#aNl5pk=v|*+?`Tz-_YDf zWxD!>UZT$BUWS9`R7c!gY5;dUuc3$PS(}Eucu&EbqW5dM-7XFhHa7GhhxhefyPM8{ zUwdxYs=8zbaMA|ry$VEbgfr*7!JoVzgv=l2JKuS%cH{~!bK%~>{Mc^TdE{!k01}E8 zAbx7&rGZ7jXof=bo@I+SJEJGv_4&8c)3OTj*DzGyH+?HsTga2Cp9I%h9SQE|Ka_Dl z8E@p?CwhBs2?XJ8v5p#L2O?h+1B*3XKDQ$ZD|nrS*LW>4yeAYwuoSeM+o-oYNyxCb zf-#0Lt@MWNhZNGl6`Q-Y=s$-}N6+*W{G#P+&|)(W4=0fD`18|Rz-)3sq6@Wh zD`KBDA{`JTrgHa0D76vv`975K%|&@zeKqV@=43abK1@7z;FsVImeW!ITD zp%K!r9G_gEBziJR7O8{Gg5v!Q3)qex!>CST->akGB(@Y;BU7^9bSs5l?^cf*2~{X5X5M+t1STMBKDJ3}b$B3Gg3w;<4E5e%LZ}jFM@`Q=H0J_*!1glzWgUN}e1ou>sq-KRX zvYf&A1=Wx%f&^8mn5YC1^N35bv46?BYjj~7Nk%vr3k7VnrMkg*NzF=`$M+Z)1TR*_ zSw*c*SIr>CCi;OlULicE2YZ<^M+EzCn;=cRPzflMWLBgaT(!h; zA9S^>$o$fgQK|rT&o}eAiNRkCxtXY1vy+k5CiTj98)YZ@JCJP4i`273>O;;!wP)vpC;+GKXW9$FhO= z$aBSsPW%Rfd4zhq7gn{js;$CxGx4lICYB?T)9t5>7ZTZXM3fx6iY90*nXSy|mT5ec zqg<5WmP7Tsl$UXW9*Ao|vJi_bP1wD1StmHo_3_VLsf2i^`5eNtiAP?2(p+vSl`75x zSkMr%%9RoLj|CB6Lw$-bk#(D2`-a-q=<+{rBil^Term&MYk}3!S>t4Q+lJa>HA8Hi zd$3N2q}QA}$Ph(?BZS=irfe5U4gS3*Anc5%dA&?3S5P1g%ohpG8DPXwvwjV=i51aF z1>7!vV6-Ca%d%Y%cipcgbN~k(=9-mhbfLq>w?M7030YDPlSC97Dp98C^&4FR5Oh3e zPwAQ_WdGx}p74+?*_e7dTlGot_Kl-aR^j$-ZI7UAVQ<1wuHwz@^B<|l-|aQINm@rYs zCSOiV$k<{3K}Y|{({GUvhgS%q?+6iDQ^%EZKN}BMoL?09YSai;8s(U$PG)9KeHb%Dj zBD5*;+&@`=6;&2%S0DOh*esti$X(q*@bwZf995dMNU+Ogk`8oxyru=NZ$!Jx;IlU# z@|?Dvz-L0=j+A%G@fA%ZnVSlBrmv`Mq+OP?xjcxbXsSF?5RrZ=xy>s#@S3O7oD^-} z{Q~!7sfgQ}?nsCA9X-!ZsaW@*er~P2Q!1}iouhIztJ)}Y`>lNG9JDn&zUEZOR-GZ7 z*{Viso=i~0Yg7F(0u^QSooje1dlI3-b6K^8?b_G+>{v88)>%Eo#IluTaM68t#$fIx z4=3i%-kcB$`BRC#);8J2C`YDPlkQ1IXWp?Ko6fMl72`s_nx~?K?WJ5^h899waM(58 zjyvJ8nu5CEVg91n;!s1w5c)t2c9#`hzpl8sV^u1luwyY9o!U<3f!1N&{Zfmj^))Z@ zk8^Kwh=z$uE2F$_*62aJps@GHi~jEcx!-uFnMvhD-^)v@+)9C=LsV?K>}Kwbs>qZg zI%|BnRXDA7t=9(xYIb+Nk zw>5uPFO#~5<8jbqKP2r(eRQ6H+5AB=;1CxB>?PRy&5A?$KyM^VdUUvjkFEX6UT0Z0 z_dWeNEfT-_(`)=u0S&cRm$XI@(L4DJ=aJZy+`ph8&A*G6Q~Q!X-= zd0*-lciRg)s#i6yLoshV(N^?oD}&0HLk?cOU@5EEVfIrxI%P{Q(B>!V=uv@6gsbTBO< zzJ5=A*mSeWb!B=h5BaHBCFlaMl#r$ZNa?u7`XIz@?q5^a#@Ej8nKtNJ)-+L1{l%y8+k$ zZD7|If4>LnA#hb3`^FHpfqhxZDFK3Yfipwpz1||DtUw*r%yDB{V)@}i>Z5W-ODpJU zKbIoraCGMN79y4AtZC83L)G|?b4kz=sUviW^Dyu4K9mJqfekzG$xkx+6(2R3o9g56 zMIb#k+rgOvGJfDNrvNF*e0=V^r`vf zA8vG#M+5;3P?(u`7=ft{9E5y0%Izh)39^LW&zuGs(jspBGrim+Fj^L%?Dl(E@8vu4}e}kuzK1P1e+OP`xY9obui5-f2Cyq`5^ZsxT&~lxP7wr(V&=4eUBI~7`0}19F zMF7o(+0km_)CY1X%=m+gf%^}M_YO`ncZ~f1r?u+hjuq)Ds8~=`Y=9sl z9Yhf<5dua-f(fCBEuyICf*nQIin4Y^bQKFLxULQCy&_lu``YVwPC`N^cWwgyf1W1` zy59HnGiPSb%nb}Yk@DRAk9gaqlJ&no9XLiTc^ud${Zm`xxDjpZzj?ZC?Vf?t-LL-_ zeX!-CTW)+y(+2ukITnMzES%RYW4PV%FLgOX4|YgvTXKW*Z1(Z@_ZBCuE}E*Jm$1+) ziJQEs-sRi7qixUI#}%a|cFOKKb6ou>(~+M`3&%c=PI+6}=~eu|_lY^XTeqAzE0c3T zlsWVd`(P8ZC#|nt@8vc}(848Z-{upkyFwG{rS{!uR>1A|I%a3EUZnH+ccXedE85m> z;-ODb2Ho2Re(!MJYxmzS#}k?c*{^$hckYK}k`4)1y>A^Q#U zwvBTRn(P)dAb-$KXFey#a@I#T+Yp1juZv>i3tTeJxr$mGT^wV-dnYeDIw--cf%IU9 zVw;eEJvXjj;u!Gqa%hOm(E9w}4LiMUzH<7J1?jgvx4~;fM8#3FcAOd>8hQHU@$bjB z1P#jH5p9=ee(Gz@{i3cv=W<=T?VQ}MJd(R^x_!&C0p+Q063-l3(C}EjQQ{mIL5s83 z{u0W>&HL9f&puPUD|p59kX;@dhdkd) z%Zx79jl-NT{qC32G+@hm)8w8D_FvlJ?qgJx+|#*>VerwMAxkgaH4C`fv1e)6-yb%_ zw>BGc=9bMmy>DYh=@;F9OBuJI)VEVuOE`q^V&#m7oCL4HN6o*#5vKRK)$KrW5PyD{ zmv4f5jp^HLW(&CoQtY#8zPGwD?AAD=GGb9xBtckk$8_IXC8&+*Q8_jmI4w3#+eu=#RyZSK&=Wr2nV0v7q4nCR`| z@Y#3o6ia8Qxo0>WeP!!^IOL4&{$Bd&xto6bvO;*fr1P>fds53S&b1iFTPY}+cWvr_ zCRZLmdmGtg+yi}~;mF~AgOlw|mWPW&|(o4TToOa-7?8sPn zpUA@e+%4z6F7VjfFG$aIuV2P`W1~*iLf+eTM%tDlx?bBs}^q#luK zjz>n%Z1+rW$-BjS4_&N%&c0UW?DYAct;YU#-{gZ;IB)f|kc{?CkFT3|eZko@yWuZO z1b>8Qn>-HvC#_ZCwA*unXGXoZHLm@d`>F1=4Li;(on`o=_af21CansGe>zZe`KP`? zXPfPKIVjU2dc$95v+QcW*IPZHp#5yGqFz7kS3DdTbfJY)#@C{fBG(I({_LILI3nA8 zX8#fCt-pp0y%+WBTg}1?%g#M(F-y;`?MRQ4U!_C;NyxEjf9a-mzTNZ=-^%VaecHmg z*7v}dOFTO!96H-~`QebY7jM=W;~4zaYm?E{DTlW7>?C@B$$RmLb&bk)#~7p?OpAJ9 zXH^p5{B213>a0oTtA<$j>N2idY^_JvZycWzYx-^e_c75UlD!&!dUL<|i2hCvjXNH? z5Yqbd*hhsUju|-Jb4h&W-tk6ZuB2y=(LD|=Y_;OmB7RrPSpA;v7o*xqZZyC6qpagP zKZnovZyi}+vvzljPy42}eB#jl?6g}yGh_dp`$uHRmkqc5qzzv_GxuNgZr-V>slo)k zEf@B_`m%G)f`?_zKGqC1{Py^UVZ%2@hOb6E-DJ74cYs^`jiap>raXyW4r^=w<<~hb z9sjbl*_Up{vKse1k4cKJHJSa2e{}z~hjYiAXf@&0%lI8RWmg&*?JIk*`1rDfCgZNg z?CN>rBZ&=^|v(Nf%&7A zZw#vYdfnqgbr#(cU*D2)CZL0T=E2M-b&mBdI6m>W!L|JIEeB-fdjIS{w~gERznZx| zsBOBveM3*1*q1MZj$KU}?bW(oXzp&Yo=dH6FMgBW-uRpTrn36hcP9B>ceug-tmpqV zJ;!NjVZp?Z;n$a)8?B#q)Az-eHLrim_pDKL;@kDV^L*b0IgP(jKJ@hEiGzg4j}#pe zK06;<*z4y^>y;hDtsm$&$_p?rs%fv+D{M&CsI(oimKMX~j(n`K;b4QJ{&C4ME)O~t zopLoU4Vt{pX1&L$8@!zv-7X(}vZiy#dTxE29qHhe=y1&~ElbDQVQwe1{JbIBvgJeRjVv2Fd=x?DZD^)IXL0iV*`N3gY+|Qn+~3O>dM4vqntjED}NH)a#HTwnx^-MdrxufCAs1DNt{&J z*6cqA1N%c^gIuzV^*oBtwl$uaWcG4v6z|2$9Gg=c7Y6T;UFW9vdDg{*~t@B_Zh@LyJZGGra#H`QaF zj$XrDUHk*Odb(C3a5y(%{X_W#{)FbaiccfXcgOeeyGR_NMw7$A#v|pw!Ji5N@Hc$I z2)Z=!3HjQI*5_csrQ(Cn4I-WsO9ea$@icA`DgQnGgk7SF4?Z2K@w5=`ebN5BiSltd z*MCr-hj(OgBYCjn#GlFwBe>Dj0lYh);)C4Wp`t~K!gvA#MN_7xN)S0ujiHyZQj?L~ zXn13c4xw=IO7TH9@V3!PfQq|u)NPOVpeY}~pT?>`;Nw$hk4JKa{3xk_8x4oR2w5~W zLSpTrVF^Xi{BV9K6H8Msm0pc}l@eGnTme4}&!B1LhSY2u=pwFEjC@Z~$R$mqDGt6F zLh(TsJm>&bvQZl)kle^gbR>nbw0p2A0hFs9NOwTtc?rb_CH$csP7)1`w2?evbahyC zg4{w;yHZx&@j)6v#sbHiB83KDk}>V(JVHmBAmt0fbcLLeQfqQ^z9*1)aZ!*vP)!=% zrRm`K?s~-sb&qfEtJD(#BIZe?0u9+T!AJ*-U)?68o(coDkACr!MI9Zwk! z>WNyDIe5C_gZ@$mf2{6sYoMomCLG7OSdn-#;R~7pqpu_=_l5qdrzxX~CbQ(A6rp-l ztutR;R_&BmsvfWC45@syE(a+$i(9eqEiju5V{j`K(;QB=>;ybo=^D-gu0-MoWrm_T zS`#MhzeA-@3^|;0;9k&Nt@>ok%AiN35=Q;)Kbz}MSAy-7DdHkonYZC5QR>rOZJVk zuJ<*_?oB`r3j#6)GKVJQ5WWO2J@yt3;Z2Z6&=L3Np1l4R7!*PBvmy|;fY)mxy1*H7 zF$}lR(j$_JLs|4+ELppI6>!N1F3kzdJElxbJkc>yQ6MSL|EOycU263|XJYDu2edcP z)MPd&R+Gs9USt#;Z5PM8if{;E%8iiS>a@C*0>#Kk$YrE)YILDM!ayLBMq4;3Min}w zslyd3ys)_ya9UYGp}jBLG9mq>LiAt>6AOLEix)BVAYi=(_DDnD>%qiQsSqkWnhp{1 z&YRwTXTZ?$U>Fm^DA#&15#iohDDQY;8XBrEcdzM>jgY$DK!WH%pxw1+qPf6W8VZMZ zT;f7`QCNL4g+|aq*HiC}LFiQQMJEC@Z(tQbEf{3{m6Z;Y9;zhI-FG&YUeV}U1iitI zOnPW7=ZRcCg?R*<@$$u-LBKp#He?|6cVU9Lh{YnYvq&HSy@;q<#)}-1cD;#R4~&(; zm-MLIp-fEl0`{bMXmb4IJz)PaATWuQ?#9GY+MlktwC`ixw}YI<4Kx)u*PV%_%4~En zzl^Zy8$rO!@HK_6@{=tScxwS;^UN!?gTwa$Z~K5ZJXWLpWXn8!m~a7#z@~FH)h^eT z3+mbj{sA$f`ee)cj9@}Byw6jS)L3%{TKJUlw9{Jw7;ly}Q4zqL@q84MgeNb0q9}}R zV+^34KbkK321x6HY0{xD1~JhpWTz<-9eQm-$bwe@b_u{b60Fq=VS;In3~Z?X$O`(n zK$xUMVlyL92aaW;swXzOjgB6e{Hy>t+`||V^T#vs$gra$mK-rI8U@^Sfz)P7aCkY4 ziKya`Hqf9N#~ttA{xJyb1x^IRfa;Si<4RV8`oN#&jTCH z1p;JHuZd)WBd=aiFfy@_(a?a%-@O2*FUW4AViR4lzepVmswQcqJc|eNMX;ElHLWA? z-{WR%SqCQ4gLN@y0{F@lbzsJedn_vdM)j(5iy{2*aBwy;xAMj3>g56wY-%-$Y%l~gi}&c55KO<0SI1CR{Eh+vs+TgH<0~o-?;F<95zvML zTIE~{bt_Jwp($=rk^fg->#~&zPxhF8as^y-hW)=zqv0yv8Nswa^7!cwi_3+8wGlK& z4q($~(6D^CVwfC583W68v}i}n!q39iuONWbdW~hM(E8vrB2%z;ES(poQvB6pLYEmep;s?F}H?Ly==ippRWnLsz6` ze~}oXmI8^&Flv7D-vVIxI77ip(`b-{f_u=F5G!8R2QOE#W>g)USL?*=Nykh+|9#JV zz-$kE4kkpuw1x#!O|c^+yh`0FyaV2c1Vv6fo!YG;$FUtj0JX9OA%WipU6^#lNmizlu7ge%gHA|i+q$2INOxqmFyR#Jlk@=e7N7@m zj5vFMhOSaDu5DMkGM)A4TgFeH-(@d& zqFsFsrw>7DD!i&geV(RR<0nbUhf;p@#7dHMfi5lRGa>;f6d7?i?gW)t$8=MnTV|vV zx;U&X_OY+A43u~fe888W8+!WxhptxTUio9?T|dZ1V&^HAshFo_GKUG&@xsB3b%0#}Uzky=KH0L8 zYwR=>PUa80C1Eh#qGWz#f5^)X+zF5_QuH~Tfhu6k`~~3XOgB@o?=>5egb=7F*JL z?63;$uudp&kl}u^DFJujgoC4!{Pr$p2X+*~ehydd6BEy3If3Tg=o(S} zR?llTfhi%3Go(T?U$H~0JdUYl1ohqda7{1Zw+s|wuTlqU`DKk7tRbTUwU8T7QI1#M z8L83uU#G}s);QpQGQ~W zz@O$TK({#wTIx<{>4qUYm0@tufDc(@s(dq4KE-4Tflgx(_#qbOzLx-=9Ojdnu)}NU zhn7(gytK@xJPFo3PPf%8SX(xyfvZMYtRa~EVxAS>9GEx;_}u~gniA?LGEs-DoTgO_ z4RpBmL4J!KK@RB&tGHyPH{DzvPPG#&p9oZ}qOjD|0q*xYW7onW_`XR+o+(8`^ zJ;B0DB&5vtFg)UKX57CG4@U!xg$e}2<4s3(7_qztvUTMPpv>1gTF;wb)YuV{!yk<_ zM{9j+3ZmkSEK_gDTym{fXGQ^IA~3};g1H6VC{S{(fk|L3ILw1D#Gy{YQ{dx-n)qum zi?`wqh|NdCLG{7%>mcQm=5m8tRdbZJt)M`@0!ckXpeT)+UrF=@Jls-&+FbR?maXhf z!PFuOQ&q_Gg^|8H=L2dse9ctoXh-|O6#OAPNvN1Vq4Ld;>il8^ED;!b=7A0_!Z1zh z;3o}F-7jEEmCobyL^J>8kjBnH^+FD%bznNnrdNNcTrkJ*!dyk-NIJ4pV##a|aFqVw zC}f3LJe-CscV;FO3f|Xr<4*`6PCbAk7nUY@(xI?|W@4dHE{Q%~Yy?=F;Mx1*MhPxfXEL?v|A0OTNsE?xxbLRKt~Fm-{rr*E6d&Vh$)gAsz{xaOFu;nGG%M80rBuyPMr ztudf?C9G#OP8YJmdhDKIoU)hm4siQ0^xR~8)v#$?V+6WCc2D^abi5g+dnN?eJ`*U& z6{!-AuZQC1xOyVP#9Js{KFJ&Si~!4#QzjXof~KCx;-UD%;m%7G?JSnx!KWn-u@br4 z|LTpk!0|cwlDiO{CsSxu3>@9*j3157zf%j;&1h>o=`V8ii!padIm zF*1yYh$&cv66EC)C8MKq>)Y9f;L;6liJ20n8UO_aBco%vBn5@iERS%x-edMc!r}-4 z(u9Cp8bg8eQ}j&H(9jwoygqaLfWW6giR7}rNgM@@=<8!G=P<1L{xdOmAAp{Qxe8g$ zZcNYx3=>&!C;1LD(^Lq))K!@N8FVlYR7zIj>t|O3oTe0nZ)+E|_&vZ&8Sqc%R0p1t zeG$If$@2CHk9)x+_crsY1J9Czi_OF4U}K3XI0!kQiWXD>URk191Wbf@4)f=RQ<4UX z@pjbYu4jP8RIoBB#(U_{VfZ!SI%*cSpsdp3Bz^Vc2D3~-Lx0!ja2yCf*H6&}?;kG= zohTLwu^<9cN|ET!6xnRkR|6ol1S-$|1fh9LbrDjR12v`HZN2v$PWuX$*~l>btCiKE z)Qc$y#`4CG11`4!_-*hd4c~XQE_mEojN*kk#lr%{0!ZNecN6?BC_oDIfvUAdPa(e?Og+YB5F&G79nF_8C7t zKs^s%D?*6SY&voUAdfx;LCp2RBiG}eeh@4@I1`w=5705Gicwo8)gi>ZHeSJapYdX_ z1X*uI9H|CD#j=$ST0wSGFKh-{JsDP)9yVhxb8BlIXap^KCX znswa-EhXI4xv(P$a{#PGt|4Z?o0lucoEYV@y=|qXR1}yli_jwRpWC(p(_i6B?%^4o z)&;E=9h5>9(UUhGi&zP&nF*>PXBh_2cBh^3N_0Bs|Crh)XMj?iK`A8mYlspWwvTjz zfFD{FlTP2z=)h*s$bI;l!&mvqmOZ?nj*XdzE9Of?!iuVpR$Jk)zQ1P9mgW$ zFHT-m2OJh56w#(DsLZ6GlP#YECo;fjqvQyFX3O+1t7ACv!U01rCS7yM+lSS73J=CI znCWqa3B<&}QCD*9%$q29ei~Q+R<>22Y? zHFX3>Y$j%r29xe)*Y`3jz~BHUew-q6c#EkGu&CnoDdz(0z@J(-)NF2x zzNwDIw0q^>$bX~v;ovx*-tT-Fu19$TyJWz9y{Aq>)zj}12b}_H@M1pbgU_Wabq+Va z!6^v1%}~|#C6v120To@ft_*drC>H1Ro;-6PC4H428;9h-$J|G^p5~bLQeWgg;Z}NV)`R;S$}Y9Q6X^G5CY4B;PO_@nlvrQSBCuKC2;18iHJrk z8dUE?H0bm>xS$V#SXzsUD3&iAOKj!HJ^RQL7L@(i2j(r1zo9|?SB_y^D13zx>?%Te zxN~OsW`QiRpeC}UI9FFUbvt$9l#v-j%q;amJt57a*)`2<0tls1+PX3k3nDRnT?r8FS@fG#t8I$hlr`I9y8ccBNIsc&fk_ zn}ij+%v!1~q`{wHIkEvJw|x~zSEv+bO)UFoDBiBSdk>tX zir3w&3N$DN1jSa0haC|7P^NfDdd11~kG>F3O<-lkiO}qL%U>j|wdv%MS*OXnfF3s7 zjw9$b?(~cF)J27TTZOdVVn=~QR1xyD(_bjO>{_E?cR}wXz^#T8%s6!UMP}sP4?6uh zDYkPM5}pWz$vir%+bN_5Y|me$j>L3ikIU8r2W0`Z zCP0~7T62STlV8bFv}pyJ_42HVWjye)Cs2otAmj^x4&Yy+1g}69z?4Q9A@?ZlSp!+{ ztee{NBB<9N4D3y?(7E3)vY_r+?DoZh=3UszGHhzk0r|;Mj6Xmtabgss43Q{V+Zahd zKai?kW6hnB4X}%-MY+hcTzkw!giH^g=gbs=bAv@3t1IDhSLmMSeI8X>h%K?A4T}MB{30t6F4yM)L4*M7Niv)Ygt%t zmCsO_(8zlC+-p}4f*;ifXtMTi7OWLoqCD3ou|+E0LLEnW4)qA@f;&pq;JoBS%siwz zgy>@Y6+UImeK7ELn39qcu@lfeq{RYkVlc^|A!>iiDz5|M^&|*@UPSbLm{e6V;7Ia0 zHf19Z4RWW2)9JrKN0-56$+Ex;ns2Hm36N0OoI(S|xcans;cSTGE)Z^{(I<$jN<(qf zOv@rZ3KMo)SWo~)j|5_5%iMsNsuCI|j1f(SI+EU)hg529+MK!rD6D~@-;uD&cv#l1 zn#xEYX00@k+zx)k*?~ar2565Q+$T-@HFC~efdJP6u)>hviox_gB-|`B?@%nb#szQ< za+=b3mR7=yG(($7U=DT<{?ytH#2RO)8Kk#oYo(wtkCuTNCwY0{Q3E5uM*grQM|Q+U zC2K`zPV(pq`rUc+QxRCEF^JHaaD}MlJ~#rD;W0 zANiO}qt3HRx2A*moR$o$3N~tmu2Rn@GQYwjvHmKafbhX5XqRN%eJ(;|t zMGrS?o46AcT?=BI%!jSEYei;SlvZ;g^C?Mn%pU$1u2aNDI88q2G@ej>o6r#pB8tW-1EFoZoskJrg820s{xR^3`ci z709@7LnmUH!@l#2M7HhXtXc)KyarhY5$-&4xCIw1X>LRzZr6z0+;2$8Uh$5wOWZr0x;z z*w{LTl^`2By6b`NqP!$Pt_2HOWR4CwMn$jIQC3`nYjP5IWU^*&78^?zgmdT}0cw${@)ASPTXhNvC=Xd5eNJL3#6(VuLG85fxf` zZTHMxvwSJ=s|Wm&(d>6sI|W5;p|xQ0ws3LdK$_?TF+om`x?k50Ua_wVQy8{OPcY{8 zrO(gF0p_ECc`~A9ceLYIsD~9DmA`WGRnIn{{MMj+QZ)zb#B13?!Z*`(;=!nwzhXS0^Yp@X3Fy-SuS;S|)uOhQz6qLKr3m41-aPI{CB!3U$B+WJFtjW2J!2w{TUC0LLk| z&RNt?;?+|&)(`~KAfm}4Y(ChXg?+q9&yySH28M-0>K1U+K)%YZbK|O1Jo@|!Sa?c? zb4MMC^kG=LmJVXhtep=tcq0?G16nzJ$uv=BpbJ$g0?WAgnlHQN2CC=542|4TdSF;p zX!&}dyc2|e3=pkQN9w-{FS@{XXlp_-Gn?w7gNk9x5S{O5#Gi!>nhr9MQz--RDDBo& z;L?z>VA{E%m}3jbkKs#d#;m1QWM`375C#(iDD%RQgpMVdrdQs7C;-P#G1M%~wzbkq zr_w*^Q8k#8T+;;9vJOm3dQC3;HH&IAqlyWQx(Tq$zuFqy{4a2Gav90mf)!eIU8B5h z9&h3G=SK*+(Qs^>Nd?nF+Y-m(ui!JoK>)IIF}X2))5@sTO4v zKvLqBnNx!xzlmWbgj|4o-TfCyF=fIy;C+0OZvq~Li*TgBZt7P>LX1uQ;Uz2I^`ToDf7z-500zf)MHwA6z zs4RyU8!XW(e?f!~Ci0$@t8Vnl3sW)2!Wnd-f5jE5bnklS`KVJLkOgOtWL!=e_AAtw zR8Xeau!O@iFpoFXjLVn25UY9<-}eZBE}2hHOsNJr z7ojwgJ!sJ>-s(HP=mvT z2#zA?TK}$_E+sF*EdYwDRem21?0U%qQA_D650N%SS?<6^0&qbtqMN5yfeU5YWDgJY zpDv4s?uSiK&RnQ#TnJI~;NmToyry=CH^?B6hQW4#@>XxS5?1~<5=S8=O(V(Ldnfo&KVd$yiYpG7QO>WH2bYg$)jKgZwfQ@{1#(z^t^Y zkWtfI#jo*-9RoT!lPf|897_j*&725wL7S>cjuep1SoM#&;>Ax(U@?;{5$a@AgI>Ir zy;Agv`E}Mi)7|hmoKDy6h76y8%RF_sp|8=v>s>&T(Aud{nJ(K|6_QG8G3|r`nWg$> zgMv7wFzq2{R|c@!qgx;)I&mVJPRhRUOkEQoBWbF+-mITh4N}zGGtk4WosOJ^%Pc4^ zH$A6%_)4QFg`>+e!~934EvSwUr2#p!?s$}yp0X9!1 zJ`|>TO`!$MM8yl9QL#Kv$6{ON!;PKL&!@Y?swc-6)MiScZNEZCt5{!US^=#-b*E=a z96;$c(%dGybDasN*cL%?SJpc)qDw z=keamoggARY{;8;Ywb-U!18+WV86f zr<-@6F05g$dE(Ten2C#Gv)m+zhFQDiL^|HwITQw+PJ|Bq-!j3}_8D;vk$!RrVapre zT`>hVgH8{fKCTcYXbCXJtkFaa!nRq^8SaJ$wxnKu% z`Q^Gr?gbFL1Y(@*IS7V>`-=CYR3@@Yu`A+RZf{x~p}*f47}$3Ouz3i+`^0w{sWwofYTg)DnHq>lg%`6Xb>pUn$_GN4L~F~ zS*zg{Wz97p}}8)xo7hP_Kg^bj`Hpz zWRo>hqZ*@L$DAqyRPcO`iP8-4Gh1ffg@P)_<3&rO=sb@9cgI|q6L5^6in1cmhTBrm zG1Y9!wEqYQgRUFb{3MIaymvTD`EOQGa23xB>*)q3Y6g+6;mR}r% zxJ(AobDT?j@|VCEQV$m8p_oy9vSki%wUWXx6)z1!5NNWcdJXb+%OECf0O)RP6HROA zIcq>E#&h|;C9O!nDDytwd2}FD9Z@h0foH2e*|OQgYjZq?IlFlIyL6E=*flyX+GjX! TY(h;@!?}i$7z!3V8^-w`q)kqw diff --git a/src/main/java/org/josfranmc/gutenberg/download/AbstractDownload.java b/src/main/java/org/josfranmc/gutenberg/download/AbstractDownload.java deleted file mode 100644 index 998d0fc..0000000 --- a/src/main/java/org/josfranmc/gutenberg/download/AbstractDownload.java +++ /dev/null @@ -1,214 +0,0 @@ -package org.josfranmc.gutenberg.download; - -import java.net.URL; - -import org.josfranmc.gutenberg.download.engine.DownloadResult; -import org.josfranmc.gutenberg.download.engine.IDownloadEngine; -import org.josfranmc.gutenberg.util.FileManager; - -/** - * Encapsula el proceso que ha de seguirse para la descarga de un recurso.
- * Esta clase actúa como plantilla (template), de forma que las clases que hereden de ella deben implementar los métodos indicados para realizar las descargas. - * En concreo, se debe definir como se configuran los parámetros pasados y como se realiza el procesamiento de las páginas que exponen los enlaces a los - * libros del proyecto Gutenberg (
http://www.gutenberg.org/) - * @author Jose Francisco Mena Ceca - * @version 1.0 - * @see DownloadParams - * @see IDownloadEngine - */ -public abstract class AbstractDownload { - - /** - * Motor de descarga utilizado - */ - protected IDownloadEngine downloadEngine; - - /** - * Dirección url inicial del recurso a obtener. Se guarda la dirección inicial de descarga ya que irá variando según se vayan descargando - * recursos. - */ - private URL urlBase; - - /** - * Ruta de la carpeta en la que obtener los recursos descargados - */ - private String savePath; - - /** - * Si se deben sobreescribir los archivos existentes por los descargados - */ - private boolean overwrite; - - /** - * Intervalo de espera entre descargas, en milisegundos - */ - private int delay; - - /** - * Número maximo de ficheros a descargar - */ - private int maxFilesToDownload; - - - /** - * Constructor por defecto. - */ - protected AbstractDownload() { - this.downloadEngine = null; - this.urlBase = null; - this.overwrite = false; - this.savePath = null; - this.delay = 2500; - } - - /** - * Ejecuta el proceso de desarga.
Una vez realizada la configuración de los elementos necesarios, se realiza la descarga del recurso indicado - * en los parámetros pasados. Si el recurso obtenido es una página con enlaces de descarga se extraen estos enlaces - * para realizar la descarga de los recursos que se referencian. - * @param downloadParams parámetros de configuración de la descarga - * @see DownloadParams - * @throws IllegalStateException si se ha devuelto algún error al hacer las descargas - */ - public void executeDownload(DownloadParams downloadParams) { - configDownload(downloadParams); - DownloadResult downloadResult = downloadEngine.download(); - if (downloadResult.getError() == null) { - if (downloadResult.getContentType() != null && downloadResult.getContentType().equals("text/html")) { - processPage(downloadResult.getFileOutputPath()); - } - } else { - throw new IllegalStateException(downloadResult.getError()); - } - } - - /** - * Realiza la configuración necesaria para realizar las descargas. Recibe un objeto DownloadParams que encapsula los parámetros para llevar a cabo - * la inicialización del proceso. - * @param dp parametros de configuración de las descargas establecidos por el cliente - * @see DownloadParams - */ - protected abstract void configDownload(DownloadParams dp); - - /** - * Procesa un archivo que es una página web que contiene los enlaces a los zips de los libros que se quieren obtener.

- * El último enlace es la dirección de la siguiente página a procesar, que contiene nuevos enlaces a libros. - * @param file nombre del fichero de la página web que contiene los enlaces de los zips a descargar - */ - protected abstract void processPage(String file); - - /** - * @return el tipo de algoritmo de descarga que utiliza la clase - * @see DownloadMode - */ - protected abstract DownloadMode getType(); - - /** - * Comprueba si debe descargarse un determinado recurso. El recurso puede descargarse si se cumple alguna de los siguientes condiciones: - *

    - *
  • es la primera vez que se descarga
  • - *
  • el enlace del recurso contiene la palabra harvest (es por tanto una página que contiene enlaces a recursos)
  • - *
  • se ha activado el parametro de sobreescribir recursos ya descargados
  • - *
- * @param link enlace al recurso que se quiere descargar - * @return true si debe descargarse el recurso, false en caso contrario - */ - protected boolean createResource(String link) { - boolean result = false; - if (!resourceAlreadyDownloaded(link) || link.contains("harvest") || isOverwrite()) { - result = true; - } - return result; - } - - /** - * Comprueba si existe en el directorio en el que se descargan los recursos el fichero correspondiente al recurso indicado por un determinado enlace - * @param link enlace del recurso a descargar - * @return true si ya existe el recurso a descargar en el directorio donde se descargan los recursos, false en caso contrario - */ - protected boolean resourceAlreadyDownloaded(String link) { - return (FileManager.fileExists(downloadEngine.getSavePath(), link)); - } - - /** - * @return el tipo de motor de descarga utilizado - * @see IDownloadEngine - */ - protected IDownloadEngine getDownloadEngine() { - return downloadEngine; - } - - /** - * @return la dirección url inicial del recurso a obtener - */ - protected URL getUrlBase() { - return urlBase; - } - - /** - * Establece la dirección url inicial del recurso a obtener. - * @param urlBase dirección url - */ - protected void setUrlBase(URL urlBase) { - this.urlBase = urlBase; - } - - /** - * @return la ruta de la carpeta en la que obtener los recursos descargados - */ - protected String getSavePath() { - return savePath; - } - - /** - * Establece la ruta de la carpeta en la que obtener los recursos descargados. - * @param savePath ruta de la carpeta en la que obtener los recursos descargados - */ - protected void setSavePath(String savePath) { - this.savePath = savePath; - } - - /** - * @return true si se deben sobreescribir los archivos existentes por los descargados, false en caso contrario - */ - protected boolean isOverwrite() { - return overwrite; - } - - /** - * Establece si deben sobreescribirse los recursos existentes por las nuevas descargas - * @param overwrite true si se deben sobreescribir los archivos, false en caso contrario - */ - protected void setOverwrite(boolean overwrite) { - this.overwrite = overwrite; - } - - /** - * Establece el intervalo de espera entre descargas - * @param delay tiempo de espera, en milisegundos - */ - protected void setDelay(int delay) { - this.delay = delay; - } - - /** - * @return el intervalo de espera entre descargas, en milisegundos - */ - protected int getDelay() { - return delay; - } - - /** - * @return el número máximo de ficheros a descargar - */ - protected int getMaxFilesToDownload() { - return maxFilesToDownload; - } - - /** - * Establece el número máximo de ficheros a descargar. El valor cero indica descargar todos los ficheros disponibles. - * @param maxFilesToDownload número máximo de ficheros - */ - protected void setMaxFilesToDownload(int maxFilesToDownload) { - this.maxFilesToDownload = (maxFilesToDownload == 0) ? Integer.MAX_VALUE : maxFilesToDownload; - } -} diff --git a/src/main/java/org/josfranmc/gutenberg/download/DownloadBooks.java b/src/main/java/org/josfranmc/gutenberg/download/DownloadBooks.java new file mode 100644 index 0000000..f464c2f --- /dev/null +++ b/src/main/java/org/josfranmc/gutenberg/download/DownloadBooks.java @@ -0,0 +1,183 @@ +package org.josfranmc.gutenberg.download; + +import java.net.MalformedURLException; +import java.net.URL; +import java.util.Iterator; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; + +import org.apache.log4j.Logger; +import org.josfranmc.gutenberg.download.engine.DownloadEngineFactory; +import org.josfranmc.gutenberg.download.engine.DownloadResult; +import org.josfranmc.gutenberg.download.engine.IDownloadEngine; +import org.josfranmc.gutenberg.util.GutenbergException; +import org.josfranmc.gutenberg.util.FileManager; +import org.josfranmc.gutenberg.util.FileScraping; + +/** + * Allows to perform the file download process. + * @author Jose Francisco Mena Ceca + * @version 2.0 + * @see JGutenbergDownload + * @see DownloadParams + */ +public class DownloadBooks { + + private static final Logger log = Logger.getLogger(DownloadBooks.class); + + private static ExecutorService executorService; + + private DownloadParams parameters; + + private IDownloadEngine downloadEngine; + + private int finishedDownloads = 0; + + + public DownloadBooks(DownloadParams parameters) { + this.parameters = parameters; + } + + private void settingDownloadEngine() { + downloadEngine = DownloadEngineFactory.create(parameters.getEngineType()); + downloadEngine.setResource(parameters.getUrlBase()); + downloadEngine.setSavePath(parameters.getZipsPath()); + } + + /** + * Perfoms the book download process.

+ * The first download should be a file with links to the books to download. All existing links are downloaded. + * If there is a link to another page with more links, this page is downloaded and processed in the same way. + * This process continue until there are no more pages.

+ * All downloads run on separate threads. + * @throws GutenbergException if there is any error downloading + * @throws InterruptedException if there is an interruption while waiting ExecutorService shutdown + */ + public void executeDownload() throws GutenbergException, InterruptedException { + + settingDownloadEngine(); + + DownloadResult downloadResult = downloadEngine.download(); + if (downloadResult.getContentType().equals("text/html")) { + + executorService = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors() * 3); + + processPage(downloadResult.getSavedFilePath()); + + try { + executorService.shutdown(); + while (!executorService.awaitTermination(2, TimeUnit.MINUTES)) {} + } catch (InterruptedException e) { + log.warn("InterruptedException shutting down executorService. " + e.getMessage()); + } + } + } + + /** + * It process a file with links that are the urls to the books to download. Existing links are extracted and then downloaded.
+ * The last link could be the link to another page with more links. If so, we process the new file calling this method again. + * @param file file with links to the books to download + */ + private void processPage(String file) { + Iterator it = FileScraping.getLinks(file).iterator(); + while (it.hasNext() && getFinishedDownloads() < getMaxFilesToDownload()) { + String link = it.next(); + if (createResource(link)) { + try { + getBook(link); + } catch (MalformedURLException e) { + try { + DownloadResult downloadResult = getNewPageWithBookLinks(link); + if (downloadResult.getContentType().equals("text/html")) { + processPage(downloadResult.getSavedFilePath()); + } + } catch (MalformedURLException ex) { + log.error("Cannot get url for " + link); + log.error(" Url Base = " + getUrlBase()); + } + } + } + } + } + + /** + * Downloads a book. The download is runned in a new thread. + * @param link download url + * @throws MalformedURLException + */ + private void getBook(String link) throws MalformedURLException { + URL newURLToDownload = new URL(link); + delayDownload(); + executorService.submit(new DownloadThread(newURLToDownload, parameters)); + incrementFinishedDownloads(); + } + + private DownloadResult getNewPageWithBookLinks(String link) throws MalformedURLException { + URL newURLToDownload = new URL(getUrlBase(), link.replace("&", "&")); + downloadEngine.setResource(newURLToDownload); + log.info("New url " + newURLToDownload.toString()); + return downloadEngine.download(); + } + + /** + * Checks if one resource must be downloaded. The resource can be downloaded if any of the following conditions are fulfilled: + *

    + *
  • it is the first time the resource is downloaded
  • + *
  • overwrite resources parameter is active
  • + *
  • the resource link contains the word harvest (it is a link to a page with more book links)
  • + *
+ * @param link link to the resource to download + * @return true if the resource must be downloaded, false otherwise + */ + private boolean createResource(String link) { + boolean result = false; + if (!resourceAlreadyDownloaded(link) || isOverwrite() || link.contains("harvest")) { + result = true; + } + return result; + } + + /** + * Checks if the file corresponding to the resource indicated by a certain link exists in the directory where the resources are downloaded + * @param link resource link to download + * @return true if the resource to download already exists, false otherwise + */ + private boolean resourceAlreadyDownloaded(String link) { + return (FileManager.fileExists(downloadEngine.getSavePath(), link)); + } + + private boolean isOverwrite() { + return parameters.isOverwrite(); + } + + private int getDelay() { + return parameters.getDelay(); + } + + private URL getUrlBase() { + return parameters.getUrlBase(); + } + + private int getMaxFilesToDownload() { + return parameters.getMaxFilesToDownload(); + } + + private int getFinishedDownloads() { + return finishedDownloads; + } + + private void incrementFinishedDownloads() { + this.finishedDownloads++; + } + + private void delayDownload() { + if (getDelay() > 0) { + try { + Thread.sleep(getDelay()); + } catch (InterruptedException e) { + log.error("InterruptedException delayDownload. " + e); + } + } + } +} diff --git a/src/main/java/org/josfranmc/gutenberg/download/DownloadFactory.java b/src/main/java/org/josfranmc/gutenberg/download/DownloadFactory.java deleted file mode 100644 index 5f87c17..0000000 --- a/src/main/java/org/josfranmc/gutenberg/download/DownloadFactory.java +++ /dev/null @@ -1,33 +0,0 @@ -package org.josfranmc.gutenberg.download; - -/** - * Factoría que permite crear un objeto para realizar un tipo determinado de descarga - * @author Jose Francisco Mena Ceca - * @version 1.0 - * @see AbstractDownload - * @see DownloadMode - */ -public class DownloadFactory { - - /** - * Crea un objeto concreto para realizar descargas - * @param type tipo de descarga según DownloadType - * @return objeto para realizar descargas - */ - public static AbstractDownload create(DownloadMode type) { - AbstractDownload downloadtype = null; - - switch (type) { - case SOFT: - downloadtype = new DownloadSoft(); - break; - case GREEDY: - downloadtype = new DownloadGreedy(); - break; - default: - downloadtype = new DownloadSoft(); - break; - } - return downloadtype; - } -} \ No newline at end of file diff --git a/src/main/java/org/josfranmc/gutenberg/download/DownloadGreedy.java b/src/main/java/org/josfranmc/gutenberg/download/DownloadGreedy.java deleted file mode 100644 index 94c4f77..0000000 --- a/src/main/java/org/josfranmc/gutenberg/download/DownloadGreedy.java +++ /dev/null @@ -1,189 +0,0 @@ -package org.josfranmc.gutenberg.download; - -import java.net.MalformedURLException; -import java.net.URL; -import java.util.Iterator; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.atomic.AtomicInteger; - -import org.apache.log4j.Logger; -import org.josfranmc.gutenberg.download.engine.DownloadEngineFactory; -import org.josfranmc.gutenberg.download.engine.DownloadResult; -import org.josfranmc.gutenberg.util.FileScraping; - -/** - * Realiza el proceso de descarga de los libros de forma "avariciosa". La estrategia utilizada es la de ejecutar diversos hilos para realizar - * la descarga de los libros de forma concurrrente y sin realizar ninguna pausa entre las descargas.
- * Este método de descarga es más eficiente, desde el punto de vista de la velocidad de las descargas, que el usado por el tipo DownloadSoft - * pero no respeta las condiciones de uso del servicio ofrecido por el proyecto Gutenberg ya que se hace un uso abusivo de las mismas. Utilizar este - * modo de descarga puede suponer que nuestra dirección ip sea bloqueada, impidiéndonos el acceso a los servidores.

- * Más info: http://www.gutenberg.org/wiki/Gutenberg:Information_About_Robot_Access_to_our_Pages - * @author Jose Francisco Mena Ceca - * @version 1.0 - * @see AbstractDownload - * @see DownloadParams - */ -public class DownloadGreedy extends AbstractDownload implements Runnable { - - private static final Logger log = Logger.getLogger(DownloadGreedy.class); - - /** - * Control de los hilos a ejecutar. - */ - private static ExecutorService executorService; - - /** - * Conjunto de parámetros recibido - */ - private DownloadParams parameters; - - /** - * Número de libros descargados - */ - private AtomicInteger finishedDownload; - - - /** - * Constructor por defecto. - */ - public DownloadGreedy() { - super(); - finishedDownload = new AtomicInteger(); - } - - /** - * Constructor. Se usa para inicializar, desde dentro de la clase, los objetos creados para ejecutarse en un nuevo hilo. - * @param target dirección URL del recurso a descarga - * @param dp conjunto de parámetros de configuración - */ - private DownloadGreedy(URL target, DownloadParams dp) { - this.parameters = dp; - downloadEngine = DownloadEngineFactory.create(dp.getEngineType()); - downloadEngine.setResource(target); - downloadEngine.setSavePath(dp.getSavePath()); - setUrlBase(dp.getUrlBase()); - setSavePath(dp.getSavePath()); - setOverwrite(dp.isOverwrite()); - } - - /** - * Realiza la configuración inicial necesaria para realizar las descargas.
- *

    - *
  • Se crea un motor de descarga y se le indica la url a descargar y la ruta de la carpeta en la que obtener el recuro.
  • - *
  • Se guarda la url inicial a descargar como url base para el resto de descargas si las hubiera
  • - *
  • Se indica si deben sobreescribirse los recursos ya existentes por los descargados en caso de ser los mismos
  • - * @param dp parametros de configuración de las descargas establecidos por el cliente - * @see DownloadParams - *
- */ - @Override - protected void configDownload(DownloadParams dp) { - downloadEngine = DownloadEngineFactory.create(dp.getEngineType()); - downloadEngine.setResource(dp.getUrlBase()); - downloadEngine.setSavePath(dp.getSavePath()); - setUrlBase(dp.getUrlBase()); - setSavePath(dp.getSavePath()); - setOverwrite(dp.isOverwrite()); - setMaxFilesToDownload(dp.getMaxFilesToDownload()); - executorService = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors() * 3); - this.parameters = dp; // guardamos los parámetros para poder pasárselos al próximo hilo - } - - /** - * Procesa un fichero que es una página web que contiene los enlaces a los zips de los libros a obtener.

Recupera en una lista los enlaces de la - * página y luego los va descargando uno a uno. El último enlace leido es la dirección de la siguiente página a procesar. Cuando se lee este enlace - * se descaraga la siguiente página con enlaces a libros y se llama recursivamente al método para realizar su descargaa. El proceso continua - * hasta que no existen más páginas con enlaces que procesar.

- * La descarga de cada enlace es realizada por un nuevo hilo de ejecución. - * @param file nombre del fichero de la página web que contiene los enlaces de los zips a descargar - */ - @Override - protected void processPage(String file) { - boolean error = false; - boolean isNewPage = false; - DownloadResult downloadResult = null; - URL newLinkToProcess = null; - - Iterator it = FileScraping.getLinks(file).iterator(); - while (it.hasNext() && getFinishedDownload() < getMaxFilesToDownload()) { - String link = it.next(); - if (createResource(link)) { - try { - error = false; - isNewPage = false; - newLinkToProcess = new URL(link); - } catch (MalformedURLException e) { - try { - // nueva página que contiene más enlaces. hay que cambiar los & por & para crear correctamente el nuevo enlace - newLinkToProcess = new URL(getUrlBase(), link.toString().replace("&", "&")); - isNewPage = true; - log.info("Nueva url " + newLinkToProcess.toString()); - } catch (MalformedURLException ex) { - error = true; - log.error(ex); - log.error("Imposible obtener URL para " + link); - log.error("newLinkToProcess = " + newLinkToProcess); - log.error("Url Base = " + getUrlBase()); - } - } - if (!error) { - if (!isNewPage) { - DownloadGreedy dg = new DownloadGreedy(newLinkToProcess, this.parameters); - executorService.submit(dg); - incrementFinishedDownload(); - } else { - // obtenemos la nueva página que contiene más enlaces - downloadEngine.setResource(newLinkToProcess); - downloadResult = downloadEngine.download(); - processPage(downloadResult.getFileOutputPath()); - - } - } - } else { - log.debug("Ya existe el recurso " + link + ". Omitiendo la descarga..."); - } - } - waitEnd(); - } - - /** - * Inicia un proceso de descarga. - */ - @Override - public void run() { - downloadEngine.download(); - } - - /** - * Espera a que terminen todos los hilos ejecutados - */ - private void waitEnd() { - try { - executorService.shutdown(); - while (!executorService.awaitTermination(2, TimeUnit.MINUTES)) {} - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - - /** - * @return el número de libros descargados - */ - protected int getFinishedDownload() { - return finishedDownload.get(); - } - - /** - * @param finishedDownload the finishedDownload to set - */ - protected void incrementFinishedDownload() { - this.finishedDownload.incrementAndGet(); - } - - @Override - protected DownloadMode getType() { - return DownloadMode.GREEDY; - } -} diff --git a/src/main/java/org/josfranmc/gutenberg/download/DownloadMode.java b/src/main/java/org/josfranmc/gutenberg/download/DownloadMode.java deleted file mode 100644 index 7a47d30..0000000 --- a/src/main/java/org/josfranmc/gutenberg/download/DownloadMode.java +++ /dev/null @@ -1,18 +0,0 @@ -package org.josfranmc.gutenberg.download; - -/** - * Tipos de descarga. - * @author Jose Francisco Mena Ceca - * @version 1.0 - */ -public enum DownloadMode { - /** - * Descarga normal (lenta) - */ - SOFT, - - /** - * Descarga concurrente de recursos (más rápida) - */ - GREEDY; -} \ No newline at end of file diff --git a/src/main/java/org/josfranmc/gutenberg/download/DownloadSoft.java b/src/main/java/org/josfranmc/gutenberg/download/DownloadSoft.java deleted file mode 100644 index 0a980b5..0000000 --- a/src/main/java/org/josfranmc/gutenberg/download/DownloadSoft.java +++ /dev/null @@ -1,148 +0,0 @@ -package org.josfranmc.gutenberg.download; - -import java.net.MalformedURLException; -import java.net.URL; -import java.util.Iterator; - -import org.apache.log4j.Logger; -import org.josfranmc.gutenberg.download.engine.DownloadEngineFactory; -import org.josfranmc.gutenberg.download.engine.DownloadResult; -import org.josfranmc.gutenberg.util.FileScraping; - -/** - * Realiza el proceso de descarga de los libros de forma no "avariciosa". Es decir, los recursos se van descargando secuencialmente dejando un tiempo - * de espera entre cada descarga.
- * Esta es la forma correcta de llevar a cabo el proceso de descarga de los libros alojados en los servidores del proyecto Gutenberg, no haciendo un - * uso abusivo de los recursos y servicios ofrecidos.

- * Más info: http://www.gutenberg.org/wiki/Gutenberg:Information_About_Robot_Access_to_our_Pages - * @author Jose Francisco Mena Ceca - * @version 1.0 - * @see AbstractDownload - * @see DownloadParams - */ -public class DownloadSoft extends AbstractDownload { - - private static final Logger log = Logger.getLogger(DownloadSoft.class); - - /** - * Número de libros descargados - */ - private int finishedDownload = 0; - - - /** - * Constructor por defecto. - */ - public DownloadSoft() { - super(); - } - - /** - * Realiza la configuración necesaria para realizar las descargas.
- *

    - *
  • Se crea un motor de descarga y se le indica la url a descargar y la ruta de la carpeta en la que obtener el recuro.
  • - *
  • Se guarda la url inicial a descargar como url base para el resto de descargas si las hubiera
  • - *
  • Se establece el tiempo de espera entre descargas
  • - *
  • Se indica si deben sobreescribirse los recursos ya existentes por los descargados en caso de ser los mismos
  • - * @param dp parametros de configuración de las descargas establecidos por el cliente - * @see DownloadParams - *
- */ - @Override - protected void configDownload(DownloadParams dp) { - downloadEngine = DownloadEngineFactory.create(dp.getEngineType()); - downloadEngine.setResource(dp.getUrlBase()); - downloadEngine.setSavePath(dp.getSavePath()); - setUrlBase(dp.getUrlBase()); - setDelay(dp.getDelay()); - setOverwrite(dp.isOverwrite()); - setMaxFilesToDownload(dp.getMaxFilesToDownload()); - } - - /** - * Procesa un fichero que es una página web que contiene los enlaces a los zips de los libros a obtener.

Recupera en una lista los enlaces de la - * página y luego los va descargando uno a uno. El último enlace leido es la dirección de la siguiente página a procesar. Cuando se lee este enlace - * se descarga la siguiente página con enlaces a libros y se llama recursivamente al método para realizar su descargaa. El proceso continua - * hasta que no existen más páginas con enlaces que procesar - * @param file nombre del fichero de la página web que contiene los enlaces de los zips a descargar - */ - @Override - protected void processPage(String file) { - boolean error = false; - boolean isNewPage = false; - DownloadResult downloadResult = null; - URL newLinkToProcess = null; - - Iterator it = FileScraping.getLinks(file).iterator(); - while (it.hasNext() && getFinishedDownload() < getMaxFilesToDownload()) { - String link = it.next(); - if (createResource(link)) { - try { - error = false; - isNewPage = false; - newLinkToProcess = new URL(link); - } catch (MalformedURLException e) { - try { - // nueva página que contiene más enlaces. hay que cambiar los & por & para crear correctamente el nuevo enlace - newLinkToProcess = new URL(getUrlBase(), link.toString().replace("&", "&")); - isNewPage = true; - log.info("Nueva url " + newLinkToProcess.toString()); - } catch (MalformedURLException ex) { - error = true; - log.error(ex); - log.error("Imposible obtener URL para " + link); - log.error("newLinkToProcess = " + newLinkToProcess); - log.error("Url Base = " + getUrlBase()); - } - } - if (!error) { - sleepProcess(); - downloadEngine.setResource(newLinkToProcess); - downloadResult = downloadEngine.download(); - if (isNewPage && (downloadResult.getContentType().equals("text/html"))) { - processPage(downloadResult.getFileOutputPath()); - } else { - incrementFinishedDownload(); - } - } - } else { - log.debug("Ya existe el recurso " + link + ". Omitiendo la descarga..."); - } - } - } - - /** - * Pausa la ejecución del proceso el tiempo fijado en el atributo de la clase delay. - */ - private void sleepProcess() { - if (getDelay() > 0) { - try { - Thread.sleep(getDelay()); - } catch (InterruptedException e) { - log.error("Imposible pausar. " + e); - } - } - } - - /** - * @return el número de libros descargados - */ - protected int getFinishedDownload() { - return finishedDownload; - } - - /** - * @param finishedDownload the finishedDownload to set - */ - protected void incrementFinishedDownload() { - this.finishedDownload++; - } - - /** - * @see DownloadMode - */ - @Override - protected DownloadMode getType() { - return DownloadMode.SOFT; - } -} \ No newline at end of file diff --git a/src/main/java/org/josfranmc/gutenberg/download/DownloadThread.java b/src/main/java/org/josfranmc/gutenberg/download/DownloadThread.java new file mode 100644 index 0000000..f01266b --- /dev/null +++ b/src/main/java/org/josfranmc/gutenberg/download/DownloadThread.java @@ -0,0 +1,31 @@ +package org.josfranmc.gutenberg.download; + +import java.net.URL; + +import org.josfranmc.gutenberg.download.engine.DownloadEngineFactory; +import org.josfranmc.gutenberg.download.engine.IDownloadEngine; + +/** + * Downloads a resource.
+ * Objects of this class can be runned in separate threads. + * @author Jose Francisco Mena Ceca + * @version 2.0 + */ +public class DownloadThread implements Runnable { + + private IDownloadEngine downloadEngine; + + /** + * @param target download url + * @param parameters settings + */ + public DownloadThread(URL target, DownloadParams parameters) { + downloadEngine = DownloadEngineFactory.create(target, parameters.getZipsPath(), parameters.getEngineType()); + } + + @Override + public void run() { + downloadEngine.download(); + } + +} diff --git a/src/main/java/org/josfranmc/gutenberg/download/IGutenbergDownload.java b/src/main/java/org/josfranmc/gutenberg/download/IGutenbergDownload.java deleted file mode 100644 index de66691..0000000 --- a/src/main/java/org/josfranmc/gutenberg/download/IGutenbergDownload.java +++ /dev/null @@ -1,131 +0,0 @@ -package org.josfranmc.gutenberg.download; - -import org.josfranmc.gutenberg.download.engine.DownloadEngineType; - -/** - * Establece el interfaz de uso que debe implementarse para llevar a cabo la gestión y desarrollo del proceso de descarga de los libros alojados - * por el proyecto Gutenberg (http://www.gutenberg.org/) - * @author Jose Francisco Mena Ceca - * @version 1.0 - * @see DownloadMode - * @see DownloadEngineType - */ -public interface IGutenbergDownload { - - /** - * Desacarga libros - */ - public void downloadBooks(); - - /** - * @return el modo de descarga utilizado - */ - public DownloadMode getDownloadMode(); - - /** - * Establece el mode de realizar las descargas - * @param mode tipo de descarga DownloadMode - * @see DownloadMode - */ - public void setDownloadMode(DownloadMode mode); - - /** - * Establece el tiempo de espera entre descargas, en milisegundos - * @param delay tiempo de espera entre descargas - */ - public void setDelay(int delay); - - /** - * @return el tiempo de espera entre descargas - */ - public int getDelay(); - - /** - * Establece si se deben sobreescribir los ficheros ya existentes en la carpeta especificada por las nuevas descargas en caso de ser los mismos - * @param value true si se deben sobreescribir los archivos, false en caso contrario - */ - public void setOverwrite(boolean value); - - /** - * @return si está activado/desactivado el indicador de sobreescribir ficheros ya descargados - */ - public boolean isOverwrite(); - - /** - * @return la dirección URL desde donde realizar la descarga de los archivos - */ - public String getUrlBase(); - - /** - * Establece la ruta de la carpeta en la que guardar los archivos descargados - * @param savePath ruta de la carpeta en la que guardar los archivos descargados - */ - public void setSavePath(String savePath); - - /** - * @return la ruta en la que guardar los archivos descargados - */ - public String getSavePath(); - - /** - * Establece si se deben descomprimir los ficheros una vez descargados - * @param value true si se deben descomprimir los archivos descargados, false en caso contrario - */ - public void setUnzip(boolean value); - - /** - * @return true si se deben descomprimir los archivos descargados, false en caso contrario - */ - public boolean isUnzip(); - - /** - * Establece el tipo de ficheros a descargar. Tipos válidos: txt, epub, html - * @param fileType tipo de fichero a desrgargar - * @return una referencia al propio objeto que hace la llamada - * @see IGutenbergDownload - */ - public IGutenbergDownload setFileType(String fileType); - - /** - * @return el tipo de fichero configurado para descargar. - */ - public String getFileType(); - - /** - * Establece el idioma de los ficheros a descargar, según la nomenclatura usada por el proyecto Gutenberg. Ej.: es - español, en - inglés, fr - francés

- * Más info: http://www.gutenberg.org/catalog/ - * @param language tipod e idioma - * @return una referencia al propio objeto que hace la llamada - * @see IGutenbergDownload - */ - public IGutenbergDownload setLanguage(String language); - - /** - * @return el idioma configurado de los ficheros para descargar. - */ - public String getLanguage(); - - /** - * @return el número máximo de ficheros a descargar - */ - public int getMaxFilesToDownload(); - - /** - * Establece el número máximo de ficheros a descargar - * @param maxFilesToDownload número máximo de ficheros - */ - public void setMaxFilesToDownload(int maxFilesToDownload); - - /** - * Establece el tipo de motor a utilizar para realizar las descargas - * @param engineType tipode motor DownloadEngineType - * @see DownloadEngineType - */ - public void setEngineType(DownloadEngineType engineType); - - /** - * @return el tipo de motor que se está utilizando para realizar las descargas - * @see DownloadEngineType - */ - public DownloadEngineType getEngineType(); -} \ No newline at end of file diff --git a/src/main/java/org/josfranmc/gutenberg/download/JGutenbergDownloadFactory.java b/src/main/java/org/josfranmc/gutenberg/download/JGutenbergDownloadFactory.java deleted file mode 100644 index cf46b64..0000000 --- a/src/main/java/org/josfranmc/gutenberg/download/JGutenbergDownloadFactory.java +++ /dev/null @@ -1,21 +0,0 @@ -package org.josfranmc.gutenberg.download; - -/** - * Factoría que crea objetos de tipo IGutenbergDownload, los cuales implementan los servicios necesarios para la gestión y desarrollo - * del proceso de descarga de libros alojados por el proyecto Gutenberg. - * @author Jose Francisco Mena Ceca - * @version 1.0 - * @see IGutenbergDownload - * @see JGutenbergDownload - */ -public class JGutenbergDownloadFactory { - - /** - * Crea un objeto JGutenbergDownload que implementa toda la funcionalidad necesaria para la descarga de libros - * @return objeto del tipo IGutenbergDownload - * @see IGutenbergDownload - */ - public static IGutenbergDownload create() { - return new JGutenbergDownload(); - } -} diff --git a/src/main/java/org/josfranmc/gutenberg/download/client/JGutenbergDownloadClient.java b/src/main/java/org/josfranmc/gutenberg/download/client/JGutenbergDownloadClient.java deleted file mode 100644 index 890d312..0000000 --- a/src/main/java/org/josfranmc/gutenberg/download/client/JGutenbergDownloadClient.java +++ /dev/null @@ -1,126 +0,0 @@ -package org.josfranmc.gutenberg.download.client; - -import org.apache.log4j.Logger; -import org.josfranmc.gutenberg.download.DownloadMode; -import org.josfranmc.gutenberg.download.DownloadParams; -import org.josfranmc.gutenberg.download.IGutenbergDownload; -import org.josfranmc.gutenberg.download.JGutenbergDownloadFactory; -import org.josfranmc.gutenberg.download.engine.DownloadEngineType; - -/** - * Clase que permite ejecutar un progrma cliente para realiza descargas de libros desde los repositorios del proyecto Gutenberg. - * @author Jose Francisco Mena Ceca - * @version 1.0 - */ -public class JGutenbergDownloadClient { - - private static final Logger log = Logger.getLogger(JGutenbergDownloadClient.class); - - private static IGutenbergDownload jg = null; - - private static String fileType = null; - - private static String language = null; - - private static DownloadMode downloadMode = null; - - private static DownloadParams params = null; - - - /** - * Método principal de ejecución. - * @param args lista de argumentos pasados en la invocación del programa - */ - public static void main(String [] args){ - - if (readParameters(args)) { - jg = JGutenbergDownloadFactory.create(); - - fileType = (fileType == null) ? "txt" : fileType; - jg.setFileType(fileType); - language = (language == null) ? "en" : language; - jg.setLanguage(language); - jg.setSavePath(params.getSavePath()); - jg.setOverwrite(params.isOverwrite()); - jg.setDelay(params.getDelay()); - jg.setUnzip(params.isUnzip()); - jg.setMaxFilesToDownload(params.getMaxFilesToDownload()); - jg.setEngineType(params.getEngineType()); - if (downloadMode != null) { - jg.setDownloadMode(downloadMode); - } - - jg.downloadBooks(); - } - System.exit(0); - } - - /** - * Lee los parámetros de configuración pasados como argumentos. - * @param args lista de parámetros con los valores que toman - * @return true si no hay ningún error, false en caso contrario - */ - private static boolean readParameters(String [] args) { - log.debug("Total parámetros: " + args.length); - boolean result = true; - if (args.length == 0 || (args[0].equals("-h") || args[0].equals("-help"))) { - showHelp(); - result = false; - } else { - params = new DownloadParams(); - for (int i = 0; i < args.length; i+=2) { - try { - log.debug("argumento " + args[i] + " valor " + args[i+1]); - if (args[i].startsWith("-t")) { - fileType = args[i+1]; - } else if (args[i].equals("-i")) { - language = args[i+1]; - } else if (args[i].equals("-d")) { - params.setDelay(Integer.parseInt(args[i+1])); - } else if (args[i].equals("-s")) { - params.setSavePath(args[i+1]); - } else if (args[i].equals("-m")) { - params.setMaxFilesToDownload(Integer.parseInt(args[i+1])); - } else if (args[i].equals("-z")) { - params.setUnzip(Boolean.valueOf(args[i+1])); - } else if (args[i].equals("-o")) { - params.setOverwrite(Boolean.valueOf(args[i+1])); - } else if (args[i].equals("-e")) { - params.setEngineType(DownloadEngineType.valueOf(args[i+1].toUpperCase())); - } else if (args[i].equals("-x")) { - downloadMode = DownloadMode.valueOf(args[i+1].toUpperCase()); - } else { - System.out.println("Parámetro: " + args[i] + " no reconocido. Ejecute JGutenbergDownloadClient -h para listar opciones."); - result = false; - } - } catch (ArrayIndexOutOfBoundsException a) { - result = false; - System.out.println("Error. Número incorrecto de parámetros"); - break; - } - catch (Exception e) { - result = false; - System.out.println("Error al leer parámetro " + i + ". Parámetro = " + args[i] + ", valor = " + args[i+1]); - e.printStackTrace(); - break; - } - } - } - return result; - } - - private static void showHelp() { - System.out.println("Opciones:"); - System.out.println(" -t tipo_fichero (por defecto txt)"); - System.out.println(" -i idioma (por defecto en)"); - System.out.println(" -d tiempo de espera en milisegundos (por defecto 2000)"); - System.out.println(" -s ruta donde depositar las descargas"); - System.out.println(" -m total ficheros a descargar (por defecto 10, el valor 0 descarga todo)"); - System.out.println(" -z descomprimir (true/false, por defecto true)"); - System.out.println(" -o sobreescribir existentes (true/false, por defecto false)"); - System.out.println(" -x modo de descarga (SOFT/GREEDY, por defecto SOFT)"); - System.out.println(""); - System.out.println("(indicar solo -h para mostrar lista de opciones)"); - System.out.println(""); - } -} diff --git a/src/main/java/org/josfranmc/gutenberg/util/GutenbergException.java b/src/main/java/org/josfranmc/gutenberg/util/GutenbergException.java new file mode 100644 index 0000000..b5d27ba --- /dev/null +++ b/src/main/java/org/josfranmc/gutenberg/util/GutenbergException.java @@ -0,0 +1,27 @@ +package org.josfranmc.gutenberg.util; + +/** + * It allows to capture exceptions in the application in the form of a RuntimeException. + * @author Jose Francisco Mena Ceca + * @version 2.0 + */ +public class GutenbergException extends RuntimeException { + + private static final long serialVersionUID = -8740400616606275937L; + + public GutenbergException() { + super(); + } + + public GutenbergException(String message, Throwable cause) { + super(message, cause); + } + + public GutenbergException(String message) { + super(message); + } + + public GutenbergException(Throwable cause) { + super(cause); + } +} diff --git a/src/test/java/org/josfranmc/gutenberg/download/DownloadParamsTest.java b/src/test/java/org/josfranmc/gutenberg/download/DownloadParamsTest.java new file mode 100644 index 0000000..4f47a40 --- /dev/null +++ b/src/test/java/org/josfranmc/gutenberg/download/DownloadParamsTest.java @@ -0,0 +1,72 @@ +package org.josfranmc.gutenberg.download; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import org.josfranmc.gutenberg.download.engine.DownloadEngineType; +import org.junit.Test; + +public class DownloadParamsTest { + + @Test + public void savePathTest() { + DownloadParams p = new DownloadParams(); + assertEquals("Valor Last-Modified incorrecto", p.getSavePath() + "zips" + System.getProperty("file.separator"), p.getZipsPath()); + + p.setSavePath("test"); + assertEquals("Valor Last-Modified incorrecto", p.getSavePath() + "zips" + System.getProperty("file.separator"), p.getZipsPath()); + } + + @Test + public void maxDownloadasTest() { + DownloadParams p = new DownloadParams(); + p.setMaxFilesToDownload(0); + assertEquals("Valor Last-Modified incorrecto", Integer.MAX_VALUE, p.getMaxFilesToDownload()); + } + + @Test + public void engineTypeTest() { + DownloadParams p = new DownloadParams(); + p.setEngineType(DownloadEngineType.HTTP_CONNECTION); + assertEquals("Engine type incorrecto", DownloadEngineType.HTTP_CONNECTION, p.getEngineType()); + } + + @Test + public void overwriteTest() { + DownloadParams p = new DownloadParams(); + p.setOverwrite(true); + assertTrue(p.isOverwrite()); + } + + @Test + public void unzipTest() { + DownloadParams p = new DownloadParams(); + p.setUnzip(false); + assertFalse(p.isUnzip()); + } + + @Test(expected=IllegalArgumentException.class) + public void delayExceptionTest() { + DownloadParams p = new DownloadParams(); + p.setDelay(-1); + } + + @Test + public void delayTest() { + DownloadParams p = new DownloadParams(); + p.setDelay(5000); + assertEquals("Delay incorrecto", 5000, p.getDelay()); + } + + @Test(expected=IllegalArgumentException.class) + public void fileTypeExceptionTest() { + DownloadParams p = new DownloadParams(); + p.setFileType("doc"); + } + + @Test + public void URL_BOOKS_Test() { + assertEquals("Delay incorrecto", "http://www.gutenberg.org/robot/", DownloadParams.URL_BOOKS); + } +} diff --git a/src/test/java/org/josfranmc/gutenberg/engine/DownloadEngineFactoryTest.java b/src/test/java/org/josfranmc/gutenberg/download/engine/DownloadEngineFactoryTest.java similarity index 100% rename from src/test/java/org/josfranmc/gutenberg/engine/DownloadEngineFactoryTest.java rename to src/test/java/org/josfranmc/gutenberg/download/engine/DownloadEngineFactoryTest.java diff --git a/src/test/java/org/josfranmc/gutenberg/engine/DownloadHttpUrlConnectionTest.java b/src/test/java/org/josfranmc/gutenberg/download/engine/DownloadHttpUrlConnectionTest.java similarity index 100% rename from src/test/java/org/josfranmc/gutenberg/engine/DownloadHttpUrlConnectionTest.java rename to src/test/java/org/josfranmc/gutenberg/download/engine/DownloadHttpUrlConnectionTest.java diff --git a/src/test/java/org/josfranmc/gutenberg/download/engine/DownloadResultTest.java b/src/test/java/org/josfranmc/gutenberg/download/engine/DownloadResultTest.java new file mode 100644 index 0000000..377647e --- /dev/null +++ b/src/test/java/org/josfranmc/gutenberg/download/engine/DownloadResultTest.java @@ -0,0 +1,16 @@ +package org.josfranmc.gutenberg.download.engine; + +import static org.junit.Assert.assertEquals; + +import org.junit.Test; + +public class DownloadResultTest { + + @Test + public void ifNoHeaderTest() { + DownloadResult r = new DownloadResult(); + assertEquals("Valor Last-Modified incorrecto", "", r.getLastModified()); + assertEquals("Valor Content-Type incorrecto", "", r.getContentType()); + assertEquals("Valor Content-Length incorrecto", "", r.getContentLength()); + } +} diff --git a/src/test/java/org/josfranmc/gutenberg/util/FileScrapingTest.java b/src/test/java/org/josfranmc/gutenberg/util/FileScrapingTest.java new file mode 100644 index 0000000..3b231ba --- /dev/null +++ b/src/test/java/org/josfranmc/gutenberg/util/FileScrapingTest.java @@ -0,0 +1,31 @@ +package org.josfranmc.gutenberg.util; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.net.URL; +import java.util.List; + +import org.junit.Test; + +public class FileScrapingTest { + + @Test(expected=IllegalStateException.class) + public void createObjectTest() { + new FileScraping(); + } + + @Test + public void getLinksWhenPathIsNull() { + List links = FileScraping.getLinks(null); + assertTrue(links.isEmpty()); + } + + @Test + public void getLinksTest() { + URL url = FileScrapingTest.class.getClassLoader().getResource("links_to_download.html"); + List links = FileScraping.getLinks(url.getPath().substring(1)); + assertTrue(!links.isEmpty()); + assertEquals("Link incorrecto", "http://aleph.gutenberg.org/1/0/2/9/10293/10293-8.zip", links.get(0)); + } +} diff --git a/src/test/resources/links_to_download.html b/src/test/resources/links_to_download.html new file mode 100644 index 0000000..e043208 --- /dev/null +++ b/src/test/resources/links_to_download.html @@ -0,0 +1,212 @@ + + + + + + All Files (offset: 0, filetypes: txt, languages: es) - Project Gutenberg + + +

All Files (offset: 0, filetypes: txt, languages: es)

http://aleph.gutenberg.org/1/0/2/9/10293/10293-8.zip

+ +

http://aleph.gutenberg.org/1/0/2/9/10293/10293.zip

+ +

http://aleph.gutenberg.org/1/0/5/0/10506/10506-8.zip

+ +

http://aleph.gutenberg.org/1/0/5/0/10506/10506.zip

+ +

http://aleph.gutenberg.org/1/0/8/1/10814/10814-8.zip

+ +

http://aleph.gutenberg.org/1/0/8/1/10814/10814.zip

+ +

http://aleph.gutenberg.org/1/0/8/2/10821/10821-8.zip

+ +

http://aleph.gutenberg.org/1/0/8/2/10821/10821.zip

+ +

http://aleph.gutenberg.org/1/0/8/2/10822/10822-8.zip

+ +

http://aleph.gutenberg.org/1/0/8/2/10822/10822.zip

+ +

http://aleph.gutenberg.org/1/0/8/2/10825/10825-8.zip

+ +

http://aleph.gutenberg.org/1/0/9/0/10909/10909-8.zip

+ +

http://aleph.gutenberg.org/1/0/9/0/10909/10909.zip

+ +

http://aleph.gutenberg.org/1/1/0/4/11047/11047-8.zip

+ +

http://aleph.gutenberg.org/1/1/0/4/11047/11047.zip

+ +

http://aleph.gutenberg.org/1/1/0/7/11070/11070-8.zip

+ +

http://aleph.gutenberg.org/1/1/0/7/11070/11070.zip

+ +

http://aleph.gutenberg.org/1/1/0/7/11071/11071-8.zip

+ +

http://aleph.gutenberg.org/1/1/0/7/11071/11071.zip

+ +

http://aleph.gutenberg.org/1/1/0/8/11081/11081-8.zip

+ +

http://aleph.gutenberg.org/1/1/0/8/11081/11081.zip

+ +

http://aleph.gutenberg.org/1/1/3/0/11302/11302-8.zip

+ +

http://aleph.gutenberg.org/1/1/5/2/11529/11529-8.zip

+ +

http://aleph.gutenberg.org/1/1/5/2/11529/11529.zip

+ +

http://aleph.gutenberg.org/1/1/5/9/11598/11598-8.zip

+ +

http://aleph.gutenberg.org/1/1/5/9/11598/11598.zip

+ +

http://aleph.gutenberg.org/1/1/6/5/11657/11657-8.zip

+ +

http://aleph.gutenberg.org/1/1/6/5/11657/11657.zip

+ +

http://aleph.gutenberg.org/1/1/6/6/11663/11663-8.zip

+ +

http://aleph.gutenberg.org/1/1/6/6/11663/11663.zip

+ +

http://aleph.gutenberg.org/1/1/6/6/11669/11669-8.zip

+ +

http://aleph.gutenberg.org/1/1/6/6/11669/11669.zip

+ +

http://aleph.gutenberg.org/1/2/2/7/12274/12274-8.zip

+ +

http://aleph.gutenberg.org/1/2/2/7/12275/12275-8.zip

+ +

http://aleph.gutenberg.org/1/2/2/7/12276/12276-8.zip

+ +

http://aleph.gutenberg.org/1/2/5/0/12500/12500-8.zip

+ +

http://aleph.gutenberg.org/1/2/5/0/12501/12501-8.zip

+ +

http://aleph.gutenberg.org/1/2/5/0/12502/12502-8.zip

+ +

http://aleph.gutenberg.org/1/2/5/0/12503/12503-8.zip

+ +

http://aleph.gutenberg.org/1/2/3/6/12368/12368-8.zip

+ +

http://aleph.gutenberg.org/1/2/3/6/12368/12368.zip

+ +

http://aleph.gutenberg.org/1/2/4/3/12435/12435-8.zip

+ +

http://aleph.gutenberg.org/1/2/4/3/12435/12435.zip

+ +

http://aleph.gutenberg.org/1/2/4/5/12457/12457-8.zip

+ +

http://aleph.gutenberg.org/1/2/4/5/12457/12457.zip

+ +

http://aleph.gutenberg.org/1/2/6/2/12627/12627-8.zip

+ +

http://aleph.gutenberg.org/1/2/6/2/12627/12627.zip

+ +

http://aleph.gutenberg.org/1/2/8/4/12840/12840-8.zip

+ +

http://aleph.gutenberg.org/1/2/8/4/12840/12840.zip

+ +

http://aleph.gutenberg.org/1/2/8/4/12848/12848-8.zip

+ +

http://aleph.gutenberg.org/1/3/2/1/13210/13210-8.zip

+ +

http://aleph.gutenberg.org/1/3/2/1/13210/13210.zip

+ +

http://aleph.gutenberg.org/1/3/2/1/13216/13216-8.zip

+ +

http://aleph.gutenberg.org/1/3/2/1/13216/13216.zip

+ +

http://aleph.gutenberg.org/1/3/2/6/13264/13264-8.zip

+ +

http://aleph.gutenberg.org/1/3/2/6/13264/13264.zip

+ +

http://aleph.gutenberg.org/1/3/4/5/13458/13458-8.zip

+ +

http://aleph.gutenberg.org/1/3/4/7/13479/13479-8.zip

+ +

http://aleph.gutenberg.org/1/3/4/7/13479/13479.zip

+ +

http://aleph.gutenberg.org/1/3/4/9/13492/13492-8.zip

+ +

http://aleph.gutenberg.org/1/3/4/9/13492/13492.zip

+ +

http://aleph.gutenberg.org/1/3/5/0/13507/13507-8.zip

+ +

http://aleph.gutenberg.org/1/3/5/0/13507/13507.zip

+ +

http://aleph.gutenberg.org/1/3/5/1/13516/13516-8.zip

+ +

http://aleph.gutenberg.org/1/3/5/1/13516/13516.zip

+ +

http://aleph.gutenberg.org/1/3/5/1/13519/13519-8.zip

+ +

http://aleph.gutenberg.org/1/3/5/1/13519/13519.zip

+ +

http://aleph.gutenberg.org/1/3/6/0/13608/13608-8.zip

+ +

http://aleph.gutenberg.org/1/3/6/0/13608/13608.zip

+ +

http://aleph.gutenberg.org/1/3/9/0/13904/13904-8.zip

+ +

http://aleph.gutenberg.org/1/4/2/3/14235/14235-8.zip

+ +

http://aleph.gutenberg.org/1/4/2/3/14236/14236-8.zip

+ +

http://aleph.gutenberg.org/1/4/3/0/14307/14307-8.zip

+ +

http://aleph.gutenberg.org/1/4/3/0/14308/14308-8.zip

+ +

http://aleph.gutenberg.org/1/4/3/1/14311/14311-8.zip

+ +

http://aleph.gutenberg.org/1/4/3/1/14318/14318-8.zip

+ +

http://aleph.gutenberg.org/1/4/3/2/14329/14329-8.zip

+ +

http://aleph.gutenberg.org/1/4/7/2/14722/14722-8.zip

+ +

http://aleph.gutenberg.org/1/4/7/6/14765/14765-8.zip

+ +

http://aleph.gutenberg.org/1/4/7/9/14795/14795-8.zip

+ +

http://aleph.gutenberg.org/1/4/7/9/14796/14796-8.zip

+ +

http://aleph.gutenberg.org/1/4/8/3/14839/14839-8.zip

+ +

http://aleph.gutenberg.org/1/4/9/4/14944/14944-8.zip

+ +

http://aleph.gutenberg.org/1/4/9/9/14995/14995-8.zip

+ +

http://aleph.gutenberg.org/1/5/0/2/15027/15027-8.zip

+ +

http://aleph.gutenberg.org/1/5/0/4/15046/15046-8.zip

+ +

http://aleph.gutenberg.org/1/5/0/5/15054/15054-8.zip

+ +

http://aleph.gutenberg.org/1/5/0/6/15066/15066-8.zip

+ +

http://aleph.gutenberg.org/1/5/1/1/15115/15115-8.zip

+ +

http://aleph.gutenberg.org/1/5/1/2/15127/15127-8.zip

+ +

http://aleph.gutenberg.org/1/5/1/2/15127/15127.zip

+ +

http://aleph.gutenberg.org/1/5/2/0/15206/15206-8.zip

+ +

http://aleph.gutenberg.org/1/5/3/3/15334/15334-8.zip

+ +

http://aleph.gutenberg.org/1/5/3/5/15353/15353-8.zip

+ +

http://aleph.gutenberg.org/1/5/3/5/15353/15353.zip

+ +

http://aleph.gutenberg.org/1/5/4/2/15421/15421-8.zip

+ +

http://aleph.gutenberg.org/1/5/5/3/15531/15531-8.zip

+ +

http://aleph.gutenberg.org/1/5/5/3/15532/15532-8.zip

+ +

http://aleph.gutenberg.org/1/5/5/3/15532/15532.zip

+ +

http://aleph.gutenberg.org/1/5/6/3/15633/15633-8.zip

+ +

Next Page

+ + + diff --git a/src/test/resources/zips/10293-8.zip b/src/test/resources/zips/10293-8.zip new file mode 100644 index 0000000000000000000000000000000000000000..b9215a5429eae9c8f08353f6b2c38c3285344843 GIT binary patch literal 124086 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 I Date: Mon, 18 Nov 2019 22:07:54 +0100 Subject: [PATCH 02/27] =?UTF-8?q?Refactorizaci=C3=B3n.=20Se=20eliminan=20c?= =?UTF-8?q?lases=20y=20se=20simplifica=20el=20proceso=20de=20descarga.=20N?= =?UTF-8?q?ueva=20forma=20de=20manejar=20los=20par=C3=A1metros?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- jar-shaded/JGutenbergDownload-1.0-shaded.jar | Bin 522704 -> 522279 bytes pom.xml | 38 +- .../gutenberg/download/DownloadBooks.java | 366 ++++++------- .../gutenberg/download/DownloadParams.java | 211 +++++--- .../gutenberg/download/DownloadThread.java | 62 +-- .../download/JGutenbergDownload.java | 482 ++++++++---------- .../engine/DownloadEngineFactory.java | 89 ++-- .../download/engine/DownloadEngineType.java | 6 +- .../engine/DownloadHttpUrlConnection.java | 114 ++--- .../download/engine/DownloadResult.java | 75 +-- .../download/engine/IDownloadEngine.java | 32 +- .../josfranmc/gutenberg/util/FileManager.java | 99 ++-- .../gutenberg/util/FileScraping.java | 24 +- .../gutenberg/util/GutenbergException.java | 54 +- src/main/resources/log4j.properties | 19 +- .../download/JGutenbergDownloadTest.java | 212 ++++++-- .../engine/DownloadEngineFactoryTest.java | 95 +++- .../engine/DownloadHttpUrlConnectionTest.java | 14 +- .../gutenberg/util/FileManagerTest.java | 56 +- 19 files changed, 1163 insertions(+), 885 deletions(-) diff --git a/jar-shaded/JGutenbergDownload-1.0-shaded.jar b/jar-shaded/JGutenbergDownload-1.0-shaded.jar index b05b1ce6c77508d2e0885ca6b08b254fd4bd62ec..a9b1b647d589b3b71b8f2f19a6e9cec85928daca 100644 GIT binary patch delta 46642 zcmZU(18`TVCwCTN{L8xpegu477X#%pf9lilC@Rt4I8LJ zW#?l}$Ly^vJan0&!#%xf$J6PY%K6MR(260X%&ccYA>k?fNYnpM~c&N29s z4xHUZ)bmbHI?a?^79+z?*VlIws@*yzMU zZ74FKD590acQ1#6ZfaLfK<0~*m7uM44QYD8_TPmYDIWBZah{_qfU+D6Y&hzjpD)3HhJhB-473fO3@u?S@!Tc7D@Cis;oaoL3BF;2}~mxib)|U)J!9^SLE$ zo$P7VDab^rSz`s=`0w<_Ni+*bz2T978|KWnm+0?BE(Bo#bnP*M=HCt&=op);Hcy@p zI_sJoR5TMNuD(Z-YJnpz>ZC;!{ZY`>w#E5*p3xGBHZfdi8&6^>35uUB4znlSorkNQ z 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 delta 47045 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

?~2-LbNe;!ZRJ)~^KP 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 diff --git a/pom.xml b/pom.xml index 45f676b..4705c62 100644 --- a/pom.xml +++ b/pom.xml @@ -4,12 +4,11 @@ org.josfranmc.gutenberg JGutenbergDownload - 1.0 + 2.0 jar JGutenbergDownload - Descarga de ficheros desde los repositorios del proyecto Gutenberg - http://maven.apache.org + Download files from the Gutenberg project repositories @@ -42,7 +41,7 @@ - JGutenbergDownload-1.0 + ${project.artifactId}-${project.version} org.apache.maven.plugins @@ -64,7 +63,7 @@ true lib/ - org.josfranmc.gutenberg.download.client.JGutenbergDownloadClient + org.josfranmc.gutenberg.download.JGutenbergDownload @@ -81,15 +80,13 @@ copy-dependencies - - ${project.build.directory}/lib - + ${project.build.directory}/lib + junit,hamcrest-core - - + org.apache.maven.plugins maven-shade-plugin @@ -111,7 +108,26 @@ - + + + org.jacoco + jacoco-maven-plugin + 0.8.5 + + + + prepare-agent + + + + report + test + + report + + + + diff --git a/src/main/java/org/josfranmc/gutenberg/download/DownloadBooks.java b/src/main/java/org/josfranmc/gutenberg/download/DownloadBooks.java index f464c2f..58d9301 100644 --- a/src/main/java/org/josfranmc/gutenberg/download/DownloadBooks.java +++ b/src/main/java/org/josfranmc/gutenberg/download/DownloadBooks.java @@ -1,183 +1,183 @@ -package org.josfranmc.gutenberg.download; - -import java.net.MalformedURLException; -import java.net.URL; -import java.util.Iterator; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.concurrent.TimeUnit; - -import org.apache.log4j.Logger; -import org.josfranmc.gutenberg.download.engine.DownloadEngineFactory; -import org.josfranmc.gutenberg.download.engine.DownloadResult; -import org.josfranmc.gutenberg.download.engine.IDownloadEngine; -import org.josfranmc.gutenberg.util.GutenbergException; -import org.josfranmc.gutenberg.util.FileManager; -import org.josfranmc.gutenberg.util.FileScraping; - -/** - * Allows to perform the file download process. - * @author Jose Francisco Mena Ceca - * @version 2.0 - * @see JGutenbergDownload - * @see DownloadParams - */ -public class DownloadBooks { - - private static final Logger log = Logger.getLogger(DownloadBooks.class); - - private static ExecutorService executorService; - - private DownloadParams parameters; - - private IDownloadEngine downloadEngine; - - private int finishedDownloads = 0; - - - public DownloadBooks(DownloadParams parameters) { - this.parameters = parameters; - } - - private void settingDownloadEngine() { - downloadEngine = DownloadEngineFactory.create(parameters.getEngineType()); - downloadEngine.setResource(parameters.getUrlBase()); - downloadEngine.setSavePath(parameters.getZipsPath()); - } - - /** - * Perfoms the book download process.

- * The first download should be a file with links to the books to download. All existing links are downloaded. - * If there is a link to another page with more links, this page is downloaded and processed in the same way. - * This process continue until there are no more pages.

- * All downloads run on separate threads. - * @throws GutenbergException if there is any error downloading - * @throws InterruptedException if there is an interruption while waiting ExecutorService shutdown - */ - public void executeDownload() throws GutenbergException, InterruptedException { - - settingDownloadEngine(); - - DownloadResult downloadResult = downloadEngine.download(); - if (downloadResult.getContentType().equals("text/html")) { - - executorService = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors() * 3); - - processPage(downloadResult.getSavedFilePath()); - - try { - executorService.shutdown(); - while (!executorService.awaitTermination(2, TimeUnit.MINUTES)) {} - } catch (InterruptedException e) { - log.warn("InterruptedException shutting down executorService. " + e.getMessage()); - } - } - } - - /** - * It process a file with links that are the urls to the books to download. Existing links are extracted and then downloaded.
- * The last link could be the link to another page with more links. If so, we process the new file calling this method again. - * @param file file with links to the books to download - */ - private void processPage(String file) { - Iterator it = FileScraping.getLinks(file).iterator(); - while (it.hasNext() && getFinishedDownloads() < getMaxFilesToDownload()) { - String link = it.next(); - if (createResource(link)) { - try { - getBook(link); - } catch (MalformedURLException e) { - try { - DownloadResult downloadResult = getNewPageWithBookLinks(link); - if (downloadResult.getContentType().equals("text/html")) { - processPage(downloadResult.getSavedFilePath()); - } - } catch (MalformedURLException ex) { - log.error("Cannot get url for " + link); - log.error(" Url Base = " + getUrlBase()); - } - } - } - } - } - - /** - * Downloads a book. The download is runned in a new thread. - * @param link download url - * @throws MalformedURLException - */ - private void getBook(String link) throws MalformedURLException { - URL newURLToDownload = new URL(link); - delayDownload(); - executorService.submit(new DownloadThread(newURLToDownload, parameters)); - incrementFinishedDownloads(); - } - - private DownloadResult getNewPageWithBookLinks(String link) throws MalformedURLException { - URL newURLToDownload = new URL(getUrlBase(), link.replace("&", "&")); - downloadEngine.setResource(newURLToDownload); - log.info("New url " + newURLToDownload.toString()); - return downloadEngine.download(); - } - - /** - * Checks if one resource must be downloaded. The resource can be downloaded if any of the following conditions are fulfilled: - *

    - *
  • it is the first time the resource is downloaded
  • - *
  • overwrite resources parameter is active
  • - *
  • the resource link contains the word harvest (it is a link to a page with more book links)
  • - *
- * @param link link to the resource to download - * @return true if the resource must be downloaded, false otherwise - */ - private boolean createResource(String link) { - boolean result = false; - if (!resourceAlreadyDownloaded(link) || isOverwrite() || link.contains("harvest")) { - result = true; - } - return result; - } - - /** - * Checks if the file corresponding to the resource indicated by a certain link exists in the directory where the resources are downloaded - * @param link resource link to download - * @return true if the resource to download already exists, false otherwise - */ - private boolean resourceAlreadyDownloaded(String link) { - return (FileManager.fileExists(downloadEngine.getSavePath(), link)); - } - - private boolean isOverwrite() { - return parameters.isOverwrite(); - } - - private int getDelay() { - return parameters.getDelay(); - } - - private URL getUrlBase() { - return parameters.getUrlBase(); - } - - private int getMaxFilesToDownload() { - return parameters.getMaxFilesToDownload(); - } - - private int getFinishedDownloads() { - return finishedDownloads; - } - - private void incrementFinishedDownloads() { - this.finishedDownloads++; - } - - private void delayDownload() { - if (getDelay() > 0) { - try { - Thread.sleep(getDelay()); - } catch (InterruptedException e) { - log.error("InterruptedException delayDownload. " + e); - } - } - } -} +package org.josfranmc.gutenberg.download; + +import java.net.MalformedURLException; +import java.net.URL; +import java.util.Iterator; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; + +import org.apache.log4j.Logger; +import org.josfranmc.gutenberg.download.engine.DownloadEngineFactory; +import org.josfranmc.gutenberg.download.engine.DownloadResult; +import org.josfranmc.gutenberg.download.engine.IDownloadEngine; +import org.josfranmc.gutenberg.util.GutenbergException; +import org.josfranmc.gutenberg.util.FileManager; +import org.josfranmc.gutenberg.util.FileScraping; + +/** + * Allows to perform the file download process. + * @author Jose Francisco Mena Ceca + * @version 2.0 + * @see JGutenbergDownload + * @see DownloadParams + */ +public class DownloadBooks { + + private static final Logger log = Logger.getLogger(DownloadBooks.class); + + private static ExecutorService executorService; + + private DownloadParams parameters; + + private IDownloadEngine downloadEngine; + + private int finishedDownloads = 0; + + + public DownloadBooks(DownloadParams parameters) { + this.parameters = parameters; + } + + private void settingDownloadEngine() { + downloadEngine = DownloadEngineFactory.create(parameters.getEngineType()); + downloadEngine.setResource(parameters.getUrlBase()); + downloadEngine.setSavePath(parameters.getZipsPath()); + } + + /** + * Perfoms the book download process.

+ * The first download should be a file with links to the books to download. All existing links are downloaded. + * If there is a link to another page with more links, this page is downloaded and processed in the same way. + * This process continue until there are no more pages.

+ * All downloads run on separate threads. + * @throws GutenbergException if there is any error downloading + * @throws InterruptedException if there is an interruption while waiting ExecutorService shutdown + */ + public void executeDownload() throws GutenbergException, InterruptedException { + + settingDownloadEngine(); + + DownloadResult downloadResult = downloadEngine.download(); + if (downloadResult.getContentType().equals("text/html")) { + + executorService = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors() * 3); + + processPage(downloadResult.getSavedFilePath()); + + try { + executorService.shutdown(); + while (!executorService.awaitTermination(2, TimeUnit.MINUTES)) {} + } catch (InterruptedException e) { + log.warn("InterruptedException shutting down executorService. " + e.getMessage()); + } + } + } + + /** + * It process a file with links that are the urls to the books to download. Existing links are extracted and then downloaded.
+ * The last link could be the link to another page with more links. If so, we process the new file calling this method again. + * @param file file with links to the books to download + */ + private void processPage(String file) { + Iterator it = FileScraping.getLinks(file).iterator(); + while (it.hasNext() && getFinishedDownloads() < getMaxFilesToDownload()) { + String link = it.next(); + if (createResource(link)) { + try { + getBook(link); + } catch (MalformedURLException e) { + try { + DownloadResult downloadResult = getNewPageWithBookLinks(link); + if (downloadResult.getContentType().equals("text/html")) { + processPage(downloadResult.getSavedFilePath()); + } + } catch (MalformedURLException ex) { + log.error("Cannot get url for " + link); + log.error(" Url Base = " + getUrlBase()); + } + } + } + } + } + + /** + * Downloads a book. The download is runned in a new thread. + * @param link download url + * @throws MalformedURLException + */ + private void getBook(String link) throws MalformedURLException { + URL newURLToDownload = new URL(link); + delayDownload(); + executorService.submit(new DownloadThread(newURLToDownload, parameters)); + incrementFinishedDownloads(); + } + + private DownloadResult getNewPageWithBookLinks(String link) throws MalformedURLException { + URL newURLToDownload = new URL(getUrlBase(), link.replace("&", "&")); + downloadEngine.setResource(newURLToDownload); + log.info("New url " + newURLToDownload.toString()); + return downloadEngine.download(); + } + + /** + * Checks if one resource must be downloaded. The resource can be downloaded if any of the following conditions are fulfilled: + *

    + *
  • it is the first time the resource is downloaded
  • + *
  • overwrite resources parameter is active
  • + *
  • the resource link contains the word harvest (it is a link to a page with more book links)
  • + *
+ * @param link link to the resource to download + * @return true if the resource must be downloaded, false otherwise + */ + private boolean createResource(String link) { + boolean result = false; + if (!resourceAlreadyDownloaded(link) || isOverwrite() || link.contains("harvest")) { + result = true; + } + return result; + } + + /** + * Checks if the file corresponding to the resource indicated by a certain link exists in the directory where the resources are downloaded + * @param link resource link to download + * @return true if the resource to download already exists, false otherwise + */ + private boolean resourceAlreadyDownloaded(String link) { + return (FileManager.fileExists(downloadEngine.getSavePath(), link)); + } + + private boolean isOverwrite() { + return parameters.isOverwrite(); + } + + private int getDelay() { + return parameters.getDelay(); + } + + private URL getUrlBase() { + return parameters.getUrlBase(); + } + + private int getMaxFilesToDownload() { + return parameters.getMaxFilesToDownload(); + } + + private int getFinishedDownloads() { + return finishedDownloads; + } + + private void incrementFinishedDownloads() { + this.finishedDownloads++; + } + + private void delayDownload() { + if (getDelay() > 0) { + try { + Thread.sleep(getDelay()); + } catch (InterruptedException e) { + log.error("InterruptedException delayDownload. " + e); + } + } + } +} diff --git a/src/main/java/org/josfranmc/gutenberg/download/DownloadParams.java b/src/main/java/org/josfranmc/gutenberg/download/DownloadParams.java index 30f2ed9..7ddb42a 100644 --- a/src/main/java/org/josfranmc/gutenberg/download/DownloadParams.java +++ b/src/main/java/org/josfranmc/gutenberg/download/DownloadParams.java @@ -1,168 +1,265 @@ package org.josfranmc.gutenberg.download; +import java.net.MalformedURLException; import java.net.URL; import org.josfranmc.gutenberg.download.engine.DownloadEngineType; /** - * Encapsula los parámetros que permiten configurar la aplicación. Son los siguientes: + * Parameters used in the application. They are: *
    - *
  • urlBase: url del recurso a descargar
  • - *
  • savePath: ruta local donde descargar los recursos
  • - *
  • overwrite: indica si se deben sobreescribir recursos que ya están descargados
  • - *
  • delay: tiempo de espera entre descargas
  • - *
  • unzip: indica si los recursos descargados en formato zip deben o no descomprimirse
  • - *
  • engineType: tipo de motor a utilizar para la descarga
  • + *
  • fileType: the type of files to download (default txt)
  • + *
  • language: the language of files to download (default es)
  • + *
  • urlBase: initial download url
  • + *
  • savePath: path where to get downloaded resources (default System.getProperty("user.dir"))
  • + *
  • overwrite: if the existing files must be overwritten by the downloaded ones (default false)
  • + *
  • delay: delay between downloads, in milliseconds (default 2000)
  • + *
  • unzip: if downloaded files must be unzipping (default true)
  • + *
  • maxFilesToDownload: the maximum number of files to download (default 10, 0 for download all existing)
  • + *
  • engineType: the type of downloading engine to use (default DownloadEngineType.HTTP_CONNECTION)
  • *
* @author Jose Francisco Mena Ceca - * @version 1.0 + * @version 2.0 * @see DownloadEngineType + * @see JGutenbergDownload */ public class DownloadParams { /** - * url del recurso a descargar + * Base URL of the Gutenberg project to download */ - private URL urlBase = null; + public static final String URL_BOOKS = "http://www.gutenberg.org/robot/"; - /** - * Ruta de la carpeta en la que obtener los recursos descargados. - */ - private String savePath = null; + private String fileType; - /** - * Si deben sobreescribirse los recursos existentes por las nuevas descargas en caso de ser los mismos - */ - private boolean overwrite = false; + private String language; - /** - * Intervalo de espera entre descargas, en milisegundos - */ - private int delay = 2000; + private URL urlBase; + + private String savePath; + + private String zipsPath; + + private boolean overwrite; + + private int delay; + private boolean unzip; + + private int maxFilesToDownload; + + private DownloadEngineType engineType; + + /** - * Si se deben descomprimir los archivos descargados + * Main constructor. It initializes the object with default values: + *
    + *
  • fileType: txt
  • + *
  • language: es
  • + *
  • savePath: System.getProperty("user.dir")
  • + *
  • overwrite: false
  • + *
  • delay: 2000 milliseconds
  • + *
  • unzip: true
  • + *
  • maxFilesToDownload: 10 (0 for download all existing)
  • + *
  • engineType: DownloadEngineType.HTTP_CONNECTION
  • + *
*/ - private boolean unzip = true; + public DownloadParams() { + fileType = "txt"; + language = "es"; + buildHarvestURL(); + savePath = System.getProperty("user.dir") + System.getProperty("file.separator"); + setZipsPath(); + overwrite = false; + delay = 2000; + unzip = true; + maxFilesToDownload = 10; + engineType = DownloadEngineType.HTTP_CONNECTION; + } + /** - * Número maximo de ficheros a descargar. El valor cero indica descargar todos los ficheros disponibles. + * @return the type of files to download */ - private int maxFilesToDownload = 10; - + public String getFileType() { + return fileType; + } + /** - * Tipo de motor de descarga a utilizar + * Sets the type of file to download. Valid types: txt, epub, html + * @param fileType type of file to download + * @throws IllegalArgumentException if an invalid file type is indicated */ - DownloadEngineType engineType = DownloadEngineType.HTTP_CONNECTION; - - + public void setFileType(String fileType) { + if (!fileType.equals("txt") && !fileType.equals("epub") && !fileType.equals("html")) { + throw new IllegalArgumentException("Invalid file type"); + } + this.fileType = fileType; + buildHarvestURL(); + } + /** - * Constructor por defecto. + * @return the language of files to download */ - public DownloadParams() { } + public String getLanguage() { + return language; + } /** - * @return la dirección url inicial del recurso a obtener + * Sets the language of the files to download acording to Gutenberg nomeclature.
+ * Ej.: es - spanish, en - english, fr - french + * @param language type of language + */ + public void setLanguage(String language) { + this.language = language; + buildHarvestURL(); + } + + /** + * @return initial download url */ public URL getUrlBase() { return urlBase; } /** - * Establece la dirección url inicial del recurso a obtener - * @param urlBase dirección url + * Sets initial download url + * @param urlBase url address */ - public void setUrlBase(URL urlBase) { + private void setUrlBase(URL urlBase) { this.urlBase = urlBase; } /** - * @return la ruta de la carpeta en la que obtener los recursos descargados + * @return folder path where to get downloaded resources */ public String getSavePath() { return savePath; } /** - * Establece la ruta de la carpeta en la que obtener los recursos descargados. - * @param savePath ruta de la carpeta en la que obtener los recursos descargados + * Sets folder path where to get downloaded resources + * @param savePath folder path where to get downloaded resources + * @throws IllegalArgumentException if the parameter is null */ public void setSavePath(String savePath) { - this.savePath = savePath; + if (savePath == null) { + throw new IllegalArgumentException("The directory path where to save downloads cannot be null"); + } + String fileSeparator = System.getProperty("file.separator"); + String path = (!savePath.endsWith(fileSeparator)) ? savePath.concat(fileSeparator) : savePath; + this.savePath = path; + setZipsPath(); } /** - * @return true si se deben sobreescribir los archivos existentes por los descargados en caso de ser los mismos, false en caso contrario + * @return folder path where to get downloaded zips + */ + public String getZipsPath() { + return zipsPath; + } + + private void setZipsPath() { + this.zipsPath = savePath + "zips" + System.getProperty("file.separator"); + } + + /** + * @return true if the existing files must be overwritten by the downloaded ones, false otherwise */ public boolean isOverwrite() { return overwrite; } /** - * Establece si deben sobreescribirse los recursos existentes por las nuevas descargas en caso de ser los mismos - * @param overwrite true si se deben sobreescribir los archivos, false en caso contrario + * Sets if the existing files must be overwritten by the downloaded ones + * @param overwrite true if the existing files must be overwritten, false otherwise */ public void setOverwrite(boolean overwrite) { this.overwrite = overwrite; } /** - * @return el intervalo de espera entre descargas, en milisegundos + * @return delay between downloads, in milliseconds */ public int getDelay() { return delay; } /** - * Establece el intervalo de espera entre descargas. - * @param delay tiempo de espera, en milisegundos + * Sets delay between downloads + * @param delay waiting time, in milliseconds + * @throws IllegalArgumentException if a number less than zero is indicated */ public void setDelay(int delay) { + if (delay < 0) { + throw new IllegalArgumentException("delay cannot be less than zero"); + } this.delay = delay; } /** - * @return true si se deben descomprimir los archivos descargados, false en caso contrario + * @return true if downloaded files must be unzipping, false otherwise */ public boolean isUnzip() { return unzip; } /** - * Establece si se deben descomprimir los archivos descargados - * @param unzip true si se deben descomprimir los archivos descargados, false en caso contrario + * Sets if downloaded files must be unzipping, + * @param unzip true if downloaded files must be unzipping, false otherwise */ public void setUnzip(boolean unzip) { this.unzip = unzip; } /** - * @return el número máximo de ficheros a descargar + * @return the maximum number of files to download */ public int getMaxFilesToDownload() { return maxFilesToDownload; } /** - * Establece el número máximo de ficheros a descargar. El valor cero indica descargar todos los ficheros disponibles. - * @param maxFilesToDownload número máximo de ficheros + * Sets the maximum number of files to download. The zero indicates downloading all available files. + * @param maxFilesToDownload files number + * @throws IllegalArgumentException if a number less than zero is indicated */ public void setMaxFilesToDownload(int maxFilesToDownload) { - this.maxFilesToDownload = maxFilesToDownload; + if (maxFilesToDownload < 0) { + throw new IllegalArgumentException("maxFilesToDownload cannot be less than zero"); + } + this.maxFilesToDownload = (maxFilesToDownload == 0) ? Integer.MAX_VALUE : maxFilesToDownload; } /** - * @return el tipo de motor de descarga a utilizar + * @return the type of downloading engine to use + * @see DownloadEngineType */ public DownloadEngineType getEngineType() { return engineType; } /** - * Establece el tipo de motor de descarga a utilizar - * @param engineType tipo de motor de descarga a utilizar + * Sets the type of downloading engine to use + * @param engineType engine type + * @see DownloadEngineType */ public void setEngineType(DownloadEngineType engineType) { this.engineType = engineType; } + + /** + * Build the main url from which to download the books + */ + private void buildHarvestURL() { + String queryParams = "harvest?filetypes[]=" + getFileType() + "&langs[]=" + getLanguage(); + String url = URL_BOOKS + queryParams; + try { + setUrlBase(new URL(url)); + } catch (MalformedURLException e) { + throw new IllegalStateException("Wrong base URL: " + url); + } catch (Exception e) { + throw new IllegalStateException("Cannot create base URL: " + url); + } + } } diff --git a/src/main/java/org/josfranmc/gutenberg/download/DownloadThread.java b/src/main/java/org/josfranmc/gutenberg/download/DownloadThread.java index f01266b..18bad57 100644 --- a/src/main/java/org/josfranmc/gutenberg/download/DownloadThread.java +++ b/src/main/java/org/josfranmc/gutenberg/download/DownloadThread.java @@ -1,31 +1,31 @@ -package org.josfranmc.gutenberg.download; - -import java.net.URL; - -import org.josfranmc.gutenberg.download.engine.DownloadEngineFactory; -import org.josfranmc.gutenberg.download.engine.IDownloadEngine; - -/** - * Downloads a resource.
- * Objects of this class can be runned in separate threads. - * @author Jose Francisco Mena Ceca - * @version 2.0 - */ -public class DownloadThread implements Runnable { - - private IDownloadEngine downloadEngine; - - /** - * @param target download url - * @param parameters settings - */ - public DownloadThread(URL target, DownloadParams parameters) { - downloadEngine = DownloadEngineFactory.create(target, parameters.getZipsPath(), parameters.getEngineType()); - } - - @Override - public void run() { - downloadEngine.download(); - } - -} +package org.josfranmc.gutenberg.download; + +import java.net.URL; + +import org.josfranmc.gutenberg.download.engine.DownloadEngineFactory; +import org.josfranmc.gutenberg.download.engine.IDownloadEngine; + +/** + * Downloads a resource.
+ * Objects of this class can be runned in separate threads. + * @author Jose Francisco Mena Ceca + * @version 2.0 + */ +public class DownloadThread implements Runnable { + + private IDownloadEngine downloadEngine; + + /** + * @param target download url + * @param parameters settings + */ + public DownloadThread(URL target, DownloadParams parameters) { + downloadEngine = DownloadEngineFactory.create(target, parameters.getZipsPath(), parameters.getEngineType()); + } + + @Override + public void run() { + downloadEngine.download(); + } + +} diff --git a/src/main/java/org/josfranmc/gutenberg/download/JGutenbergDownload.java b/src/main/java/org/josfranmc/gutenberg/download/JGutenbergDownload.java index daad49c..849ee18 100644 --- a/src/main/java/org/josfranmc/gutenberg/download/JGutenbergDownload.java +++ b/src/main/java/org/josfranmc/gutenberg/download/JGutenbergDownload.java @@ -1,393 +1,343 @@ package org.josfranmc.gutenberg.download; import java.io.File; -import java.net.MalformedURLException; -import java.net.URL; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; import org.apache.log4j.Logger; import org.josfranmc.gutenberg.download.engine.DownloadEngineType; +import org.josfranmc.gutenberg.util.GutenbergException; import org.josfranmc.gutenberg.util.FileManager; /** - * Implementa el proceso y gestión de descarga de libros alojados por el proyecto Gutenberg (
http://www.gutenberg.org) + * Download books from the Gutenberg project repositories.
+ * (http://www.gutenberg.org) * @author Jose Francisco Mena Ceca - * @version 1.0 - * @see IGutenbergDownload + * @version 2.0 * @see DownloadParams - * @see DownloadMode * @see DownloadEngineType */ -public class JGutenbergDownload implements IGutenbergDownload{ +public class JGutenbergDownload { private static final Logger log = Logger.getLogger(JGutenbergDownload.class); - - /** - * URL base del proyecto Gutenberg para realizar las descargas - */ - private static final String URL_BOOKS = "http://www.gutenberg.org/robot/"; - - /** - * Nombre de la carpeta dentro de la carpeta base donde guardar los ficheros zips descargados - */ - private static final String ZIP_DIRECTORY = "zips"; - /** - * Tipo de los ficheros a descargar - */ - private String fileType; + private DownloadParams parameters; - /** - * Idioma de los ficheros a descargar - */ - private String language; /** - * Ruta base de la carpeta pasada por parámetro en la que realizar las descargas. - * A lo largo del proceso de descarga la carpeta donde realizarlas puede variar. Esta variable guardar la carpeta inicial del proceso + * Main constructor. It initializes the application with default values. + * @see DownloadParams */ - private String rootSavePath; + public JGutenbergDownload() { + parameters = new DownloadParams(); + } /** - * Modo de realizar las descargas - */ - private AbstractDownload downloadMode = null; - - /** - * Encapsula los parámetros de configuración a usar. Recoge los parámetros pasados y es enviado a los componentes - * encargados de realizar las descargas + * @return an object with the current parameters + * @see DownloadParams */ - private DownloadParams parameters = null; + public DownloadParams getParameters() { + return parameters; + } /** - * Constructor principal. Establece los parámetros de configuración que usa la apliación con valores por defecto. Concretamente: - *
    - *
  • Se establece como carpeta base de descarga la carpeta desde la que se ejecuta el programa
  • - *
  • Se fija un tiempo de demora entre descargas de 2 segundos
  • - *
  • Se establece que no se sobreescriban ficheros previamente descargados
  • - *
  • Se establece que se descompriman los ficheros zips descargados
  • - *
  • Se indica que se utilice un motor de descarga del tipo DownloadEngineType.HTTP_CONNECTION
  • - *
  • Se indica que las descargas se realicen usando un modo DownloadMode.SOFT
  • - *
  • Se indica que se descarguen todos los ficheros disponibles
  • - *
+ * Sets the application parameters through a DownloadParams object + * @param parameters application parameters * @see DownloadParams - * @see DownloadEngineType - * @see DownloadMode */ - public JGutenbergDownload() { - parameters = new DownloadParams(); - setSavePath(System.getProperty("user.dir")); - setDelay(2000); - setOverwrite(false); - setUnzip(true); - setEngineType(DownloadEngineType.HTTP_CONNECTION); - setMaxFilesToDownload(10); - setDownloadMode(DownloadMode.SOFT); + public void setParameters(DownloadParams parameters) { + this.parameters = parameters; } - + /** - * Inicia el proceso de descarga de los libros.
- * Crea una carpeta para guardar los zip descargados dentro de la carpeta indicada para almacenar descargar las descargas. - * - * Se comprueba si se ha indicado el tipo de ficheros a descargar y el idioma de los mismos. - * Si no se se han indicado no se puede realizar la descarga. - * @throws IllegalArgumentException si no se ha indicado tipo de fichero e idioma + * Begins the download books process. + * @throws GutenbergException if there is any error in the download */ - @Override - public void downloadBooks() { - if (isUrlParameters()) { - buildHarvestURL(); - log.info("INICIO DESCARGA LIBROS " + getCurrentTime()); - writeParamsLog(); - download(); + public void downloadBooks() throws GutenbergException { + try { + printParameters(); + createDirectoriesForDownloads(); + log.info("BEGIN BOOKS DOWNLOAD " + getCurrentTime()); + DownloadBooks downloader = new DownloadBooks(parameters); + log.info("Downloading..."); + downloader.executeDownload(); if (parameters.isUnzip()) { unzipFiles(); } - log.info("FIN DESCARGA LIBROS " + getCurrentTime()); - } else { - log.error("Es necesario indicar tipo de fichero e idioma"); - throw new IllegalArgumentException("Es necesario indicar tipo de fichero e idioma"); + log.info("END BOOKS DOWNLOAD " + getCurrentTime()); + } catch (GutenbergException e) { + log.error(e.getCause()); + throw e; + } catch (Exception e) { + e.printStackTrace(); } } - /** - * Construye la URL principal a partir de la cual realizar las descargas de los libros - */ - private void buildHarvestURL() { - String queryParam = "harvest?filetypes[]=".concat(getFileType()).concat("&langs[]=").concat(getLanguage()); - String url = URL_BOOKS.concat(queryParam); - try { - parameters.setUrlBase(new URL(url)); - } catch (MalformedURLException e) { - log.warn("URL base errónea: " + url); - } catch (Exception e) { - log.error("Imposible inicializar URL base " + url); - e.printStackTrace(); + private void createDirectoriesForDownloads() { + createBaseDirectory(); + createZipsDirectory(); + } + + private void createBaseDirectory() { + File dirPath = new File(parameters.getSavePath()); + if (!dirPath.exists()) { + log.warn("Path doesn't exist. Creating new directory."); + dirPath.mkdirs(); + if (!dirPath.exists()) { + throw new IllegalStateException("Cannot create directory for downloads"); + } } } - /** - * Lleva a cabo las descargas.
Primero crea dentro de la carpeta raíz de descargas una nueva carpeta en la que obtener los ficheros - * comprimidos (esta nueva carpeta es la que se le pasa al motor de descargas para guardar los ficheros descargados). - * Después se inicia el proceso de descargas pasándole los parámetros establecidos. - */ - private void download() { - // creamos carpeta para la descarga dentro de la carpeta raíz y la establecemos como parámetro - setSavePathParam(createDirectoryInRootPath(ZIP_DIRECTORY)); - log.info("Descargando..."); - downloadMode.executeDownload(parameters); - // recuperamos la carpeta raíz de descargas como parámetro - setSavePathParam(getRootSavePath()); + private void createZipsDirectory() { + File dirPath = new File(parameters.getZipsPath()); + if (!dirPath.exists()) { + dirPath.mkdirs(); + if (!dirPath.exists()) { + throw new IllegalStateException("Cannot create directory for zips"); + } + } } - /** - * Descomprime los ficheros zip obtenidos en una nueva carpeta dentro de la carpeta raíz de descargas.
- */ private void unzipFiles() { - String zipPath = getRootSavePath().concat(ZIP_DIRECTORY); - String unZipPath = getRootSavePath(); - log.info("DESCOMPRIMIR FICHEROS"); - log.info("Ruta archivos zip: " + zipPath); - log.info("Ruta donde extraer: " + unZipPath); - log.info("Descomprimiendo... "); + String zipPath = parameters.getZipsPath(); + String unZipPath = parameters.getSavePath(); + log.info("UNZIP FILES"); + log.info("Zip files path: " + zipPath); + log.info("Unzipping path: " + unZipPath); + log.info("Unzipping... "); FileManager.unzipFiles(zipPath, unZipPath); } - + /** - * Comprueba si se han establecido los parámetros de descarga de tipo de fichero e idioma - * @return true si se han indicado ambos parámetros, false si alguno o ambos no se han indicado + * @return the type of files to download */ - private boolean isUrlParameters() { - return (fileType != null && language != null && !fileType.isEmpty() && !language.isEmpty()); + public String getFileType() { + return parameters.getFileType(); } - + /** - * @return el modo de descarga utilizado + * Sets the type of file to download. Valid types: txt, epub, html + * @param fileType type of file to download + * @throws IllegalArgumentException if an invalid file type is indicated */ - @Override - public DownloadMode getDownloadMode() { - return downloadMode.getType(); + public void setFileType(String fileType) { + parameters.setFileType(fileType); } - + /** - * Establece el mode de realizar las descargas - * @see DownloadMode + * @return the language of files to download */ - @Override - public void setDownloadMode(DownloadMode mode) { - if (mode == null) { - throw new IllegalArgumentException("El modo de descargar no puede ser null"); - } - downloadMode = DownloadFactory.create(mode); + public String getLanguage() { + return parameters.getLanguage(); } /** - * Establece el tiempo de espera entre descargas, en milisegundos. - * @see DownloadParams + * Sets the language of the files to download acording to Gutenberg nomeclature.
+ * Ej.: es - spanish, en - english, fr - french + * @param language type of language */ - @Override - public void setDelay(int delay) { - parameters.setDelay(delay); + public void setLanguage(String language) { + parameters.setLanguage(language); } /** - * Obtiene el tiempo de espera entre descargas establecido, en milisegundos. - * @return el tiempo de espera entre descargas + * @return initial download url */ - @Override - public int getDelay() { - return parameters.getDelay(); + public String getUrlBase() { + return parameters.getUrlBase().toString(); } - @Override - public void setOverwrite(boolean value) { - parameters.setOverwrite(value); + /** + * @return folder path where to get downloaded resources + */ + public String getSavePath() { + return parameters.getSavePath(); } - @Override - public boolean isOverwrite() { - return parameters.isOverwrite(); - } - - @Override - public String getUrlBase() { - String url = null; - if (parameters.getUrlBase() != null) { - url = parameters.getUrlBase().toString(); - } else { - url = "No se ha establecido URL."; - } - return url; - } - /** - * @return la ruta base de la carpeta inicial en la que realizar las descargas + * Sets folder path where to get downloaded resources + * @param savePath folder path where to get downloaded resources + * @throws IllegalArgumentException if the parameter is null */ - private String getRootSavePath() { - return rootSavePath; + public void setSavePath(String savePath) { + parameters.setSavePath(savePath); } - + /** - * Establece la ruta base de la carpeta en la que realizar las descargas. La carpeta indicada será la carpeta raiz del proceso - * @param rootSavePath ruta de la carpeta + * @return true if the existing files must be overwritten by the downloaded ones, false otherwise */ - private void setRootSavePath(String rootSavePath) { - this.rootSavePath = rootSavePath; + public boolean isOverwrite() { + return parameters.isOverwrite(); } /** - * Establece la ruta de la carpeta en la que guardar los archivos descargados. Se añade el caracter separador de directorios a la final de la - * ruta en caso de que no lo lleve.
Esta ruta se añade a los parámetros de la aplicación y se establece como ruta raiz del proceso. - * @param savePath ruta de la carpeta - * @throws IllegalArgumentException ruta errónea + * Sets if the existing files must be overwritten by the downloaded ones + * @param overwrite true if the existing files must be overwritten, false otherwise */ - @Override - public void setSavePath(String savePath) { - if (savePath == null) { - throw new IllegalArgumentException("La ruta del directorio donde guardar las descargas no puede ser null"); - } - File f = new File(savePath); - if (!f.exists()) { - log.warn("Ruta donde guardar las descargas inexistente. Creando nuevo directorio."); - f.mkdirs(); - if (!f.exists()) { - throw new IllegalArgumentException("Imposible crear direcotrio para descargas"); - } - } - - String fileSeparator = System.getProperty("file.separator"); - String path = (!savePath.endsWith(fileSeparator)) ? savePath.concat(fileSeparator) : savePath; - setSavePathParam(path); - setRootSavePath(path); + public void setOverwrite(boolean value) { + parameters.setOverwrite(value); } /** - * Asigna al objeto DownloadParams la ruta de una carpeta en la que guardar las descargas. - * @param path ruta de la carpeta - * @see DownloadParams + * @return delay between downloads, in milliseconds */ - private void setSavePathParam(String path) { - parameters.setSavePath(path); + public int getDelay() { + return parameters.getDelay(); } - - @Override - public String getSavePath() { - return getRootSavePath(); + + /** + * Sets delay between downloads + * @param delay waiting time, in milliseconds + */ + public void setDelay(int delay) { + parameters.setDelay(delay); } - @Override + /** + * @return true if downloaded files must be unzipping, false otherwise + */ public boolean isUnzip() { return parameters.isUnzip(); } - @Override + /** + * Sets if downloaded files must be unzipping, + * @param unzip true if downloaded files must be unzipping, false otherwise + */ public void setUnzip(boolean value) { parameters.setUnzip(value); } - - @Override - public String getFileType() { - return fileType; - } - - @Override - public JGutenbergDownload setFileType(String fileType) { - this.fileType = fileType; - return this; - } - - @Override - public String getLanguage() { - return language; - } - - @Override - public JGutenbergDownload setLanguage(String language) { - this.language = language; - return this; - } /** - * @return el número máximo de ficheros a descargar + * @return the maximum number of files to download */ - @Override public int getMaxFilesToDownload() { return parameters.getMaxFilesToDownload(); } /** - * Establece el número máximo de ficheros a descargar - * @param maxFilesToDownload número máximo de ficheros - * @throws IllegalArgumentException si se indica un número inferior a cero + * Sets the maximum number of files to download. The zero indicates downloading all available files. + * @param maxFilesToDownload files number + * @throws IllegalArgumentException if a number less than zero is indicated */ - @Override public void setMaxFilesToDownload(int maxFilesToDownload) { - if (maxFilesToDownload < 0) { - throw new IllegalArgumentException("maxFilesToDownload no puede ser inferior a cero"); - } parameters.setMaxFilesToDownload(maxFilesToDownload); } /** + * @return the type of downloading engine to use * @see DownloadEngineType */ - @Override public DownloadEngineType getEngineType() { return parameters.getEngineType(); } /** - * Establece el tipo de motor a utilizar para realizar las descargas.
- * Lo asigna al atributo que encapsula los parámetros de la aplicación + * Sets the type of downloading engine to use + * @param engineType engine type * @see DownloadEngineType */ - @Override public void setEngineType(DownloadEngineType engineType) { parameters.setEngineType(engineType); } + + private String getCurrentTime() { + Date date = new Date(); + DateFormat hourFormat = new SimpleDateFormat("HH:mm:ss dd/MM/yyyy"); + return hourFormat.format(date); + } + + private void printParameters() { + log.info("Parameters:"); + log.info(" urlBase = " + parameters.getUrlBase().toString()); + log.info(" savePath = " + parameters.getSavePath()); + log.info(" overwrite = " + parameters.isOverwrite()); + log.info(" delay = " + parameters.getDelay()); + log.info(" unzip = " + parameters.isUnzip()); + String max = (parameters.getMaxFilesToDownload() == 0) ? "all" : Integer.toString(parameters.getMaxFilesToDownload()); + log.info(" maxDownloads = " + max); + } /** - * Crea un nuevo directorio dentro de la carpeta base especificada para guardar las descargas. - * La carpeta creada se convierte en la nueva carpeta base. apuntada por el parámetro savePath y actualiza dicho parámetro - * con la nueva ruta - * @param nameDirectory nombre del directorio a crear + * Main method for running the application. + * @param args list of arguments with application parameters */ - private String createDirectoryInRootPath(String nameDirectory) { - String fileSeparator = System.getProperty("file.separator"); - String savePath = getRootSavePath(); // parameters.getSavePath(); - if (savePath != null) { - savePath = savePath.concat(nameDirectory).concat(fileSeparator); + public static void main(String [] args){ + if (args.length == 0 || (args[0].equals("-h") || args[0].equals("-help"))) { + showHelp(); } else { - savePath = System.getProperty("user.dir").concat(nameDirectory).concat(fileSeparator); - } - File dirPath = new File(savePath); - dirPath.mkdirs(); - if (!dirPath.exists()) { - log.warn("Imposible crear ruta " + savePath); - return null; + DownloadParams params = getParametersFromCommandLine(args); + if (params != null) { + JGutenbergDownload jg = new JGutenbergDownload(); + jg.setParameters(params); + jg.downloadBooks(); + } } - //parameters.setSavePath(savePath); - return savePath; + //System.exit(0); } - private String getCurrentTime() { - Date date = new Date(); - DateFormat hourFormat = new SimpleDateFormat("HH:mm:ss dd/MM/yyyy"); - return hourFormat.format(date); + /** + * Reads settings parameters from command line. + * @param args list of parameters obtained from the command line + * @return a DownloadParams object or null if there is any error + */ + private static DownloadParams getParametersFromCommandLine(String [] args) { + log.debug("Total parámetros: " + args.length); + DownloadParams params = null; + params = new DownloadParams(); + for (int i = 0; i < args.length; i+=2) { + try { + log.debug("argumento " + args[i] + " valor " + args[i+1]); + if (args[i].startsWith("-f")) { + params.setFileType(args[i+1]); + } else if (args[i].equals("-l")) { + params.setLanguage(args[i+1]); + } else if (args[i].equals("-s")) { + params.setSavePath(args[i+1]); + } else if (args[i].equals("-o")) { + params.setOverwrite(Boolean.valueOf(args[i+1])); + } else if (args[i].equals("-d")) { + params.setDelay(Integer.parseInt(args[i+1])); + } else if (args[i].equals("-z")) { + params.setUnzip(Boolean.valueOf(args[i+1])); + } else if (args[i].equals("-m")) { + params.setMaxFilesToDownload(Integer.parseInt(args[i+1])); + ///} else if (args[i].equals("-e")) { + // params.setEngineType(DownloadEngineType.valueOf(args[i+1].toUpperCase())); + } else { + System.out.println("Parameter: " + args[i] + " unrecognized. Run JGutenbergDownload -h to show options."); + params = null; + break; + } + } catch (ArrayIndexOutOfBoundsException a) { + params = null; + System.out.println("[ERROR] Incorrect number of parameters"); + break; + } + catch (Exception e) { + params = null; + System.out.println("[ERROR] reading parameter " + i + ". Parameter = " + args[i] + ", Value = " + args[i+1]); + log.error(e); + break; + } + } + return params; } - private void writeParamsLog() { - log.info("Parámetros:"); - log.info(" urlBase = " + parameters.getUrlBase().toString()); - log.info(" savePath = " + parameters.getSavePath()); - log.info(" overwrite = " + parameters.isOverwrite()); - if (downloadMode.getType() == DownloadMode.SOFT) { - log.info(" delay = " + parameters.getDelay()); - } - log.info(" unzip = " + parameters.isUnzip()); - log.info(" engineType = " + parameters.getEngineType().toString()); - log.info(" downloadType = " + downloadMode.getType()); + private static void showHelp() { + System.out.println(""); + System.out.println("Options:"); + System.out.println(" -f type of files to download (default txt)"); + System.out.println(" -l language of books to download (default es)"); + System.out.println(" -s download path on local machine (default program's folder)"); + System.out.println(" -o overwrite existing files (default false)"); + System.out.println(" -d delay between downloads in milliseconds (default 2000)"); + System.out.println(" -z unzip downloads (default true)"); + System.out.println(" -m max number of downloads (default 10, 0 for dowload all)"); + System.out.println(""); + System.out.println("(only -h to show options list)"); + System.out.println(""); } } diff --git a/src/main/java/org/josfranmc/gutenberg/download/engine/DownloadEngineFactory.java b/src/main/java/org/josfranmc/gutenberg/download/engine/DownloadEngineFactory.java index 1b8eaba..3784db1 100644 --- a/src/main/java/org/josfranmc/gutenberg/download/engine/DownloadEngineFactory.java +++ b/src/main/java/org/josfranmc/gutenberg/download/engine/DownloadEngineFactory.java @@ -3,89 +3,84 @@ import java.net.URL; /** - * Factoría para la creación de objetos de tipo IDownloadEngine mediante el método create - * Este método está sobregargado, de forma que se puede invocar combinando tres parámetros: + * Factory for creating IDownloadEngine objects.
+ * It make use of the create method. This method is overloaded, so it can be invoked combining three parameters: *
    - *
  • target: recurso a descargar
  • - *
  • savePath: ruta local donde obtener el recurso
  • - *
  • type: tipo de motor a utilizar para la descarga (si no se indica ninguno por defecto se usa DownloadEngineType.HTTTP_CONNECTION)
  • + *
  • target: the url address to download
  • + *
  • savePath: local path where to save download
  • + *
  • type: engine type for downloading (for default DownloadEngineType.HTTTP_CONNECTION is used)
  • *
* @author Jose Francisco Mena Ceca - * @version 1.0 + * @version 2.0 */ public class DownloadEngineFactory { + DownloadEngineFactory() { + throw new IllegalStateException("Cannot instantiate class"); + } + /** - * Crea un motor para realizar la descarga de recursos en red. El motor creado es de tipo DownloadEngineType.HTTP_CONNECTION - * @return un motor de descarga + * Creates an engine for downloading. Engine type is DownloadEngineType.HTTP_CONNECTION.
+ * @return a download engine */ public static IDownloadEngine create() { - return createDownloadEngine(null,null,DownloadEngineType.HTTP_CONNECTION); + return createDownloadEngine(null, null, DownloadEngineType.HTTP_CONNECTION); } /** - * Crea un motor determinado para realizar la descarga de recursos en red - * @param type tipo de motor a crear - * @return un motor de descarga + * Creates a download engine of the indicated type.
+ * The url to download and the path where to save are not initialized. + * @param type engine type for downloading + * @return a download engine in the form of a IDownloadEngine object */ public static IDownloadEngine create(DownloadEngineType type) { - return createDownloadEngine(null,null,type); + return createDownloadEngine(null, null, type); } /** - * Crea un motor determinado para realizar la descarga desde una determinada URL - * @param target dirección URL - * @param type tipo de motor a crear - * @return un motor de descarga + * Creates a download engine of the indicated type for downloading an url.
+ * The path where to save the download is not initialized. + * @param target the url address to download + * @param type engine type for downloading + * @return a download engine in the form of a IDownloadEngine object */ public static IDownloadEngine create(URL target, DownloadEngineType type) { - return createDownloadEngine(target,null,type); + return createDownloadEngine(target, null, type); } /** - * Crea un motor para realizar la descarga desde una determinada URL. El motor creado es de tipo DownloadEngineType.HTTP_CONNECTION - * @param target dirección URL - * @return un motor de descarga + * Creates an engine for downloading an url. Engine type is DownloadEngineType.HTTP_CONNECTION.
+ * @param target the url address to download + * @return a download engine in the form of a IDownloadEngine object */ public static IDownloadEngine create(URL target) { - return createDownloadEngine(target,null,DownloadEngineType.HTTP_CONNECTION); + return createDownloadEngine(target, null, DownloadEngineType.HTTP_CONNECTION); } /** - * Crea un motor determinado para realizar la descarga desde una determinada URL, guardando lo descargado en una ruta del equipo local - * @param target dirección URL - * @param savePath ruta donde obtener las descargas - * @param type tipo de motor a crear - * @return un motor de descarga + * Creates an engine for downloading. + * @param target the url address to download + * @param savePath local path where to save download + * @param type engine type for downloading + * @return a download engine in the form of a IDownloadEngine object */ public static IDownloadEngine create(URL target, String savePath, DownloadEngineType type) { - return createDownloadEngine(target,savePath,type); + return createDownloadEngine(target, savePath, type); } - + /** - * Crea un motor para realizar la descarga desde una determinada URL, guardando lo descargado en una ruta del equipo local. - * El motor creado es de tipo DownloadEngineType.HTTP_CONNECTION. - * @param target dirección URL - * @param savePath ruta donde obtener las descargas - * @return un motor de descarga + * Creates an engine for downloading. Engine type is DownloadEngineType.HTTP_CONNECTION.
+ * @param target the url address to download + * @param savePath local path where to save download + * @return a download engine in the form of a IDownloadEngine object */ public static IDownloadEngine create(URL target, String savePath) { - return createDownloadEngine(target,savePath,DownloadEngineType.HTTP_CONNECTION); + return createDownloadEngine(target, savePath, DownloadEngineType.HTTP_CONNECTION); } private static IDownloadEngine createDownloadEngine(URL target, String savePath, DownloadEngineType type) { - IDownloadEngine downloadEngine = null; type = (type == null) ? DownloadEngineType.HTTP_CONNECTION : type; - - switch (type) { - case HTTP_CONNECTION: - downloadEngine = DownloadHttpUrlConnection.newInstance(target, savePath); - break; - - default: - downloadEngine = DownloadHttpUrlConnection.newInstance(target, savePath); - break; - } - return downloadEngine; + // por ahora type solo puede tomar el valor DownloadEngineType.HTTP_CONNECTION + return DownloadHttpUrlConnection.newInstance(target, savePath); } } \ No newline at end of file diff --git a/src/main/java/org/josfranmc/gutenberg/download/engine/DownloadEngineType.java b/src/main/java/org/josfranmc/gutenberg/download/engine/DownloadEngineType.java index 0c6c6f5..d2c58c4 100644 --- a/src/main/java/org/josfranmc/gutenberg/download/engine/DownloadEngineType.java +++ b/src/main/java/org/josfranmc/gutenberg/download/engine/DownloadEngineType.java @@ -1,14 +1,14 @@ package org.josfranmc.gutenberg.download.engine; /** - * Tipos de motores de descarga + * Types of download engines * @author Jose Francisco Mena Ceca - * @version 1.0 + * @version 2.0 */ public enum DownloadEngineType { /** - * Descargas basadas en el objeto java.net.HttpURLConnection + * Downloads based on the java.net.HttpURLConnection object */ HTTP_CONNECTION; diff --git a/src/main/java/org/josfranmc/gutenberg/download/engine/DownloadHttpUrlConnection.java b/src/main/java/org/josfranmc/gutenberg/download/engine/DownloadHttpUrlConnection.java index 8af9286..fb099d5 100644 --- a/src/main/java/org/josfranmc/gutenberg/download/engine/DownloadHttpUrlConnection.java +++ b/src/main/java/org/josfranmc/gutenberg/download/engine/DownloadHttpUrlConnection.java @@ -1,7 +1,6 @@ package org.josfranmc.gutenberg.download.engine; import java.io.BufferedOutputStream; -import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; @@ -12,39 +11,36 @@ import java.net.UnknownHostException; import org.apache.log4j.Logger; +import org.josfranmc.gutenberg.util.GutenbergException; import org.josfranmc.gutenberg.util.FileManager; /** - * Permite realizar la descarga de un recurso identificado por una URL. Para ello se hace uso de la clase java.net.HttpURLConnection.
- * El recurso descargado se guarda en la ruta que ha debido establecerse previamente a la descarga. + * Allows to download a resource identified by an url and save it in a local folder.
+ * It makes use of the java.net.HttpURLConnection class for downloading.
* @author Jose Francisco Mena Ceca - * @version 1.0 + * @version 2.0 * @see IDownloadEngine + * @see GutenbergException */ public class DownloadHttpUrlConnection implements IDownloadEngine { private static final Logger log = Logger.getLogger(DownloadHttpUrlConnection.class); /** - * Dirección URL del recurso a descargar + * the url of the resource to download */ private URL resource; /** - * Ruta de la carpeta en la que obtener el recurso descargado + * local path where to save the resource to be download */ private String savePath; - /** - * Conexión establecida - */ - private HttpURLConnection httpConnection = null; - /** - * Constructor. Incializa el objeto con la dirección URL de un recurso a descargar y la ruta de la carpeta donde obtenerlo. - * @param target direccion URL del recurso a descargar - * @param savePath ruta de la carpeta en la qu obtener la descarga + * Initializes an object with the url of the resource to download and the path where to save it + * @param target resource url to download + * @param savePath path where to save the download */ private DownloadHttpUrlConnection(URL target, String savePath) { setSavePath(savePath); @@ -52,10 +48,10 @@ private DownloadHttpUrlConnection(URL target, String savePath) { } /** - * Crea una instancia DownloadHttpUrlConnection de tipo IDownloadEngine. - * @param target direccion URL del recurso a descargar - * @param savePath ruta de la carpeta en la qu obtener la descarga - * @return una instancia de tipo IDownloadEngine + * Creates a DownloadHttpUrlConnection object which is an IDownloadEngine type instance. + * @param target resource url to download + * @param savePath path where to save the download + * @return an IDownloadEngine instance in the form of a DownloadHttpUrlConnection * @see IDownloadEngine */ public static IDownloadEngine newInstance(URL target, String savePath) { @@ -63,9 +59,10 @@ public static IDownloadEngine newInstance(URL target, String savePath) { } /** - * Configura los valores de la cabecera que se va a enviar en la petición. + * Sets up the header values that will be sended along with the request. + * @throws ProtocolException */ - private void configHeader() throws ProtocolException { + private void configHeader(HttpURLConnection httpConnection) throws ProtocolException { httpConnection.setRequestMethod("GET"); httpConnection.setRequestProperty("Content-Type", ""); httpConnection.setRequestProperty("Host", getResource().getHost()); @@ -80,76 +77,69 @@ private void configHeader() throws ProtocolException { } /** - * Ejecuta el proceso de descarga. Previamente se ha debido indicar la dirección del recurso a descargar y la ruta de la carpeta en la que obtenerlo.
- * Si la descarga es correcta, se obtiene en la carpeta indicada un nuevo fichero cuyo nombre es el nombre delfichero contenido en el enlace de descarga - * (se toma desde el último caracter separador de directorios) - * @return el resultado de la descarga encapsulado en un objeto de tipo DownloadResult + * Runs a download.

+ * Previously, it has been necessary to indicate the url address of the resource to download and the path of the folder in which to save it.
+ * If the download is correct a new file in the indicated folder is obtained. The file name is extracted from download link, + * beginning from the last directory separator character. + * @return the result of the download in the form of a DownloadResult object + * @throws GutenbergException if there is any error downloading * @see DownloadResult + * @see GutenbergException */ @Override - public DownloadResult download() { + public DownloadResult download() throws GutenbergException { DownloadResult downloadResult = new DownloadResult(); if (getResource() != null && getSavePath() != null) { - BufferedOutputStream fileOutputStream = null; + BufferedOutputStream outputFileStream = null; + HttpURLConnection httpConnection = null; try { - httpConnection = (HttpURLConnection) getResource().openConnection(); - configHeader(); - InputStream inputStream = null; int offset = 0; final byte[] buffer = new byte[2048]; int read = 0; - - String fileOutputPath = FileManager.getLocalFilePathFromURL(getSavePath(), getResource().toString()); - inputStream = httpConnection.getInputStream(); - fileOutputStream = new BufferedOutputStream (new FileOutputStream(fileOutputPath)); + + httpConnection = (HttpURLConnection) getResource().openConnection(); + configHeader(httpConnection); + + String outputFilePath = FileManager.getLocalFilePathFromURL(getSavePath(), getResource().toString()); + InputStream inputStream = httpConnection.getInputStream(); + outputFileStream = new BufferedOutputStream (new FileOutputStream(outputFilePath)); - log.debug("Download Desde: " + this.resource); - while ((read = inputStream.read(buffer)) >= 0) { - fileOutputStream.write(buffer, offset, read); - fileOutputStream.flush(); + outputFileStream.write(buffer, offset, read); + outputFileStream.flush(); } downloadResult.setHeaders(httpConnection); - downloadResult.setFileOutputPath(fileOutputPath); + downloadResult.setSavedFilePath(outputFilePath); - log.debug("Descargado \"" + FileManager.getLocalFileName(fileOutputPath) + "\" en " + getSavePath()); + log.debug("Descargado \"" + FileManager.getLocalFileName(outputFilePath) + "\" en " + getSavePath()); log.debug("Tipo: " + downloadResult.getContentType() + " Longitud: " + downloadResult.getContentLength()); } catch (ConnectException e) { - log.error("Tiempo de espera superado"); - downloadResult.setFileOutputPath(null); + log.warn("Download timeout exceeded"); } catch (UnknownHostException e) { - log.error("No puede obtenerse dirección IP del recurso a descarga"); - downloadResult.setFileOutputPath(null); - downloadResult.setError("No puede obtenerse dirección IP del recurso a descarga"); - } catch (FileNotFoundException e) { - log.error("Recurso desconocido... " + getResource().toString()); - downloadResult.setFileOutputPath(null); - downloadResult.setError("Recurso desconocido... " + getResource().toString()); + throw new GutenbergException("UnknownHostException", e); } catch (IOException e) { - log.error("Error download " + resource.toString()); - downloadResult.setError("Error download " + resource.toString()); + throw new GutenbergException("IOException", e); } finally { httpConnection.disconnect(); - if (fileOutputStream != null) { + if (outputFileStream != null) { try { - fileOutputStream.close(); + outputFileStream.close(); } catch (IOException e) { - e.printStackTrace(); - System.exit(0); + throw new GutenbergException("Error closing outputFileStream", e); } } } } else { - log.warn("DOWNLOAD Debe indicarse recurso y ruta donde obtener la descarga"); + log.warn("DOWNLOAD It must be indicated resource and route where to obtain the download"); } return downloadResult; } /** - * Establece la dirección del recurso a descargar, la cual se maneja como un objeto de tipo URL - * @param resource dirección url + * Sets the resource of the url to download, in the form of a URL object + * @param resource url address */ @Override public void setResource(URL resource) { @@ -157,8 +147,7 @@ public void setResource(URL resource) { } /** - * Obtiene la dirección del recurso a descargar como un objeto de tipo URL - * @return dirección del recurso a descargar + * @return the resource of the url to download, in the form of a URL object */ @Override public URL getResource() { @@ -166,8 +155,8 @@ public URL getResource() { } /** - * Establece la ruta donde guardar el recurso a descargar - * @param savePath ruta de la carpeta donde guardar + * Sets the local path where to save the resource to be download + * @param savePath local path */ @Override public void setSavePath(String savePath) { @@ -175,8 +164,7 @@ public void setSavePath(String savePath) { } /** - * Obtiene la ruta donde guardar el recursos a descargar - * @return la ruta de la carpeta donde guardar el recursos a descargar + * @return the local path where to save the resource to be download */ @Override public String getSavePath() { diff --git a/src/main/java/org/josfranmc/gutenberg/download/engine/DownloadResult.java b/src/main/java/org/josfranmc/gutenberg/download/engine/DownloadResult.java index be5d0eb..00ae590 100644 --- a/src/main/java/org/josfranmc/gutenberg/download/engine/DownloadResult.java +++ b/src/main/java/org/josfranmc/gutenberg/download/engine/DownloadResult.java @@ -5,42 +5,32 @@ import java.util.Map; /** - * Encapsula el resultado de la descarga de un recurso. Esta clase sirve para guardar juntos diferentes datos realacionados con la descarga - * de un recurso: la cabecera devuelta en la conexión y el nombre del fichero creado, junto con su ruta. Además, si se ha producido algún error - * puede indicarse un mensaje descriptivo del mismo. - * + * It encapsulates the result of downloading a resource. This class serves to save together different data related to the download: + * the header returned in the connection and the name of the file created, along with its path. * @author Jose Francisco Mena Ceca - * @version 1.0 + * @version 2.0 */ public class DownloadResult { /** - * Ruta del fichero descargado + * the path of the downloaded file on the local machine. */ - private String fileOutputPath; + private String savedFilePath; /** - * Conjunto de cabeceras obtenido como respuesta a una conexión establecida + * Header obtained in response to a connection */ private Map> headers; - - /** - * Mensaje de error - */ - private String error; - - /** - * Constructor principal. - */ + + public DownloadResult() { - fileOutputPath = null; + savedFilePath = null; headers = null; - error = null; } /** - * Establece la colección de campos de cabecera devuelta por una conexión realizada - * @param urlConnection conexión + * Sets the header obtained in response to a connection + * @param urlConnection connection made */ public void setHeaders(URLConnection urlConnection) { headers = urlConnection.getHeaderFields(); @@ -53,60 +43,45 @@ public void setHeaders(URLConnection urlConnection) { /** * - * @return la colección de las cabeceras obtenidas + * @return the header obtained in response to a connection */ public Map> getHeaders() { return headers; } /** - * @return el valor del campo de la cebecera "Last-Modified" + * @return the value of the header field "Last-Modified" */ public String getLastModified() { - return (headers != null) ? headers.get("Last-Modified").get(0).toString() : null; + return (headers != null) ? headers.get("Last-Modified").get(0).toString() : ""; } /** - * @return el valor del campo de la cebecera "Content-Type" + * @return the value of the header field "Content-Type" */ public String getContentType() { - return (headers != null) ? headers.get("Content-Type").get(0).toString() : null; + return (headers != null) ? headers.get("Content-Type").get(0).toString() : ""; } /** - * @return el valor del campo de la cebecera "Content-Length" + * @return the value of the header field "Content-Length" */ public String getContentLength() { - return (headers != null) ? headers.get("Content-Length").get(0).toString() : null; + return (headers != null) ? headers.get("Content-Length").get(0).toString() : ""; } /** - * Establece la ruta del fichero descargado. - * @param fileOutputPath ruta del fichero descargado + * Sets the path of the downloaded file on the local machine. + * @param fileOutputPath path of the downloaded file */ - public void setFileOutputPath(String fileOutputPath) { - this.fileOutputPath = fileOutputPath; + public void setSavedFilePath(String fileOutputPath) { + this.savedFilePath = fileOutputPath; } /** - * @return la ruta del fichero descargado - */ - public String getFileOutputPath() { - return fileOutputPath; - } - - /** - * @return el emnsaje de error establecido - */ - public String getError() { - return error; - } - - /** - * Establece un mensaje de error. - * @param error mensaje + * @return the path of the downloaded file on the local machine. */ - public void setError(String error) { - this.error = error; + public String getSavedFilePath() { + return savedFilePath; } } diff --git a/src/main/java/org/josfranmc/gutenberg/download/engine/IDownloadEngine.java b/src/main/java/org/josfranmc/gutenberg/download/engine/IDownloadEngine.java index c1495fb..cfdb299 100644 --- a/src/main/java/org/josfranmc/gutenberg/download/engine/IDownloadEngine.java +++ b/src/main/java/org/josfranmc/gutenberg/download/engine/IDownloadEngine.java @@ -2,43 +2,45 @@ import java.net.URL; +import org.josfranmc.gutenberg.util.GutenbergException; + /** - * Define el comportamiento que tiene que ofrecer toda clase que quiera implementar la capacidad de descargar - * un recurso identificado por una URL - * + * Defines the behavior that a class have to implement in order to have the ability to download resources on net. * @author Jose Francisco Mena Ceca - * @version 1.0 + * @version 2.0 + * @see IDownloadEngine + * @see GutenbergException */ public interface IDownloadEngine { /** - * Ejecuta el proceso de descarga. - * @return el resultado de la descarga encapsulado en un objeto de tipo DownloadResult + * Runs a download. + * @return the result of the download in the form of a DownloadResult object + * @throws GutenbergException if there is any error downloading * @see DownloadResult + * @see GutenbergException */ - public DownloadResult download(); + public DownloadResult download() throws GutenbergException; /** - * Establece la dirección del recurso a descargar, la cual se maneja como un objeto de tipo URL - * @param resource dirección del recurso que se quiere obtener + * Sets the resource of the url to download, in the form of a URL object + * @param resource url address */ public void setResource(URL resource); /** - * Obtiene la dirección del recurso a descargar como un objeto de tipo URL - * @return dirección del recurso a descargar + * @return the resource of the url to download, in the form of a URL object */ public URL getResource(); /** - * Establece la ruta donde guardar el recurso a descargar - * @param savePath ruta donde guardar + * Sets the local path where to save the resource to be download + * @param savePath local path */ public void setSavePath(String savePath); /** - * Obtiene la ruta donde guardar el recursos a descargar - * @return ruta donde guardar + * @return the local path where to save the resource to be download */ public String getSavePath(); diff --git a/src/main/java/org/josfranmc/gutenberg/util/FileManager.java b/src/main/java/org/josfranmc/gutenberg/util/FileManager.java index d3d7161..64b284c 100644 --- a/src/main/java/org/josfranmc/gutenberg/util/FileManager.java +++ b/src/main/java/org/josfranmc/gutenberg/util/FileManager.java @@ -5,6 +5,10 @@ import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; +import java.nio.file.DirectoryStream; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; import java.util.ArrayList; import java.util.List; import java.util.zip.ZipEntry; @@ -13,9 +17,9 @@ import org.apache.log4j.Logger; /** - * Ofrece herramientas para el tratamiento de ficheros. + * Tools for managing files. * @author Jose Francisco Mena Ceca - * @version 1.0 + * @version 2.0 * */ public class FileManager { @@ -25,27 +29,31 @@ public class FileManager { private final static String FILE_SEPARATOR = System.getProperty("file.separator"); + FileManager() { + throw new IllegalStateException("Cannot instantiate class"); + } + /** - * Comprueba si existe en una ruta del equipo local el fichero que se puede obtener con la descarga de un determinado enlace. - * @param savePath ruta del equipo local - * @param link enlace del fichero - * @return true si en la ruta indicada existe el fichero del enlace indicado, false en caso contrario + * Checks if the file indicated by an url already exists in a local path. + * @param localPath local path + * @param url download url + * @return true if the file indicated by the url exists in the local path, false otherwise */ - public static boolean fileExists(String savePath, String link) { - return new File(getLocalFilePathFromURL(savePath, link)).exists(); + public static boolean fileExists(String localPath, String url) { + return new File(getLocalFilePathFromURL(localPath, url)).exists(); } /** - * Devuelve la ruta que debe tener en el equipo local un fichero que va a descargarse en dicho equipo.
- * La ruta completa del fichero se forma concatenando dos elementos: por un lado, la ruta de la carpeta donde se va a guardar, y por otro, - * el nombre del fichero contenido en el enlace de descarga (el nombre de fichero es la parte final del enlace desde el último caracter separador de directorios)
. - * Si el nombre del fichero contiene los caracteres ? o &amp; se sustituyen por _ y & respectivamente. - * @param savePath ruta de la carpeta en la que obtener la descarga - * @param link enlace del fichero a descargar + * Returns the path a file must have when downloaded on the local machine.
+ * The path is formed by concatenating two elements: on the one hand, tha path of the folder where the download will be saved, + * on the other hand, the name of the file in the download url (file name is at the end of the url, from last separator character of folders).
+ * If the name of the file contains ? and &amp; characters are replaced by _ and & respectively. + * @param savePath path of the folder in which to get the download + * @param link download link * @return la ruta del fichero en el equipo local */ public static String getLocalFilePathFromURL(String savePath, String link) { - String path = (!savePath.endsWith(FileManager.FILE_SEPARATOR)) ? savePath.concat(FileManager.FILE_SEPARATOR) : savePath; + String path = (!savePath.endsWith(FILE_SEPARATOR)) ? savePath + FILE_SEPARATOR : savePath; String fileName = link.substring(link.lastIndexOf("/")+1, link.length()) .replace("?", "_") .replace("&", "&"); @@ -53,43 +61,36 @@ public static String getLocalFilePathFromURL(String savePath, String link) { } /** - * Devuelve el nombre del archivo contenido en una ruta. - * @param str ruta del archivo - * @return el nombre del archivo + * Returns the name of file inside a path. + * @param str file path + * @return the name of file inside str parameter */ public static String getLocalFileName(String str) { - return str.substring(str.lastIndexOf(FileManager.FILE_SEPARATOR)+1, str.length()) + return str.substring(str.lastIndexOf(FILE_SEPARATOR)+1, str.length()) .replace("?", "_") .replace("&", "&"); } /** - * Descomprime los ficheros comprimidos en formato zip de una determinada carpeta. - * @param inputPath ruta del directorio donde se encuentran los ficheros zip - * @param outputPath ruta del directorio en el que descomprimir los ficheros + * Unzips files in format zip from a certain folder. + * @param inputPath folder path with zip files + * @param outputPath folder path where unzip files */ public static void unzipFiles(String inputPath, String outputPath) { if (inputPath != null && outputPath != null) { - FileOutputStream fos = null; String fileName = null; byte[] buffer = new byte[1024]; int len = 0; - int index = -1; if (!outputPath.endsWith(FILE_SEPARATOR)) { - outputPath = outputPath.concat(FILE_SEPARATOR); + outputPath = outputPath + FILE_SEPARATOR; } - List zipFiles = getZipFiles(inputPath); - for (String zipFile : zipFiles) { - log.debug("Descomprimiendo " + zipFile); + for (String zipFile : getZipFiles(inputPath)) { try { ZipInputStream zis = new ZipInputStream(new FileInputStream(zipFile)); ZipEntry zipEntry = zis.getNextEntry(); while (zipEntry != null) { - fileName = zipEntry.getName(); - if ((index = fileName.lastIndexOf("/")) != -1) { - fileName = fileName.substring(index+1); - } - fos = new FileOutputStream(new File(outputPath.concat(fileName))); + fileName = getFileName(zipEntry.getName()); + FileOutputStream fos = new FileOutputStream(new File(outputPath + fileName)); while ((len = zis.read(buffer)) > 0) { fos.write(buffer, 0, len); } @@ -100,11 +101,9 @@ public static void unzipFiles(String inputPath, String outputPath) { zis.close(); log.debug("Obtenido " + outputPath + fileName); } catch (FileNotFoundException e) { - log.error(e); - log.error("OutputPath: " + outputPath + " FileName: " + fileName); + log.error("File Not Found: " + zipFile); } catch (IOException e) { log.error(e); - log.error("OutputPath: " + outputPath + " FileName: " + fileName); } } } else { @@ -113,20 +112,28 @@ public static void unzipFiles(String inputPath, String outputPath) { } /** - * Devuelve una lista con las rutas de todos los ficheros con extensión .zip contenidos en un determinado directorio. - * @param path ruta del directorio en el que buscar los ficheros - * @return lista con las rutas de los ficheros + * Returns a List with the paths of all existing files with .zip extension in a given folder. + * @param path folder path where search files + * @return a List with the files paths */ private static List getZipFiles(String path) { List zipFiles = new ArrayList(); - File folder = new File(path); - if (folder.exists()) { - for (File file : folder.listFiles()) { - if (file.getName().endsWith(".zip")) { - zipFiles.add(file.getAbsolutePath()); - } + try (DirectoryStream stream = Files.newDirectoryStream(Paths.get(path), "*.zip")) { + for (Path file: stream) { + zipFiles.add(file.toString()); } - } + } catch (IOException e) { + log.error(e); + } return zipFiles; } + + private static String getFileName(String entryName) { + String fileName = entryName; + int index = -1; + if ((index = fileName.lastIndexOf("/")) != -1) { + fileName = fileName.substring(index+1); + } + return fileName; + } } diff --git a/src/main/java/org/josfranmc/gutenberg/util/FileScraping.java b/src/main/java/org/josfranmc/gutenberg/util/FileScraping.java index 5939960..c8c5273 100644 --- a/src/main/java/org/josfranmc/gutenberg/util/FileScraping.java +++ b/src/main/java/org/josfranmc/gutenberg/util/FileScraping.java @@ -15,41 +15,39 @@ import org.apache.log4j.Logger; /** - * Ofrece herramientas para analizar ficheros en busca de enlaces web. + * Tools for searching web links in files. * @author Jose Francisco Mena Ceca - * @version 1.0 + * @version 2.0 */ public class FileScraping { private static final Logger log = Logger.getLogger(FileScraping.class); /** - * Codificación del archivo a analizar + * Coding of the file to analyze */ private static String ENCODING = "ISO-8859-1"; /** - * Patrón de la expresión regular a utilizar para detectar enlaces web + * Regular expression pattern for detecting web links */ private static String PATTERN = ".*href=\"([^\"]*)\".*"; - /** - * Constructor por defecto. - */ - public FileScraping() {} + FileScraping() { + throw new IllegalStateException("Cannot instantiate class"); + } /** - * Obtiene una lista con todos los enlaces contenidos dentro de un fichero HTML.
- * Los enlaces son extraidos de los atributos href de los elementos <a>. - * @param filePath ruta del fichero a analizar - * @return lista de enlaces + * Returns a list with all links within an html file.
+ * The links are extracted from href attributes of <a> elements. + * @param filePath path of file to analyze + * @return a List element with links */ public static List getLinks(String filePath) { List links = new ArrayList(); if (filePath != null) { Path path = Paths.get(filePath); - links = new ArrayList(); try (Stream stream = Files.lines(path, Charset.forName(ENCODING))) { Pattern pattern = Pattern.compile(PATTERN); Matcher matcher = null; diff --git a/src/main/java/org/josfranmc/gutenberg/util/GutenbergException.java b/src/main/java/org/josfranmc/gutenberg/util/GutenbergException.java index b5d27ba..fc478cb 100644 --- a/src/main/java/org/josfranmc/gutenberg/util/GutenbergException.java +++ b/src/main/java/org/josfranmc/gutenberg/util/GutenbergException.java @@ -1,27 +1,27 @@ -package org.josfranmc.gutenberg.util; - -/** - * It allows to capture exceptions in the application in the form of a RuntimeException. - * @author Jose Francisco Mena Ceca - * @version 2.0 - */ -public class GutenbergException extends RuntimeException { - - private static final long serialVersionUID = -8740400616606275937L; - - public GutenbergException() { - super(); - } - - public GutenbergException(String message, Throwable cause) { - super(message, cause); - } - - public GutenbergException(String message) { - super(message); - } - - public GutenbergException(Throwable cause) { - super(cause); - } -} +package org.josfranmc.gutenberg.util; + +/** + * It allows to capture exceptions in the application in the form of a RuntimeException. + * @author Jose Francisco Mena Ceca + * @version 2.0 + */ +public class GutenbergException extends RuntimeException { + + private static final long serialVersionUID = -8740400616606275937L; + + public GutenbergException() { + super(); + } + + public GutenbergException(String message, Throwable cause) { + super(message, cause); + } + + public GutenbergException(String message) { + super(message); + } + + public GutenbergException(Throwable cause) { + super(cause); + } +} diff --git a/src/main/resources/log4j.properties b/src/main/resources/log4j.properties index fd6375f..1744377 100644 --- a/src/main/resources/log4j.properties +++ b/src/main/resources/log4j.properties @@ -3,7 +3,6 @@ log4j.rootCategory=INFO,CONSOLA,FILE log4j.appender.CONSOLA=org.apache.log4j.ConsoleAppender log4j.appender.CONSOLA.layout=org.apache.log4j.PatternLayout -#log4j.appender.CONSOLA.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n log4j.appender.CONSOLA.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n #log4j.logger.es.josfranmc.uned.colocare.download=ALL,FILE @@ -12,20 +11,4 @@ log4j.appender.FILE.ImmediateFlush=true log4j.appender.FILE.file=log/gutenbergd.log log4j.appender.FILE.layout=org.apache.log4j.PatternLayout log4j.appender.FILE.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n -log4j.appender.FILE.append=false - - -#log4j.logger.es.josfranmc.uned.colocare.download=FILE,CONSOLA -# -#log4j.appender.FILE=org.apache.log4j.FileAppender -#log4j.appender.FILE.Threshold=INFO -#log4j.appender.FILE.ImmediateFlush=true -#log4j.appender.FILE.file=E:\Desarrollo\pruebas\gutenberg\febrero2\logdownload.log -#log4j.appender.FILE.layout=org.apache.log4j.PatternLayout -#log4j.appender.FILE.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n -#log4j.appender.FILE.append=false -# -#log4j.appender.CONSOLA=org.apache.log4j.ConsoleAppender -#log4j.appender.CONSOLA.Threshold=INFO -#log4j.appender.CONSOLA.layout=org.apache.log4j.PatternLayout -#log4j.appender.CONSOLA.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n \ No newline at end of file +log4j.appender.FILE.append=false \ No newline at end of file diff --git a/src/test/java/org/josfranmc/gutenberg/download/JGutenbergDownloadTest.java b/src/test/java/org/josfranmc/gutenberg/download/JGutenbergDownloadTest.java index 7869272..11e7101 100644 --- a/src/test/java/org/josfranmc/gutenberg/download/JGutenbergDownloadTest.java +++ b/src/test/java/org/josfranmc/gutenberg/download/JGutenbergDownloadTest.java @@ -1,76 +1,95 @@ package org.josfranmc.gutenberg.download; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import java.io.File; import org.josfranmc.gutenberg.download.engine.DownloadEngineType; +import org.josfranmc.gutenberg.util.GutenbergException; import org.junit.Test; /** - * Clase que implementa los test para probar los métodos de la clase JGutenbergDownloadTest + * Clase que implementa los test para probar los métodos de la clase JGutenbergDownload * @author Jose Francisco Mena Ceca - * @version 1.0 + * @version 2.0 */ public class JGutenbergDownloadTest { + private final static String FILE_SEPARATOR = System.getProperty("file.separator"); /** - * Comprueba si los valores por defecto de los parámetros de descarga a la hora de crear un IGutenbergDownload son los correctos + * Comprueba los valores por defecto de la aplicación */ @Test - public void testParametersDefaultValue() { - IGutenbergDownload jg = JGutenbergDownloadFactory.create(); + public void parametersDefaultValueTest() { + JGutenbergDownload jg = new JGutenbergDownload(); + assertEquals("Parámetro fileType valor por defecto no válido", "txt", jg.getFileType()); + assertEquals("Parámetro language valor por defecto no válido", "es", jg.getLanguage()); assertEquals("Parámetro delay valor por defecto no válido", 2000, jg.getDelay()); assertEquals("Parámetro engineType valor por defecto no válido", DownloadEngineType.HTTP_CONNECTION, jg.getEngineType()); assertEquals("Parámetro maxFiles valor por defecto no válido", 10, jg.getMaxFilesToDownload()); assertEquals("Parámetro savePath valor por defecto no válido", System.getProperty("user.dir").concat(System.getProperty("file.separator")), jg.getSavePath()); - assertEquals("Parámetro urlBase valor por defecto no válido", "No se ha establecido URL.", jg.getUrlBase()); + assertEquals("Parámetro urlBase valor por defecto no válido", "http://www.gutenberg.org/robot/harvest?filetypes[]=txt&langs[]=es", jg.getUrlBase()); assertEquals("Parámetro unzip valor por defecto no válido", true, jg.isUnzip()); - assertEquals("Parámetro downloadMode valor por defecto no válido", DownloadMode.SOFT, jg.getDownloadMode()); } - /** - * Si no se ha indicado tipo de fichero e idioma para realizar las descargas, entonces lanzar excepción IllegalArgumentException y mostrar mensaje - */ - @Test(expected=IllegalArgumentException.class) - public void givenUrlParametersWhenNullThenIllegalArgumentException() { - IGutenbergDownload jg = JGutenbergDownloadFactory.create(); - jg.downloadBooks(); - } + @Test + public void getParametersTest() { + JGutenbergDownload jg = new JGutenbergDownload(); + assertNotNull(jg.getParameters()); + } + + @Test + public void setParametersTest() { + JGutenbergDownload jg = new JGutenbergDownload(); + DownloadParams dp = new DownloadParams(); + dp.setOverwrite(true); + jg.setParameters(dp); + assertTrue(jg.isOverwrite()); + } + /** - * Si no se ha indicado tipo de fichero e idioma para realizar las descargas, entonces lanzar excepción IllegalArgumentException y mostrar mensaje + * Si el parámetro fileType es un valor no válido, entonces lanzar excepción IllegalArgumentException */ @Test(expected=IllegalArgumentException.class) - public void givenUrlParametersWhenEmptyThenIllegalArgumentException() { - IGutenbergDownload jg = JGutenbergDownloadFactory.create(); - jg.setFileType("").setLanguage(""); - jg.downloadBooks(); - } + public void givenFileTypeWhenWrongValueThenIllegalArgumentException() { + JGutenbergDownload jg = new JGutenbergDownload(); + jg.setFileType("bad"); + } /** * Si la ruta indicada para guardar las descargas es null, entonces lanzar excepción IllegalArgumentException */ @Test(expected=IllegalArgumentException.class) public void givenSavePathWhenNullThenIllegalArgumentException() { - IGutenbergDownload jg = JGutenbergDownloadFactory.create(); + JGutenbergDownload jg = new JGutenbergDownload(); jg.setSavePath(null); } - /** - * Si la ruta indicada para guardar las descargas no existe, entonces crear nuevos directorios - */ @Test - public void givenSavePathWhenNoExistsThenIllegalArgumentException() { - IGutenbergDownload jg = JGutenbergDownloadFactory.create(); - jg.setSavePath("xopakeuj/sfukeo"); - File file = new File("xopakeuj/sfukeo"); - assertTrue("No existe directorio", file.exists()); - file.delete(); - file = new File("xopakeuj"); - file.delete(); + public void savePathTest() { + JGutenbergDownload jg = new JGutenbergDownload(); + jg.setSavePath("books"); + assertEquals("Ruta no correcta [1]", "books".concat(System.getProperty("file.separator")), jg.getSavePath()); + jg.setSavePath("temp\\"); + assertEquals("Ruta no correcta [2]", "temp".concat(System.getProperty("file.separator")), jg.getSavePath()); + } + + @Test + public void givenLanguageThenUrlTest() { + JGutenbergDownload jg = new JGutenbergDownload(); + jg.setLanguage("en"); + assertEquals("URL no correcta", DownloadParams.URL_BOOKS + "harvest?filetypes[]=" + jg.getFileType() + "&langs[]=" + jg.getLanguage(), jg.getUrlBase()); + } + + @Test + public void givenFileTypeThenUrlTest() { + JGutenbergDownload jg = new JGutenbergDownload(); + jg.setFileType("html"); + assertEquals("URL no correcta", DownloadParams.URL_BOOKS + "harvest?filetypes[]=" + jg.getFileType() + "&langs[]=" + jg.getLanguage(), jg.getUrlBase()); } /** @@ -78,16 +97,125 @@ public void givenSavePathWhenNoExistsThenIllegalArgumentException() { */ @Test(expected=IllegalArgumentException.class) public void givenMaxFilesToDownloadWhenMinusZeroThenIllegalArgumentException() { - IGutenbergDownload jg = JGutenbergDownloadFactory.create(); + JGutenbergDownload jg = new JGutenbergDownload(); jg.setMaxFilesToDownload(-1); } - /** - * Si el parámetro DownloadMode es null, entonces lanzar excepción IllegalArgumentException - */ - @Test(expected=IllegalArgumentException.class) - public void givenDownloadModeWhenNullThenIllegalArgumentException() { - IGutenbergDownload jg = JGutenbergDownloadFactory.create(); - jg.setDownloadMode(null); - } + @Test + public void downloadOneBookTest() { + JGutenbergDownload jg = new JGutenbergDownload(); + jg.setSavePath("testdownload"); + jg.setDelay(0); + jg.setMaxFilesToDownload(1); + jg.downloadBooks(); + + File dirZip = new File(jg.getSavePath() + "zips"); + assertEquals("Número de archivos descargados incorrectos", 2, dirZip.listFiles().length); + + deleteDownloadedFiles(jg); + } + + private void deleteDownloadedFiles(JGutenbergDownload jg) { + String saveDir = jg.getSavePath(); + String pageWithLinks = "harvest_filetypes[]=" + jg.getFileType() + "&langs[]=" + jg.getLanguage(); + + File page = new File(saveDir + FILE_SEPARATOR + "zips" + FILE_SEPARATOR + pageWithLinks); + assertTrue(page.exists()); + + File dirZip = new File(saveDir + FILE_SEPARATOR + "zips"); + File[] filesInZipDirectory = dirZip.listFiles(); + for(File f : filesInZipDirectory) { + if(f.exists()) { + f.delete(); + } + } + dirZip.delete(); + + File dirSave = new File(saveDir); + File[] filesInSaveDirectory = dirSave.listFiles(); + for(File f : filesInSaveDirectory) { + if(f.exists()) { + f.delete(); + } + } + dirSave.delete(); + } + + @Test + public void downloadOneBookWithMainMethodTest() { + String [] args = {"-d", "0", "-m", "1", "-s", "testdownload2"}; + + JGutenbergDownload.main(args); + + JGutenbergDownload jg = new JGutenbergDownload(); + jg.setSavePath("testdownload2"); + jg.setDelay(0); + jg.setMaxFilesToDownload(1); + + File dirZip = new File(jg.getSavePath() + "zips"); + assertEquals("Número de archivos descargados incorrectos [2]", 2, dirZip.listFiles().length); + + deleteDownloadedFiles(jg); + } + + @Test + public void wrongParameterskWithMainMethodTest() { + String [] args = {"-d", "0", "-w", "1", "-s", "testdownload3"}; + + JGutenbergDownload.main(args); + + File dirSave = new File("testdownload3"); + assertTrue(!dirSave.exists()); + } + + @Test + public void downloadTwoPagesTest() { + JGutenbergDownload jg = new JGutenbergDownload(); + jg.setSavePath("testpages"); + jg.setDelay(0); + jg.setMaxFilesToDownload(110); + jg.downloadBooks(); + + deleteDownloadedFiles(jg); + } + + @Test + public void noUnzipTest() { + JGutenbergDownload jg = new JGutenbergDownload(); + jg.setSavePath("testdownload3"); + jg.setDelay(0); + jg.setUnzip(false); + jg.setMaxFilesToDownload(1); + jg.downloadBooks(); + + File dir = new File(jg.getSavePath()); + assertEquals("Número de archivos descargados incorrectos [3]", 1, dir.listFiles().length); + + deleteDownloadedFiles(jg); + } + + @Test + public void showHelpWithMainMethodTest() { + String [] args = {"-h"}; + JGutenbergDownload.main(args); + } + + @Test(expected=GutenbergException.class) + public void wrongUrlTest() { + JGutenbergDownload jg = new JGutenbergDownload(); + jg.setSavePath("testdownload4"); + jg.setLanguage("http://"); + jg.setDelay(0); + jg.setUnzip(false); + jg.setMaxFilesToDownload(1); + try { + jg.downloadBooks(); + } catch (GutenbergException e) { + File dir = new File(jg.getSavePath() + "zips"); + dir.delete(); + dir = new File(jg.getSavePath()); + dir.delete(); + throw e; + } + } } \ No newline at end of file diff --git a/src/test/java/org/josfranmc/gutenberg/download/engine/DownloadEngineFactoryTest.java b/src/test/java/org/josfranmc/gutenberg/download/engine/DownloadEngineFactoryTest.java index 6f629bd..b0ad74e 100644 --- a/src/test/java/org/josfranmc/gutenberg/download/engine/DownloadEngineFactoryTest.java +++ b/src/test/java/org/josfranmc/gutenberg/download/engine/DownloadEngineFactoryTest.java @@ -1,7 +1,11 @@ -package org.josfranmc.gutenberg.engine; +package org.josfranmc.gutenberg.download.engine; +import static org.junit.Assert.assertEquals; import static org.junit.Assert.fail; +import java.net.MalformedURLException; +import java.net.URL; + import org.josfranmc.gutenberg.download.engine.DownloadEngineFactory; import org.josfranmc.gutenberg.download.engine.DownloadEngineType; import org.josfranmc.gutenberg.download.engine.DownloadHttpUrlConnection; @@ -10,15 +14,102 @@ public class DownloadEngineFactoryTest { + @Test(expected=IllegalStateException.class) + public void createObjectTest() { + new DownloadEngineFactory(); + } + /** * Si se indica DownloadEngineType con valor null, entonces se debe crear un IDownloadEngineType de tipo DownloadEngineType.HTTP_CONNECTION */ @Test - public void givenUrlWhenWrongAddressThenFileOutputPathShoulbBeNull() { + public void createEngineWithOnlyTypeParameter() { DownloadEngineType type = null; IDownloadEngine engine = DownloadEngineFactory.create(type); if (!(engine instanceof DownloadHttpUrlConnection)) { fail("No se ha creado el tipo de engine por defecto adecuado"); } + assertEquals("Directorio para guardar incorrecto", System.getProperty("user.dir"), engine.getSavePath()); + } + + /** + * Si se indican parámetros con DownloadEngineType, entonces se debe crear un IDownloadEngineType de tipo DownloadEngineType.HTTP_CONNECTION + */ + @Test + public void createEngineWithoutParameters() { + IDownloadEngine engine = DownloadEngineFactory.create(); + if (!(engine instanceof DownloadHttpUrlConnection)) { + fail("No se ha creado el tipo de engine por defecto adecuado"); + } + assertEquals("Directorio para guardar incorrecto", System.getProperty("user.dir"), engine.getSavePath()); + } + + /** + * Si se indica solo el parámetro de la url, entonces se debe crear un IDownloadEngineType de tipo DownloadEngineType.HTTP_CONNECTION + */ + @Test + public void createEngineWithOnlyTargetParameter() { + IDownloadEngine engine = null; + try { + engine = DownloadEngineFactory.create(new URL("http://url_test")); + if (!(engine instanceof DownloadHttpUrlConnection)) { + fail("No se ha creado el tipo de engine por defecto adecuado"); + } + assertEquals("Directorio para guardar incorrecto", System.getProperty("user.dir"), engine.getSavePath()); + } catch (MalformedURLException e) { + e.printStackTrace(); + } + + } + + /** + * Si solo se indican los parámtros de la url y carpeta de destino, entonces se debe crear un IDownloadEngineType de tipo DownloadEngineType.HTTP_CONNECTION + */ + @Test + public void createEngineWithTargetAndPathParameters() { + IDownloadEngine engine = null; + try { + engine = DownloadEngineFactory.create(new URL("http://url_test"), "path_test"); + if (!(engine instanceof DownloadHttpUrlConnection)) { + fail("No se ha creado el tipo de engine por defecto adecuado"); + } + assertEquals("Directorio para guardar incorrecto", "path_test", engine.getSavePath()); + } catch (MalformedURLException e) { + e.printStackTrace(); + } + + } + + /** + * Si se indican los parámtros de la url y tipo de motor, la carpeta para guardar será aquella desde donde se ejecute el programa + */ + @Test + public void createEngineWithTargetAndTypeParameters() { + IDownloadEngine engine = null; + try { + engine = DownloadEngineFactory.create(new URL("http://url_test"), DownloadEngineType.HTTP_CONNECTION); + if (!(engine instanceof DownloadHttpUrlConnection)) { + fail("No se ha creado el tipo de engine por defecto adecuado"); + } + assertEquals("Directorio para guardar incorrecto", System.getProperty("user.dir"), engine.getSavePath()); + + } catch (MalformedURLException e) { + e.printStackTrace(); + } + } + + @Test + public void createEngineWithAllParameters() { + IDownloadEngine engine = null; + try { + engine = DownloadEngineFactory.create(new URL("http://url_test"), "path_test", DownloadEngineType.HTTP_CONNECTION); + if (!(engine instanceof DownloadHttpUrlConnection)) { + fail("No se ha creado el tipo de engine por defecto adecuado"); + } + assertEquals("Directorio para guardar incorrecto", "path_test", engine.getSavePath()); + assertEquals("Url de descarga incorrecta", "http://url_test", engine.getResource().toString()); + } catch (MalformedURLException e) { + e.printStackTrace(); + } } } diff --git a/src/test/java/org/josfranmc/gutenberg/download/engine/DownloadHttpUrlConnectionTest.java b/src/test/java/org/josfranmc/gutenberg/download/engine/DownloadHttpUrlConnectionTest.java index 5e7b332..48a2184 100644 --- a/src/test/java/org/josfranmc/gutenberg/download/engine/DownloadHttpUrlConnectionTest.java +++ b/src/test/java/org/josfranmc/gutenberg/download/engine/DownloadHttpUrlConnectionTest.java @@ -1,4 +1,4 @@ -package org.josfranmc.gutenberg.engine; +package org.josfranmc.gutenberg.download.engine; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; @@ -12,6 +12,7 @@ import org.josfranmc.gutenberg.download.engine.DownloadHttpUrlConnection; import org.josfranmc.gutenberg.download.engine.DownloadResult; import org.josfranmc.gutenberg.download.engine.IDownloadEngine; +import org.josfranmc.gutenberg.util.GutenbergException; import org.junit.Test; public class DownloadHttpUrlConnectionTest { @@ -37,17 +38,16 @@ public void givenDownloadParametersWhenNullThenDownloadResultShoulbBeNotNull() { DownloadResult dr = DownloadHttpUrlConnection.newInstance(null, null).download(); assertNotNull("No se ha obtenido objeto DownloadResult", dr); assertNull("El campo de cabeceras obtenidas no es null", dr.getHeaders()); - assertNull("La ruta del fichero descargado no es null", dr.getFileOutputPath()); + assertNull("La ruta del fichero descargado no es null", dr.getSavedFilePath()); } /** - * Si se indica una dirección de descarga errónea, entonces la ruta donde se ha guardado la descarga debe ser null (en el objeto DownloadResult). + * Si se indica una dirección de descarga errónea, se debe lanzar DownloadException */ - @Test + @Test(expected=GutenbergException.class) public void givenUrlWhenWrongAddressThenFileOutputPathShoulbBeNull() { try { - DownloadResult dr = DownloadHttpUrlConnection.newInstance(new URL("http://www.qsctyhu.com/fake.img"), null).download(); - assertNull("La ruta del recurso descargado no es null", dr.getFileOutputPath()); + DownloadHttpUrlConnection.newInstance(new URL("http://www.qsctyhu.com/fake.img"), null).download(); } catch (MalformedURLException e) { e.printStackTrace(); } @@ -61,7 +61,7 @@ public void testDownload() { try { URL url = new URL("http://aleph.gutenberg.org/1/0/0/0/10002/10002.zip"); DownloadHttpUrlConnection.newInstance(url, null).download(); - File f = new File(System.getProperty("user.dir").concat(System.getProperty("file.separator")).concat("10002.zip")); + File f = new File(System.getProperty("user.dir") + System.getProperty("file.separator") + "10002.zip"); assertTrue("No se ha obtenido el recursos en la carpeta esperada", f.exists()); f.delete(); } catch (MalformedURLException e) { diff --git a/src/test/java/org/josfranmc/gutenberg/util/FileManagerTest.java b/src/test/java/org/josfranmc/gutenberg/util/FileManagerTest.java index 1883a5d..7cd3a64 100644 --- a/src/test/java/org/josfranmc/gutenberg/util/FileManagerTest.java +++ b/src/test/java/org/josfranmc/gutenberg/util/FileManagerTest.java @@ -1,22 +1,43 @@ package org.josfranmc.gutenberg.util; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; +import java.io.File; +import java.net.URISyntaxException; + import org.junit.Test; public class FileManagerTest { + @Test(expected=IllegalStateException.class) + public void createObjectTest() { + new FileManager(); + } + + @Test + public void fileExistsTest() { + File zipFolder = null; + try { + zipFolder = new File(FileManagerTest.class.getResource("/zips").toURI()); + assertTrue(FileManager.fileExists(zipFolder.toString(), "http://aleph.gutenberg.org/1/0/2/9/10293/10293-8.zip")); + } catch (URISyntaxException e) { + e.printStackTrace(); + } + } + /** * Comprobar si es correcta la ruta que debe tener en el equipo local un fichero que va a descargarse en dicho equipo. */ @Test - public void testGetLocalFilePathFromURL() { + public void getLocalFilePathFromURLTest() { String pathToSave = System.getProperty("user.dir"); String resource = "10002.zip"; String urlTest = "http://aleph.gutenberg.org/1/0/0/0/10002/"; - String path = FileManager.getLocalFilePathFromURL(pathToSave, urlTest.concat(resource)); - String expected = pathToSave.concat(System.getProperty("file.separator")).concat(resource); + + String path = FileManager.getLocalFilePathFromURL(pathToSave, urlTest + resource); + String expected = pathToSave + System.getProperty("file.separator") + resource; assertEquals("Ruta inválida", expected, path); } @@ -24,7 +45,7 @@ public void testGetLocalFilePathFromURL() { * Comprobar si es correcto el nombre del archivo contenido en una ruta. */ @Test - public void testGetLocalFileName() { + public void getLocalFileNameTest() { String testCad = "test" + System.getProperty("file.separator") + "book.txt"; String file = FileManager.getLocalFileName(testCad); String expected = "book.txt"; @@ -47,5 +68,32 @@ public void givenInputPathAndOutputPathWhenNullThenAvoidNullPointerException() { } catch (NullPointerException e) { fail("Las rutas de los directorios son null"); } + + try { + FileManager.unzipFiles("zips", null); + } catch (NullPointerException e) { + fail("Las rutas de los directorios son null"); + } + } + + @Test + public void unzipFilesTest() { + try { + File zipFolder = new File(FileManagerTest.class.getResource("/zips").toURI()); + File unzipFolder = new File(FileManagerTest.class.getResource("/zips").toURI()); + FileManager.unzipFiles(zipFolder.toString(), unzipFolder.toString()); + + File unzipFile = new File(FileManagerTest.class.getResource("/zips/10293-8.txt").toURI()); + assertTrue(unzipFile.exists()); + unzipFile.delete(); + + unzipFile = new File(FileManagerTest.class.getResource("/zips/10506-8.txt").toURI()); + assertTrue(unzipFile.exists()); + unzipFile.delete(); + } catch (NullPointerException e) { + fail("Las rutas de los directorios son null"); + } catch (URISyntaxException e) { + fail("URISyntaxException"); + } } } From e51d0aebfc1964cc89c768573a1315b1835d6d27 Mon Sep 17 00:00:00 2001 From: josfranmc Date: Mon, 18 Nov 2019 22:23:03 +0100 Subject: [PATCH 03/27] Eliminar carpetas con binarios --- jar-flat/JGutenbergDownload-1.0.jar | Bin 33928 -> 0 bytes jar-flat/lib/log4j-1.2.17.jar | Bin 489884 -> 0 bytes jar-shaded/JGutenbergDownload-1.0-shaded.jar | Bin 522279 -> 0 bytes 3 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 jar-flat/JGutenbergDownload-1.0.jar delete mode 100644 jar-flat/lib/log4j-1.2.17.jar delete mode 100644 jar-shaded/JGutenbergDownload-1.0-shaded.jar diff --git a/jar-flat/JGutenbergDownload-1.0.jar b/jar-flat/JGutenbergDownload-1.0.jar deleted file mode 100644 index 65b393c74804150c554a1b5688e9182708d77fff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33928 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 z 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

wf*VRpK_{xQ@f?W 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 z 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

VG5q{k*T&(DS<142qZ~ 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

wq`aWiqG`(LP?(+{bMwY7z_$v?{H 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 diff --git a/jar-shaded/JGutenbergDownload-1.0-shaded.jar b/jar-shaded/JGutenbergDownload-1.0-shaded.jar deleted file mode 100644 index a9b1b647d589b3b71b8f2f19a6e9cec85928daca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 522279 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

wJ3#)Eu@@jccXoe`GNA^g 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

* The first download should be a file with links to the books to download. All existing links are downloaded. * If there is a link to another page with more links, this page is downloaded and processed in the same way. - * This process continue until there are no more pages.

+ * This process continues until there are no more pages.

* All downloads run on separate threads. * @throws GutenbergException if there is any error downloading * @throws InterruptedException if there is an interruption while waiting ExecutorService shutdown diff --git a/src/main/java/org/josfranmc/gutenberg/download/JGutenbergDownload.java b/src/main/java/org/josfranmc/gutenberg/download/JGutenbergDownload.java index 849ee18..5cf42ac 100644 --- a/src/main/java/org/josfranmc/gutenberg/download/JGutenbergDownload.java +++ b/src/main/java/org/josfranmc/gutenberg/download/JGutenbergDownload.java @@ -11,7 +11,7 @@ import org.josfranmc.gutenberg.util.FileManager; /** - * Download books from the Gutenberg project repositories.
+ * It allows to download books from the Gutenberg project repositories.
* (
http://www.gutenberg.org) * @author Jose Francisco Mena Ceca * @version 2.0 @@ -174,7 +174,7 @@ public boolean isOverwrite() { /** * Sets if the existing files must be overwritten by the downloaded ones - * @param overwrite true if the existing files must be overwritten, false otherwise + * @param value true if the existing files must be overwritten, false otherwise */ public void setOverwrite(boolean value) { parameters.setOverwrite(value); @@ -204,7 +204,7 @@ public boolean isUnzip() { /** * Sets if downloaded files must be unzipping, - * @param unzip true if downloaded files must be unzipping, false otherwise + * @param value true if downloaded files must be unzipping, false otherwise */ public void setUnzip(boolean value) { parameters.setUnzip(value); From 885b613d3cc7be0735a8899aaaf8aab97b4a5243 Mon Sep 17 00:00:00 2001 From: josfranmc Date: Tue, 19 Nov 2019 12:54:50 +0100 Subject: [PATCH 05/27] Corregir formato --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 0760925..8194bb9 100644 --- a/README.md +++ b/README.md @@ -13,11 +13,11 @@ java -jar JGutenbergDownload-2.0-shaded.jar [options] options: -f type of files to download (default txt) --l language of books to download (default en) +-l language of books to download (default en) -s download path (default program's folder) --o overwrite existing files (default false) +-o overwrite existing files (default false) -d delay between downloads in milliseconds (default 2000) --z unzip downloads (default true) +-z unzip downloads (default true) -m max number of downloads (default 10, 0 for dowload all) -h show options list From 624875a6a4faf8d79b6fe4d576c3457ed7359200 Mon Sep 17 00:00:00 2001 From: josfranmc Date: Tue, 19 Nov 2019 13:00:48 +0100 Subject: [PATCH 06/27] Eliminar javadoc --- javadoc/allclasses-frame.html | 40 - javadoc/allclasses-noframe.html | 40 - javadoc/constant-values.html | 125 --- javadoc/deprecated-list.html | 125 --- javadoc/help-doc.html | 230 ------ javadoc/index-files/index-1.html | 132 ---- javadoc/index-files/index-10.html | 132 ---- javadoc/index-files/index-11.html | 138 ---- javadoc/index-files/index-12.html | 132 ---- javadoc/index-files/index-13.html | 252 ------ javadoc/index-files/index-14.html | 148 ---- javadoc/index-files/index-15.html | 132 ---- javadoc/index-files/index-16.html | 146 ---- javadoc/index-files/index-2.html | 160 ---- javadoc/index-files/index-3.html | 218 ------ javadoc/index-files/index-4.html | 132 ---- javadoc/index-files/index-5.html | 150 ---- javadoc/index-files/index-6.html | 258 ------ javadoc/index-files/index-7.html | 154 ---- javadoc/index-files/index-8.html | 155 ---- javadoc/index-files/index-9.html | 132 ---- javadoc/index.html | 75 -- .../gutenberg/download/AbstractDownload.html | 268 ------- .../gutenberg/download/DownloadFactory.html | 291 ------- .../gutenberg/download/DownloadGreedy.html | 314 -------- .../gutenberg/download/DownloadMode.html | 355 --------- .../gutenberg/download/DownloadParams.html | 538 ------------- .../gutenberg/download/DownloadSoft.html | 267 ------- .../download/IGutenbergDownload.html | 605 -------------- .../download/JGutenbergDownload.html | 738 ------------------ .../download/JGutenbergDownloadFactory.html | 292 ------- .../download/JGutenbergDownloadTest.html | 378 --------- .../download/class-use/AbstractDownload.html | 188 ----- .../download/class-use/DownloadFactory.html | 125 --- .../download/class-use/DownloadGreedy.html | 125 --- .../download/class-use/DownloadMode.html | 209 ----- .../download/class-use/DownloadParams.html | 167 ---- .../download/class-use/DownloadSoft.html | 125 --- .../class-use/IGutenbergDownload.html | 194 ----- .../class-use/JGutenbergDownload.html | 169 ---- .../class-use/JGutenbergDownloadFactory.html | 125 --- .../class-use/JGutenbergDownloadTest.html | 125 --- .../client/JGutenbergDownloadClient.html | 286 ------- .../class-use/JGutenbergDownloadClient.html | 125 --- .../download/client/package-frame.html | 21 - .../download/client/package-summary.html | 145 ---- .../download/client/package-tree.html | 138 ---- .../download/client/package-use.html | 125 --- .../engine/DownloadEngineFactory.html | 415 ---------- .../download/engine/DownloadEngineType.html | 340 -------- .../engine/DownloadHttpUrlConnection.html | 381 --------- .../download/engine/DownloadResult.html | 433 ---------- .../download/engine/IDownloadEngine.html | 323 -------- .../class-use/DownloadEngineFactory.html | 125 --- .../engine/class-use/DownloadEngineType.html | 261 ------- .../class-use/DownloadHttpUrlConnection.html | 125 --- .../engine/class-use/DownloadResult.html | 173 ---- .../engine/class-use/IDownloadEngine.html | 223 ------ .../download/engine/package-frame.html | 31 - .../download/engine/package-summary.html | 198 ----- .../download/engine/package-tree.html | 156 ---- .../download/engine/package-use.html | 192 ----- .../gutenberg/download/package-frame.html | 36 - .../gutenberg/download/package-summary.html | 223 ------ .../gutenberg/download/package-tree.html | 164 ---- .../gutenberg/download/package-use.html | 181 ----- .../engine/DownloadEngineFactoryTest.html | 275 ------- .../engine/DownloadHttpUrlConnectionTest.html | 389 --------- .../class-use/DownloadEngineFactoryTest.html | 125 --- .../DownloadHttpUrlConnectionTest.html | 125 --- .../gutenberg/engine/package-frame.html | 22 - .../gutenberg/engine/package-summary.html | 147 ---- .../gutenberg/engine/package-tree.html | 139 ---- .../gutenberg/engine/package-use.html | 125 --- .../josfranmc/gutenberg/util/FileManager.html | 364 --------- .../gutenberg/util/FileManagerTest.html | 309 -------- .../gutenberg/util/FileScraping.html | 292 ------- .../gutenberg/util/class-use/FileManager.html | 125 --- .../util/class-use/FileManagerTest.html | 125 --- .../util/class-use/FileScraping.html | 125 --- .../gutenberg/util/package-frame.html | 23 - .../gutenberg/util/package-summary.html | 155 ---- .../gutenberg/util/package-tree.html | 140 ---- .../josfranmc/gutenberg/util/package-use.html | 125 --- javadoc/overview-frame.html | 26 - javadoc/overview-summary.html | 155 ---- javadoc/overview-tree.html | 179 ----- javadoc/package-list | 5 - javadoc/script.js | 30 - javadoc/stylesheet.css | 574 -------------- 90 files changed, 17723 deletions(-) delete mode 100644 javadoc/allclasses-frame.html delete mode 100644 javadoc/allclasses-noframe.html delete mode 100644 javadoc/constant-values.html delete mode 100644 javadoc/deprecated-list.html delete mode 100644 javadoc/help-doc.html delete mode 100644 javadoc/index-files/index-1.html delete mode 100644 javadoc/index-files/index-10.html delete mode 100644 javadoc/index-files/index-11.html delete mode 100644 javadoc/index-files/index-12.html delete mode 100644 javadoc/index-files/index-13.html delete mode 100644 javadoc/index-files/index-14.html delete mode 100644 javadoc/index-files/index-15.html delete mode 100644 javadoc/index-files/index-16.html delete mode 100644 javadoc/index-files/index-2.html delete mode 100644 javadoc/index-files/index-3.html delete mode 100644 javadoc/index-files/index-4.html delete mode 100644 javadoc/index-files/index-5.html delete mode 100644 javadoc/index-files/index-6.html delete mode 100644 javadoc/index-files/index-7.html delete mode 100644 javadoc/index-files/index-8.html delete mode 100644 javadoc/index-files/index-9.html delete mode 100644 javadoc/index.html delete mode 100644 javadoc/org/josfranmc/gutenberg/download/AbstractDownload.html delete mode 100644 javadoc/org/josfranmc/gutenberg/download/DownloadFactory.html delete mode 100644 javadoc/org/josfranmc/gutenberg/download/DownloadGreedy.html delete mode 100644 javadoc/org/josfranmc/gutenberg/download/DownloadMode.html delete mode 100644 javadoc/org/josfranmc/gutenberg/download/DownloadParams.html delete mode 100644 javadoc/org/josfranmc/gutenberg/download/DownloadSoft.html delete mode 100644 javadoc/org/josfranmc/gutenberg/download/IGutenbergDownload.html delete mode 100644 javadoc/org/josfranmc/gutenberg/download/JGutenbergDownload.html delete mode 100644 javadoc/org/josfranmc/gutenberg/download/JGutenbergDownloadFactory.html delete mode 100644 javadoc/org/josfranmc/gutenberg/download/JGutenbergDownloadTest.html delete mode 100644 javadoc/org/josfranmc/gutenberg/download/class-use/AbstractDownload.html delete mode 100644 javadoc/org/josfranmc/gutenberg/download/class-use/DownloadFactory.html delete mode 100644 javadoc/org/josfranmc/gutenberg/download/class-use/DownloadGreedy.html delete mode 100644 javadoc/org/josfranmc/gutenberg/download/class-use/DownloadMode.html delete mode 100644 javadoc/org/josfranmc/gutenberg/download/class-use/DownloadParams.html delete mode 100644 javadoc/org/josfranmc/gutenberg/download/class-use/DownloadSoft.html delete mode 100644 javadoc/org/josfranmc/gutenberg/download/class-use/IGutenbergDownload.html delete mode 100644 javadoc/org/josfranmc/gutenberg/download/class-use/JGutenbergDownload.html delete mode 100644 javadoc/org/josfranmc/gutenberg/download/class-use/JGutenbergDownloadFactory.html delete mode 100644 javadoc/org/josfranmc/gutenberg/download/class-use/JGutenbergDownloadTest.html delete mode 100644 javadoc/org/josfranmc/gutenberg/download/client/JGutenbergDownloadClient.html delete mode 100644 javadoc/org/josfranmc/gutenberg/download/client/class-use/JGutenbergDownloadClient.html delete mode 100644 javadoc/org/josfranmc/gutenberg/download/client/package-frame.html delete mode 100644 javadoc/org/josfranmc/gutenberg/download/client/package-summary.html delete mode 100644 javadoc/org/josfranmc/gutenberg/download/client/package-tree.html delete mode 100644 javadoc/org/josfranmc/gutenberg/download/client/package-use.html delete mode 100644 javadoc/org/josfranmc/gutenberg/download/engine/DownloadEngineFactory.html delete mode 100644 javadoc/org/josfranmc/gutenberg/download/engine/DownloadEngineType.html delete mode 100644 javadoc/org/josfranmc/gutenberg/download/engine/DownloadHttpUrlConnection.html delete mode 100644 javadoc/org/josfranmc/gutenberg/download/engine/DownloadResult.html delete mode 100644 javadoc/org/josfranmc/gutenberg/download/engine/IDownloadEngine.html delete mode 100644 javadoc/org/josfranmc/gutenberg/download/engine/class-use/DownloadEngineFactory.html delete mode 100644 javadoc/org/josfranmc/gutenberg/download/engine/class-use/DownloadEngineType.html delete mode 100644 javadoc/org/josfranmc/gutenberg/download/engine/class-use/DownloadHttpUrlConnection.html delete mode 100644 javadoc/org/josfranmc/gutenberg/download/engine/class-use/DownloadResult.html delete mode 100644 javadoc/org/josfranmc/gutenberg/download/engine/class-use/IDownloadEngine.html delete mode 100644 javadoc/org/josfranmc/gutenberg/download/engine/package-frame.html delete mode 100644 javadoc/org/josfranmc/gutenberg/download/engine/package-summary.html delete mode 100644 javadoc/org/josfranmc/gutenberg/download/engine/package-tree.html delete mode 100644 javadoc/org/josfranmc/gutenberg/download/engine/package-use.html delete mode 100644 javadoc/org/josfranmc/gutenberg/download/package-frame.html delete mode 100644 javadoc/org/josfranmc/gutenberg/download/package-summary.html delete mode 100644 javadoc/org/josfranmc/gutenberg/download/package-tree.html delete mode 100644 javadoc/org/josfranmc/gutenberg/download/package-use.html delete mode 100644 javadoc/org/josfranmc/gutenberg/engine/DownloadEngineFactoryTest.html delete mode 100644 javadoc/org/josfranmc/gutenberg/engine/DownloadHttpUrlConnectionTest.html delete mode 100644 javadoc/org/josfranmc/gutenberg/engine/class-use/DownloadEngineFactoryTest.html delete mode 100644 javadoc/org/josfranmc/gutenberg/engine/class-use/DownloadHttpUrlConnectionTest.html delete mode 100644 javadoc/org/josfranmc/gutenberg/engine/package-frame.html delete mode 100644 javadoc/org/josfranmc/gutenberg/engine/package-summary.html delete mode 100644 javadoc/org/josfranmc/gutenberg/engine/package-tree.html delete mode 100644 javadoc/org/josfranmc/gutenberg/engine/package-use.html delete mode 100644 javadoc/org/josfranmc/gutenberg/util/FileManager.html delete mode 100644 javadoc/org/josfranmc/gutenberg/util/FileManagerTest.html delete mode 100644 javadoc/org/josfranmc/gutenberg/util/FileScraping.html delete mode 100644 javadoc/org/josfranmc/gutenberg/util/class-use/FileManager.html delete mode 100644 javadoc/org/josfranmc/gutenberg/util/class-use/FileManagerTest.html delete mode 100644 javadoc/org/josfranmc/gutenberg/util/class-use/FileScraping.html delete mode 100644 javadoc/org/josfranmc/gutenberg/util/package-frame.html delete mode 100644 javadoc/org/josfranmc/gutenberg/util/package-summary.html delete mode 100644 javadoc/org/josfranmc/gutenberg/util/package-tree.html delete mode 100644 javadoc/org/josfranmc/gutenberg/util/package-use.html delete mode 100644 javadoc/overview-frame.html delete mode 100644 javadoc/overview-summary.html delete mode 100644 javadoc/overview-tree.html delete mode 100644 javadoc/package-list delete mode 100644 javadoc/script.js delete mode 100644 javadoc/stylesheet.css diff --git a/javadoc/allclasses-frame.html b/javadoc/allclasses-frame.html deleted file mode 100644 index 3d54f94..0000000 --- a/javadoc/allclasses-frame.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -All Classes - - - - - -

All Classes

- - - diff --git a/javadoc/allclasses-noframe.html b/javadoc/allclasses-noframe.html deleted file mode 100644 index 27e3cfa..0000000 --- a/javadoc/allclasses-noframe.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - -All Classes - - - - - -

All Classes

- - - diff --git a/javadoc/constant-values.html b/javadoc/constant-values.html deleted file mode 100644 index 466c133..0000000 --- a/javadoc/constant-values.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - -Constant Field Values - - - - - - - - -
- - - - - - - -
- - -
-

Constant Field Values

-

Contents

-
- -
- - - - - - - -
- - - - diff --git a/javadoc/deprecated-list.html b/javadoc/deprecated-list.html deleted file mode 100644 index 74d7f54..0000000 --- a/javadoc/deprecated-list.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - -Deprecated List - - - - - - - - -
- - - - - - - -
- - -
-

Deprecated API

-

Contents

-
- -
- - - - - - - -
- - - - diff --git a/javadoc/help-doc.html b/javadoc/help-doc.html deleted file mode 100644 index 97672f3..0000000 --- a/javadoc/help-doc.html +++ /dev/null @@ -1,230 +0,0 @@ - - - - - - -API Help - - - - - - - - -
- - - - - - - -
- - -
-

How This API Document Is Organized

-
This API (Application Programming Interface) document has pages corresponding to the items in the navigation bar, described as follows.
-
-
-
    -
  • -

    Overview

    -

    The Overview page is the front page of this API document and provides a list of all packages with a summary for each. This page can also contain an overall description of the set of packages.

    -
  • -
  • -

    Package

    -

    Each package has a page that contains a list of its classes and interfaces, with a summary for each. This page can contain six categories:

    -
      -
    • Interfaces (italic)
    • -
    • Classes
    • -
    • Enums
    • -
    • Exceptions
    • -
    • Errors
    • -
    • Annotation Types
    • -
    -
  • -
  • -

    Class/Interface

    -

    Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a class/interface description, summary tables, and detailed member descriptions:

    -
      -
    • Class inheritance diagram
    • -
    • Direct Subclasses
    • -
    • All Known Subinterfaces
    • -
    • All Known Implementing Classes
    • -
    • Class/interface declaration
    • -
    • Class/interface description
    • -
    -
      -
    • Nested Class Summary
    • -
    • Field Summary
    • -
    • Constructor Summary
    • -
    • Method Summary
    • -
    -
      -
    • Field Detail
    • -
    • Constructor Detail
    • -
    • Method Detail
    • -
    -

    Each summary entry contains the first sentence from the detailed description for that item. The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.

    -
  • -
  • -

    Annotation Type

    -

    Each annotation type has its own separate page with the following sections:

    -
      -
    • Annotation Type declaration
    • -
    • Annotation Type description
    • -
    • Required Element Summary
    • -
    • Optional Element Summary
    • -
    • Element Detail
    • -
    -
  • -
  • -

    Enum

    -

    Each enum has its own separate page with the following sections:

    -
      -
    • Enum declaration
    • -
    • Enum description
    • -
    • Enum Constant Summary
    • -
    • Enum Constant Detail
    • -
    -
  • -
  • -

    Use

    -

    Each documented package, class and interface has its own Use page. This page describes what packages, classes, methods, constructors and fields use any part of the given class or package. Given a class or interface A, its Use page includes subclasses of A, fields declared as A, methods that return A, and methods and constructors with parameters of type A. You can access this page by first going to the package, class or interface, then clicking on the "Use" link in the navigation bar.

    -
  • -
  • -

    Tree (Class Hierarchy)

    -

    There is a Class Hierarchy page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. The classes are organized by inheritance structure starting with java.lang.Object. The interfaces do not inherit from java.lang.Object.

    -
      -
    • When viewing the Overview page, clicking on "Tree" displays the hierarchy for all packages.
    • -
    • When viewing a particular package, class or interface page, clicking "Tree" displays the hierarchy for only that package.
    • -
    -
  • -
  • -

    Deprecated API

    -

    The Deprecated API page lists all of the API that have been deprecated. A deprecated API is not recommended for use, generally due to improvements, and a replacement API is usually given. Deprecated APIs may be removed in future implementations.

    -
  • -
  • -

    Index

    -

    The Index contains an alphabetic list of all classes, interfaces, constructors, methods, and fields.

    -
  • -
  • -

    Prev/Next

    -

    These links take you to the next or previous class, interface, package, or related page.

    -
  • -
  • -

    Frames/No Frames

    -

    These links show and hide the HTML frames. All pages are available with or without frames.

    -
  • -
  • -

    All Classes

    -

    The All Classes link shows all classes and interfaces except non-static nested types.

    -
  • -
  • -

    Serialized Form

    -

    Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to re-implementors, not to developers using the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See also" section of the class description.

    -
  • -
  • -

    Constant Field Values

    -

    The Constant Field Values page lists the static final fields and their values.

    -
  • -
-This help file applies to API documentation generated using the standard doclet.
- -
- - - - - - - -
- - - - diff --git a/javadoc/index-files/index-1.html b/javadoc/index-files/index-1.html deleted file mode 100644 index ce3a277..0000000 --- a/javadoc/index-files/index-1.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - -A-Index - - - - - - - - -
- - - - - - - -
- - -
A C D E F G I J M N O R S T U V  - - -

A

-
-
AbstractDownload - Class in org.josfranmc.gutenberg.download
-
-
Encapsula el proceso que ha de seguirse para la descarga de un recurso.
-
-
-A C D E F G I J M N O R S T U V 
- -
- - - - - - - -
- - - - diff --git a/javadoc/index-files/index-10.html b/javadoc/index-files/index-10.html deleted file mode 100644 index d2d6025..0000000 --- a/javadoc/index-files/index-10.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - -N-Index - - - - - - - - -
- - - - - - - -
- - -
A C D E F G I J M N O R S T U V  - - -

N

-
-
newInstance(URL, String) - Static method in class org.josfranmc.gutenberg.download.engine.DownloadHttpUrlConnection
-
-
Crea una instancia DownloadHttpUrlConnection de tipo IDownloadEngine.
-
-
-A C D E F G I J M N O R S T U V 
- -
- - - - - - - -
- - - - diff --git a/javadoc/index-files/index-11.html b/javadoc/index-files/index-11.html deleted file mode 100644 index 3cab517..0000000 --- a/javadoc/index-files/index-11.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - -O-Index - - - - - - - - -
- - - - - - - -
- - -
A C D E F G I J M N O R S T U V  - - -

O

-
-
org.josfranmc.gutenberg.download - package org.josfranmc.gutenberg.download
-
 
-
org.josfranmc.gutenberg.download.client - package org.josfranmc.gutenberg.download.client
-
 
-
org.josfranmc.gutenberg.download.engine - package org.josfranmc.gutenberg.download.engine
-
 
-
org.josfranmc.gutenberg.engine - package org.josfranmc.gutenberg.engine
-
 
-
org.josfranmc.gutenberg.util - package org.josfranmc.gutenberg.util
-
 
-
-A C D E F G I J M N O R S T U V 
- -
- - - - - - - -
- - - - diff --git a/javadoc/index-files/index-12.html b/javadoc/index-files/index-12.html deleted file mode 100644 index d236429..0000000 --- a/javadoc/index-files/index-12.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - -R-Index - - - - - - - - -
- - - - - - - -
- - -
A C D E F G I J M N O R S T U V  - - -

R

-
-
run() - Method in class org.josfranmc.gutenberg.download.DownloadGreedy
-
-
Inicia un proceso de descarga.
-
-
-A C D E F G I J M N O R S T U V 
- -
- - - - - - - -
- - - - diff --git a/javadoc/index-files/index-13.html b/javadoc/index-files/index-13.html deleted file mode 100644 index 9a09d34..0000000 --- a/javadoc/index-files/index-13.html +++ /dev/null @@ -1,252 +0,0 @@ - - - - - - -S-Index - - - - - - - - -
- - - - - - - -
- - -
A C D E F G I J M N O R S T U V  - - -

S

-
-
setDelay(int) - Method in class org.josfranmc.gutenberg.download.DownloadParams
-
-
Establece el intervalo de espera entre descargas.
-
-
setDelay(int) - Method in interface org.josfranmc.gutenberg.download.IGutenbergDownload
-
-
Establece el tiempo de espera entre descargas, en milisegundos
-
-
setDelay(int) - Method in class org.josfranmc.gutenberg.download.JGutenbergDownload
-
-
Establece el tiempo de espera entre descargas, en milisegundos.
-
-
setDownloadMode(DownloadMode) - Method in interface org.josfranmc.gutenberg.download.IGutenbergDownload
-
-
Establece el mode de realizar las descargas
-
-
setDownloadMode(DownloadMode) - Method in class org.josfranmc.gutenberg.download.JGutenbergDownload
-
-
Establece el mode de realizar las descargas
-
-
setEngineType(DownloadEngineType) - Method in class org.josfranmc.gutenberg.download.DownloadParams
-
-
Establece el tipo de motor de descarga a utilizar
-
-
setEngineType(DownloadEngineType) - Method in interface org.josfranmc.gutenberg.download.IGutenbergDownload
-
-
Establece el tipo de motor a utilizar para realizar las descargas
-
-
setEngineType(DownloadEngineType) - Method in class org.josfranmc.gutenberg.download.JGutenbergDownload
-
-
Establece el tipo de motor a utilizar para realizar las descargas.
-
-
setError(String) - Method in class org.josfranmc.gutenberg.download.engine.DownloadResult
-
-
Establece un mensaje de error.
-
-
setFileOutputPath(String) - Method in class org.josfranmc.gutenberg.download.engine.DownloadResult
-
-
Establece la ruta del fichero descargado.
-
-
setFileType(String) - Method in interface org.josfranmc.gutenberg.download.IGutenbergDownload
-
-
Establece el tipo de ficheros a descargar.
-
-
setFileType(String) - Method in class org.josfranmc.gutenberg.download.JGutenbergDownload
-
 
-
setHeaders(URLConnection) - Method in class org.josfranmc.gutenberg.download.engine.DownloadResult
-
-
Establece la colección de campos de cabecera devuelta por una conexión realizada
-
-
setLanguage(String) - Method in interface org.josfranmc.gutenberg.download.IGutenbergDownload
-
-
Establece el idioma de los ficheros a descargar, según la nomenclatura usada por el proyecto Gutenberg.
-
-
setLanguage(String) - Method in class org.josfranmc.gutenberg.download.JGutenbergDownload
-
 
-
setMaxFilesToDownload(int) - Method in class org.josfranmc.gutenberg.download.DownloadParams
-
-
Establece el número máximo de ficheros a descargar.
-
-
setMaxFilesToDownload(int) - Method in interface org.josfranmc.gutenberg.download.IGutenbergDownload
-
-
Establece el número máximo de ficheros a descargar
-
-
setMaxFilesToDownload(int) - Method in class org.josfranmc.gutenberg.download.JGutenbergDownload
-
-
Establece el número máximo de ficheros a descargar
-
-
setOverwrite(boolean) - Method in class org.josfranmc.gutenberg.download.DownloadParams
-
-
Establece si deben sobreescribirse los recursos existentes por las nuevas descargas en caso de ser los mismos
-
-
setOverwrite(boolean) - Method in interface org.josfranmc.gutenberg.download.IGutenbergDownload
-
-
Establece si se deben sobreescribir los ficheros ya existentes en la carpeta especificada por las nuevas descargas en caso de ser los mismos
-
-
setOverwrite(boolean) - Method in class org.josfranmc.gutenberg.download.JGutenbergDownload
-
 
-
setResource(URL) - Method in class org.josfranmc.gutenberg.download.engine.DownloadHttpUrlConnection
-
-
Establece la dirección del recurso a descargar, la cual se maneja como un objeto de tipo URL
-
-
setResource(URL) - Method in interface org.josfranmc.gutenberg.download.engine.IDownloadEngine
-
-
Establece la dirección del recurso a descargar, la cual se maneja como un objeto de tipo URL
-
-
setSavePath(String) - Method in class org.josfranmc.gutenberg.download.DownloadParams
-
-
Establece la ruta de la carpeta en la que obtener los recursos descargados.
-
-
setSavePath(String) - Method in class org.josfranmc.gutenberg.download.engine.DownloadHttpUrlConnection
-
-
Establece la ruta donde guardar el recurso a descargar
-
-
setSavePath(String) - Method in interface org.josfranmc.gutenberg.download.engine.IDownloadEngine
-
-
Establece la ruta donde guardar el recurso a descargar
-
-
setSavePath(String) - Method in interface org.josfranmc.gutenberg.download.IGutenbergDownload
-
-
Establece la ruta de la carpeta en la que guardar los archivos descargados
-
-
setSavePath(String) - Method in class org.josfranmc.gutenberg.download.JGutenbergDownload
-
-
Establece la ruta de la carpeta en la que guardar los archivos descargados.
-
-
setUnzip(boolean) - Method in class org.josfranmc.gutenberg.download.DownloadParams
-
-
Establece si se deben descomprimir los archivos descargados
-
-
setUnzip(boolean) - Method in interface org.josfranmc.gutenberg.download.IGutenbergDownload
-
-
Establece si se deben descomprimir los ficheros una vez descargados
-
-
setUnzip(boolean) - Method in class org.josfranmc.gutenberg.download.JGutenbergDownload
-
 
-
setUp() - Static method in class org.josfranmc.gutenberg.engine.DownloadHttpUrlConnectionTest
-
-
Método ejecutado una vez antes de la ejecución de todos los tests
-
-
setUrlBase(URL) - Method in class org.josfranmc.gutenberg.download.DownloadParams
-
-
Establece la dirección url inicial del recurso a obtener
-
-
-A C D E F G I J M N O R S T U V 
- -
- - - - - - - -
- - - - diff --git a/javadoc/index-files/index-14.html b/javadoc/index-files/index-14.html deleted file mode 100644 index e80e606..0000000 --- a/javadoc/index-files/index-14.html +++ /dev/null @@ -1,148 +0,0 @@ - - - - - - -T-Index - - - - - - - - -
- - - - - - - -
- - -
A C D E F G I J M N O R S T U V  - - -

T

-
-
tearDown() - Method in class org.josfranmc.gutenberg.engine.DownloadHttpUrlConnectionTest
-
-
Método ejecutado después de la ejecución de cada test
-
-
testDownload() - Method in class org.josfranmc.gutenberg.engine.DownloadHttpUrlConnectionTest
-
-
Comprobar que se ha descargado un fichero concreto en la carpeta de ejecución del programa.
-
-
testGetLocalFileName() - Method in class org.josfranmc.gutenberg.util.FileManagerTest
-
-
Comprobar si es correcto el nombre del archivo contenido en una ruta.
-
-
testGetLocalFilePathFromURL() - Method in class org.josfranmc.gutenberg.util.FileManagerTest
-
-
Comprobar si es correcta la ruta que debe tener en el equipo local un fichero que va a descargarse en dicho equipo.
-
-
testParametersDefaultValue() - Method in class org.josfranmc.gutenberg.download.JGutenbergDownloadTest
-
-
Comprueba si los valores por defecto de los parámetros de descarga a la hora de crear un IGutenbergDownload son los correctos
-
-
-A C D E F G I J M N O R S T U V 
- -
- - - - - - - -
- - - - diff --git a/javadoc/index-files/index-15.html b/javadoc/index-files/index-15.html deleted file mode 100644 index 07a8032..0000000 --- a/javadoc/index-files/index-15.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - -U-Index - - - - - - - - -
- - - - - - - -
- - -
A C D E F G I J M N O R S T U V  - - -

U

-
-
unzipFiles(String, String) - Static method in class org.josfranmc.gutenberg.util.FileManager
-
-
Descomprime los ficheros comprimidos en formato zip de una determinada carpeta.
-
-
-A C D E F G I J M N O R S T U V 
- -
- - - - - - - -
- - - - diff --git a/javadoc/index-files/index-16.html b/javadoc/index-files/index-16.html deleted file mode 100644 index 6a5e2fa..0000000 --- a/javadoc/index-files/index-16.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - -V-Index - - - - - - - - -
- - - - - - - -
- - -
A C D E F G I J M N O R S T U V  - - -

V

-
-
valueOf(String) - Static method in enum org.josfranmc.gutenberg.download.DownloadMode
-
-
Returns the enum constant of this type with the specified name.
-
-
valueOf(String) - Static method in enum org.josfranmc.gutenberg.download.engine.DownloadEngineType
-
-
Returns the enum constant of this type with the specified name.
-
-
values() - Static method in enum org.josfranmc.gutenberg.download.DownloadMode
-
-
Returns an array containing the constants of this enum type, in -the order they are declared.
-
-
values() - Static method in enum org.josfranmc.gutenberg.download.engine.DownloadEngineType
-
-
Returns an array containing the constants of this enum type, in -the order they are declared.
-
-
-A C D E F G I J M N O R S T U V 
- -
- - - - - - - -
- - - - diff --git a/javadoc/index-files/index-2.html b/javadoc/index-files/index-2.html deleted file mode 100644 index 61cb4e7..0000000 --- a/javadoc/index-files/index-2.html +++ /dev/null @@ -1,160 +0,0 @@ - - - - - - -C-Index - - - - - - - - -
- - - - - - - -
- - -
A C D E F G I J M N O R S T U V  - - -

C

-
-
create(DownloadMode) - Static method in class org.josfranmc.gutenberg.download.DownloadFactory
-
-
Crea un objeto concreto para realizar descargas
-
-
create() - Static method in class org.josfranmc.gutenberg.download.engine.DownloadEngineFactory
-
-
Crea un motor para realizar la descarga de recursos en red.
-
-
create(DownloadEngineType) - Static method in class org.josfranmc.gutenberg.download.engine.DownloadEngineFactory
-
-
Crea un motor determinado para realizar la descarga de recursos en red
-
-
create(URL, DownloadEngineType) - Static method in class org.josfranmc.gutenberg.download.engine.DownloadEngineFactory
-
-
Crea un motor determinado para realizar la descarga desde una determinada URL
-
-
create(URL) - Static method in class org.josfranmc.gutenberg.download.engine.DownloadEngineFactory
-
-
Crea un motor para realizar la descarga desde una determinada URL.
-
-
create(URL, String, DownloadEngineType) - Static method in class org.josfranmc.gutenberg.download.engine.DownloadEngineFactory
-
-
Crea un motor determinado para realizar la descarga desde una determinada URL, guardando lo descargado en una ruta del equipo local
-
-
create(URL, String) - Static method in class org.josfranmc.gutenberg.download.engine.DownloadEngineFactory
-
-
Crea un motor para realizar la descarga desde una determinada URL, guardando lo descargado en una ruta del equipo local.
-
-
create() - Static method in class org.josfranmc.gutenberg.download.JGutenbergDownloadFactory
-
-
Crea un objeto JGutenbergDownload que implementa toda la funcionalidad necesaria para la descarga de libros
-
-
-A C D E F G I J M N O R S T U V 
- -
- - - - - - - -
- - - - diff --git a/javadoc/index-files/index-3.html b/javadoc/index-files/index-3.html deleted file mode 100644 index deb2ea1..0000000 --- a/javadoc/index-files/index-3.html +++ /dev/null @@ -1,218 +0,0 @@ - - - - - - -D-Index - - - - - - - - -
- - - - - - - -
- - -
A C D E F G I J M N O R S T U V  - - -

D

-
-
done() - Static method in class org.josfranmc.gutenberg.engine.DownloadHttpUrlConnectionTest
-
-
Método ejecutado una vez después de la ejecución de todos los tests
-
-
download() - Method in class org.josfranmc.gutenberg.download.engine.DownloadHttpUrlConnection
-
-
Ejecuta el proceso de descarga.
-
-
download() - Method in interface org.josfranmc.gutenberg.download.engine.IDownloadEngine
-
-
Ejecuta el proceso de descarga.
-
-
downloadBooks() - Method in interface org.josfranmc.gutenberg.download.IGutenbergDownload
-
-
Desacarga libros
-
-
downloadBooks() - Method in class org.josfranmc.gutenberg.download.JGutenbergDownload
-
-
Inicia el proceso de descarga de los libros.
-
-
DownloadEngineFactory - Class in org.josfranmc.gutenberg.download.engine
-
-
Factoría para la creación de objetos de tipo IDownloadEngine mediante el método create - Este método está sobregargado, de forma que se puede invocar combinando tres parámetros: - - target: recurso a descargar - savePath: ruta local donde obtener el recurso - type: tipo de motor a utilizar para la descarga (si no se indica ninguno por defecto se usa DownloadEngineType.HTTTP_CONNECTION) -
-
-
DownloadEngineFactory() - Constructor for class org.josfranmc.gutenberg.download.engine.DownloadEngineFactory
-
 
-
DownloadEngineFactoryTest - Class in org.josfranmc.gutenberg.engine
-
 
-
DownloadEngineFactoryTest() - Constructor for class org.josfranmc.gutenberg.engine.DownloadEngineFactoryTest
-
 
-
DownloadEngineType - Enum in org.josfranmc.gutenberg.download.engine
-
-
Tipos de motores de descarga
-
-
DownloadFactory - Class in org.josfranmc.gutenberg.download
-
-
Factoría que permite crear un objeto para realizar un tipo determinado de descarga
-
-
DownloadFactory() - Constructor for class org.josfranmc.gutenberg.download.DownloadFactory
-
 
-
DownloadGreedy - Class in org.josfranmc.gutenberg.download
-
-
Realiza el proceso de descarga de los libros de forma "avariciosa".
-
-
DownloadGreedy() - Constructor for class org.josfranmc.gutenberg.download.DownloadGreedy
-
-
Constructor por defecto.
-
-
DownloadHttpUrlConnection - Class in org.josfranmc.gutenberg.download.engine
-
-
Permite realizar la descarga de un recurso identificado por una URL.
-
-
DownloadHttpUrlConnectionTest - Class in org.josfranmc.gutenberg.engine
-
 
-
DownloadHttpUrlConnectionTest() - Constructor for class org.josfranmc.gutenberg.engine.DownloadHttpUrlConnectionTest
-
 
-
DownloadMode - Enum in org.josfranmc.gutenberg.download
-
-
Tipos de descarga.
-
-
DownloadParams - Class in org.josfranmc.gutenberg.download
-
-
Encapsula los parámetros que permiten configurar la aplicación.
-
-
DownloadParams() - Constructor for class org.josfranmc.gutenberg.download.DownloadParams
-
-
Constructor por defecto.
-
-
DownloadResult - Class in org.josfranmc.gutenberg.download.engine
-
-
Encapsula el resultado de la descarga de un recurso.
-
-
DownloadResult() - Constructor for class org.josfranmc.gutenberg.download.engine.DownloadResult
-
-
Constructor principal.
-
-
DownloadSoft - Class in org.josfranmc.gutenberg.download
-
-
Realiza el proceso de descarga de los libros de forma no "avariciosa".
-
-
DownloadSoft() - Constructor for class org.josfranmc.gutenberg.download.DownloadSoft
-
-
Constructor por defecto.
-
-
-A C D E F G I J M N O R S T U V 
- -
- - - - - - - -
- - - - diff --git a/javadoc/index-files/index-4.html b/javadoc/index-files/index-4.html deleted file mode 100644 index 3bb2da7..0000000 --- a/javadoc/index-files/index-4.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - -E-Index - - - - - - - - -
- - - - - - - -
- - -
A C D E F G I J M N O R S T U V  - - -

E

-
-
executeDownload(DownloadParams) - Method in class org.josfranmc.gutenberg.download.AbstractDownload
-
-
Ejecuta el proceso de desarga.
-
-
-A C D E F G I J M N O R S T U V 
- -
- - - - - - - -
- - - - diff --git a/javadoc/index-files/index-5.html b/javadoc/index-files/index-5.html deleted file mode 100644 index b9ac61c..0000000 --- a/javadoc/index-files/index-5.html +++ /dev/null @@ -1,150 +0,0 @@ - - - - - - -F-Index - - - - - - - - -
- - - - - - - -
- - -
A C D E F G I J M N O R S T U V  - - -

F

-
-
fileExists(String, String) - Static method in class org.josfranmc.gutenberg.util.FileManager
-
-
Comprueba si existe en una ruta del equipo local el fichero que se puede obtener con la descarga de un determinado enlace.
-
-
FileManager - Class in org.josfranmc.gutenberg.util
-
-
Ofrece herramientas para el tratamiento de ficheros.
-
-
FileManager() - Constructor for class org.josfranmc.gutenberg.util.FileManager
-
 
-
FileManagerTest - Class in org.josfranmc.gutenberg.util
-
 
-
FileManagerTest() - Constructor for class org.josfranmc.gutenberg.util.FileManagerTest
-
 
-
FileScraping - Class in org.josfranmc.gutenberg.util
-
-
Ofrece herramientas para analizar ficheros en busca de enlaces web.
-
-
FileScraping() - Constructor for class org.josfranmc.gutenberg.util.FileScraping
-
-
Constructor por defecto.
-
-
-A C D E F G I J M N O R S T U V 
- -
- - - - - - - -
- - - - diff --git a/javadoc/index-files/index-6.html b/javadoc/index-files/index-6.html deleted file mode 100644 index 55ddec1..0000000 --- a/javadoc/index-files/index-6.html +++ /dev/null @@ -1,258 +0,0 @@ - - - - - - -G-Index - - - - - - - - -
- - - - - - - -
- - -
A C D E F G I J M N O R S T U V  - - -

G

-
-
getContentLength() - Method in class org.josfranmc.gutenberg.download.engine.DownloadResult
-
 
-
getContentType() - Method in class org.josfranmc.gutenberg.download.engine.DownloadResult
-
 
-
getDelay() - Method in class org.josfranmc.gutenberg.download.DownloadParams
-
 
-
getDelay() - Method in interface org.josfranmc.gutenberg.download.IGutenbergDownload
-
 
-
getDelay() - Method in class org.josfranmc.gutenberg.download.JGutenbergDownload
-
-
Obtiene el tiempo de espera entre descargas establecido, en milisegundos.
-
-
getDownloadMode() - Method in interface org.josfranmc.gutenberg.download.IGutenbergDownload
-
 
-
getDownloadMode() - Method in class org.josfranmc.gutenberg.download.JGutenbergDownload
-
 
-
getEngineType() - Method in class org.josfranmc.gutenberg.download.DownloadParams
-
 
-
getEngineType() - Method in interface org.josfranmc.gutenberg.download.IGutenbergDownload
-
 
-
getEngineType() - Method in class org.josfranmc.gutenberg.download.JGutenbergDownload
-
 
-
getError() - Method in class org.josfranmc.gutenberg.download.engine.DownloadResult
-
 
-
getFileOutputPath() - Method in class org.josfranmc.gutenberg.download.engine.DownloadResult
-
 
-
getFileType() - Method in interface org.josfranmc.gutenberg.download.IGutenbergDownload
-
 
-
getFileType() - Method in class org.josfranmc.gutenberg.download.JGutenbergDownload
-
 
-
getHeaders() - Method in class org.josfranmc.gutenberg.download.engine.DownloadResult
-
 
-
getLanguage() - Method in interface org.josfranmc.gutenberg.download.IGutenbergDownload
-
 
-
getLanguage() - Method in class org.josfranmc.gutenberg.download.JGutenbergDownload
-
 
-
getLastModified() - Method in class org.josfranmc.gutenberg.download.engine.DownloadResult
-
 
-
getLinks(String) - Static method in class org.josfranmc.gutenberg.util.FileScraping
-
-
Obtiene una lista con todos los enlaces contenidos dentro de un fichero HTML.
-
-
getLocalFileName(String) - Static method in class org.josfranmc.gutenberg.util.FileManager
-
-
Devuelve el nombre del archivo contenido en una ruta.
-
-
getLocalFilePathFromURL(String, String) - Static method in class org.josfranmc.gutenberg.util.FileManager
-
-
Devuelve la ruta que debe tener en el equipo local un fichero que va a descargarse en dicho equipo.
-
-
getMaxFilesToDownload() - Method in class org.josfranmc.gutenberg.download.DownloadParams
-
 
-
getMaxFilesToDownload() - Method in interface org.josfranmc.gutenberg.download.IGutenbergDownload
-
 
-
getMaxFilesToDownload() - Method in class org.josfranmc.gutenberg.download.JGutenbergDownload
-
 
-
getResource() - Method in class org.josfranmc.gutenberg.download.engine.DownloadHttpUrlConnection
-
-
Obtiene la dirección del recurso a descargar como un objeto de tipo URL
-
-
getResource() - Method in interface org.josfranmc.gutenberg.download.engine.IDownloadEngine
-
-
Obtiene la dirección del recurso a descargar como un objeto de tipo URL
-
-
getSavePath() - Method in class org.josfranmc.gutenberg.download.DownloadParams
-
 
-
getSavePath() - Method in class org.josfranmc.gutenberg.download.engine.DownloadHttpUrlConnection
-
-
Obtiene la ruta donde guardar el recursos a descargar
-
-
getSavePath() - Method in interface org.josfranmc.gutenberg.download.engine.IDownloadEngine
-
-
Obtiene la ruta donde guardar el recursos a descargar
-
-
getSavePath() - Method in interface org.josfranmc.gutenberg.download.IGutenbergDownload
-
 
-
getSavePath() - Method in class org.josfranmc.gutenberg.download.JGutenbergDownload
-
 
-
getUrlBase() - Method in class org.josfranmc.gutenberg.download.DownloadParams
-
 
-
getUrlBase() - Method in interface org.josfranmc.gutenberg.download.IGutenbergDownload
-
 
-
getUrlBase() - Method in class org.josfranmc.gutenberg.download.JGutenbergDownload
-
 
-
givenDownloadModeWhenNullThenIllegalArgumentException() - Method in class org.josfranmc.gutenberg.download.JGutenbergDownloadTest
-
-
Si el parámetro DownloadMode es null, entonces lanzar excepción IllegalArgumentException
-
-
givenDownloadParametersWhenNullThenDownloadResultShoulbBeNotNull() - Method in class org.josfranmc.gutenberg.engine.DownloadHttpUrlConnectionTest
-
-
Si los parámetros de descarga (ruta del recurso a descargar y ruta donde guardar la descarga) son nulos, entonces se devuelve un objeto - resultado (DownloadResult) con valores a null.
-
-
givenInputPathAndOutputPathWhenNullThenAvoidNullPointerException() - Method in class org.josfranmc.gutenberg.util.FileManagerTest
-
-
Si la ruta del directorio donde se encuentran los ficheros zip o la ruta del directorio en el que descomprimir los ficheros son null, - entonces el método FileManager.unzipFiles no debe lanzar NullPointerException
-
-
givenMaxFilesToDownloadWhenMinusZeroThenIllegalArgumentException() - Method in class org.josfranmc.gutenberg.download.JGutenbergDownloadTest
-
-
Si el parámetro MaxFilesToDownload es menor de cero, entonces lanzar excepción IllegalArgumentException
-
-
givenSavePathWhenNoExistsThenIllegalArgumentException() - Method in class org.josfranmc.gutenberg.download.JGutenbergDownloadTest
-
-
Si la ruta indicada para guardar las descargas no existe, entonces lanzar excepción IllegalArgumentException
-
-
givenSavePathWhenNullThenIllegalArgumentException() - Method in class org.josfranmc.gutenberg.download.JGutenbergDownloadTest
-
-
Si la ruta indicada para guardar las descargas es null, entonces lanzar excepción IllegalArgumentException
-
-
givenSavePathWhenNullThenReturnUserDir() - Method in class org.josfranmc.gutenberg.engine.DownloadHttpUrlConnectionTest
-
-
Si la ruta donde guardar las descargas no se ha especificado, entonces la carpeta de descarga debe ser la carpeta de ejecución del programa.
-
-
givenUrlParametersWhenEmptyThenIllegalArgumentException() - Method in class org.josfranmc.gutenberg.download.JGutenbergDownloadTest
-
-
Si no se ha indicado tipo de fichero e idioma para realizar las descargas, entonces lanzar excepción IllegalArgumentException y mostrar mensaje
-
-
givenUrlParametersWhenNullThenIllegalArgumentException() - Method in class org.josfranmc.gutenberg.download.JGutenbergDownloadTest
-
-
Si no se ha indicado tipo de fichero e idioma para realizar las descargas, entonces lanzar excepción IllegalArgumentException y mostrar mensaje
-
-
givenUrlWhenWrongAddressThenFileOutputPathShoulbBeNull() - Method in class org.josfranmc.gutenberg.engine.DownloadEngineFactoryTest
-
-
Si se indica DownloadEngineType con valor null, entonces se debe crear un IDownloadEngineType de tipo DownloadEngineType.HTTP_CONNECTION
-
-
givenUrlWhenWrongAddressThenFileOutputPathShoulbBeNull() - Method in class org.josfranmc.gutenberg.engine.DownloadHttpUrlConnectionTest
-
-
Si se indica una dirección de descarga errónea, entonces la ruta donde se ha guardado la descarga debe ser null (en el objeto DownloadResult).
-
-
-A C D E F G I J M N O R S T U V 
- -
- - - - - - - -
- - - - diff --git a/javadoc/index-files/index-7.html b/javadoc/index-files/index-7.html deleted file mode 100644 index af9f7e9..0000000 --- a/javadoc/index-files/index-7.html +++ /dev/null @@ -1,154 +0,0 @@ - - - - - - -I-Index - - - - - - - - -
- - - - - - - -
- - -
A C D E F G I J M N O R S T U V  - - -

I

-
-
IDownloadEngine - Interface in org.josfranmc.gutenberg.download.engine
-
-
Define el comportamiento que tiene que ofrecer toda clase que quiera implementar la capacidad de descargar - un recurso identificado por una URL
-
-
IGutenbergDownload - Interface in org.josfranmc.gutenberg.download
-
-
Establece el interfaz de uso que debe implementarse para llevar a cabo la gestión y desarrollo del proceso de descarga de los libros alojados - por el proyecto Gutenberg (http://www.gutenberg.org/)
-
-
init() - Method in class org.josfranmc.gutenberg.engine.DownloadHttpUrlConnectionTest
-
-
Método ejecutado antes de la ejecución de cada test
-
-
isOverwrite() - Method in class org.josfranmc.gutenberg.download.DownloadParams
-
 
-
isOverwrite() - Method in interface org.josfranmc.gutenberg.download.IGutenbergDownload
-
 
-
isOverwrite() - Method in class org.josfranmc.gutenberg.download.JGutenbergDownload
-
 
-
isUnzip() - Method in class org.josfranmc.gutenberg.download.DownloadParams
-
 
-
isUnzip() - Method in interface org.josfranmc.gutenberg.download.IGutenbergDownload
-
 
-
isUnzip() - Method in class org.josfranmc.gutenberg.download.JGutenbergDownload
-
 
-
-A C D E F G I J M N O R S T U V 
- -
- - - - - - - -
- - - - diff --git a/javadoc/index-files/index-8.html b/javadoc/index-files/index-8.html deleted file mode 100644 index 25fbafb..0000000 --- a/javadoc/index-files/index-8.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - -J-Index - - - - - - - - -
- - - - - - - -
- - -
A C D E F G I J M N O R S T U V  - - -

J

-
-
JGutenbergDownload - Class in org.josfranmc.gutenberg.download
-
-
Implementa el proceso y gestión de descarga de libros alojados por el proyecto Gutenberg (http://www.gutenberg.org)
-
-
JGutenbergDownload() - Constructor for class org.josfranmc.gutenberg.download.JGutenbergDownload
-
-
Constructor principal.
-
-
JGutenbergDownloadClient - Class in org.josfranmc.gutenberg.download.client
-
-
Clase que permite ejecutar un progrma cliente para realiza descargas de libros desde los repositorios del proyecto Gutenberg.
-
-
JGutenbergDownloadClient() - Constructor for class org.josfranmc.gutenberg.download.client.JGutenbergDownloadClient
-
 
-
JGutenbergDownloadFactory - Class in org.josfranmc.gutenberg.download
-
-
Factoría que crea objetos de tipo IGutenbergDownload, los cuales implementan los servicios necesarios para la gestión y desarrollo - del proceso de descarga de libros alojados por el proyecto Gutenberg.
-
-
JGutenbergDownloadFactory() - Constructor for class org.josfranmc.gutenberg.download.JGutenbergDownloadFactory
-
 
-
JGutenbergDownloadTest - Class in org.josfranmc.gutenberg.download
-
-
Clase que implementa los test para probar los métodos de la clase JGutenbergDownloadTest
-
-
JGutenbergDownloadTest() - Constructor for class org.josfranmc.gutenberg.download.JGutenbergDownloadTest
-
 
-
-A C D E F G I J M N O R S T U V 
- -
- - - - - - - -
- - - - diff --git a/javadoc/index-files/index-9.html b/javadoc/index-files/index-9.html deleted file mode 100644 index c6b9bf1..0000000 --- a/javadoc/index-files/index-9.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - -M-Index - - - - - - - - -
- - - - - - - -
- - -
A C D E F G I J M N O R S T U V  - - -

M

-
-
main(String[]) - Static method in class org.josfranmc.gutenberg.download.client.JGutenbergDownloadClient
-
-
Método principal de ejecución.
-
-
-A C D E F G I J M N O R S T U V 
- -
- - - - - - - -
- - - - diff --git a/javadoc/index.html b/javadoc/index.html deleted file mode 100644 index dfd0048..0000000 --- a/javadoc/index.html +++ /dev/null @@ -1,75 +0,0 @@ - - - - - - -Generated Documentation (Untitled) - - - - - - - - - -<noscript> -<div>JavaScript is disabled on your browser.</div> -</noscript> -<h2>Frame Alert</h2> -<p>This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client. Link to <a href="overview-summary.html">Non-frame version</a>.</p> - - - diff --git a/javadoc/org/josfranmc/gutenberg/download/AbstractDownload.html b/javadoc/org/josfranmc/gutenberg/download/AbstractDownload.html deleted file mode 100644 index 983fec4..0000000 --- a/javadoc/org/josfranmc/gutenberg/download/AbstractDownload.html +++ /dev/null @@ -1,268 +0,0 @@ - - - - - - -AbstractDownload - - - - - - - - - - - - -
-
org.josfranmc.gutenberg.download
-

Class AbstractDownload

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • org.josfranmc.gutenberg.download.AbstractDownload
    • -
    -
  • -
-
-
    -
  • -
    -
    Direct Known Subclasses:
    -
    DownloadGreedy, DownloadSoft
    -
    -
    -
    -
    public abstract class AbstractDownload
    -extends java.lang.Object
    -
    Encapsula el proceso que ha de seguirse para la descarga de un recurso.
    - Esta clase actúa como plantilla (template), de forma que las clases que hereden de ella deben implementar los métodos indicados para realizar las descargas. - En concreo, se debe definir como se configuran los parámetros pasados y como se realiza el procesamiento de las páginas que exponen los enlaces a los - libros del proyecto Gutenberg (http://www.gutenberg.org/)
    -
    -
    Version:
    -
    1.0
    -
    Author:
    -
    Jose Francisco Mena Ceca
    -
    See Also:
    -
    DownloadParams, -IDownloadEngine
    -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - -
      All Methods Instance Methods Concrete Methods 
      Modifier and TypeMethod and Description
      voidexecuteDownload(DownloadParams downloadParams) -
      Ejecuta el proceso de desarga.
      -
      -
        -
      • - - -

        Methods inherited from class java.lang.Object

        -equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        executeDownload

        -
        public void executeDownload(DownloadParams downloadParams)
        -
        Ejecuta el proceso de desarga.
        Una vez realizada la configuración de los elementos necesarios, se realiza la descarga del recurso indicado - en los parámetros pasados. Si el recurso obtenido es una página con enlaces de descarga se extraen estos enlaces - para realizar la descarga de los recursos que se referencian.
        -
        -
        Parameters:
        -
        downloadParams - parámetros de configuración de la descarga
        -
        Throws:
        -
        java.lang.IllegalStateException - si se ha devuelto algún error al hacer las descargas
        -
        See Also:
        -
        DownloadParams
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git a/javadoc/org/josfranmc/gutenberg/download/DownloadFactory.html b/javadoc/org/josfranmc/gutenberg/download/DownloadFactory.html deleted file mode 100644 index 7269443..0000000 --- a/javadoc/org/josfranmc/gutenberg/download/DownloadFactory.html +++ /dev/null @@ -1,291 +0,0 @@ - - - - - - -DownloadFactory - - - - - - - - - - - - -
-
org.josfranmc.gutenberg.download
-

Class DownloadFactory

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • org.josfranmc.gutenberg.download.DownloadFactory
    • -
    -
  • -
-
-
    -
  • -
    -
    -
    public class DownloadFactory
    -extends java.lang.Object
    -
    Factoría que permite crear un objeto para realizar un tipo determinado de descarga
    -
    -
    Version:
    -
    1.0
    -
    Author:
    -
    Jose Francisco Mena Ceca
    -
    See Also:
    -
    AbstractDownload, -DownloadMode
    -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Constructor Summary

      - - - - - - - - -
      Constructors 
      Constructor and Description
      DownloadFactory() 
      -
    • -
    - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - -
      All Methods Static Methods Concrete Methods 
      Modifier and TypeMethod and Description
      static AbstractDownloadcreate(DownloadMode type) -
      Crea un objeto concreto para realizar descargas
      -
      -
        -
      • - - -

        Methods inherited from class java.lang.Object

        -equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        DownloadFactory

        -
        public DownloadFactory()
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        create

        -
        public static AbstractDownload create(DownloadMode type)
        -
        Crea un objeto concreto para realizar descargas
        -
        -
        Parameters:
        -
        type - tipo de descarga según DownloadType
        -
        Returns:
        -
        objeto para realizar descargas
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git a/javadoc/org/josfranmc/gutenberg/download/DownloadGreedy.html b/javadoc/org/josfranmc/gutenberg/download/DownloadGreedy.html deleted file mode 100644 index 5a1528f..0000000 --- a/javadoc/org/josfranmc/gutenberg/download/DownloadGreedy.html +++ /dev/null @@ -1,314 +0,0 @@ - - - - - - -DownloadGreedy - - - - - - - - - - - - -
-
org.josfranmc.gutenberg.download
-

Class DownloadGreedy

-
-
- -
-
    -
  • -
    -
    All Implemented Interfaces:
    -
    java.lang.Runnable
    -
    -
    -
    -
    public class DownloadGreedy
    -extends AbstractDownload
    -implements java.lang.Runnable
    -
    Realiza el proceso de descarga de los libros de forma "avariciosa". La estrategia utilizada es la de ejecutar diversos hilos para realizar - la descarga de los libros de forma concurrrente y sin realizar ninguna pausa entre las descargas.
    - Este método de descarga es más eficiente, desde el punto de vista de la velocidad de las descargas, que el usado por el tipo DownloadSoft - pero no respeta las condiciones de uso del servicio ofrecido por el proyecto Gutenberg ya que se hace un uso abusivo de las mismas. Utilizar este - modo de descarga puede suponer que nuestra dirección ip sea bloqueada, impidiéndonos el acceso a los servidores.

    - Más info: http://www.gutenberg.org/wiki/Gutenberg:Information_About_Robot_Access_to_our_Pages

    -
    -
    Version:
    -
    1.0
    -
    Author:
    -
    Jose Francisco Mena Ceca
    -
    See Also:
    -
    AbstractDownload, -DownloadParams
    -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Constructor Summary

      - - - - - - - - -
      Constructors 
      Constructor and Description
      DownloadGreedy() -
      Constructor por defecto.
      -
      -
    • -
    - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - -
      All Methods Instance Methods Concrete Methods 
      Modifier and TypeMethod and Description
      voidrun() -
      Inicia un proceso de descarga.
      -
      - -
        -
      • - - -

        Methods inherited from class java.lang.Object

        -equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        DownloadGreedy

        -
        public DownloadGreedy()
        -
        Constructor por defecto.
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        run

        -
        public void run()
        -
        Inicia un proceso de descarga.
        -
        -
        Specified by:
        -
        run in interface java.lang.Runnable
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git a/javadoc/org/josfranmc/gutenberg/download/DownloadMode.html b/javadoc/org/josfranmc/gutenberg/download/DownloadMode.html deleted file mode 100644 index fdb51cf..0000000 --- a/javadoc/org/josfranmc/gutenberg/download/DownloadMode.html +++ /dev/null @@ -1,355 +0,0 @@ - - - - - - -DownloadMode - - - - - - - - - - - - -
-
org.josfranmc.gutenberg.download
-

Enum DownloadMode

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • java.lang.Enum<DownloadMode>
    • -
    • -
        -
      • org.josfranmc.gutenberg.download.DownloadMode
      • -
      -
    • -
    -
  • -
-
-
    -
  • -
    -
    All Implemented Interfaces:
    -
    java.io.Serializable, java.lang.Comparable<DownloadMode>
    -
    -
    -
    -
    public enum DownloadMode
    -extends java.lang.Enum<DownloadMode>
    -
    Tipos de descarga.
    -
    -
    Version:
    -
    1.0
    -
    Author:
    -
    Jose Francisco Mena Ceca
    -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Enum Constant Summary

      - - - - - - - - - - - -
      Enum Constants 
      Enum Constant and Description
      GREEDY -
      Descarga concurrente de recursos (más rápida)
      -
      SOFT -
      Descarga normal (lenta)
      -
      -
    • -
    - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - - - - - -
      All Methods Static Methods Concrete Methods 
      Modifier and TypeMethod and Description
      static DownloadModevalueOf(java.lang.String name) -
      Returns the enum constant of this type with the specified name.
      -
      static DownloadMode[]values() -
      Returns an array containing the constants of this enum type, in -the order they are declared.
      -
      -
        -
      • - - -

        Methods inherited from class java.lang.Enum

        -compareTo, equals, getDeclaringClass, hashCode, name, ordinal, toString, valueOf
      • -
      -
        -
      • - - -

        Methods inherited from class java.lang.Object

        -getClass, notify, notifyAll, wait, wait, wait
      • -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Enum Constant Detail

      - - - -
        -
      • -

        SOFT

        -
        public static final DownloadMode SOFT
        -
        Descarga normal (lenta)
        -
      • -
      - - - -
        -
      • -

        GREEDY

        -
        public static final DownloadMode GREEDY
        -
        Descarga concurrente de recursos (más rápida)
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        values

        -
        public static DownloadMode[] values()
        -
        Returns an array containing the constants of this enum type, in -the order they are declared. This method may be used to iterate -over the constants as follows: -
        -for (DownloadMode c : DownloadMode.values())
        -    System.out.println(c);
        -
        -
        -
        Returns:
        -
        an array containing the constants of this enum type, in the order they are declared
        -
        -
      • -
      - - - -
        -
      • -

        valueOf

        -
        public static DownloadMode valueOf(java.lang.String name)
        -
        Returns the enum constant of this type with the specified name. -The string must match exactly an identifier used to declare an -enum constant in this type. (Extraneous whitespace characters are -not permitted.)
        -
        -
        Parameters:
        -
        name - the name of the enum constant to be returned.
        -
        Returns:
        -
        the enum constant with the specified name
        -
        Throws:
        -
        java.lang.IllegalArgumentException - if this enum type has no constant with the specified name
        -
        java.lang.NullPointerException - if the argument is null
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git a/javadoc/org/josfranmc/gutenberg/download/DownloadParams.html b/javadoc/org/josfranmc/gutenberg/download/DownloadParams.html deleted file mode 100644 index b4b1246..0000000 --- a/javadoc/org/josfranmc/gutenberg/download/DownloadParams.html +++ /dev/null @@ -1,538 +0,0 @@ - - - - - - -DownloadParams - - - - - - - - - - - - -
-
org.josfranmc.gutenberg.download
-

Class DownloadParams

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • org.josfranmc.gutenberg.download.DownloadParams
    • -
    -
  • -
-
-
    -
  • -
    -
    -
    public class DownloadParams
    -extends java.lang.Object
    -
    Encapsula los parámetros que permiten configurar la aplicación. Son los siguientes: -
      -
    • urlBase: url del recurso a descargar
    • -
    • savePath: ruta local donde descargar los recursos
    • -
    • overwrite: indica si se deben sobreescribir recursos que ya están descargados
    • -
    • delay: tiempo de espera entre descargas
    • -
    • unzip: indica si los recursos descargados en formato zip deben o no descomprimirse
    • -
    • engineType: tipo de motor a utilizar para la descarga
    • -
    -
    -
    Version:
    -
    1.0
    -
    Author:
    -
    Jose Francisco Mena Ceca
    -
    See Also:
    -
    DownloadEngineType
    -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Constructor Summary

      - - - - - - - - -
      Constructors 
      Constructor and Description
      DownloadParams() -
      Constructor por defecto.
      -
      -
    • -
    - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      All Methods Instance Methods Concrete Methods 
      Modifier and TypeMethod and Description
      intgetDelay() 
      DownloadEngineTypegetEngineType() 
      intgetMaxFilesToDownload() 
      java.lang.StringgetSavePath() 
      java.net.URLgetUrlBase() 
      booleanisOverwrite() 
      booleanisUnzip() 
      voidsetDelay(int delay) -
      Establece el intervalo de espera entre descargas.
      -
      voidsetEngineType(DownloadEngineType engineType) -
      Establece el tipo de motor de descarga a utilizar
      -
      voidsetMaxFilesToDownload(int maxFilesToDownload) -
      Establece el número máximo de ficheros a descargar.
      -
      voidsetOverwrite(boolean overwrite) -
      Establece si deben sobreescribirse los recursos existentes por las nuevas descargas en caso de ser los mismos
      -
      voidsetSavePath(java.lang.String savePath) -
      Establece la ruta de la carpeta en la que obtener los recursos descargados.
      -
      voidsetUnzip(boolean unzip) -
      Establece si se deben descomprimir los archivos descargados
      -
      voidsetUrlBase(java.net.URL urlBase) -
      Establece la dirección url inicial del recurso a obtener
      -
      -
        -
      • - - -

        Methods inherited from class java.lang.Object

        -equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        DownloadParams

        -
        public DownloadParams()
        -
        Constructor por defecto.
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        getUrlBase

        -
        public java.net.URL getUrlBase()
        -
        -
        Returns:
        -
        la dirección url inicial del recurso a obtener
        -
        -
      • -
      - - - -
        -
      • -

        setUrlBase

        -
        public void setUrlBase(java.net.URL urlBase)
        -
        Establece la dirección url inicial del recurso a obtener
        -
        -
        Parameters:
        -
        urlBase - dirección url
        -
        -
      • -
      - - - -
        -
      • -

        getSavePath

        -
        public java.lang.String getSavePath()
        -
        -
        Returns:
        -
        la ruta de la carpeta en la que obtener los recursos descargados
        -
        -
      • -
      - - - -
        -
      • -

        setSavePath

        -
        public void setSavePath(java.lang.String savePath)
        -
        Establece la ruta de la carpeta en la que obtener los recursos descargados.
        -
        -
        Parameters:
        -
        savePath - ruta de la carpeta en la que obtener los recursos descargados
        -
        -
      • -
      - - - -
        -
      • -

        isOverwrite

        -
        public boolean isOverwrite()
        -
        -
        Returns:
        -
        true si se deben sobreescribir los archivos existentes por los descargados en caso de ser los mismos, false en caso contrario
        -
        -
      • -
      - - - -
        -
      • -

        setOverwrite

        -
        public void setOverwrite(boolean overwrite)
        -
        Establece si deben sobreescribirse los recursos existentes por las nuevas descargas en caso de ser los mismos
        -
        -
        Parameters:
        -
        overwrite - true si se deben sobreescribir los archivos, false en caso contrario
        -
        -
      • -
      - - - -
        -
      • -

        getDelay

        -
        public int getDelay()
        -
        -
        Returns:
        -
        el intervalo de espera entre descargas, en milisegundos
        -
        -
      • -
      - - - -
        -
      • -

        setDelay

        -
        public void setDelay(int delay)
        -
        Establece el intervalo de espera entre descargas.
        -
        -
        Parameters:
        -
        delay - tiempo de espera, en milisegundos
        -
        -
      • -
      - - - -
        -
      • -

        isUnzip

        -
        public boolean isUnzip()
        -
        -
        Returns:
        -
        true si se deben descomprimir los archivos descargados, false en caso contrario
        -
        -
      • -
      - - - -
        -
      • -

        setUnzip

        -
        public void setUnzip(boolean unzip)
        -
        Establece si se deben descomprimir los archivos descargados
        -
        -
        Parameters:
        -
        unzip - true si se deben descomprimir los archivos descargados, false en caso contrario
        -
        -
      • -
      - - - -
        -
      • -

        getMaxFilesToDownload

        -
        public int getMaxFilesToDownload()
        -
        -
        Returns:
        -
        el número máximo de ficheros a descargar
        -
        -
      • -
      - - - -
        -
      • -

        setMaxFilesToDownload

        -
        public void setMaxFilesToDownload(int maxFilesToDownload)
        -
        Establece el número máximo de ficheros a descargar. El valor cero indica descargar todos los ficheros disponibles.
        -
        -
        Parameters:
        -
        maxFilesToDownload - número máximo de ficheros
        -
        -
      • -
      - - - -
        -
      • -

        getEngineType

        -
        public DownloadEngineType getEngineType()
        -
        -
        Returns:
        -
        el tipo de motor de descarga a utilizar
        -
        -
      • -
      - - - -
        -
      • -

        setEngineType

        -
        public void setEngineType(DownloadEngineType engineType)
        -
        Establece el tipo de motor de descarga a utilizar
        -
        -
        Parameters:
        -
        engineType - tipo de motor de descarga a utilizar
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git a/javadoc/org/josfranmc/gutenberg/download/DownloadSoft.html b/javadoc/org/josfranmc/gutenberg/download/DownloadSoft.html deleted file mode 100644 index 2a7839e..0000000 --- a/javadoc/org/josfranmc/gutenberg/download/DownloadSoft.html +++ /dev/null @@ -1,267 +0,0 @@ - - - - - - -DownloadSoft - - - - - - - - - - - - -
-
org.josfranmc.gutenberg.download
-

Class DownloadSoft

-
-
- -
- -
-
-
    -
  • - -
      -
    • - - -

      Constructor Summary

      - - - - - - - - -
      Constructors 
      Constructor and Description
      DownloadSoft() -
      Constructor por defecto.
      -
      -
    • -
    - -
      -
    • - - -

      Method Summary

      - -
        -
      • - - -

        Methods inherited from class java.lang.Object

        -equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        DownloadSoft

        -
        public DownloadSoft()
        -
        Constructor por defecto.
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git a/javadoc/org/josfranmc/gutenberg/download/IGutenbergDownload.html b/javadoc/org/josfranmc/gutenberg/download/IGutenbergDownload.html deleted file mode 100644 index ac53d8c..0000000 --- a/javadoc/org/josfranmc/gutenberg/download/IGutenbergDownload.html +++ /dev/null @@ -1,605 +0,0 @@ - - - - - - -IGutenbergDownload - - - - - - - - - - - - -
-
org.josfranmc.gutenberg.download
-

Interface IGutenbergDownload

-
-
-
-
    -
  • -
    -
    All Known Implementing Classes:
    -
    JGutenbergDownload
    -
    -
    -
    -
    public interface IGutenbergDownload
    -
    Establece el interfaz de uso que debe implementarse para llevar a cabo la gestión y desarrollo del proceso de descarga de los libros alojados - por el proyecto Gutenberg (http://www.gutenberg.org/)
    -
    -
    Version:
    -
    1.0
    -
    Author:
    -
    Jose Francisco Mena Ceca
    -
    See Also:
    -
    DownloadMode, -DownloadEngineType
    -
    -
  • -
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        downloadBooks

        -
        void downloadBooks()
        -
        Desacarga libros
        -
      • -
      - - - -
        -
      • -

        getDownloadMode

        -
        DownloadMode getDownloadMode()
        -
        -
        Returns:
        -
        el modo de descarga utilizado
        -
        -
      • -
      - - - -
        -
      • -

        setDownloadMode

        -
        void setDownloadMode(DownloadMode mode)
        -
        Establece el mode de realizar las descargas
        -
        -
        Parameters:
        -
        mode - tipo de descarga DownloadMode
        -
        See Also:
        -
        DownloadMode
        -
        -
      • -
      - - - -
        -
      • -

        setDelay

        -
        void setDelay(int delay)
        -
        Establece el tiempo de espera entre descargas, en milisegundos
        -
        -
        Parameters:
        -
        delay - tiempo de espera entre descargas
        -
        -
      • -
      - - - -
        -
      • -

        getDelay

        -
        int getDelay()
        -
        -
        Returns:
        -
        el tiempo de espera entre descargas
        -
        -
      • -
      - - - -
        -
      • -

        setOverwrite

        -
        void setOverwrite(boolean value)
        -
        Establece si se deben sobreescribir los ficheros ya existentes en la carpeta especificada por las nuevas descargas en caso de ser los mismos
        -
        -
        Parameters:
        -
        value - true si se deben sobreescribir los archivos, false en caso contrario
        -
        -
      • -
      - - - -
        -
      • -

        isOverwrite

        -
        boolean isOverwrite()
        -
        -
        Returns:
        -
        si está activado/desactivado el indicador de sobreescribir ficheros ya descargados
        -
        -
      • -
      - - - -
        -
      • -

        getUrlBase

        -
        java.lang.String getUrlBase()
        -
        -
        Returns:
        -
        la dirección URL desde donde realizar la descarga de los archivos
        -
        -
      • -
      - - - -
        -
      • -

        setSavePath

        -
        void setSavePath(java.lang.String savePath)
        -
        Establece la ruta de la carpeta en la que guardar los archivos descargados
        -
        -
        Parameters:
        -
        savePath - ruta de la carpeta en la que guardar los archivos descargados
        -
        -
      • -
      - - - -
        -
      • -

        getSavePath

        -
        java.lang.String getSavePath()
        -
        -
        Returns:
        -
        la ruta en la que guardar los archivos descargados
        -
        -
      • -
      - - - -
        -
      • -

        setUnzip

        -
        void setUnzip(boolean value)
        -
        Establece si se deben descomprimir los ficheros una vez descargados
        -
        -
        Parameters:
        -
        value - true si se deben descomprimir los archivos descargados, false en caso contrario
        -
        -
      • -
      - - - -
        -
      • -

        isUnzip

        -
        boolean isUnzip()
        -
        -
        Returns:
        -
        true si se deben descomprimir los archivos descargados, false en caso contrario
        -
        -
      • -
      - - - -
        -
      • -

        setFileType

        -
        IGutenbergDownload setFileType(java.lang.String fileType)
        -
        Establece el tipo de ficheros a descargar. Tipos válidos: txt, epub, html
        -
        -
        Parameters:
        -
        fileType - tipo de fichero a desrgargar
        -
        Returns:
        -
        una referencia al propio objeto que hace la llamada
        -
        See Also:
        -
        IGutenbergDownload
        -
        -
      • -
      - - - -
        -
      • -

        getFileType

        -
        java.lang.String getFileType()
        -
        -
        Returns:
        -
        el tipo de fichero configurado para descargar.
        -
        -
      • -
      - - - -
        -
      • -

        setLanguage

        -
        IGutenbergDownload setLanguage(java.lang.String language)
        -
        Establece el idioma de los ficheros a descargar, según la nomenclatura usada por el proyecto Gutenberg. Ej.: es - español, en - inglés, fr - francés

        - Más info: http://www.gutenberg.org/catalog/

        -
        -
        Parameters:
        -
        language - tipod e idioma
        -
        Returns:
        -
        una referencia al propio objeto que hace la llamada
        -
        See Also:
        -
        IGutenbergDownload
        -
        -
      • -
      - - - -
        -
      • -

        getLanguage

        -
        java.lang.String getLanguage()
        -
        -
        Returns:
        -
        el idioma configurado de los ficheros para descargar.
        -
        -
      • -
      - - - -
        -
      • -

        getMaxFilesToDownload

        -
        int getMaxFilesToDownload()
        -
        -
        Returns:
        -
        el número máximo de ficheros a descargar
        -
        -
      • -
      - - - -
        -
      • -

        setMaxFilesToDownload

        -
        void setMaxFilesToDownload(int maxFilesToDownload)
        -
        Establece el número máximo de ficheros a descargar
        -
        -
        Parameters:
        -
        maxFilesToDownload - número máximo de ficheros
        -
        -
      • -
      - - - -
        -
      • -

        setEngineType

        -
        void setEngineType(DownloadEngineType engineType)
        -
        Establece el tipo de motor a utilizar para realizar las descargas
        -
        -
        Parameters:
        -
        engineType - tipode motor DownloadEngineType
        -
        See Also:
        -
        DownloadEngineType
        -
        -
      • -
      - - - - -
    • -
    -
  • -
-
-
- - - - - - - diff --git a/javadoc/org/josfranmc/gutenberg/download/JGutenbergDownload.html b/javadoc/org/josfranmc/gutenberg/download/JGutenbergDownload.html deleted file mode 100644 index 55de25e..0000000 --- a/javadoc/org/josfranmc/gutenberg/download/JGutenbergDownload.html +++ /dev/null @@ -1,738 +0,0 @@ - - - - - - -JGutenbergDownload - - - - - - - - - - - - -
-
org.josfranmc.gutenberg.download
-

Class JGutenbergDownload

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • org.josfranmc.gutenberg.download.JGutenbergDownload
    • -
    -
  • -
-
- -
-
-
    -
  • - -
      -
    • - - -

      Constructor Summary

      - - - - - - - - -
      Constructors 
      Constructor and Description
      JGutenbergDownload() -
      Constructor principal.
      -
      -
    • -
    - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      All Methods Instance Methods Concrete Methods 
      Modifier and TypeMethod and Description
      voiddownloadBooks() -
      Inicia el proceso de descarga de los libros.
      -
      intgetDelay() -
      Obtiene el tiempo de espera entre descargas establecido, en milisegundos.
      -
      DownloadModegetDownloadMode() 
      DownloadEngineTypegetEngineType() 
      java.lang.StringgetFileType() 
      java.lang.StringgetLanguage() 
      intgetMaxFilesToDownload() 
      java.lang.StringgetSavePath() 
      java.lang.StringgetUrlBase() 
      booleanisOverwrite() 
      booleanisUnzip() 
      voidsetDelay(int delay) -
      Establece el tiempo de espera entre descargas, en milisegundos.
      -
      voidsetDownloadMode(DownloadMode mode) -
      Establece el mode de realizar las descargas
      -
      voidsetEngineType(DownloadEngineType engineType) -
      Establece el tipo de motor a utilizar para realizar las descargas.
      -
      JGutenbergDownloadsetFileType(java.lang.String fileType) -
      Establece el tipo de ficheros a descargar.
      -
      JGutenbergDownloadsetLanguage(java.lang.String language) -
      Establece el idioma de los ficheros a descargar, según la nomenclatura usada por el proyecto Gutenberg.
      -
      voidsetMaxFilesToDownload(int maxFilesToDownload) -
      Establece el número máximo de ficheros a descargar
      -
      voidsetOverwrite(boolean value) -
      Establece si se deben sobreescribir los ficheros ya existentes en la carpeta especificada por las nuevas descargas en caso de ser los mismos
      -
      voidsetSavePath(java.lang.String savePath) -
      Establece la ruta de la carpeta en la que guardar los archivos descargados.
      -
      voidsetUnzip(boolean value) -
      Establece si se deben descomprimir los ficheros una vez descargados
      -
      -
        -
      • - - -

        Methods inherited from class java.lang.Object

        -equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        JGutenbergDownload

        -
        public JGutenbergDownload()
        -
        Constructor principal. Establece los parámetros de configuración que usa la apliación con valores por defecto. Concretamente: -
          -
        • Se establece como carpeta base de descarga la carpeta desde la que se ejecuta el programa
        • -
        • Se fija un tiempo de demora entre descargas de 2 segundos
        • -
        • Se establece que no se sobreescriban ficheros previamente descargados
        • -
        • Se establece que se descompriman los ficheros zips descargados
        • -
        • Se indica que se utilice un motor de descarga del tipo DownloadEngineType.HTTP_CONNECTION
        • -
        • Se indica que las descargas se realicen usando un modo DownloadMode.SOFT
        • -
        • Se indica que se descarguen todos los ficheros disponibles
        • -
        -
        -
        See Also:
        -
        DownloadParams, -DownloadEngineType, -DownloadMode
        -
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        downloadBooks

        -
        public void downloadBooks()
        -
        Inicia el proceso de descarga de los libros.
        - Crea una carpeta para guardar los zip descargados dentro de la carpeta indicada para almacenar descargar las descargas. - - Se comprueba si se ha indicado el tipo de ficheros a descargar y el idioma de los mismos. - Si no se se han indicado no se puede realizar la descarga.
        -
        -
        Specified by:
        -
        downloadBooks in interface IGutenbergDownload
        -
        Throws:
        -
        java.lang.IllegalArgumentException - si no se ha indicado tipo de fichero e idioma
        -
        -
      • -
      - - - - - - - - - - - -
        -
      • -

        setDelay

        -
        public void setDelay(int delay)
        -
        Establece el tiempo de espera entre descargas, en milisegundos.
        -
        -
        Specified by:
        -
        setDelay in interface IGutenbergDownload
        -
        Parameters:
        -
        delay - tiempo de espera entre descargas
        -
        See Also:
        -
        DownloadParams
        -
        -
      • -
      - - - -
        -
      • -

        getDelay

        -
        public int getDelay()
        -
        Obtiene el tiempo de espera entre descargas establecido, en milisegundos.
        -
        -
        Specified by:
        -
        getDelay in interface IGutenbergDownload
        -
        Returns:
        -
        el tiempo de espera entre descargas
        -
        -
      • -
      - - - -
        -
      • -

        setOverwrite

        -
        public void setOverwrite(boolean value)
        -
        Description copied from interface: IGutenbergDownload
        -
        Establece si se deben sobreescribir los ficheros ya existentes en la carpeta especificada por las nuevas descargas en caso de ser los mismos
        -
        -
        Specified by:
        -
        setOverwrite in interface IGutenbergDownload
        -
        Parameters:
        -
        value - true si se deben sobreescribir los archivos, false en caso contrario
        -
        -
      • -
      - - - -
        -
      • -

        isOverwrite

        -
        public boolean isOverwrite()
        -
        -
        Specified by:
        -
        isOverwrite in interface IGutenbergDownload
        -
        Returns:
        -
        si está activado/desactivado el indicador de sobreescribir ficheros ya descargados
        -
        -
      • -
      - - - -
        -
      • -

        getUrlBase

        -
        public java.lang.String getUrlBase()
        -
        -
        Specified by:
        -
        getUrlBase in interface IGutenbergDownload
        -
        Returns:
        -
        la dirección URL desde donde realizar la descarga de los archivos
        -
        -
      • -
      - - - -
        -
      • -

        setSavePath

        -
        public void setSavePath(java.lang.String savePath)
        -
        Establece la ruta de la carpeta en la que guardar los archivos descargados. Se añade el caracter separador de directorios a la final de la - ruta en caso de que no lo lleve.
        Esta ruta se añade a los parámetros de la aplicación y se establece como ruta raiz del proceso.
        -
        -
        Specified by:
        -
        setSavePath in interface IGutenbergDownload
        -
        Parameters:
        -
        savePath - ruta de la carpeta
        -
        Throws:
        -
        java.lang.IllegalArgumentException - ruta errónea
        -
        -
      • -
      - - - -
        -
      • -

        getSavePath

        -
        public java.lang.String getSavePath()
        -
        -
        Specified by:
        -
        getSavePath in interface IGutenbergDownload
        -
        Returns:
        -
        la ruta en la que guardar los archivos descargados
        -
        -
      • -
      - - - -
        -
      • -

        isUnzip

        -
        public boolean isUnzip()
        -
        -
        Specified by:
        -
        isUnzip in interface IGutenbergDownload
        -
        Returns:
        -
        true si se deben descomprimir los archivos descargados, false en caso contrario
        -
        -
      • -
      - - - -
        -
      • -

        setUnzip

        -
        public void setUnzip(boolean value)
        -
        Description copied from interface: IGutenbergDownload
        -
        Establece si se deben descomprimir los ficheros una vez descargados
        -
        -
        Specified by:
        -
        setUnzip in interface IGutenbergDownload
        -
        Parameters:
        -
        value - true si se deben descomprimir los archivos descargados, false en caso contrario
        -
        -
      • -
      - - - -
        -
      • -

        getFileType

        -
        public java.lang.String getFileType()
        -
        -
        Specified by:
        -
        getFileType in interface IGutenbergDownload
        -
        Returns:
        -
        el tipo de fichero configurado para descargar.
        -
        -
      • -
      - - - -
        -
      • -

        setFileType

        -
        public JGutenbergDownload setFileType(java.lang.String fileType)
        -
        Description copied from interface: IGutenbergDownload
        -
        Establece el tipo de ficheros a descargar. Tipos válidos: txt, epub, html
        -
        -
        Specified by:
        -
        setFileType in interface IGutenbergDownload
        -
        Parameters:
        -
        fileType - tipo de fichero a desrgargar
        -
        Returns:
        -
        una referencia al propio objeto que hace la llamada
        -
        See Also:
        -
        IGutenbergDownload
        -
        -
      • -
      - - - -
        -
      • -

        getLanguage

        -
        public java.lang.String getLanguage()
        -
        -
        Specified by:
        -
        getLanguage in interface IGutenbergDownload
        -
        Returns:
        -
        el idioma configurado de los ficheros para descargar.
        -
        -
      • -
      - - - -
        -
      • -

        setLanguage

        -
        public JGutenbergDownload setLanguage(java.lang.String language)
        -
        Description copied from interface: IGutenbergDownload
        -
        Establece el idioma de los ficheros a descargar, según la nomenclatura usada por el proyecto Gutenberg. Ej.: es - español, en - inglés, fr - francés

        - Más info: http://www.gutenberg.org/catalog/

        -
        -
        Specified by:
        -
        setLanguage in interface IGutenbergDownload
        -
        Parameters:
        -
        language - tipod e idioma
        -
        Returns:
        -
        una referencia al propio objeto que hace la llamada
        -
        See Also:
        -
        IGutenbergDownload
        -
        -
      • -
      - - - -
        -
      • -

        getMaxFilesToDownload

        -
        public int getMaxFilesToDownload()
        -
        -
        Specified by:
        -
        getMaxFilesToDownload in interface IGutenbergDownload
        -
        Returns:
        -
        el número máximo de ficheros a descargar
        -
        -
      • -
      - - - -
        -
      • -

        setMaxFilesToDownload

        -
        public void setMaxFilesToDownload(int maxFilesToDownload)
        -
        Establece el número máximo de ficheros a descargar
        -
        -
        Specified by:
        -
        setMaxFilesToDownload in interface IGutenbergDownload
        -
        Parameters:
        -
        maxFilesToDownload - número máximo de ficheros
        -
        Throws:
        -
        java.lang.IllegalArgumentException - si se indica un número inferior a cero
        -
        -
      • -
      - - - - - - - -
        -
      • -

        setEngineType

        -
        public void setEngineType(DownloadEngineType engineType)
        -
        Establece el tipo de motor a utilizar para realizar las descargas.
        - Lo asigna al atributo que encapsula los parámetros de la aplicación
        -
        -
        Specified by:
        -
        setEngineType in interface IGutenbergDownload
        -
        Parameters:
        -
        engineType - tipode motor DownloadEngineType
        -
        See Also:
        -
        DownloadEngineType
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git a/javadoc/org/josfranmc/gutenberg/download/JGutenbergDownloadFactory.html b/javadoc/org/josfranmc/gutenberg/download/JGutenbergDownloadFactory.html deleted file mode 100644 index a16c6e1..0000000 --- a/javadoc/org/josfranmc/gutenberg/download/JGutenbergDownloadFactory.html +++ /dev/null @@ -1,292 +0,0 @@ - - - - - - -JGutenbergDownloadFactory - - - - - - - - - - - - -
-
org.josfranmc.gutenberg.download
-

Class JGutenbergDownloadFactory

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • org.josfranmc.gutenberg.download.JGutenbergDownloadFactory
    • -
    -
  • -
-
-
    -
  • -
    -
    -
    public class JGutenbergDownloadFactory
    -extends java.lang.Object
    -
    Factoría que crea objetos de tipo IGutenbergDownload, los cuales implementan los servicios necesarios para la gestión y desarrollo - del proceso de descarga de libros alojados por el proyecto Gutenberg.
    -
    -
    Version:
    -
    1.0
    -
    Author:
    -
    Jose Francisco Mena Ceca
    -
    See Also:
    -
    IGutenbergDownload, -JGutenbergDownload
    -
    -
  • -
-
-
-
    -
  • - - - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - -
      All Methods Static Methods Concrete Methods 
      Modifier and TypeMethod and Description
      static IGutenbergDownloadcreate() -
      Crea un objeto JGutenbergDownload que implementa toda la funcionalidad necesaria para la descarga de libros
      -
      -
        -
      • - - -

        Methods inherited from class java.lang.Object

        -equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        JGutenbergDownloadFactory

        -
        public JGutenbergDownloadFactory()
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        create

        -
        public static IGutenbergDownload create()
        -
        Crea un objeto JGutenbergDownload que implementa toda la funcionalidad necesaria para la descarga de libros
        -
        -
        Returns:
        -
        objeto del tipo IGutenbergDownload
        -
        See Also:
        -
        IGutenbergDownload
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git a/javadoc/org/josfranmc/gutenberg/download/JGutenbergDownloadTest.html b/javadoc/org/josfranmc/gutenberg/download/JGutenbergDownloadTest.html deleted file mode 100644 index bc3ba96..0000000 --- a/javadoc/org/josfranmc/gutenberg/download/JGutenbergDownloadTest.html +++ /dev/null @@ -1,378 +0,0 @@ - - - - - - -JGutenbergDownloadTest - - - - - - - - - - - - -
-
org.josfranmc.gutenberg.download
-

Class JGutenbergDownloadTest

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • org.josfranmc.gutenberg.download.JGutenbergDownloadTest
    • -
    -
  • -
-
-
    -
  • -
    -
    -
    public class JGutenbergDownloadTest
    -extends java.lang.Object
    -
    Clase que implementa los test para probar los métodos de la clase JGutenbergDownloadTest
    -
    -
    Version:
    -
    1.0
    -
    Author:
    -
    Jose Francisco Mena Ceca
    -
    -
  • -
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        JGutenbergDownloadTest

        -
        public JGutenbergDownloadTest()
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        testParametersDefaultValue

        -
        public void testParametersDefaultValue()
        -
        Comprueba si los valores por defecto de los parámetros de descarga a la hora de crear un IGutenbergDownload son los correctos
        -
      • -
      - - - -
        -
      • -

        givenUrlParametersWhenNullThenIllegalArgumentException

        -
        public void givenUrlParametersWhenNullThenIllegalArgumentException()
        -
        Si no se ha indicado tipo de fichero e idioma para realizar las descargas, entonces lanzar excepción IllegalArgumentException y mostrar mensaje
        -
      • -
      - - - -
        -
      • -

        givenUrlParametersWhenEmptyThenIllegalArgumentException

        -
        public void givenUrlParametersWhenEmptyThenIllegalArgumentException()
        -
        Si no se ha indicado tipo de fichero e idioma para realizar las descargas, entonces lanzar excepción IllegalArgumentException y mostrar mensaje
        -
      • -
      - - - -
        -
      • -

        givenSavePathWhenNullThenIllegalArgumentException

        -
        public void givenSavePathWhenNullThenIllegalArgumentException()
        -
        Si la ruta indicada para guardar las descargas es null, entonces lanzar excepción IllegalArgumentException
        -
      • -
      - - - -
        -
      • -

        givenSavePathWhenNoExistsThenIllegalArgumentException

        -
        public void givenSavePathWhenNoExistsThenIllegalArgumentException()
        -
        Si la ruta indicada para guardar las descargas no existe, entonces lanzar excepción IllegalArgumentException
        -
      • -
      - - - -
        -
      • -

        givenMaxFilesToDownloadWhenMinusZeroThenIllegalArgumentException

        -
        public void givenMaxFilesToDownloadWhenMinusZeroThenIllegalArgumentException()
        -
        Si el parámetro MaxFilesToDownload es menor de cero, entonces lanzar excepción IllegalArgumentException
        -
      • -
      - - - -
        -
      • -

        givenDownloadModeWhenNullThenIllegalArgumentException

        -
        public void givenDownloadModeWhenNullThenIllegalArgumentException()
        -
        Si el parámetro DownloadMode es null, entonces lanzar excepción IllegalArgumentException
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git a/javadoc/org/josfranmc/gutenberg/download/class-use/AbstractDownload.html b/javadoc/org/josfranmc/gutenberg/download/class-use/AbstractDownload.html deleted file mode 100644 index 7b29db1..0000000 --- a/javadoc/org/josfranmc/gutenberg/download/class-use/AbstractDownload.html +++ /dev/null @@ -1,188 +0,0 @@ - - - - - - -Uses of Class org.josfranmc.gutenberg.download.AbstractDownload - - - - - - - - - - - -
-

Uses of Class
org.josfranmc.gutenberg.download.AbstractDownload

-
-
- -
- - - - - - diff --git a/javadoc/org/josfranmc/gutenberg/download/class-use/DownloadFactory.html b/javadoc/org/josfranmc/gutenberg/download/class-use/DownloadFactory.html deleted file mode 100644 index 127a5e8..0000000 --- a/javadoc/org/josfranmc/gutenberg/download/class-use/DownloadFactory.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - -Uses of Class org.josfranmc.gutenberg.download.DownloadFactory - - - - - - - - - - - -
-

Uses of Class
org.josfranmc.gutenberg.download.DownloadFactory

-
-
No usage of org.josfranmc.gutenberg.download.DownloadFactory
- - - - - - diff --git a/javadoc/org/josfranmc/gutenberg/download/class-use/DownloadGreedy.html b/javadoc/org/josfranmc/gutenberg/download/class-use/DownloadGreedy.html deleted file mode 100644 index 55990a6..0000000 --- a/javadoc/org/josfranmc/gutenberg/download/class-use/DownloadGreedy.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - -Uses of Class org.josfranmc.gutenberg.download.DownloadGreedy - - - - - - - - - - - -
-

Uses of Class
org.josfranmc.gutenberg.download.DownloadGreedy

-
-
No usage of org.josfranmc.gutenberg.download.DownloadGreedy
- - - - - - diff --git a/javadoc/org/josfranmc/gutenberg/download/class-use/DownloadMode.html b/javadoc/org/josfranmc/gutenberg/download/class-use/DownloadMode.html deleted file mode 100644 index 0b64e46..0000000 --- a/javadoc/org/josfranmc/gutenberg/download/class-use/DownloadMode.html +++ /dev/null @@ -1,209 +0,0 @@ - - - - - - -Uses of Class org.josfranmc.gutenberg.download.DownloadMode - - - - - - - - - - - -
-

Uses of Class
org.josfranmc.gutenberg.download.DownloadMode

-
-
- -
- - - - - - diff --git a/javadoc/org/josfranmc/gutenberg/download/class-use/DownloadParams.html b/javadoc/org/josfranmc/gutenberg/download/class-use/DownloadParams.html deleted file mode 100644 index 75dd000..0000000 --- a/javadoc/org/josfranmc/gutenberg/download/class-use/DownloadParams.html +++ /dev/null @@ -1,167 +0,0 @@ - - - - - - -Uses of Class org.josfranmc.gutenberg.download.DownloadParams - - - - - - - - - - - -
-

Uses of Class
org.josfranmc.gutenberg.download.DownloadParams

-
-
- -
- - - - - - diff --git a/javadoc/org/josfranmc/gutenberg/download/class-use/DownloadSoft.html b/javadoc/org/josfranmc/gutenberg/download/class-use/DownloadSoft.html deleted file mode 100644 index db64509..0000000 --- a/javadoc/org/josfranmc/gutenberg/download/class-use/DownloadSoft.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - -Uses of Class org.josfranmc.gutenberg.download.DownloadSoft - - - - - - - - - - - -
-

Uses of Class
org.josfranmc.gutenberg.download.DownloadSoft

-
-
No usage of org.josfranmc.gutenberg.download.DownloadSoft
- - - - - - diff --git a/javadoc/org/josfranmc/gutenberg/download/class-use/IGutenbergDownload.html b/javadoc/org/josfranmc/gutenberg/download/class-use/IGutenbergDownload.html deleted file mode 100644 index 4c6fc65..0000000 --- a/javadoc/org/josfranmc/gutenberg/download/class-use/IGutenbergDownload.html +++ /dev/null @@ -1,194 +0,0 @@ - - - - - - -Uses of Interface org.josfranmc.gutenberg.download.IGutenbergDownload - - - - - - - - - - - -
-

Uses of Interface
org.josfranmc.gutenberg.download.IGutenbergDownload

-
-
- -
- - - - - - diff --git a/javadoc/org/josfranmc/gutenberg/download/class-use/JGutenbergDownload.html b/javadoc/org/josfranmc/gutenberg/download/class-use/JGutenbergDownload.html deleted file mode 100644 index 3ef4f86..0000000 --- a/javadoc/org/josfranmc/gutenberg/download/class-use/JGutenbergDownload.html +++ /dev/null @@ -1,169 +0,0 @@ - - - - - - -Uses of Class org.josfranmc.gutenberg.download.JGutenbergDownload - - - - - - - - - - - -
-

Uses of Class
org.josfranmc.gutenberg.download.JGutenbergDownload

-
-
- -
- - - - - - diff --git a/javadoc/org/josfranmc/gutenberg/download/class-use/JGutenbergDownloadFactory.html b/javadoc/org/josfranmc/gutenberg/download/class-use/JGutenbergDownloadFactory.html deleted file mode 100644 index c6e2f21..0000000 --- a/javadoc/org/josfranmc/gutenberg/download/class-use/JGutenbergDownloadFactory.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - -Uses of Class org.josfranmc.gutenberg.download.JGutenbergDownloadFactory - - - - - - - - - - - -
-

Uses of Class
org.josfranmc.gutenberg.download.JGutenbergDownloadFactory

-
-
No usage of org.josfranmc.gutenberg.download.JGutenbergDownloadFactory
- - - - - - diff --git a/javadoc/org/josfranmc/gutenberg/download/class-use/JGutenbergDownloadTest.html b/javadoc/org/josfranmc/gutenberg/download/class-use/JGutenbergDownloadTest.html deleted file mode 100644 index 865ad8e..0000000 --- a/javadoc/org/josfranmc/gutenberg/download/class-use/JGutenbergDownloadTest.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - -Uses of Class org.josfranmc.gutenberg.download.JGutenbergDownloadTest - - - - - - - - - - - -
-

Uses of Class
org.josfranmc.gutenberg.download.JGutenbergDownloadTest

-
-
No usage of org.josfranmc.gutenberg.download.JGutenbergDownloadTest
- - - - - - diff --git a/javadoc/org/josfranmc/gutenberg/download/client/JGutenbergDownloadClient.html b/javadoc/org/josfranmc/gutenberg/download/client/JGutenbergDownloadClient.html deleted file mode 100644 index 6404a41..0000000 --- a/javadoc/org/josfranmc/gutenberg/download/client/JGutenbergDownloadClient.html +++ /dev/null @@ -1,286 +0,0 @@ - - - - - - -JGutenbergDownloadClient - - - - - - - - - - - - -
-
org.josfranmc.gutenberg.download.client
-

Class JGutenbergDownloadClient

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • org.josfranmc.gutenberg.download.client.JGutenbergDownloadClient
    • -
    -
  • -
-
-
    -
  • -
    -
    -
    public class JGutenbergDownloadClient
    -extends java.lang.Object
    -
    Clase que permite ejecutar un progrma cliente para realiza descargas de libros desde los repositorios del proyecto Gutenberg.
    -
    -
    Version:
    -
    1.0
    -
    Author:
    -
    Jose Francisco Mena Ceca
    -
    -
  • -
-
-
-
    -
  • - - - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - -
      All Methods Static Methods Concrete Methods 
      Modifier and TypeMethod and Description
      static voidmain(java.lang.String[] args) -
      Método principal de ejecución.
      -
      -
        -
      • - - -

        Methods inherited from class java.lang.Object

        -equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        JGutenbergDownloadClient

        -
        public JGutenbergDownloadClient()
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        main

        -
        public static void main(java.lang.String[] args)
        -
        Método principal de ejecución.
        -
        -
        Parameters:
        -
        args - lista de argumentos pasados en la invocación del programa
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git a/javadoc/org/josfranmc/gutenberg/download/client/class-use/JGutenbergDownloadClient.html b/javadoc/org/josfranmc/gutenberg/download/client/class-use/JGutenbergDownloadClient.html deleted file mode 100644 index 8c820f8..0000000 --- a/javadoc/org/josfranmc/gutenberg/download/client/class-use/JGutenbergDownloadClient.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - -Uses of Class org.josfranmc.gutenberg.download.client.JGutenbergDownloadClient - - - - - - - - - - - -
-

Uses of Class
org.josfranmc.gutenberg.download.client.JGutenbergDownloadClient

-
-
No usage of org.josfranmc.gutenberg.download.client.JGutenbergDownloadClient
- - - - - - diff --git a/javadoc/org/josfranmc/gutenberg/download/client/package-frame.html b/javadoc/org/josfranmc/gutenberg/download/client/package-frame.html deleted file mode 100644 index 0725672..0000000 --- a/javadoc/org/josfranmc/gutenberg/download/client/package-frame.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - -org.josfranmc.gutenberg.download.client - - - - - -

org.josfranmc.gutenberg.download.client

-
-

Classes

- -
- - diff --git a/javadoc/org/josfranmc/gutenberg/download/client/package-summary.html b/javadoc/org/josfranmc/gutenberg/download/client/package-summary.html deleted file mode 100644 index 695ea17..0000000 --- a/javadoc/org/josfranmc/gutenberg/download/client/package-summary.html +++ /dev/null @@ -1,145 +0,0 @@ - - - - - - -org.josfranmc.gutenberg.download.client - - - - - - - - - - - -
-

Package org.josfranmc.gutenberg.download.client

-
-
-
    -
  • - - - - - - - - - - - - -
    Class Summary 
    ClassDescription
    JGutenbergDownloadClient -
    Clase que permite ejecutar un progrma cliente para realiza descargas de libros desde los repositorios del proyecto Gutenberg.
    -
    -
  • -
-
- - - - - - diff --git a/javadoc/org/josfranmc/gutenberg/download/client/package-tree.html b/javadoc/org/josfranmc/gutenberg/download/client/package-tree.html deleted file mode 100644 index f8b146c..0000000 --- a/javadoc/org/josfranmc/gutenberg/download/client/package-tree.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - -org.josfranmc.gutenberg.download.client Class Hierarchy - - - - - - - - - - - -
-

Hierarchy For Package org.josfranmc.gutenberg.download.client

-Package Hierarchies: - -
-
-

Class Hierarchy

- -
- - - - - - diff --git a/javadoc/org/josfranmc/gutenberg/download/client/package-use.html b/javadoc/org/josfranmc/gutenberg/download/client/package-use.html deleted file mode 100644 index d75f667..0000000 --- a/javadoc/org/josfranmc/gutenberg/download/client/package-use.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - -Uses of Package org.josfranmc.gutenberg.download.client - - - - - - - - - - - -
-

Uses of Package
org.josfranmc.gutenberg.download.client

-
-
No usage of org.josfranmc.gutenberg.download.client
- - - - - - diff --git a/javadoc/org/josfranmc/gutenberg/download/engine/DownloadEngineFactory.html b/javadoc/org/josfranmc/gutenberg/download/engine/DownloadEngineFactory.html deleted file mode 100644 index ecfcbf3..0000000 --- a/javadoc/org/josfranmc/gutenberg/download/engine/DownloadEngineFactory.html +++ /dev/null @@ -1,415 +0,0 @@ - - - - - - -DownloadEngineFactory - - - - - - - - - - - - -
-
org.josfranmc.gutenberg.download.engine
-

Class DownloadEngineFactory

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • org.josfranmc.gutenberg.download.engine.DownloadEngineFactory
    • -
    -
  • -
-
-
    -
  • -
    -
    -
    public class DownloadEngineFactory
    -extends java.lang.Object
    -
    Factoría para la creación de objetos de tipo IDownloadEngine mediante el método create - Este método está sobregargado, de forma que se puede invocar combinando tres parámetros: -
      -
    • target: recurso a descargar
    • -
    • savePath: ruta local donde obtener el recurso
    • -
    • type: tipo de motor a utilizar para la descarga (si no se indica ninguno por defecto se usa DownloadEngineType.HTTTP_CONNECTION)
    • -
    -
    -
    Version:
    -
    1.0
    -
    Author:
    -
    Jose Francisco Mena Ceca
    -
    -
  • -
-
-
-
    -
  • - - - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      All Methods Static Methods Concrete Methods 
      Modifier and TypeMethod and Description
      static IDownloadEnginecreate() -
      Crea un motor para realizar la descarga de recursos en red.
      -
      static IDownloadEnginecreate(DownloadEngineType type) -
      Crea un motor determinado para realizar la descarga de recursos en red
      -
      static IDownloadEnginecreate(java.net.URL target) -
      Crea un motor para realizar la descarga desde una determinada URL.
      -
      static IDownloadEnginecreate(java.net.URL target, - DownloadEngineType type) -
      Crea un motor determinado para realizar la descarga desde una determinada URL
      -
      static IDownloadEnginecreate(java.net.URL target, - java.lang.String savePath) -
      Crea un motor para realizar la descarga desde una determinada URL, guardando lo descargado en una ruta del equipo local.
      -
      static IDownloadEnginecreate(java.net.URL target, - java.lang.String savePath, - DownloadEngineType type) -
      Crea un motor determinado para realizar la descarga desde una determinada URL, guardando lo descargado en una ruta del equipo local
      -
      -
        -
      • - - -

        Methods inherited from class java.lang.Object

        -equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        DownloadEngineFactory

        -
        public DownloadEngineFactory()
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        create

        -
        public static IDownloadEngine create()
        -
        Crea un motor para realizar la descarga de recursos en red. El motor creado es de tipo DownloadEngineType.HTTP_CONNECTION
        -
        -
        Returns:
        -
        un motor de descarga
        -
        -
      • -
      - - - -
        -
      • -

        create

        -
        public static IDownloadEngine create(DownloadEngineType type)
        -
        Crea un motor determinado para realizar la descarga de recursos en red
        -
        -
        Parameters:
        -
        type - tipo de motor a crear
        -
        Returns:
        -
        un motor de descarga
        -
        -
      • -
      - - - -
        -
      • -

        create

        -
        public static IDownloadEngine create(java.net.URL target,
        -                                     DownloadEngineType type)
        -
        Crea un motor determinado para realizar la descarga desde una determinada URL
        -
        -
        Parameters:
        -
        target - dirección URL
        -
        type - tipo de motor a crear
        -
        Returns:
        -
        un motor de descarga
        -
        -
      • -
      - - - -
        -
      • -

        create

        -
        public static IDownloadEngine create(java.net.URL target)
        -
        Crea un motor para realizar la descarga desde una determinada URL. El motor creado es de tipo DownloadEngineType.HTTP_CONNECTION
        -
        -
        Parameters:
        -
        target - dirección URL
        -
        Returns:
        -
        un motor de descarga
        -
        -
      • -
      - - - -
        -
      • -

        create

        -
        public static IDownloadEngine create(java.net.URL target,
        -                                     java.lang.String savePath,
        -                                     DownloadEngineType type)
        -
        Crea un motor determinado para realizar la descarga desde una determinada URL, guardando lo descargado en una ruta del equipo local
        -
        -
        Parameters:
        -
        target - dirección URL
        -
        savePath - ruta donde obtener las descargas
        -
        type - tipo de motor a crear
        -
        Returns:
        -
        un motor de descarga
        -
        -
      • -
      - - - -
        -
      • -

        create

        -
        public static IDownloadEngine create(java.net.URL target,
        -                                     java.lang.String savePath)
        -
        Crea un motor para realizar la descarga desde una determinada URL, guardando lo descargado en una ruta del equipo local. - El motor creado es de tipo DownloadEngineType.HTTP_CONNECTION.
        -
        -
        Parameters:
        -
        target - dirección URL
        -
        savePath - ruta donde obtener las descargas
        -
        Returns:
        -
        un motor de descarga
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git a/javadoc/org/josfranmc/gutenberg/download/engine/DownloadEngineType.html b/javadoc/org/josfranmc/gutenberg/download/engine/DownloadEngineType.html deleted file mode 100644 index b36f6b5..0000000 --- a/javadoc/org/josfranmc/gutenberg/download/engine/DownloadEngineType.html +++ /dev/null @@ -1,340 +0,0 @@ - - - - - - -DownloadEngineType - - - - - - - - - - - - -
-
org.josfranmc.gutenberg.download.engine
-

Enum DownloadEngineType

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • java.lang.Enum<DownloadEngineType>
    • -
    • -
        -
      • org.josfranmc.gutenberg.download.engine.DownloadEngineType
      • -
      -
    • -
    -
  • -
-
-
    -
  • -
    -
    All Implemented Interfaces:
    -
    java.io.Serializable, java.lang.Comparable<DownloadEngineType>
    -
    -
    -
    -
    public enum DownloadEngineType
    -extends java.lang.Enum<DownloadEngineType>
    -
    Tipos de motores de descarga
    -
    -
    Version:
    -
    1.0
    -
    Author:
    -
    Jose Francisco Mena Ceca
    -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Enum Constant Summary

      - - - - - - - - -
      Enum Constants 
      Enum Constant and Description
      HTTP_CONNECTION -
      Descargas basadas en el objeto java.net.HttpURLConnection
      -
      -
    • -
    - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - - - - - -
      All Methods Static Methods Concrete Methods 
      Modifier and TypeMethod and Description
      static DownloadEngineTypevalueOf(java.lang.String name) -
      Returns the enum constant of this type with the specified name.
      -
      static DownloadEngineType[]values() -
      Returns an array containing the constants of this enum type, in -the order they are declared.
      -
      -
        -
      • - - -

        Methods inherited from class java.lang.Enum

        -compareTo, equals, getDeclaringClass, hashCode, name, ordinal, toString, valueOf
      • -
      -
        -
      • - - -

        Methods inherited from class java.lang.Object

        -getClass, notify, notifyAll, wait, wait, wait
      • -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Enum Constant Detail

      - - - -
        -
      • -

        HTTP_CONNECTION

        -
        public static final DownloadEngineType HTTP_CONNECTION
        -
        Descargas basadas en el objeto java.net.HttpURLConnection
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        values

        -
        public static DownloadEngineType[] values()
        -
        Returns an array containing the constants of this enum type, in -the order they are declared. This method may be used to iterate -over the constants as follows: -
        -for (DownloadEngineType c : DownloadEngineType.values())
        -    System.out.println(c);
        -
        -
        -
        Returns:
        -
        an array containing the constants of this enum type, in the order they are declared
        -
        -
      • -
      - - - -
        -
      • -

        valueOf

        -
        public static DownloadEngineType valueOf(java.lang.String name)
        -
        Returns the enum constant of this type with the specified name. -The string must match exactly an identifier used to declare an -enum constant in this type. (Extraneous whitespace characters are -not permitted.)
        -
        -
        Parameters:
        -
        name - the name of the enum constant to be returned.
        -
        Returns:
        -
        the enum constant with the specified name
        -
        Throws:
        -
        java.lang.IllegalArgumentException - if this enum type has no constant with the specified name
        -
        java.lang.NullPointerException - if the argument is null
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git a/javadoc/org/josfranmc/gutenberg/download/engine/DownloadHttpUrlConnection.html b/javadoc/org/josfranmc/gutenberg/download/engine/DownloadHttpUrlConnection.html deleted file mode 100644 index cda83db..0000000 --- a/javadoc/org/josfranmc/gutenberg/download/engine/DownloadHttpUrlConnection.html +++ /dev/null @@ -1,381 +0,0 @@ - - - - - - -DownloadHttpUrlConnection - - - - - - - - - - - - -
-
org.josfranmc.gutenberg.download.engine
-

Class DownloadHttpUrlConnection

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • org.josfranmc.gutenberg.download.engine.DownloadHttpUrlConnection
    • -
    -
  • -
-
-
    -
  • -
    -
    All Implemented Interfaces:
    -
    IDownloadEngine
    -
    -
    -
    -
    public class DownloadHttpUrlConnection
    -extends java.lang.Object
    -implements IDownloadEngine
    -
    Permite realizar la descarga de un recurso identificado por una URL. Para ello se hace uso de la clase java.net.HttpURLConnection.
    - El recurso descargado se guarda en la ruta que ha debido establecerse previamente a la descarga.
    -
    -
    Version:
    -
    1.0
    -
    Author:
    -
    Jose Francisco Mena Ceca
    -
    See Also:
    -
    IDownloadEngine
    -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and TypeMethod and Description
      DownloadResultdownload() -
      Ejecuta el proceso de descarga.
      -
      java.net.URLgetResource() -
      Obtiene la dirección del recurso a descargar como un objeto de tipo URL
      -
      java.lang.StringgetSavePath() -
      Obtiene la ruta donde guardar el recursos a descargar
      -
      static IDownloadEnginenewInstance(java.net.URL target, - java.lang.String savePath) -
      Crea una instancia DownloadHttpUrlConnection de tipo IDownloadEngine.
      -
      voidsetResource(java.net.URL resource) -
      Establece la dirección del recurso a descargar, la cual se maneja como un objeto de tipo URL
      -
      voidsetSavePath(java.lang.String savePath) -
      Establece la ruta donde guardar el recurso a descargar
      -
      -
        -
      • - - -

        Methods inherited from class java.lang.Object

        -equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        newInstance

        -
        public static IDownloadEngine newInstance(java.net.URL target,
        -                                          java.lang.String savePath)
        -
        Crea una instancia DownloadHttpUrlConnection de tipo IDownloadEngine.
        -
        -
        Parameters:
        -
        target - direccion URL del recurso a descargar
        -
        savePath - ruta de la carpeta en la qu obtener la descarga
        -
        Returns:
        -
        una instancia de tipo IDownloadEngine
        -
        See Also:
        -
        IDownloadEngine
        -
        -
      • -
      - - - -
        -
      • -

        download

        -
        public DownloadResult download()
        -
        Ejecuta el proceso de descarga. Previamente se ha debido indicar la dirección del recurso a descargar y la ruta de la carpeta en la que obtenerlo.
        - Si la descarga es correcta, se obtiene en la carpeta indicada un nuevo fichero cuyo nombre es el nombre delfichero contenido en el enlace de descarga - (se toma desde el último caracter separador de directorios)
        -
        -
        Specified by:
        -
        download in interface IDownloadEngine
        -
        Returns:
        -
        el resultado de la descarga encapsulado en un objeto de tipo DownloadResult
        -
        See Also:
        -
        DownloadResult
        -
        -
      • -
      - - - -
        -
      • -

        setResource

        -
        public void setResource(java.net.URL resource)
        -
        Establece la dirección del recurso a descargar, la cual se maneja como un objeto de tipo URL
        -
        -
        Specified by:
        -
        setResource in interface IDownloadEngine
        -
        Parameters:
        -
        resource - dirección url
        -
        -
      • -
      - - - -
        -
      • -

        getResource

        -
        public java.net.URL getResource()
        -
        Obtiene la dirección del recurso a descargar como un objeto de tipo URL
        -
        -
        Specified by:
        -
        getResource in interface IDownloadEngine
        -
        Returns:
        -
        dirección del recurso a descargar
        -
        -
      • -
      - - - -
        -
      • -

        setSavePath

        -
        public void setSavePath(java.lang.String savePath)
        -
        Establece la ruta donde guardar el recurso a descargar
        -
        -
        Specified by:
        -
        setSavePath in interface IDownloadEngine
        -
        Parameters:
        -
        savePath - ruta de la carpeta donde guardar
        -
        -
      • -
      - - - -
        -
      • -

        getSavePath

        -
        public java.lang.String getSavePath()
        -
        Obtiene la ruta donde guardar el recursos a descargar
        -
        -
        Specified by:
        -
        getSavePath in interface IDownloadEngine
        -
        Returns:
        -
        la ruta de la carpeta donde guardar el recursos a descargar
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git a/javadoc/org/josfranmc/gutenberg/download/engine/DownloadResult.html b/javadoc/org/josfranmc/gutenberg/download/engine/DownloadResult.html deleted file mode 100644 index 5609b1c..0000000 --- a/javadoc/org/josfranmc/gutenberg/download/engine/DownloadResult.html +++ /dev/null @@ -1,433 +0,0 @@ - - - - - - -DownloadResult - - - - - - - - - - - - -
-
org.josfranmc.gutenberg.download.engine
-

Class DownloadResult

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • org.josfranmc.gutenberg.download.engine.DownloadResult
    • -
    -
  • -
-
-
    -
  • -
    -
    -
    public class DownloadResult
    -extends java.lang.Object
    -
    Encapsula el resultado de la descarga de un recurso. Esta clase sirve para guardar juntos diferentes datos realacionados con la descarga - de un recurso: la cabecera devuelta en la conexión y el nombre del fichero creado, junto con su ruta. Además, si se ha producido algún error - puede indicarse un mensaje descriptivo del mismo.
    -
    -
    Version:
    -
    1.0
    -
    Author:
    -
    Jose Francisco Mena Ceca
    -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Constructor Summary

      - - - - - - - - -
      Constructors 
      Constructor and Description
      DownloadResult() -
      Constructor principal.
      -
      -
    • -
    - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      All Methods Instance Methods Concrete Methods 
      Modifier and TypeMethod and Description
      java.lang.StringgetContentLength() 
      java.lang.StringgetContentType() 
      java.lang.StringgetError() 
      java.lang.StringgetFileOutputPath() 
      java.util.Map<java.lang.String,java.util.List<java.lang.String>>getHeaders() 
      java.lang.StringgetLastModified() 
      voidsetError(java.lang.String error) -
      Establece un mensaje de error.
      -
      voidsetFileOutputPath(java.lang.String fileOutputPath) -
      Establece la ruta del fichero descargado.
      -
      voidsetHeaders(java.net.URLConnection urlConnection) -
      Establece la colección de campos de cabecera devuelta por una conexión realizada
      -
      -
        -
      • - - -

        Methods inherited from class java.lang.Object

        -equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        DownloadResult

        -
        public DownloadResult()
        -
        Constructor principal.
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        setHeaders

        -
        public void setHeaders(java.net.URLConnection urlConnection)
        -
        Establece la colección de campos de cabecera devuelta por una conexión realizada
        -
        -
        Parameters:
        -
        urlConnection - conexión
        -
        -
      • -
      - - - -
        -
      • -

        getHeaders

        -
        public java.util.Map<java.lang.String,java.util.List<java.lang.String>> getHeaders()
        -
        -
        Returns:
        -
        la colección de las cabeceras obtenidas
        -
        -
      • -
      - - - -
        -
      • -

        getLastModified

        -
        public java.lang.String getLastModified()
        -
        -
        Returns:
        -
        el valor del campo de la cebecera "Last-Modified"
        -
        -
      • -
      - - - -
        -
      • -

        getContentType

        -
        public java.lang.String getContentType()
        -
        -
        Returns:
        -
        el valor del campo de la cebecera "Content-Type"
        -
        -
      • -
      - - - -
        -
      • -

        getContentLength

        -
        public java.lang.String getContentLength()
        -
        -
        Returns:
        -
        el valor del campo de la cebecera "Content-Length"
        -
        -
      • -
      - - - -
        -
      • -

        setFileOutputPath

        -
        public void setFileOutputPath(java.lang.String fileOutputPath)
        -
        Establece la ruta del fichero descargado.
        -
        -
        Parameters:
        -
        fileOutputPath - ruta del fichero descargado
        -
        -
      • -
      - - - -
        -
      • -

        getFileOutputPath

        -
        public java.lang.String getFileOutputPath()
        -
        -
        Returns:
        -
        la ruta del fichero descargado
        -
        -
      • -
      - - - -
        -
      • -

        getError

        -
        public java.lang.String getError()
        -
        -
        Returns:
        -
        el emnsaje de error establecido
        -
        -
      • -
      - - - -
        -
      • -

        setError

        -
        public void setError(java.lang.String error)
        -
        Establece un mensaje de error.
        -
        -
        Parameters:
        -
        error - mensaje
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git a/javadoc/org/josfranmc/gutenberg/download/engine/IDownloadEngine.html b/javadoc/org/josfranmc/gutenberg/download/engine/IDownloadEngine.html deleted file mode 100644 index a0f6d39..0000000 --- a/javadoc/org/josfranmc/gutenberg/download/engine/IDownloadEngine.html +++ /dev/null @@ -1,323 +0,0 @@ - - - - - - -IDownloadEngine - - - - - - - - - - - - -
-
org.josfranmc.gutenberg.download.engine
-

Interface IDownloadEngine

-
-
-
-
    -
  • -
    -
    All Known Implementing Classes:
    -
    DownloadHttpUrlConnection
    -
    -
    -
    -
    public interface IDownloadEngine
    -
    Define el comportamiento que tiene que ofrecer toda clase que quiera implementar la capacidad de descargar - un recurso identificado por una URL
    -
    -
    Version:
    -
    1.0
    -
    Author:
    -
    Jose Francisco Mena Ceca
    -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - - - - - - - - - - - - - - - - - -
      All Methods Instance Methods Abstract Methods 
      Modifier and TypeMethod and Description
      DownloadResultdownload() -
      Ejecuta el proceso de descarga.
      -
      java.net.URLgetResource() -
      Obtiene la dirección del recurso a descargar como un objeto de tipo URL
      -
      java.lang.StringgetSavePath() -
      Obtiene la ruta donde guardar el recursos a descargar
      -
      voidsetResource(java.net.URL resource) -
      Establece la dirección del recurso a descargar, la cual se maneja como un objeto de tipo URL
      -
      voidsetSavePath(java.lang.String savePath) -
      Establece la ruta donde guardar el recurso a descargar
      -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        download

        -
        DownloadResult download()
        -
        Ejecuta el proceso de descarga.
        -
        -
        Returns:
        -
        el resultado de la descarga encapsulado en un objeto de tipo DownloadResult
        -
        See Also:
        -
        DownloadResult
        -
        -
      • -
      - - - -
        -
      • -

        setResource

        -
        void setResource(java.net.URL resource)
        -
        Establece la dirección del recurso a descargar, la cual se maneja como un objeto de tipo URL
        -
        -
        Parameters:
        -
        resource - dirección del recurso que se quiere obtener
        -
        -
      • -
      - - - -
        -
      • -

        getResource

        -
        java.net.URL getResource()
        -
        Obtiene la dirección del recurso a descargar como un objeto de tipo URL
        -
        -
        Returns:
        -
        dirección del recurso a descargar
        -
        -
      • -
      - - - -
        -
      • -

        setSavePath

        -
        void setSavePath(java.lang.String savePath)
        -
        Establece la ruta donde guardar el recurso a descargar
        -
        -
        Parameters:
        -
        savePath - ruta donde guardar
        -
        -
      • -
      - - - -
        -
      • -

        getSavePath

        -
        java.lang.String getSavePath()
        -
        Obtiene la ruta donde guardar el recursos a descargar
        -
        -
        Returns:
        -
        ruta donde guardar
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git a/javadoc/org/josfranmc/gutenberg/download/engine/class-use/DownloadEngineFactory.html b/javadoc/org/josfranmc/gutenberg/download/engine/class-use/DownloadEngineFactory.html deleted file mode 100644 index f6a35b3..0000000 --- a/javadoc/org/josfranmc/gutenberg/download/engine/class-use/DownloadEngineFactory.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - -Uses of Class org.josfranmc.gutenberg.download.engine.DownloadEngineFactory - - - - - - - - - - - -
-

Uses of Class
org.josfranmc.gutenberg.download.engine.DownloadEngineFactory

-
-
No usage of org.josfranmc.gutenberg.download.engine.DownloadEngineFactory
- - - - - - diff --git a/javadoc/org/josfranmc/gutenberg/download/engine/class-use/DownloadEngineType.html b/javadoc/org/josfranmc/gutenberg/download/engine/class-use/DownloadEngineType.html deleted file mode 100644 index 3c5a1b8..0000000 --- a/javadoc/org/josfranmc/gutenberg/download/engine/class-use/DownloadEngineType.html +++ /dev/null @@ -1,261 +0,0 @@ - - - - - - -Uses of Class org.josfranmc.gutenberg.download.engine.DownloadEngineType - - - - - - - - - - - -
-

Uses of Class
org.josfranmc.gutenberg.download.engine.DownloadEngineType

-
-
- -
- - - - - - diff --git a/javadoc/org/josfranmc/gutenberg/download/engine/class-use/DownloadHttpUrlConnection.html b/javadoc/org/josfranmc/gutenberg/download/engine/class-use/DownloadHttpUrlConnection.html deleted file mode 100644 index c468f76..0000000 --- a/javadoc/org/josfranmc/gutenberg/download/engine/class-use/DownloadHttpUrlConnection.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - -Uses of Class org.josfranmc.gutenberg.download.engine.DownloadHttpUrlConnection - - - - - - - - - - - -
-

Uses of Class
org.josfranmc.gutenberg.download.engine.DownloadHttpUrlConnection

-
-
No usage of org.josfranmc.gutenberg.download.engine.DownloadHttpUrlConnection
- - - - - - diff --git a/javadoc/org/josfranmc/gutenberg/download/engine/class-use/DownloadResult.html b/javadoc/org/josfranmc/gutenberg/download/engine/class-use/DownloadResult.html deleted file mode 100644 index 5a9a9ef..0000000 --- a/javadoc/org/josfranmc/gutenberg/download/engine/class-use/DownloadResult.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - -Uses of Class org.josfranmc.gutenberg.download.engine.DownloadResult - - - - - - - - - - - -
-

Uses of Class
org.josfranmc.gutenberg.download.engine.DownloadResult

-
-
- -
- - - - - - diff --git a/javadoc/org/josfranmc/gutenberg/download/engine/class-use/IDownloadEngine.html b/javadoc/org/josfranmc/gutenberg/download/engine/class-use/IDownloadEngine.html deleted file mode 100644 index 26e242b..0000000 --- a/javadoc/org/josfranmc/gutenberg/download/engine/class-use/IDownloadEngine.html +++ /dev/null @@ -1,223 +0,0 @@ - - - - - - -Uses of Interface org.josfranmc.gutenberg.download.engine.IDownloadEngine - - - - - - - - - - - -
-

Uses of Interface
org.josfranmc.gutenberg.download.engine.IDownloadEngine

-
-
- -
- - - - - - diff --git a/javadoc/org/josfranmc/gutenberg/download/engine/package-frame.html b/javadoc/org/josfranmc/gutenberg/download/engine/package-frame.html deleted file mode 100644 index da6a051..0000000 --- a/javadoc/org/josfranmc/gutenberg/download/engine/package-frame.html +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - -org.josfranmc.gutenberg.download.engine - - - - - -

org.josfranmc.gutenberg.download.engine

- - - diff --git a/javadoc/org/josfranmc/gutenberg/download/engine/package-summary.html b/javadoc/org/josfranmc/gutenberg/download/engine/package-summary.html deleted file mode 100644 index ebb6343..0000000 --- a/javadoc/org/josfranmc/gutenberg/download/engine/package-summary.html +++ /dev/null @@ -1,198 +0,0 @@ - - - - - - -org.josfranmc.gutenberg.download.engine - - - - - - - - - - - -
-

Package org.josfranmc.gutenberg.download.engine

-
-
-
    -
  • - - - - - - - - - - - - -
    Interface Summary 
    InterfaceDescription
    IDownloadEngine -
    Define el comportamiento que tiene que ofrecer toda clase que quiera implementar la capacidad de descargar - un recurso identificado por una URL
    -
    -
  • -
  • - - - - - - - - - - - - - - - - - - - - -
    Class Summary 
    ClassDescription
    DownloadEngineFactory -
    Factoría para la creación de objetos de tipo IDownloadEngine mediante el método create - Este método está sobregargado, de forma que se puede invocar combinando tres parámetros: - - target: recurso a descargar - savePath: ruta local donde obtener el recurso - type: tipo de motor a utilizar para la descarga (si no se indica ninguno por defecto se usa DownloadEngineType.HTTTP_CONNECTION) -
    -
    DownloadHttpUrlConnection -
    Permite realizar la descarga de un recurso identificado por una URL.
    -
    DownloadResult -
    Encapsula el resultado de la descarga de un recurso.
    -
    -
  • -
  • - - - - - - - - - - - - -
    Enum Summary 
    EnumDescription
    DownloadEngineType -
    Tipos de motores de descarga
    -
    -
  • -
-
- - - - - - diff --git a/javadoc/org/josfranmc/gutenberg/download/engine/package-tree.html b/javadoc/org/josfranmc/gutenberg/download/engine/package-tree.html deleted file mode 100644 index ab68856..0000000 --- a/javadoc/org/josfranmc/gutenberg/download/engine/package-tree.html +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - -org.josfranmc.gutenberg.download.engine Class Hierarchy - - - - - - - - - - - -
-

Hierarchy For Package org.josfranmc.gutenberg.download.engine

-Package Hierarchies: - -
-
-

Class Hierarchy

- -

Interface Hierarchy

- -

Enum Hierarchy

-
    -
  • java.lang.Object -
      -
    • java.lang.Enum<E> (implements java.lang.Comparable<T>, java.io.Serializable) - -
    • -
    -
  • -
-
- - - - - - diff --git a/javadoc/org/josfranmc/gutenberg/download/engine/package-use.html b/javadoc/org/josfranmc/gutenberg/download/engine/package-use.html deleted file mode 100644 index 83298e4..0000000 --- a/javadoc/org/josfranmc/gutenberg/download/engine/package-use.html +++ /dev/null @@ -1,192 +0,0 @@ - - - - - - -Uses of Package org.josfranmc.gutenberg.download.engine - - - - - - - - - - - -
-

Uses of Package
org.josfranmc.gutenberg.download.engine

-
-
- -
- - - - - - diff --git a/javadoc/org/josfranmc/gutenberg/download/package-frame.html b/javadoc/org/josfranmc/gutenberg/download/package-frame.html deleted file mode 100644 index d2a8683..0000000 --- a/javadoc/org/josfranmc/gutenberg/download/package-frame.html +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - -org.josfranmc.gutenberg.download - - - - - -

org.josfranmc.gutenberg.download

- - - diff --git a/javadoc/org/josfranmc/gutenberg/download/package-summary.html b/javadoc/org/josfranmc/gutenberg/download/package-summary.html deleted file mode 100644 index 3fc4a9d..0000000 --- a/javadoc/org/josfranmc/gutenberg/download/package-summary.html +++ /dev/null @@ -1,223 +0,0 @@ - - - - - - -org.josfranmc.gutenberg.download - - - - - - - - - - - -
-

Package org.josfranmc.gutenberg.download

-
-
-
    -
  • - - - - - - - - - - - - -
    Interface Summary 
    InterfaceDescription
    IGutenbergDownload -
    Establece el interfaz de uso que debe implementarse para llevar a cabo la gestión y desarrollo del proceso de descarga de los libros alojados - por el proyecto Gutenberg (http://www.gutenberg.org/)
    -
    -
  • -
  • - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Class Summary 
    ClassDescription
    AbstractDownload -
    Encapsula el proceso que ha de seguirse para la descarga de un recurso.
    -
    DownloadFactory -
    Factoría que permite crear un objeto para realizar un tipo determinado de descarga
    -
    DownloadGreedy -
    Realiza el proceso de descarga de los libros de forma "avariciosa".
    -
    DownloadParams -
    Encapsula los parámetros que permiten configurar la aplicación.
    -
    DownloadSoft -
    Realiza el proceso de descarga de los libros de forma no "avariciosa".
    -
    JGutenbergDownload -
    Implementa el proceso y gestión de descarga de libros alojados por el proyecto Gutenberg (http://www.gutenberg.org)
    -
    JGutenbergDownloadFactory -
    Factoría que crea objetos de tipo IGutenbergDownload, los cuales implementan los servicios necesarios para la gestión y desarrollo - del proceso de descarga de libros alojados por el proyecto Gutenberg.
    -
    JGutenbergDownloadTest -
    Clase que implementa los test para probar los métodos de la clase JGutenbergDownloadTest
    -
    -
  • -
  • - - - - - - - - - - - - -
    Enum Summary 
    EnumDescription
    DownloadMode -
    Tipos de descarga.
    -
    -
  • -
-
- - - - - - diff --git a/javadoc/org/josfranmc/gutenberg/download/package-tree.html b/javadoc/org/josfranmc/gutenberg/download/package-tree.html deleted file mode 100644 index cc0d147..0000000 --- a/javadoc/org/josfranmc/gutenberg/download/package-tree.html +++ /dev/null @@ -1,164 +0,0 @@ - - - - - - -org.josfranmc.gutenberg.download Class Hierarchy - - - - - - - - - - - -
-

Hierarchy For Package org.josfranmc.gutenberg.download

-Package Hierarchies: - -
-
-

Class Hierarchy

- -

Interface Hierarchy

- -

Enum Hierarchy

-
    -
  • java.lang.Object -
      -
    • java.lang.Enum<E> (implements java.lang.Comparable<T>, java.io.Serializable) - -
    • -
    -
  • -
-
- - - - - - diff --git a/javadoc/org/josfranmc/gutenberg/download/package-use.html b/javadoc/org/josfranmc/gutenberg/download/package-use.html deleted file mode 100644 index 480a4c4..0000000 --- a/javadoc/org/josfranmc/gutenberg/download/package-use.html +++ /dev/null @@ -1,181 +0,0 @@ - - - - - - -Uses of Package org.josfranmc.gutenberg.download - - - - - - - - - - - -
-

Uses of Package
org.josfranmc.gutenberg.download

-
-
- -
- - - - - - diff --git a/javadoc/org/josfranmc/gutenberg/engine/DownloadEngineFactoryTest.html b/javadoc/org/josfranmc/gutenberg/engine/DownloadEngineFactoryTest.html deleted file mode 100644 index 902f7ff..0000000 --- a/javadoc/org/josfranmc/gutenberg/engine/DownloadEngineFactoryTest.html +++ /dev/null @@ -1,275 +0,0 @@ - - - - - - -DownloadEngineFactoryTest - - - - - - - - - - - - -
-
org.josfranmc.gutenberg.engine
-

Class DownloadEngineFactoryTest

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • org.josfranmc.gutenberg.engine.DownloadEngineFactoryTest
    • -
    -
  • -
-
-
    -
  • -
    -
    -
    public class DownloadEngineFactoryTest
    -extends java.lang.Object
    -
  • -
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        DownloadEngineFactoryTest

        -
        public DownloadEngineFactoryTest()
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        givenUrlWhenWrongAddressThenFileOutputPathShoulbBeNull

        -
        public void givenUrlWhenWrongAddressThenFileOutputPathShoulbBeNull()
        -
        Si se indica DownloadEngineType con valor null, entonces se debe crear un IDownloadEngineType de tipo DownloadEngineType.HTTP_CONNECTION
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git a/javadoc/org/josfranmc/gutenberg/engine/DownloadHttpUrlConnectionTest.html b/javadoc/org/josfranmc/gutenberg/engine/DownloadHttpUrlConnectionTest.html deleted file mode 100644 index b802717..0000000 --- a/javadoc/org/josfranmc/gutenberg/engine/DownloadHttpUrlConnectionTest.html +++ /dev/null @@ -1,389 +0,0 @@ - - - - - - -DownloadHttpUrlConnectionTest - - - - - - - - - - - - -
-
org.josfranmc.gutenberg.engine
-

Class DownloadHttpUrlConnectionTest

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • org.josfranmc.gutenberg.engine.DownloadHttpUrlConnectionTest
    • -
    -
  • -
-
-
    -
  • -
    -
    -
    public class DownloadHttpUrlConnectionTest
    -extends java.lang.Object
    -
  • -
-
-
-
    -
  • - - - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and TypeMethod and Description
      static voiddone() -
      Método ejecutado una vez después de la ejecución de todos los tests
      -
      voidgivenDownloadParametersWhenNullThenDownloadResultShoulbBeNotNull() -
      Si los parámetros de descarga (ruta del recurso a descargar y ruta donde guardar la descarga) son nulos, entonces se devuelve un objeto - resultado (DownloadResult) con valores a null.
      -
      voidgivenSavePathWhenNullThenReturnUserDir() -
      Si la ruta donde guardar las descargas no se ha especificado, entonces la carpeta de descarga debe ser la carpeta de ejecución del programa.
      -
      voidgivenUrlWhenWrongAddressThenFileOutputPathShoulbBeNull() -
      Si se indica una dirección de descarga errónea, entonces la ruta donde se ha guardado la descarga debe ser null (en el objeto DownloadResult).
      -
      voidinit() -
      Método ejecutado antes de la ejecución de cada test
      -
      static voidsetUp() -
      Método ejecutado una vez antes de la ejecución de todos los tests
      -
      voidtearDown() -
      Método ejecutado después de la ejecución de cada test
      -
      voidtestDownload() -
      Comprobar que se ha descargado un fichero concreto en la carpeta de ejecución del programa.
      -
      -
        -
      • - - -

        Methods inherited from class java.lang.Object

        -equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        DownloadHttpUrlConnectionTest

        -
        public DownloadHttpUrlConnectionTest()
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        setUp

        -
        public static void setUp()
        -
        Método ejecutado una vez antes de la ejecución de todos los tests
        -
      • -
      - - - -
        -
      • -

        init

        -
        public void init()
        -
        Método ejecutado antes de la ejecución de cada test
        -
      • -
      - - - -
        -
      • -

        tearDown

        -
        public void tearDown()
        -
        Método ejecutado después de la ejecución de cada test
        -
      • -
      - - - -
        -
      • -

        done

        -
        public static void done()
        -
        Método ejecutado una vez después de la ejecución de todos los tests
        -
      • -
      - - - -
        -
      • -

        givenSavePathWhenNullThenReturnUserDir

        -
        public void givenSavePathWhenNullThenReturnUserDir()
        -
        Si la ruta donde guardar las descargas no se ha especificado, entonces la carpeta de descarga debe ser la carpeta de ejecución del programa.
        -
      • -
      - - - -
        -
      • -

        givenDownloadParametersWhenNullThenDownloadResultShoulbBeNotNull

        -
        public void givenDownloadParametersWhenNullThenDownloadResultShoulbBeNotNull()
        -
        Si los parámetros de descarga (ruta del recurso a descargar y ruta donde guardar la descarga) son nulos, entonces se devuelve un objeto - resultado (DownloadResult) con valores a null.
        -
      • -
      - - - -
        -
      • -

        givenUrlWhenWrongAddressThenFileOutputPathShoulbBeNull

        -
        public void givenUrlWhenWrongAddressThenFileOutputPathShoulbBeNull()
        -
        Si se indica una dirección de descarga errónea, entonces la ruta donde se ha guardado la descarga debe ser null (en el objeto DownloadResult).
        -
      • -
      - - - -
        -
      • -

        testDownload

        -
        public void testDownload()
        -
        Comprobar que se ha descargado un fichero concreto en la carpeta de ejecución del programa.
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git a/javadoc/org/josfranmc/gutenberg/engine/class-use/DownloadEngineFactoryTest.html b/javadoc/org/josfranmc/gutenberg/engine/class-use/DownloadEngineFactoryTest.html deleted file mode 100644 index b9b6fd3..0000000 --- a/javadoc/org/josfranmc/gutenberg/engine/class-use/DownloadEngineFactoryTest.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - -Uses of Class org.josfranmc.gutenberg.engine.DownloadEngineFactoryTest - - - - - - - - - - - -
-

Uses of Class
org.josfranmc.gutenberg.engine.DownloadEngineFactoryTest

-
-
No usage of org.josfranmc.gutenberg.engine.DownloadEngineFactoryTest
- - - - - - diff --git a/javadoc/org/josfranmc/gutenberg/engine/class-use/DownloadHttpUrlConnectionTest.html b/javadoc/org/josfranmc/gutenberg/engine/class-use/DownloadHttpUrlConnectionTest.html deleted file mode 100644 index 9d36cde..0000000 --- a/javadoc/org/josfranmc/gutenberg/engine/class-use/DownloadHttpUrlConnectionTest.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - -Uses of Class org.josfranmc.gutenberg.engine.DownloadHttpUrlConnectionTest - - - - - - - - - - - -
-

Uses of Class
org.josfranmc.gutenberg.engine.DownloadHttpUrlConnectionTest

-
-
No usage of org.josfranmc.gutenberg.engine.DownloadHttpUrlConnectionTest
- - - - - - diff --git a/javadoc/org/josfranmc/gutenberg/engine/package-frame.html b/javadoc/org/josfranmc/gutenberg/engine/package-frame.html deleted file mode 100644 index b01c72c..0000000 --- a/javadoc/org/josfranmc/gutenberg/engine/package-frame.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - -org.josfranmc.gutenberg.engine - - - - - -

org.josfranmc.gutenberg.engine

- - - diff --git a/javadoc/org/josfranmc/gutenberg/engine/package-summary.html b/javadoc/org/josfranmc/gutenberg/engine/package-summary.html deleted file mode 100644 index a9a8256..0000000 --- a/javadoc/org/josfranmc/gutenberg/engine/package-summary.html +++ /dev/null @@ -1,147 +0,0 @@ - - - - - - -org.josfranmc.gutenberg.engine - - - - - - - - - - - -
-

Package org.josfranmc.gutenberg.engine

-
-
- -
- - - - - - diff --git a/javadoc/org/josfranmc/gutenberg/engine/package-tree.html b/javadoc/org/josfranmc/gutenberg/engine/package-tree.html deleted file mode 100644 index ca871b5..0000000 --- a/javadoc/org/josfranmc/gutenberg/engine/package-tree.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - -org.josfranmc.gutenberg.engine Class Hierarchy - - - - - - - - - - - -
-

Hierarchy For Package org.josfranmc.gutenberg.engine

-Package Hierarchies: - -
-
-

Class Hierarchy

- -
- - - - - - diff --git a/javadoc/org/josfranmc/gutenberg/engine/package-use.html b/javadoc/org/josfranmc/gutenberg/engine/package-use.html deleted file mode 100644 index a65c72a..0000000 --- a/javadoc/org/josfranmc/gutenberg/engine/package-use.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - -Uses of Package org.josfranmc.gutenberg.engine - - - - - - - - - - - -
-

Uses of Package
org.josfranmc.gutenberg.engine

-
-
No usage of org.josfranmc.gutenberg.engine
- - - - - - diff --git a/javadoc/org/josfranmc/gutenberg/util/FileManager.html b/javadoc/org/josfranmc/gutenberg/util/FileManager.html deleted file mode 100644 index bcd447a..0000000 --- a/javadoc/org/josfranmc/gutenberg/util/FileManager.html +++ /dev/null @@ -1,364 +0,0 @@ - - - - - - -FileManager - - - - - - - - - - - - -
-
org.josfranmc.gutenberg.util
-

Class FileManager

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • org.josfranmc.gutenberg.util.FileManager
    • -
    -
  • -
-
-
    -
  • -
    -
    -
    public class FileManager
    -extends java.lang.Object
    -
    Ofrece herramientas para el tratamiento de ficheros.
    -
    -
    Version:
    -
    1.0
    -
    Author:
    -
    Jose Francisco Mena Ceca
    -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Constructor Summary

      - - - - - - - - -
      Constructors 
      Constructor and Description
      FileManager() 
      -
    • -
    - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - - - - - - - - - - - - - -
      All Methods Static Methods Concrete Methods 
      Modifier and TypeMethod and Description
      static booleanfileExists(java.lang.String savePath, - java.lang.String link) -
      Comprueba si existe en una ruta del equipo local el fichero que se puede obtener con la descarga de un determinado enlace.
      -
      static java.lang.StringgetLocalFileName(java.lang.String str) -
      Devuelve el nombre del archivo contenido en una ruta.
      -
      static java.lang.StringgetLocalFilePathFromURL(java.lang.String savePath, - java.lang.String link) -
      Devuelve la ruta que debe tener en el equipo local un fichero que va a descargarse en dicho equipo.
      -
      static voidunzipFiles(java.lang.String inputPath, - java.lang.String outputPath) -
      Descomprime los ficheros comprimidos en formato zip de una determinada carpeta.
      -
      -
        -
      • - - -

        Methods inherited from class java.lang.Object

        -equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        FileManager

        -
        public FileManager()
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        fileExists

        -
        public static boolean fileExists(java.lang.String savePath,
        -                                 java.lang.String link)
        -
        Comprueba si existe en una ruta del equipo local el fichero que se puede obtener con la descarga de un determinado enlace.
        -
        -
        Parameters:
        -
        savePath - ruta del equipo local
        -
        link - enlace del fichero
        -
        Returns:
        -
        true si en la ruta indicada existe el fichero del enlace indicado, false en caso contrario
        -
        -
      • -
      - - - -
        -
      • -

        getLocalFilePathFromURL

        -
        public static java.lang.String getLocalFilePathFromURL(java.lang.String savePath,
        -                                                       java.lang.String link)
        -
        Devuelve la ruta que debe tener en el equipo local un fichero que va a descargarse en dicho equipo.
        - La ruta completa del fichero se forma concatenando dos elementos: por un lado, la ruta de la carpeta donde se va a guardar, y por otro, - el nombre del fichero contenido en el enlace de descarga (el nombre de fichero es la parte final del enlace desde el último caracter separador de directorios)
        . - Si el nombre del fichero contiene los caracteres ? o &amp; se sustituyen por _ y & respectivamente.
        -
        -
        Parameters:
        -
        savePath - ruta de la carpeta en la que obtener la descarga
        -
        link - enlace del fichero a descargar
        -
        Returns:
        -
        la ruta del fichero en el equipo local
        -
        -
      • -
      - - - -
        -
      • -

        getLocalFileName

        -
        public static java.lang.String getLocalFileName(java.lang.String str)
        -
        Devuelve el nombre del archivo contenido en una ruta.
        -
        -
        Parameters:
        -
        str - ruta del archivo
        -
        Returns:
        -
        el nombre del archivo
        -
        -
      • -
      - - - -
        -
      • -

        unzipFiles

        -
        public static void unzipFiles(java.lang.String inputPath,
        -                              java.lang.String outputPath)
        -
        Descomprime los ficheros comprimidos en formato zip de una determinada carpeta.
        -
        -
        Parameters:
        -
        inputPath - ruta del directorio donde se encuentran los ficheros zip
        -
        outputPath - ruta del directorio en el que descomprimir los ficheros
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git a/javadoc/org/josfranmc/gutenberg/util/FileManagerTest.html b/javadoc/org/josfranmc/gutenberg/util/FileManagerTest.html deleted file mode 100644 index 6e2de88..0000000 --- a/javadoc/org/josfranmc/gutenberg/util/FileManagerTest.html +++ /dev/null @@ -1,309 +0,0 @@ - - - - - - -FileManagerTest - - - - - - - - - - - - -
-
org.josfranmc.gutenberg.util
-

Class FileManagerTest

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • org.josfranmc.gutenberg.util.FileManagerTest
    • -
    -
  • -
-
-
    -
  • -
    -
    -
    public class FileManagerTest
    -extends java.lang.Object
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Constructor Summary

      - - - - - - - - -
      Constructors 
      Constructor and Description
      FileManagerTest() 
      -
    • -
    - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - - - - - - - - - -
      All Methods Instance Methods Concrete Methods 
      Modifier and TypeMethod and Description
      voidgivenInputPathAndOutputPathWhenNullThenAvoidNullPointerException() -
      Si la ruta del directorio donde se encuentran los ficheros zip o la ruta del directorio en el que descomprimir los ficheros son null, - entonces el método FileManager.unzipFiles no debe lanzar NullPointerException
      -
      voidtestGetLocalFileName() -
      Comprobar si es correcto el nombre del archivo contenido en una ruta.
      -
      voidtestGetLocalFilePathFromURL() -
      Comprobar si es correcta la ruta que debe tener en el equipo local un fichero que va a descargarse en dicho equipo.
      -
      -
        -
      • - - -

        Methods inherited from class java.lang.Object

        -equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        FileManagerTest

        -
        public FileManagerTest()
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        testGetLocalFilePathFromURL

        -
        public void testGetLocalFilePathFromURL()
        -
        Comprobar si es correcta la ruta que debe tener en el equipo local un fichero que va a descargarse en dicho equipo.
        -
      • -
      - - - -
        -
      • -

        testGetLocalFileName

        -
        public void testGetLocalFileName()
        -
        Comprobar si es correcto el nombre del archivo contenido en una ruta.
        -
      • -
      - - - -
        -
      • -

        givenInputPathAndOutputPathWhenNullThenAvoidNullPointerException

        -
        public void givenInputPathAndOutputPathWhenNullThenAvoidNullPointerException()
        -
        Si la ruta del directorio donde se encuentran los ficheros zip o la ruta del directorio en el que descomprimir los ficheros son null, - entonces el método FileManager.unzipFiles no debe lanzar NullPointerException
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git a/javadoc/org/josfranmc/gutenberg/util/FileScraping.html b/javadoc/org/josfranmc/gutenberg/util/FileScraping.html deleted file mode 100644 index e05d6af..0000000 --- a/javadoc/org/josfranmc/gutenberg/util/FileScraping.html +++ /dev/null @@ -1,292 +0,0 @@ - - - - - - -FileScraping - - - - - - - - - - - - -
-
org.josfranmc.gutenberg.util
-

Class FileScraping

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • org.josfranmc.gutenberg.util.FileScraping
    • -
    -
  • -
-
-
    -
  • -
    -
    -
    public class FileScraping
    -extends java.lang.Object
    -
    Ofrece herramientas para analizar ficheros en busca de enlaces web.
    -
    -
    Version:
    -
    1.0
    -
    Author:
    -
    Jose Francisco Mena Ceca
    -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Constructor Summary

      - - - - - - - - -
      Constructors 
      Constructor and Description
      FileScraping() -
      Constructor por defecto.
      -
      -
    • -
    - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - -
      All Methods Static Methods Concrete Methods 
      Modifier and TypeMethod and Description
      static java.util.List<java.lang.String>getLinks(java.lang.String filePath) -
      Obtiene una lista con todos los enlaces contenidos dentro de un fichero HTML.
      -
      -
        -
      • - - -

        Methods inherited from class java.lang.Object

        -equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        FileScraping

        -
        public FileScraping()
        -
        Constructor por defecto.
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        getLinks

        -
        public static java.util.List<java.lang.String> getLinks(java.lang.String filePath)
        -
        Obtiene una lista con todos los enlaces contenidos dentro de un fichero HTML.
        - Los enlaces son extraidos de los atributos href de los elementos <a>.
        -
        -
        Parameters:
        -
        filePath - ruta del fichero a analizar
        -
        Returns:
        -
        lista de enlaces
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - diff --git a/javadoc/org/josfranmc/gutenberg/util/class-use/FileManager.html b/javadoc/org/josfranmc/gutenberg/util/class-use/FileManager.html deleted file mode 100644 index 0d81a6f..0000000 --- a/javadoc/org/josfranmc/gutenberg/util/class-use/FileManager.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - -Uses of Class org.josfranmc.gutenberg.util.FileManager - - - - - - - - - - - -
-

Uses of Class
org.josfranmc.gutenberg.util.FileManager

-
-
No usage of org.josfranmc.gutenberg.util.FileManager
- - - - - - diff --git a/javadoc/org/josfranmc/gutenberg/util/class-use/FileManagerTest.html b/javadoc/org/josfranmc/gutenberg/util/class-use/FileManagerTest.html deleted file mode 100644 index 91d70ed..0000000 --- a/javadoc/org/josfranmc/gutenberg/util/class-use/FileManagerTest.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - -Uses of Class org.josfranmc.gutenberg.util.FileManagerTest - - - - - - - - - - - -
-

Uses of Class
org.josfranmc.gutenberg.util.FileManagerTest

-
-
No usage of org.josfranmc.gutenberg.util.FileManagerTest
- - - - - - diff --git a/javadoc/org/josfranmc/gutenberg/util/class-use/FileScraping.html b/javadoc/org/josfranmc/gutenberg/util/class-use/FileScraping.html deleted file mode 100644 index c0dfa84..0000000 --- a/javadoc/org/josfranmc/gutenberg/util/class-use/FileScraping.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - -Uses of Class org.josfranmc.gutenberg.util.FileScraping - - - - - - - - - - - -
-

Uses of Class
org.josfranmc.gutenberg.util.FileScraping

-
-
No usage of org.josfranmc.gutenberg.util.FileScraping
- - - - - - diff --git a/javadoc/org/josfranmc/gutenberg/util/package-frame.html b/javadoc/org/josfranmc/gutenberg/util/package-frame.html deleted file mode 100644 index 0a404aa..0000000 --- a/javadoc/org/josfranmc/gutenberg/util/package-frame.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - -org.josfranmc.gutenberg.util - - - - - -

org.josfranmc.gutenberg.util

- - - diff --git a/javadoc/org/josfranmc/gutenberg/util/package-summary.html b/javadoc/org/josfranmc/gutenberg/util/package-summary.html deleted file mode 100644 index 4286ef7..0000000 --- a/javadoc/org/josfranmc/gutenberg/util/package-summary.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - -org.josfranmc.gutenberg.util - - - - - - - - - - - -
-

Package org.josfranmc.gutenberg.util

-
-
-
    -
  • - - - - - - - - - - - - - - - - - - - - -
    Class Summary 
    ClassDescription
    FileManager -
    Ofrece herramientas para el tratamiento de ficheros.
    -
    FileManagerTest 
    FileScraping -
    Ofrece herramientas para analizar ficheros en busca de enlaces web.
    -
    -
  • -
-
- - - - - - diff --git a/javadoc/org/josfranmc/gutenberg/util/package-tree.html b/javadoc/org/josfranmc/gutenberg/util/package-tree.html deleted file mode 100644 index f04c49d..0000000 --- a/javadoc/org/josfranmc/gutenberg/util/package-tree.html +++ /dev/null @@ -1,140 +0,0 @@ - - - - - - -org.josfranmc.gutenberg.util Class Hierarchy - - - - - - - - - - - -
-

Hierarchy For Package org.josfranmc.gutenberg.util

-Package Hierarchies: - -
-
-

Class Hierarchy

- -
- - - - - - diff --git a/javadoc/org/josfranmc/gutenberg/util/package-use.html b/javadoc/org/josfranmc/gutenberg/util/package-use.html deleted file mode 100644 index 964c3eb..0000000 --- a/javadoc/org/josfranmc/gutenberg/util/package-use.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - -Uses of Package org.josfranmc.gutenberg.util - - - - - - - - - - - -
-

Uses of Package
org.josfranmc.gutenberg.util

-
-
No usage of org.josfranmc.gutenberg.util
- - - - - - diff --git a/javadoc/overview-frame.html b/javadoc/overview-frame.html deleted file mode 100644 index aae6317..0000000 --- a/javadoc/overview-frame.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - -Overview List - - - - - - - -

 

- - diff --git a/javadoc/overview-summary.html b/javadoc/overview-summary.html deleted file mode 100644 index 0e4f4f4..0000000 --- a/javadoc/overview-summary.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - -Overview - - - - - - - - -
- - - - - - - -
- - -
-

JGutenbergDownload - JavaDoc

-
- - -
- - - - - - - -
- - - - diff --git a/javadoc/overview-tree.html b/javadoc/overview-tree.html deleted file mode 100644 index 198f211..0000000 --- a/javadoc/overview-tree.html +++ /dev/null @@ -1,179 +0,0 @@ - - - - - - -Class Hierarchy - - - - - - - - -
- - - - - - - -
- - - -
-

Class Hierarchy

- -

Interface Hierarchy

- -

Enum Hierarchy

-
    -
  • java.lang.Object -
      -
    • java.lang.Enum<E> (implements java.lang.Comparable<T>, java.io.Serializable) - -
    • -
    -
  • -
-
- -
- - - - - - - -
- - - - diff --git a/javadoc/package-list b/javadoc/package-list deleted file mode 100644 index 10c4d24..0000000 --- a/javadoc/package-list +++ /dev/null @@ -1,5 +0,0 @@ -org.josfranmc.gutenberg.download -org.josfranmc.gutenberg.download.client -org.josfranmc.gutenberg.download.engine -org.josfranmc.gutenberg.engine -org.josfranmc.gutenberg.util diff --git a/javadoc/script.js b/javadoc/script.js deleted file mode 100644 index b346356..0000000 --- a/javadoc/script.js +++ /dev/null @@ -1,30 +0,0 @@ -function show(type) -{ - count = 0; - for (var key in methods) { - var row = document.getElementById(key); - if ((methods[key] & type) != 0) { - row.style.display = ''; - row.className = (count++ % 2) ? rowColor : altColor; - } - else - row.style.display = 'none'; - } - updateTabs(type); -} - -function updateTabs(type) -{ - for (var value in tabs) { - var sNode = document.getElementById(tabs[value][0]); - var spanNode = sNode.firstChild; - if (value == type) { - sNode.className = activeTableTab; - spanNode.innerHTML = tabs[value][1]; - } - else { - sNode.className = tableTab; - spanNode.innerHTML = "" + tabs[value][1] + ""; - } - } -} diff --git a/javadoc/stylesheet.css b/javadoc/stylesheet.css deleted file mode 100644 index 98055b2..0000000 --- a/javadoc/stylesheet.css +++ /dev/null @@ -1,574 +0,0 @@ -/* Javadoc style sheet */ -/* -Overall document style -*/ - -@import url('resources/fonts/dejavu.css'); - -body { - background-color:#ffffff; - color:#353833; - font-family:'DejaVu Sans', Arial, Helvetica, sans-serif; - font-size:14px; - margin:0; -} -a:link, a:visited { - text-decoration:none; - color:#4A6782; -} -a:hover, a:focus { - text-decoration:none; - color:#bb7a2a; -} -a:active { - text-decoration:none; - color:#4A6782; -} -a[name] { - color:#353833; -} -a[name]:hover { - text-decoration:none; - color:#353833; -} -pre { - font-family:'DejaVu Sans Mono', monospace; - font-size:14px; -} -h1 { - font-size:20px; -} -h2 { - font-size:18px; -} -h3 { - font-size:16px; - font-style:italic; -} -h4 { - font-size:13px; -} -h5 { - font-size:12px; -} -h6 { - font-size:11px; -} -ul { - list-style-type:disc; -} -code, tt { - font-family:'DejaVu Sans Mono', monospace; - font-size:14px; - padding-top:4px; - margin-top:8px; - line-height:1.4em; -} -dt code { - font-family:'DejaVu Sans Mono', monospace; - font-size:14px; - padding-top:4px; -} -table tr td dt code { - font-family:'DejaVu Sans Mono', monospace; - font-size:14px; - vertical-align:top; - padding-top:4px; -} -sup { - font-size:8px; -} -/* -Document title and Copyright styles -*/ -.clear { - clear:both; - height:0px; - overflow:hidden; -} -.aboutLanguage { - float:right; - padding:0px 21px; - font-size:11px; - z-index:200; - margin-top:-9px; -} -.legalCopy { - margin-left:.5em; -} -.bar a, .bar a:link, .bar a:visited, .bar a:active { - color:#FFFFFF; - text-decoration:none; -} -.bar a:hover, .bar a:focus { - color:#bb7a2a; -} -.tab { - background-color:#0066FF; - color:#ffffff; - padding:8px; - width:5em; - font-weight:bold; -} -/* -Navigation bar styles -*/ -.bar { - background-color:#4D7A97; - color:#FFFFFF; - padding:.8em .5em .4em .8em; - height:auto;/*height:1.8em;*/ - font-size:11px; - margin:0; -} -.topNav { - background-color:#4D7A97; - color:#FFFFFF; - float:left; - padding:0; - width:100%; - clear:right; - height:2.8em; - padding-top:10px; - overflow:hidden; - font-size:12px; -} -.bottomNav { - margin-top:10px; - background-color:#4D7A97; - color:#FFFFFF; - float:left; - padding:0; - width:100%; - clear:right; - height:2.8em; - padding-top:10px; - overflow:hidden; - font-size:12px; -} -.subNav { - background-color:#dee3e9; - float:left; - width:100%; - overflow:hidden; - font-size:12px; -} -.subNav div { - clear:left; - float:left; - padding:0 0 5px 6px; - text-transform:uppercase; -} -ul.navList, ul.subNavList { - float:left; - margin:0 25px 0 0; - padding:0; -} -ul.navList li{ - list-style:none; - float:left; - padding: 5px 6px; - text-transform:uppercase; -} -ul.subNavList li{ - list-style:none; - float:left; -} -.topNav a:link, .topNav a:active, .topNav a:visited, .bottomNav a:link, .bottomNav a:active, .bottomNav a:visited { - color:#FFFFFF; - text-decoration:none; - text-transform:uppercase; -} -.topNav a:hover, .bottomNav a:hover { - text-decoration:none; - color:#bb7a2a; - text-transform:uppercase; -} -.navBarCell1Rev { - background-color:#F8981D; - color:#253441; - margin: auto 5px; -} -.skipNav { - position:absolute; - top:auto; - left:-9999px; - overflow:hidden; -} -/* -Page header and footer styles -*/ -.header, .footer { - clear:both; - margin:0 20px; - padding:5px 0 0 0; -} -.indexHeader { - margin:10px; - position:relative; -} -.indexHeader span{ - margin-right:15px; -} -.indexHeader h1 { - font-size:13px; -} -.title { - color:#2c4557; - margin:10px 0; -} -.subTitle { - margin:5px 0 0 0; -} -.header ul { - margin:0 0 15px 0; - padding:0; -} -.footer ul { - margin:20px 0 5px 0; -} -.header ul li, .footer ul li { - list-style:none; - font-size:13px; -} -/* -Heading styles -*/ -div.details ul.blockList ul.blockList ul.blockList li.blockList h4, div.details ul.blockList ul.blockList ul.blockListLast li.blockList h4 { - background-color:#dee3e9; - border:1px solid #d0d9e0; - margin:0 0 6px -8px; - padding:7px 5px; -} -ul.blockList ul.blockList ul.blockList li.blockList h3 { - background-color:#dee3e9; - border:1px solid #d0d9e0; - margin:0 0 6px -8px; - padding:7px 5px; -} -ul.blockList ul.blockList li.blockList h3 { - padding:0; - margin:15px 0; -} -ul.blockList li.blockList h2 { - padding:0px 0 20px 0; -} -/* -Page layout container styles -*/ -.contentContainer, .sourceContainer, .classUseContainer, .serializedFormContainer, .constantValuesContainer { - clear:both; - padding:10px 20px; - position:relative; -} -.indexContainer { - margin:10px; - position:relative; - font-size:12px; -} -.indexContainer h2 { - font-size:13px; - padding:0 0 3px 0; -} -.indexContainer ul { - margin:0; - padding:0; -} -.indexContainer ul li { - list-style:none; - padding-top:2px; -} -.contentContainer .description dl dt, .contentContainer .details dl dt, .serializedFormContainer dl dt { - font-size:12px; - font-weight:bold; - margin:10px 0 0 0; - color:#4E4E4E; -} -.contentContainer .description dl dd, .contentContainer .details dl dd, .serializedFormContainer dl dd { - margin:5px 0 10px 0px; - font-size:14px; - font-family:'DejaVu Sans Mono',monospace; -} -.serializedFormContainer dl.nameValue dt { - margin-left:1px; - font-size:1.1em; - display:inline; - font-weight:bold; -} -.serializedFormContainer dl.nameValue dd { - margin:0 0 0 1px; - font-size:1.1em; - display:inline; -} -/* -List styles -*/ -ul.horizontal li { - display:inline; - font-size:0.9em; -} -ul.inheritance { - margin:0; - padding:0; -} -ul.inheritance li { - display:inline; - list-style:none; -} -ul.inheritance li ul.inheritance { - margin-left:15px; - padding-left:15px; - padding-top:1px; -} -ul.blockList, ul.blockListLast { - margin:10px 0 10px 0; - padding:0; -} -ul.blockList li.blockList, ul.blockListLast li.blockList { - list-style:none; - margin-bottom:15px; - line-height:1.4; -} -ul.blockList ul.blockList li.blockList, ul.blockList ul.blockListLast li.blockList { - padding:0px 20px 5px 10px; - border:1px solid #ededed; - background-color:#f8f8f8; -} -ul.blockList ul.blockList ul.blockList li.blockList, ul.blockList ul.blockList ul.blockListLast li.blockList { - padding:0 0 5px 8px; - background-color:#ffffff; - border:none; -} -ul.blockList ul.blockList ul.blockList ul.blockList li.blockList { - margin-left:0; - padding-left:0; - padding-bottom:15px; - border:none; -} -ul.blockList ul.blockList ul.blockList ul.blockList li.blockListLast { - list-style:none; - border-bottom:none; - padding-bottom:0; -} -table tr td dl, table tr td dl dt, table tr td dl dd { - margin-top:0; - margin-bottom:1px; -} -/* -Table styles -*/ -.overviewSummary, .memberSummary, .typeSummary, .useSummary, .constantsSummary, .deprecatedSummary { - width:100%; - border-left:1px solid #EEE; - border-right:1px solid #EEE; - border-bottom:1px solid #EEE; -} -.overviewSummary, .memberSummary { - padding:0px; -} -.overviewSummary caption, .memberSummary caption, .typeSummary caption, -.useSummary caption, .constantsSummary caption, .deprecatedSummary caption { - position:relative; - text-align:left; - background-repeat:no-repeat; - color:#253441; - font-weight:bold; - clear:none; - overflow:hidden; - padding:0px; - padding-top:10px; - padding-left:1px; - margin:0px; - white-space:pre; -} -.overviewSummary caption a:link, .memberSummary caption a:link, .typeSummary caption a:link, -.useSummary caption a:link, .constantsSummary caption a:link, .deprecatedSummary caption a:link, -.overviewSummary caption a:hover, .memberSummary caption a:hover, .typeSummary caption a:hover, -.useSummary caption a:hover, .constantsSummary caption a:hover, .deprecatedSummary caption a:hover, -.overviewSummary caption a:active, .memberSummary caption a:active, .typeSummary caption a:active, -.useSummary caption a:active, .constantsSummary caption a:active, .deprecatedSummary caption a:active, -.overviewSummary caption a:visited, .memberSummary caption a:visited, .typeSummary caption a:visited, -.useSummary caption a:visited, .constantsSummary caption a:visited, .deprecatedSummary caption a:visited { - color:#FFFFFF; -} -.overviewSummary caption span, .memberSummary caption span, .typeSummary caption span, -.useSummary caption span, .constantsSummary caption span, .deprecatedSummary caption span { - white-space:nowrap; - padding-top:5px; - padding-left:12px; - padding-right:12px; - padding-bottom:7px; - display:inline-block; - float:left; - background-color:#F8981D; - border: none; - height:16px; -} -.memberSummary caption span.activeTableTab span { - white-space:nowrap; - padding-top:5px; - padding-left:12px; - padding-right:12px; - margin-right:3px; - display:inline-block; - float:left; - background-color:#F8981D; - height:16px; -} -.memberSummary caption span.tableTab span { - white-space:nowrap; - padding-top:5px; - padding-left:12px; - padding-right:12px; - margin-right:3px; - display:inline-block; - float:left; - background-color:#4D7A97; - height:16px; -} -.memberSummary caption span.tableTab, .memberSummary caption span.activeTableTab { - padding-top:0px; - padding-left:0px; - padding-right:0px; - background-image:none; - float:none; - display:inline; -} -.overviewSummary .tabEnd, .memberSummary .tabEnd, .typeSummary .tabEnd, -.useSummary .tabEnd, .constantsSummary .tabEnd, .deprecatedSummary .tabEnd { - display:none; - width:5px; - position:relative; - float:left; - background-color:#F8981D; -} -.memberSummary .activeTableTab .tabEnd { - display:none; - width:5px; - margin-right:3px; - position:relative; - float:left; - background-color:#F8981D; -} -.memberSummary .tableTab .tabEnd { - display:none; - width:5px; - margin-right:3px; - position:relative; - background-color:#4D7A97; - float:left; - -} -.overviewSummary td, .memberSummary td, .typeSummary td, -.useSummary td, .constantsSummary td, .deprecatedSummary td { - text-align:left; - padding:0px 0px 12px 10px; -} -th.colOne, th.colFirst, th.colLast, .useSummary th, .constantsSummary th, -td.colOne, td.colFirst, td.colLast, .useSummary td, .constantsSummary td{ - vertical-align:top; - padding-right:0px; - padding-top:8px; - padding-bottom:3px; -} -th.colFirst, th.colLast, th.colOne, .constantsSummary th { - background:#dee3e9; - text-align:left; - padding:8px 3px 3px 7px; -} -td.colFirst, th.colFirst { - white-space:nowrap; - font-size:13px; -} -td.colLast, th.colLast { - font-size:13px; -} -td.colOne, th.colOne { - font-size:13px; -} -.overviewSummary td.colFirst, .overviewSummary th.colFirst, -.useSummary td.colFirst, .useSummary th.colFirst, -.overviewSummary td.colOne, .overviewSummary th.colOne, -.memberSummary td.colFirst, .memberSummary th.colFirst, -.memberSummary td.colOne, .memberSummary th.colOne, -.typeSummary td.colFirst{ - width:25%; - vertical-align:top; -} -td.colOne a:link, td.colOne a:active, td.colOne a:visited, td.colOne a:hover, td.colFirst a:link, td.colFirst a:active, td.colFirst a:visited, td.colFirst a:hover, td.colLast a:link, td.colLast a:active, td.colLast a:visited, td.colLast a:hover, .constantValuesContainer td a:link, .constantValuesContainer td a:active, .constantValuesContainer td a:visited, .constantValuesContainer td a:hover { - font-weight:bold; -} -.tableSubHeadingColor { - background-color:#EEEEFF; -} -.altColor { - background-color:#FFFFFF; -} -.rowColor { - background-color:#EEEEEF; -} -/* -Content styles -*/ -.description pre { - margin-top:0; -} -.deprecatedContent { - margin:0; - padding:10px 0; -} -.docSummary { - padding:0; -} - -ul.blockList ul.blockList ul.blockList li.blockList h3 { - font-style:normal; -} - -div.block { - font-size:14px; - font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; -} - -td.colLast div { - padding-top:0px; -} - - -td.colLast a { - padding-bottom:3px; -} -/* -Formatting effect styles -*/ -.sourceLineNo { - color:green; - padding:0 30px 0 0; -} -h1.hidden { - visibility:hidden; - overflow:hidden; - font-size:10px; -} -.block { - display:block; - margin:3px 10px 2px 0px; - color:#474747; -} -.deprecatedLabel, .descfrmTypeLabel, .memberNameLabel, .memberNameLink, -.overrideSpecifyLabel, .packageHierarchyLabel, .paramLabel, .returnLabel, -.seeLabel, .simpleTagLabel, .throwsLabel, .typeNameLabel, .typeNameLink { - font-weight:bold; -} -.deprecationComment, .emphasizedPhrase, .interfaceName { - font-style:italic; -} - -div.block div.block span.deprecationComment, div.block div.block span.emphasizedPhrase, -div.block div.block span.interfaceName { - font-style:normal; -} - -div.contentContainer ul.blockList li.blockList h2{ - padding-bottom:0px; -} From 51c6c9c2e56b19afc4723205a961b98f007880e0 Mon Sep 17 00:00:00 2001 From: josfranmc Date: Tue, 19 Nov 2019 21:40:18 +0100 Subject: [PATCH 07/27] =?UTF-8?q?Corregir=20c=C3=B3digo=20seg=C3=BAn=20inf?= =?UTF-8?q?orme=20de=20SonarQube?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gutenberg/download/DownloadBooks.java | 13 ++-- .../gutenberg/download/DownloadParams.java | 9 +-- .../download/JGutenbergDownload.java | 14 ++--- .../engine/DownloadEngineFactory.java | 2 +- .../engine/DownloadHttpUrlConnection.java | 59 +++++++++--------- .../download/engine/DownloadResult.java | 16 ++--- .../download/engine/IDownloadEngine.java | 3 +- .../josfranmc/gutenberg/util/FileManager.java | 60 ++++++++++--------- .../gutenberg/util/FileScraping.java | 9 +-- .../download/DownloadParamsTest.java | 5 -- .../download/JGutenbergDownloadTest.java | 8 ++- 11 files changed, 98 insertions(+), 100 deletions(-) diff --git a/src/main/java/org/josfranmc/gutenberg/download/DownloadBooks.java b/src/main/java/org/josfranmc/gutenberg/download/DownloadBooks.java index dc4cb3c..a419136 100644 --- a/src/main/java/org/josfranmc/gutenberg/download/DownloadBooks.java +++ b/src/main/java/org/josfranmc/gutenberg/download/DownloadBooks.java @@ -11,7 +11,6 @@ import org.josfranmc.gutenberg.download.engine.DownloadEngineFactory; import org.josfranmc.gutenberg.download.engine.DownloadResult; import org.josfranmc.gutenberg.download.engine.IDownloadEngine; -import org.josfranmc.gutenberg.util.GutenbergException; import org.josfranmc.gutenberg.util.FileManager; import org.josfranmc.gutenberg.util.FileScraping; @@ -26,7 +25,7 @@ public class DownloadBooks { private static final Logger log = Logger.getLogger(DownloadBooks.class); - private static ExecutorService executorService; + private ExecutorService executorService; private DownloadParams parameters; @@ -37,6 +36,7 @@ public class DownloadBooks { public DownloadBooks(DownloadParams parameters) { this.parameters = parameters; + this.executorService = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors() * 3); } private void settingDownloadEngine() { @@ -51,18 +51,15 @@ private void settingDownloadEngine() { * If there is a link to another page with more links, this page is downloaded and processed in the same way. * This process continues until there are no more pages.

* All downloads run on separate threads. - * @throws GutenbergException if there is any error downloading * @throws InterruptedException if there is an interruption while waiting ExecutorService shutdown */ - public void executeDownload() throws GutenbergException, InterruptedException { + public void executeDownload() throws InterruptedException { settingDownloadEngine(); DownloadResult downloadResult = downloadEngine.download(); if (downloadResult.getContentType().equals("text/html")) { - - executorService = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors() * 3); - + processPage(downloadResult.getSavedFilePath()); try { @@ -70,6 +67,7 @@ public void executeDownload() throws GutenbergException, InterruptedException { while (!executorService.awaitTermination(2, TimeUnit.MINUTES)) {} } catch (InterruptedException e) { log.warn("InterruptedException shutting down executorService. " + e.getMessage()); + Thread.currentThread().interrupt(); } } } @@ -177,6 +175,7 @@ private void delayDownload() { Thread.sleep(getDelay()); } catch (InterruptedException e) { log.error("InterruptedException delayDownload. " + e); + Thread.currentThread().interrupt(); } } } diff --git a/src/main/java/org/josfranmc/gutenberg/download/DownloadParams.java b/src/main/java/org/josfranmc/gutenberg/download/DownloadParams.java index 7ddb42a..da2a948 100644 --- a/src/main/java/org/josfranmc/gutenberg/download/DownloadParams.java +++ b/src/main/java/org/josfranmc/gutenberg/download/DownloadParams.java @@ -30,6 +30,8 @@ public class DownloadParams { */ public static final String URL_BOOKS = "http://www.gutenberg.org/robot/"; + private static final String FILE_SEPARATOR = System.getProperty("file.separator"); + private String fileType; private String language; @@ -68,7 +70,7 @@ public DownloadParams() { fileType = "txt"; language = "es"; buildHarvestURL(); - savePath = System.getProperty("user.dir") + System.getProperty("file.separator"); + savePath = System.getProperty("user.dir") + FILE_SEPARATOR; setZipsPath(); overwrite = false; delay = 2000; @@ -146,8 +148,7 @@ public void setSavePath(String savePath) { if (savePath == null) { throw new IllegalArgumentException("The directory path where to save downloads cannot be null"); } - String fileSeparator = System.getProperty("file.separator"); - String path = (!savePath.endsWith(fileSeparator)) ? savePath.concat(fileSeparator) : savePath; + String path = (!savePath.endsWith(FILE_SEPARATOR)) ? savePath.concat(FILE_SEPARATOR) : savePath; this.savePath = path; setZipsPath(); } @@ -160,7 +161,7 @@ public String getZipsPath() { } private void setZipsPath() { - this.zipsPath = savePath + "zips" + System.getProperty("file.separator"); + this.zipsPath = savePath + "zips" + FILE_SEPARATOR; } /** diff --git a/src/main/java/org/josfranmc/gutenberg/download/JGutenbergDownload.java b/src/main/java/org/josfranmc/gutenberg/download/JGutenbergDownload.java index 5cf42ac..3c5ee66 100644 --- a/src/main/java/org/josfranmc/gutenberg/download/JGutenbergDownload.java +++ b/src/main/java/org/josfranmc/gutenberg/download/JGutenbergDownload.java @@ -52,9 +52,8 @@ public void setParameters(DownloadParams parameters) { /** * Begins the download books process. - * @throws GutenbergException if there is any error in the download */ - public void downloadBooks() throws GutenbergException { + public void downloadBooks() { try { printParameters(); createDirectoriesForDownloads(); @@ -70,7 +69,7 @@ public void downloadBooks() throws GutenbergException { log.error(e.getCause()); throw e; } catch (Exception e) { - e.printStackTrace(); + log.error(e.getMessage()); } } @@ -275,7 +274,6 @@ public static void main(String [] args){ jg.downloadBooks(); } } - //System.exit(0); } /** @@ -304,21 +302,19 @@ private static DownloadParams getParametersFromCommandLine(String [] args) { params.setUnzip(Boolean.valueOf(args[i+1])); } else if (args[i].equals("-m")) { params.setMaxFilesToDownload(Integer.parseInt(args[i+1])); - ///} else if (args[i].equals("-e")) { - // params.setEngineType(DownloadEngineType.valueOf(args[i+1].toUpperCase())); } else { - System.out.println("Parameter: " + args[i] + " unrecognized. Run JGutenbergDownload -h to show options."); + System.err.println("Parameter: " + args[i] + " unrecognized. Run JGutenbergDownload -h to show options."); params = null; break; } } catch (ArrayIndexOutOfBoundsException a) { params = null; - System.out.println("[ERROR] Incorrect number of parameters"); + System.err.println("[ERROR] Incorrect number of parameters"); break; } catch (Exception e) { params = null; - System.out.println("[ERROR] reading parameter " + i + ". Parameter = " + args[i] + ", Value = " + args[i+1]); + System.err.println("[ERROR] reading parameter " + i + ". Parameter = " + args[i] + ", Value = " + args[i+1]); log.error(e); break; } diff --git a/src/main/java/org/josfranmc/gutenberg/download/engine/DownloadEngineFactory.java b/src/main/java/org/josfranmc/gutenberg/download/engine/DownloadEngineFactory.java index 3784db1..9bd4894 100644 --- a/src/main/java/org/josfranmc/gutenberg/download/engine/DownloadEngineFactory.java +++ b/src/main/java/org/josfranmc/gutenberg/download/engine/DownloadEngineFactory.java @@ -79,7 +79,7 @@ public static IDownloadEngine create(URL target, String savePath) { } private static IDownloadEngine createDownloadEngine(URL target, String savePath, DownloadEngineType type) { - type = (type == null) ? DownloadEngineType.HTTP_CONNECTION : type; + //type = (type == null) ? DownloadEngineType.HTTP_CONNECTION : type; // por ahora type solo puede tomar el valor DownloadEngineType.HTTP_CONNECTION return DownloadHttpUrlConnection.newInstance(target, savePath); } diff --git a/src/main/java/org/josfranmc/gutenberg/download/engine/DownloadHttpUrlConnection.java b/src/main/java/org/josfranmc/gutenberg/download/engine/DownloadHttpUrlConnection.java index fb099d5..cc35f88 100644 --- a/src/main/java/org/josfranmc/gutenberg/download/engine/DownloadHttpUrlConnection.java +++ b/src/main/java/org/josfranmc/gutenberg/download/engine/DownloadHttpUrlConnection.java @@ -38,7 +38,7 @@ public class DownloadHttpUrlConnection implements IDownloadEngine { /** - * Initializes an object with the url of the resource to download and the path where to save it + * Initializes an object with the url of the resource to download and the path where to save it. * @param target resource url to download * @param savePath path where to save the download */ @@ -84,51 +84,42 @@ private void configHeader(HttpURLConnection httpConnection) throws ProtocolExcep * @return the result of the download in the form of a DownloadResult object * @throws GutenbergException if there is any error downloading * @see DownloadResult - * @see GutenbergException */ @Override - public DownloadResult download() throws GutenbergException { + public DownloadResult download() { + DownloadResult downloadResult = new DownloadResult(); + if (getResource() != null && getSavePath() != null) { - BufferedOutputStream outputFileStream = null; + HttpURLConnection httpConnection = null; try { - int offset = 0; - final byte[] buffer = new byte[2048]; - int read = 0; - httpConnection = (HttpURLConnection) getResource().openConnection(); configHeader(httpConnection); String outputFilePath = FileManager.getLocalFilePathFromURL(getSavePath(), getResource().toString()); - InputStream inputStream = httpConnection.getInputStream(); - outputFileStream = new BufferedOutputStream (new FileOutputStream(outputFilePath)); + + try (BufferedOutputStream outputFileStream = new BufferedOutputStream (new FileOutputStream(outputFilePath))) { - while ((read = inputStream.read(buffer)) >= 0) { - outputFileStream.write(buffer, offset, read); - outputFileStream.flush(); - } - - downloadResult.setHeaders(httpConnection); - downloadResult.setSavedFilePath(outputFilePath); - + InputStream inputStream = httpConnection.getInputStream(); + + copyResource(inputStream, outputFileStream); + + downloadResult.setHeaders(httpConnection); + downloadResult.setSavedFilePath(outputFilePath); + } log.debug("Descargado \"" + FileManager.getLocalFileName(outputFilePath) + "\" en " + getSavePath()); log.debug("Tipo: " + downloadResult.getContentType() + " Longitud: " + downloadResult.getContentLength()); } catch (ConnectException e) { log.warn("Download timeout exceeded"); } catch (UnknownHostException e) { - throw new GutenbergException("UnknownHostException", e); - } catch (IOException e) { - throw new GutenbergException("IOException", e); - } finally { - httpConnection.disconnect(); - if (outputFileStream != null) { - try { - outputFileStream.close(); - } catch (IOException e) { - throw new GutenbergException("Error closing outputFileStream", e); - } + throw new GutenbergException("Download UnknownHostException", e); + } catch (IOException e) { + throw new GutenbergException("Download IOException", e); + } finally { + if (httpConnection != null) { + httpConnection.disconnect(); } } } else { @@ -137,6 +128,16 @@ public DownloadResult download() throws GutenbergException { return downloadResult; } + private void copyResource(InputStream inputStream, BufferedOutputStream outputFileStream) throws IOException { + int offset = 0; + final byte[] buffer = new byte[2048]; + int read = 0; + while ((read = inputStream.read(buffer)) >= 0) { + outputFileStream.write(buffer, offset, read); + outputFileStream.flush(); + } + } + /** * Sets the resource of the url to download, in the form of a URL object * @param resource url address diff --git a/src/main/java/org/josfranmc/gutenberg/download/engine/DownloadResult.java b/src/main/java/org/josfranmc/gutenberg/download/engine/DownloadResult.java index 00ae590..c4d8b51 100644 --- a/src/main/java/org/josfranmc/gutenberg/download/engine/DownloadResult.java +++ b/src/main/java/org/josfranmc/gutenberg/download/engine/DownloadResult.java @@ -34,11 +34,11 @@ public DownloadResult() { */ public void setHeaders(URLConnection urlConnection) { headers = urlConnection.getHeaderFields(); - /*Set keys = headers.keySet(); - for (String key : keys) { - String val = urlConnection.getHeaderField(key); - System.out.println(key+" | "+val); - }*/ +// Set keys = headers.keySet(); +// for (String key : keys) { +// String val = urlConnection.getHeaderField(key); +// System.out.println(key+" | "+val); +// } } /** @@ -53,21 +53,21 @@ public Map> getHeaders() { * @return the value of the header field "Last-Modified" */ public String getLastModified() { - return (headers != null) ? headers.get("Last-Modified").get(0).toString() : ""; + return (headers != null) ? headers.get("Last-Modified").get(0) : ""; } /** * @return the value of the header field "Content-Type" */ public String getContentType() { - return (headers != null) ? headers.get("Content-Type").get(0).toString() : ""; + return (headers != null) ? headers.get("Content-Type").get(0) : ""; } /** * @return the value of the header field "Content-Length" */ public String getContentLength() { - return (headers != null) ? headers.get("Content-Length").get(0).toString() : ""; + return (headers != null) ? headers.get("Content-Length").get(0) : ""; } /** diff --git a/src/main/java/org/josfranmc/gutenberg/download/engine/IDownloadEngine.java b/src/main/java/org/josfranmc/gutenberg/download/engine/IDownloadEngine.java index cfdb299..1227567 100644 --- a/src/main/java/org/josfranmc/gutenberg/download/engine/IDownloadEngine.java +++ b/src/main/java/org/josfranmc/gutenberg/download/engine/IDownloadEngine.java @@ -18,9 +18,8 @@ public interface IDownloadEngine { * @return the result of the download in the form of a DownloadResult object * @throws GutenbergException if there is any error downloading * @see DownloadResult - * @see GutenbergException */ - public DownloadResult download() throws GutenbergException; + public DownloadResult download(); /** * Sets the resource of the url to download, in the form of a URL object diff --git a/src/main/java/org/josfranmc/gutenberg/util/FileManager.java b/src/main/java/org/josfranmc/gutenberg/util/FileManager.java index 64b284c..4576110 100644 --- a/src/main/java/org/josfranmc/gutenberg/util/FileManager.java +++ b/src/main/java/org/josfranmc/gutenberg/util/FileManager.java @@ -2,7 +2,6 @@ import java.io.File; import java.io.FileInputStream; -import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.nio.file.DirectoryStream; @@ -24,9 +23,9 @@ */ public class FileManager { - private final static Logger log = Logger.getLogger(FileManager.class); + private static final Logger log = Logger.getLogger(FileManager.class); - private final static String FILE_SEPARATOR = System.getProperty("file.separator"); + private static final String FILE_SEPARATOR = System.getProperty("file.separator"); FileManager() { @@ -54,7 +53,7 @@ public static boolean fileExists(String localPath, String url) { */ public static String getLocalFilePathFromURL(String savePath, String link) { String path = (!savePath.endsWith(FILE_SEPARATOR)) ? savePath + FILE_SEPARATOR : savePath; - String fileName = link.substring(link.lastIndexOf("/")+1, link.length()) + String fileName = link.substring(link.lastIndexOf('/')+1, link.length()) .replace("?", "_") .replace("&", "&"); return (path + fileName); @@ -78,46 +77,36 @@ public static String getLocalFileName(String str) { */ public static void unzipFiles(String inputPath, String outputPath) { if (inputPath != null && outputPath != null) { - String fileName = null; - byte[] buffer = new byte[1024]; - int len = 0; - if (!outputPath.endsWith(FILE_SEPARATOR)) { - outputPath = outputPath + FILE_SEPARATOR; - } + inputPath = checkAndFixPath(inputPath); + outputPath = checkAndFixPath(outputPath); for (String zipFile : getZipFiles(inputPath)) { - try { - ZipInputStream zis = new ZipInputStream(new FileInputStream(zipFile)); + try (ZipInputStream zis = new ZipInputStream(new FileInputStream(zipFile))) { ZipEntry zipEntry = zis.getNextEntry(); while (zipEntry != null) { - fileName = getFileName(zipEntry.getName()); - FileOutputStream fos = new FileOutputStream(new File(outputPath + fileName)); - while ((len = zis.read(buffer)) > 0) { - fos.write(buffer, 0, len); - } - fos.close(); - zipEntry = zis.getNextEntry(); + String targetFile = outputPath + getFileName(zipEntry.getName()) ; + extracFile(zis, targetFile); + zipEntry = zis.getNextEntry(); } - zis.closeEntry(); - zis.close(); - log.debug("Obtenido " + outputPath + fileName); - } catch (FileNotFoundException e) { - log.error("File Not Found: " + zipFile); } catch (IOException e) { - log.error(e); - } + log.error("IOException with zip file" + zipFile); + } } } else { log.warn("Rutas no válidas"); } } + private static String checkAndFixPath(String path) { + return (!path.endsWith(FILE_SEPARATOR)) ? (path + FILE_SEPARATOR) : path; + } + /** * Returns a List with the paths of all existing files with .zip extension in a given folder. * @param path folder path where search files * @return a List with the files paths */ private static List getZipFiles(String path) { - List zipFiles = new ArrayList(); + List zipFiles = new ArrayList<>(); try (DirectoryStream stream = Files.newDirectoryStream(Paths.get(path), "*.zip")) { for (Path file: stream) { zipFiles.add(file.toString()); @@ -131,9 +120,24 @@ private static List getZipFiles(String path) { private static String getFileName(String entryName) { String fileName = entryName; int index = -1; - if ((index = fileName.lastIndexOf("/")) != -1) { + if ((index = fileName.lastIndexOf('/')) != -1) { fileName = fileName.substring(index+1); + if (fileName.contains("..")) { + throw new GutenbergException("Entry is trying to leave the target dir: " + entryName); + } } return fileName; } + + private static void extracFile(ZipInputStream zis, String targetFile) { + byte[] buffer = new byte[1024]; + int len = 0; + try (FileOutputStream fos = new FileOutputStream(new File(targetFile))) { + while ((len = zis.read(buffer)) > 0) { + fos.write(buffer, 0, len); + } + } catch (IOException e) { + log.error("Error unzipping file " + targetFile); + } + } } diff --git a/src/main/java/org/josfranmc/gutenberg/util/FileScraping.java b/src/main/java/org/josfranmc/gutenberg/util/FileScraping.java index c8c5273..5ef9ac9 100644 --- a/src/main/java/org/josfranmc/gutenberg/util/FileScraping.java +++ b/src/main/java/org/josfranmc/gutenberg/util/FileScraping.java @@ -2,6 +2,7 @@ import java.io.IOException; import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; @@ -26,12 +27,12 @@ public class FileScraping { /** * Coding of the file to analyze */ - private static String ENCODING = "ISO-8859-1"; + private static final Charset ENCODING = StandardCharsets.ISO_8859_1; /** * Regular expression pattern for detecting web links */ - private static String PATTERN = ".*href=\"([^\"]*)\".*"; + private static final String PATTERN = ".*href=\"([^\"]*)\".*"; FileScraping() { @@ -45,10 +46,10 @@ public class FileScraping { * @return a List element with links */ public static List getLinks(String filePath) { - List links = new ArrayList(); + List links = new ArrayList<>(); if (filePath != null) { Path path = Paths.get(filePath); - try (Stream stream = Files.lines(path, Charset.forName(ENCODING))) { + try (Stream stream = Files.lines(path, ENCODING)) { Pattern pattern = Pattern.compile(PATTERN); Matcher matcher = null; diff --git a/src/test/java/org/josfranmc/gutenberg/download/DownloadParamsTest.java b/src/test/java/org/josfranmc/gutenberg/download/DownloadParamsTest.java index 4f47a40..b627ab2 100644 --- a/src/test/java/org/josfranmc/gutenberg/download/DownloadParamsTest.java +++ b/src/test/java/org/josfranmc/gutenberg/download/DownloadParamsTest.java @@ -64,9 +64,4 @@ public void fileTypeExceptionTest() { DownloadParams p = new DownloadParams(); p.setFileType("doc"); } - - @Test - public void URL_BOOKS_Test() { - assertEquals("Delay incorrecto", "http://www.gutenberg.org/robot/", DownloadParams.URL_BOOKS); - } } diff --git a/src/test/java/org/josfranmc/gutenberg/download/JGutenbergDownloadTest.java b/src/test/java/org/josfranmc/gutenberg/download/JGutenbergDownloadTest.java index 11e7101..491b8cd 100644 --- a/src/test/java/org/josfranmc/gutenberg/download/JGutenbergDownloadTest.java +++ b/src/test/java/org/josfranmc/gutenberg/download/JGutenbergDownloadTest.java @@ -17,7 +17,7 @@ */ public class JGutenbergDownloadTest { - private final static String FILE_SEPARATOR = System.getProperty("file.separator"); + private static final String FILE_SEPARATOR = System.getProperty("file.separator"); /** * Comprueba los valores por defecto de la aplicación @@ -119,10 +119,10 @@ private void deleteDownloadedFiles(JGutenbergDownload jg) { String saveDir = jg.getSavePath(); String pageWithLinks = "harvest_filetypes[]=" + jg.getFileType() + "&langs[]=" + jg.getLanguage(); - File page = new File(saveDir + FILE_SEPARATOR + "zips" + FILE_SEPARATOR + pageWithLinks); + File page = new File(saveDir + "zips" + FILE_SEPARATOR + pageWithLinks); assertTrue(page.exists()); - File dirZip = new File(saveDir + FILE_SEPARATOR + "zips"); + File dirZip = new File(saveDir + "zips"); File[] filesInZipDirectory = dirZip.listFiles(); for(File f : filesInZipDirectory) { if(f.exists()) { @@ -177,6 +177,7 @@ public void downloadTwoPagesTest() { jg.downloadBooks(); deleteDownloadedFiles(jg); + assertTrue(true); } @Test @@ -198,6 +199,7 @@ public void noUnzipTest() { public void showHelpWithMainMethodTest() { String [] args = {"-h"}; JGutenbergDownload.main(args); + assertTrue(true); } @Test(expected=GutenbergException.class) From 8336d180a6fdd8884e76ae782caccfdc9a96d24e Mon Sep 17 00:00:00 2001 From: josfranmc Date: Tue, 19 Nov 2019 22:02:47 +0100 Subject: [PATCH 08/27] Corregir espaciado y tabulaciones --- .../gutenberg/download/DownloadBooks.java | 2 +- .../engine/DownloadHttpUrlConnection.java | 34 +++++++++---------- .../josfranmc/gutenberg/util/FileManager.java | 24 ++++++------- .../gutenberg/util/FileScraping.java | 26 +++++++------- 4 files changed, 43 insertions(+), 43 deletions(-) diff --git a/src/main/java/org/josfranmc/gutenberg/download/DownloadBooks.java b/src/main/java/org/josfranmc/gutenberg/download/DownloadBooks.java index a419136..6fd3d0e 100644 --- a/src/main/java/org/josfranmc/gutenberg/download/DownloadBooks.java +++ b/src/main/java/org/josfranmc/gutenberg/download/DownloadBooks.java @@ -171,7 +171,7 @@ private void incrementFinishedDownloads() { private void delayDownload() { if (getDelay() > 0) { - try { + try { Thread.sleep(getDelay()); } catch (InterruptedException e) { log.error("InterruptedException delayDownload. " + e); diff --git a/src/main/java/org/josfranmc/gutenberg/download/engine/DownloadHttpUrlConnection.java b/src/main/java/org/josfranmc/gutenberg/download/engine/DownloadHttpUrlConnection.java index cc35f88..3dc0f1e 100644 --- a/src/main/java/org/josfranmc/gutenberg/download/engine/DownloadHttpUrlConnection.java +++ b/src/main/java/org/josfranmc/gutenberg/download/engine/DownloadHttpUrlConnection.java @@ -94,30 +94,30 @@ public DownloadResult download() { HttpURLConnection httpConnection = null; try { - httpConnection = (HttpURLConnection) getResource().openConnection(); + httpConnection = (HttpURLConnection) getResource().openConnection(); configHeader(httpConnection); - String outputFilePath = FileManager.getLocalFilePathFromURL(getSavePath(), getResource().toString()); - - try (BufferedOutputStream outputFileStream = new BufferedOutputStream (new FileOutputStream(outputFilePath))) { + String outputFilePath = FileManager.getLocalFilePathFromURL(getSavePath(), getResource().toString()); - InputStream inputStream = httpConnection.getInputStream(); - - copyResource(inputStream, outputFileStream); - - downloadResult.setHeaders(httpConnection); + try (BufferedOutputStream outputFileStream = new BufferedOutputStream (new FileOutputStream(outputFilePath))) { + + InputStream inputStream = httpConnection.getInputStream(); + + copyResource(inputStream, outputFileStream); + + downloadResult.setHeaders(httpConnection); downloadResult.setSavedFilePath(outputFilePath); - } + } log.debug("Descargado \"" + FileManager.getLocalFileName(outputFilePath) + "\" en " + getSavePath()); log.debug("Tipo: " + downloadResult.getContentType() + " Longitud: " + downloadResult.getContentLength()); - } catch (ConnectException e) { - log.warn("Download timeout exceeded"); - } catch (UnknownHostException e) { - throw new GutenbergException("Download UnknownHostException", e); - } catch (IOException e) { - throw new GutenbergException("Download IOException", e); - } finally { + } catch (ConnectException e) { + log.warn("Download timeout exceeded"); + } catch (UnknownHostException e) { + throw new GutenbergException("Download UnknownHostException", e); + } catch (IOException e) { + throw new GutenbergException("Download IOException", e); + } finally { if (httpConnection != null) { httpConnection.disconnect(); } diff --git a/src/main/java/org/josfranmc/gutenberg/util/FileManager.java b/src/main/java/org/josfranmc/gutenberg/util/FileManager.java index 4576110..ad0ca2b 100644 --- a/src/main/java/org/josfranmc/gutenberg/util/FileManager.java +++ b/src/main/java/org/josfranmc/gutenberg/util/FileManager.java @@ -39,8 +39,8 @@ public class FileManager { * @return true if the file indicated by the url exists in the local path, false otherwise */ public static boolean fileExists(String localPath, String url) { - return new File(getLocalFilePathFromURL(localPath, url)).exists(); - } + return new File(getLocalFilePathFromURL(localPath, url)).exists(); + } /** * Returns the path a file must have when downloaded on the local machine.
@@ -82,8 +82,8 @@ public static void unzipFiles(String inputPath, String outputPath) { for (String zipFile : getZipFiles(inputPath)) { try (ZipInputStream zis = new ZipInputStream(new FileInputStream(zipFile))) { ZipEntry zipEntry = zis.getNextEntry(); - while (zipEntry != null) { - String targetFile = outputPath + getFileName(zipEntry.getName()) ; + while (zipEntry != null) { + String targetFile = outputPath + getFileName(zipEntry.getName()) ; extracFile(zis, targetFile); zipEntry = zis.getNextEntry(); } @@ -111,15 +111,15 @@ private static List getZipFiles(String path) { for (Path file: stream) { zipFiles.add(file.toString()); } - } catch (IOException e) { - log.error(e); - } + } catch (IOException e) { + log.error(e); + } return zipFiles; } private static String getFileName(String entryName) { - String fileName = entryName; - int index = -1; + String fileName = entryName; + int index = -1; if ((index = fileName.lastIndexOf('/')) != -1) { fileName = fileName.substring(index+1); if (fileName.contains("..")) { @@ -133,9 +133,9 @@ private static void extracFile(ZipInputStream zis, String targetFile) { byte[] buffer = new byte[1024]; int len = 0; try (FileOutputStream fos = new FileOutputStream(new File(targetFile))) { - while ((len = zis.read(buffer)) > 0) { - fos.write(buffer, 0, len); - } + while ((len = zis.read(buffer)) > 0) { + fos.write(buffer, 0, len); + } } catch (IOException e) { log.error("Error unzipping file " + targetFile); } diff --git a/src/main/java/org/josfranmc/gutenberg/util/FileScraping.java b/src/main/java/org/josfranmc/gutenberg/util/FileScraping.java index 5ef9ac9..c472d08 100644 --- a/src/main/java/org/josfranmc/gutenberg/util/FileScraping.java +++ b/src/main/java/org/josfranmc/gutenberg/util/FileScraping.java @@ -49,22 +49,22 @@ public static List getLinks(String filePath) { List links = new ArrayList<>(); if (filePath != null) { Path path = Paths.get(filePath); - try (Stream stream = Files.lines(path, ENCODING)) { - Pattern pattern = Pattern.compile(PATTERN); - Matcher matcher = null; - - Iterator it = stream.iterator(); - while (it.hasNext()) { - String line = it.next(); - matcher = pattern.matcher(line); - if (matcher.matches()) { - links.add(matcher.group(1)); - } - } + try (Stream stream = Files.lines(path, ENCODING)) { + Pattern pattern = Pattern.compile(PATTERN); + Matcher matcher = null; + + Iterator it = stream.iterator(); + while (it.hasNext()) { + String line = it.next(); + matcher = pattern.matcher(line); + if (matcher.matches()) { + links.add(matcher.group(1)); + } + } } catch (IOException e) { log.error(e); } - } + } return links; } } From 055e414732bc40380e0e2b0db71d69976ad39b92 Mon Sep 17 00:00:00 2001 From: josfranmc Date: Tue, 19 Nov 2019 22:06:44 +0100 Subject: [PATCH 09/27] =?UTF-8?q?Corregir=20nombre=20de=20m=C3=A9todo=20er?= =?UTF-8?q?r=C3=B3neo:=20extractFile?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/org/josfranmc/gutenberg/util/FileManager.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/josfranmc/gutenberg/util/FileManager.java b/src/main/java/org/josfranmc/gutenberg/util/FileManager.java index ad0ca2b..6119206 100644 --- a/src/main/java/org/josfranmc/gutenberg/util/FileManager.java +++ b/src/main/java/org/josfranmc/gutenberg/util/FileManager.java @@ -84,7 +84,7 @@ public static void unzipFiles(String inputPath, String outputPath) { ZipEntry zipEntry = zis.getNextEntry(); while (zipEntry != null) { String targetFile = outputPath + getFileName(zipEntry.getName()) ; - extracFile(zis, targetFile); + extractFile(zis, targetFile); zipEntry = zis.getNextEntry(); } } catch (IOException e) { @@ -129,7 +129,7 @@ private static String getFileName(String entryName) { return fileName; } - private static void extracFile(ZipInputStream zis, String targetFile) { + private static void extractFile(ZipInputStream zis, String targetFile) { byte[] buffer = new byte[1024]; int len = 0; try (FileOutputStream fos = new FileOutputStream(new File(targetFile))) { From e6ba24e125468508823d8b3847db43631eb6aaa1 Mon Sep 17 00:00:00 2001 From: josfranmc Date: Wed, 20 Nov 2019 01:03:21 +0100 Subject: [PATCH 10/27] Cambiar formato de mensaje para consola --- src/main/resources/log4j.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/log4j.properties b/src/main/resources/log4j.properties index 1744377..cb689d0 100644 --- a/src/main/resources/log4j.properties +++ b/src/main/resources/log4j.properties @@ -3,7 +3,7 @@ log4j.rootCategory=INFO,CONSOLA,FILE log4j.appender.CONSOLA=org.apache.log4j.ConsoleAppender log4j.appender.CONSOLA.layout=org.apache.log4j.PatternLayout -log4j.appender.CONSOLA.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n +log4j.appender.CONSOLA.layout.ConversionPattern=[%-p] %m%n #log4j.logger.es.josfranmc.uned.colocare.download=ALL,FILE log4j.appender.FILE=org.apache.log4j.FileAppender From bf9d7877e478719c1f415888c864c553f3bd9a0a Mon Sep 17 00:00:00 2001 From: josfranmc Date: Wed, 20 Nov 2019 14:53:43 +0100 Subject: [PATCH 11/27] Corregir clase principal para jar shade --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 4705c62..03e70ea 100644 --- a/pom.xml +++ b/pom.xml @@ -101,7 +101,7 @@ true - org.josfranmc.gutenberg.download.client.JGutenbergDownloadClient + org.josfranmc.gutenberg.download.JGutenbergDownload From a477b4d82ab6098b8f72e32bf413ace5f08f456b Mon Sep 17 00:00:00 2001 From: josfranmc Date: Wed, 20 Nov 2019 16:36:59 +0100 Subject: [PATCH 12/27] Cambio en rootlogger --- src/main/resources/log4j.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/resources/log4j.properties b/src/main/resources/log4j.properties index cb689d0..46db6ae 100644 --- a/src/main/resources/log4j.properties +++ b/src/main/resources/log4j.properties @@ -1,5 +1,5 @@ #log4j.logger.es.josfranmc.uned.colocare.download=ALL,CONSOLA,FILE -log4j.rootCategory=INFO,CONSOLA,FILE +log4j.rootLogger =INFO,CONSOLA,FILE log4j.appender.CONSOLA=org.apache.log4j.ConsoleAppender log4j.appender.CONSOLA.layout=org.apache.log4j.PatternLayout @@ -8,7 +8,7 @@ log4j.appender.CONSOLA.layout.ConversionPattern=[%-p] %m%n #log4j.logger.es.josfranmc.uned.colocare.download=ALL,FILE log4j.appender.FILE=org.apache.log4j.FileAppender log4j.appender.FILE.ImmediateFlush=true -log4j.appender.FILE.file=log/gutenbergd.log +log4j.appender.FILE.File=log/gutenbergd.log log4j.appender.FILE.layout=org.apache.log4j.PatternLayout log4j.appender.FILE.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n log4j.appender.FILE.append=false \ No newline at end of file From 50ec007ac3d0ca54dd462e7f49d66a37a9582102 Mon Sep 17 00:00:00 2001 From: josfranmc Date: Wed, 20 Nov 2019 19:41:59 +0100 Subject: [PATCH 13/27] SuppressWarnings --- .../java/org/josfranmc/gutenberg/util/GutenbergException.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/org/josfranmc/gutenberg/util/GutenbergException.java b/src/main/java/org/josfranmc/gutenberg/util/GutenbergException.java index fc478cb..6ec3409 100644 --- a/src/main/java/org/josfranmc/gutenberg/util/GutenbergException.java +++ b/src/main/java/org/josfranmc/gutenberg/util/GutenbergException.java @@ -5,10 +5,9 @@ * @author Jose Francisco Mena Ceca * @version 2.0 */ +@SuppressWarnings("serial") public class GutenbergException extends RuntimeException { - private static final long serialVersionUID = -8740400616606275937L; - public GutenbergException() { super(); } From f0992c9c8ffcf8c348befe1a021cdf3b3aa5e95c Mon Sep 17 00:00:00 2001 From: josfranmc Date: Wed, 20 Nov 2019 21:08:54 +0100 Subject: [PATCH 14/27] =?UTF-8?q?Quitar=20c=C3=B3digo=20comentado?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../download/engine/DownloadEngineFactory.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/josfranmc/gutenberg/download/engine/DownloadEngineFactory.java b/src/main/java/org/josfranmc/gutenberg/download/engine/DownloadEngineFactory.java index 9bd4894..6a312c5 100644 --- a/src/main/java/org/josfranmc/gutenberg/download/engine/DownloadEngineFactory.java +++ b/src/main/java/org/josfranmc/gutenberg/download/engine/DownloadEngineFactory.java @@ -78,9 +78,15 @@ public static IDownloadEngine create(URL target, String savePath) { return createDownloadEngine(target, savePath, DownloadEngineType.HTTP_CONNECTION); } + /** + * Creates an engine for downloading.

+ * por ahora type solo puede tomar el valor DownloadEngineType.HTTP_CONNECTION por lo que creamos directamente un objeto de esta clase + * @param target the url address to download + * @param savePath local path where to save download + * @param type engine type for downloading + * @return a download engine in the form of a IDownloadEngine object + */ private static IDownloadEngine createDownloadEngine(URL target, String savePath, DownloadEngineType type) { - //type = (type == null) ? DownloadEngineType.HTTP_CONNECTION : type; - // por ahora type solo puede tomar el valor DownloadEngineType.HTTP_CONNECTION return DownloadHttpUrlConnection.newInstance(target, savePath); } } \ No newline at end of file From a5fffd5cf28c811de1039edc8725a1afefb025f1 Mon Sep 17 00:00:00 2001 From: josfranmc Date: Wed, 20 Nov 2019 21:10:21 +0100 Subject: [PATCH 15/27] =?UTF-8?q?Modificar=20patr=C3=B3n=20de=20mensaje=20?= =?UTF-8?q?para=20apender=20CONSOLA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/log4j.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/log4j.properties b/src/main/resources/log4j.properties index 46db6ae..9ffc031 100644 --- a/src/main/resources/log4j.properties +++ b/src/main/resources/log4j.properties @@ -3,7 +3,7 @@ log4j.rootLogger =INFO,CONSOLA,FILE log4j.appender.CONSOLA=org.apache.log4j.ConsoleAppender log4j.appender.CONSOLA.layout=org.apache.log4j.PatternLayout -log4j.appender.CONSOLA.layout.ConversionPattern=[%-p] %m%n +log4j.appender.CONSOLA.layout.ConversionPattern=%m%n #log4j.logger.es.josfranmc.uned.colocare.download=ALL,FILE log4j.appender.FILE=org.apache.log4j.FileAppender From b845af55dd5e5a636a9792808664c6f64b295d8d Mon Sep 17 00:00:00 2001 From: josfranmc Date: Wed, 20 Nov 2019 21:14:54 +0100 Subject: [PATCH 16/27] =?UTF-8?q?Modificar=20tratamiento=20de=20errores.?= =?UTF-8?q?=20Modificar=20uso=20en=20l=C3=ADnea=20de=20comandos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gutenberg/download/DownloadBooks.java | 3 +- .../download/JGutenbergDownload.java | 121 ++++++++---------- .../engine/DownloadHttpUrlConnection.java | 6 +- .../download/JGutenbergDownloadTest.java | 2 +- 4 files changed, 58 insertions(+), 74 deletions(-) diff --git a/src/main/java/org/josfranmc/gutenberg/download/DownloadBooks.java b/src/main/java/org/josfranmc/gutenberg/download/DownloadBooks.java index 6fd3d0e..7bbe996 100644 --- a/src/main/java/org/josfranmc/gutenberg/download/DownloadBooks.java +++ b/src/main/java/org/josfranmc/gutenberg/download/DownloadBooks.java @@ -51,9 +51,8 @@ private void settingDownloadEngine() { * If there is a link to another page with more links, this page is downloaded and processed in the same way. * This process continues until there are no more pages.

* All downloads run on separate threads. - * @throws InterruptedException if there is an interruption while waiting ExecutorService shutdown */ - public void executeDownload() throws InterruptedException { + public void executeDownload() { settingDownloadEngine(); diff --git a/src/main/java/org/josfranmc/gutenberg/download/JGutenbergDownload.java b/src/main/java/org/josfranmc/gutenberg/download/JGutenbergDownload.java index 3c5ee66..2d80864 100644 --- a/src/main/java/org/josfranmc/gutenberg/download/JGutenbergDownload.java +++ b/src/main/java/org/josfranmc/gutenberg/download/JGutenbergDownload.java @@ -7,7 +7,6 @@ import org.apache.log4j.Logger; import org.josfranmc.gutenberg.download.engine.DownloadEngineType; -import org.josfranmc.gutenberg.util.GutenbergException; import org.josfranmc.gutenberg.util.FileManager; /** @@ -51,26 +50,21 @@ public void setParameters(DownloadParams parameters) { } /** - * Begins the download books process. + * Begins the process of downloading books.

+ * If there is any problem It can be thrown GutenbergException */ public void downloadBooks() { - try { - printParameters(); - createDirectoriesForDownloads(); - log.info("BEGIN BOOKS DOWNLOAD " + getCurrentTime()); - DownloadBooks downloader = new DownloadBooks(parameters); - log.info("Downloading..."); - downloader.executeDownload(); - if (parameters.isUnzip()) { - unzipFiles(); - } - log.info("END BOOKS DOWNLOAD " + getCurrentTime()); - } catch (GutenbergException e) { - log.error(e.getCause()); - throw e; - } catch (Exception e) { - log.error(e.getMessage()); + printParameters(); + createDirectoriesForDownloads(); + log.info("BEGIN BOOKS DOWNLOAD " + getCurrentTime()); + DownloadBooks downloader = new DownloadBooks(parameters); + log.info("Downloading..."); + downloader.executeDownload(); + if (parameters.isUnzip()) { + log.info("Unzipping files... "); + FileManager.unzipFiles(parameters.getZipsPath(), parameters.getSavePath()); } + log.info("END BOOKS DOWNLOAD " + getCurrentTime()); } private void createDirectoriesForDownloads() { @@ -98,16 +92,6 @@ private void createZipsDirectory() { } } } - - private void unzipFiles() { - String zipPath = parameters.getZipsPath(); - String unZipPath = parameters.getSavePath(); - log.info("UNZIP FILES"); - log.info("Zip files path: " + zipPath); - log.info("Unzipping path: " + unZipPath); - log.info("Unzipping... "); - FileManager.unzipFiles(zipPath, unZipPath); - } /** * @return the type of files to download @@ -249,7 +233,7 @@ private String getCurrentTime() { } private void printParameters() { - log.info("Parameters:"); + log.info("PARAMETERS:"); log.info(" urlBase = " + parameters.getUrlBase().toString()); log.info(" savePath = " + parameters.getSavePath()); log.info(" overwrite = " + parameters.isOverwrite()); @@ -268,72 +252,71 @@ public static void main(String [] args){ showHelp(); } else { DownloadParams params = getParametersFromCommandLine(args); - if (params != null) { - JGutenbergDownload jg = new JGutenbergDownload(); - jg.setParameters(params); - jg.downloadBooks(); - } + JGutenbergDownload jg = new JGutenbergDownload(); + jg.setParameters(params); + jg.downloadBooks(); } } /** - * Reads settings parameters from command line. + * Reads settings parameters from command line.
+ * Throws an Exception if there is any error. * @param args list of parameters obtained from the command line - * @return a DownloadParams object or null if there is any error + * @return a DownloadParams object. */ private static DownloadParams getParametersFromCommandLine(String [] args) { - log.debug("Total parámetros: " + args.length); - DownloadParams params = null; - params = new DownloadParams(); - for (int i = 0; i < args.length; i+=2) { + DownloadParams params = new DownloadParams(); + int i = 0; + int step = 0; + while (i < args.length) { try { - log.debug("argumento " + args[i] + " valor " + args[i+1]); if (args[i].startsWith("-f")) { params.setFileType(args[i+1]); + step = 2; } else if (args[i].equals("-l")) { params.setLanguage(args[i+1]); + step = 2; } else if (args[i].equals("-s")) { params.setSavePath(args[i+1]); - } else if (args[i].equals("-o")) { - params.setOverwrite(Boolean.valueOf(args[i+1])); + step = 2; } else if (args[i].equals("-d")) { params.setDelay(Integer.parseInt(args[i+1])); - } else if (args[i].equals("-z")) { - params.setUnzip(Boolean.valueOf(args[i+1])); + step = 2; } else if (args[i].equals("-m")) { params.setMaxFilesToDownload(Integer.parseInt(args[i+1])); + step = 2; + } else if (args[i].equals("-o")) { + params.setOverwrite(true); + step = 1; + } else if (args[i].equals("-z")) { + params.setUnzip(false); + step = 1; } else { - System.err.println("Parameter: " + args[i] + " unrecognized. Run JGutenbergDownload -h to show options."); - params = null; - break; + throw new IllegalArgumentException("Parameter " + args[i]); } } catch (ArrayIndexOutOfBoundsException a) { - params = null; - System.err.println("[ERROR] Incorrect number of parameters"); - break; - } - catch (Exception e) { - params = null; - System.err.println("[ERROR] reading parameter " + i + ". Parameter = " + args[i] + ", Value = " + args[i+1]); - log.error(e); - break; + throw new IllegalArgumentException("Parameter " + args[i]); + } catch (Exception e) { + throw e; } + i+=step; } return params; } private static void showHelp() { - System.out.println(""); - System.out.println("Options:"); - System.out.println(" -f type of files to download (default txt)"); - System.out.println(" -l language of books to download (default es)"); - System.out.println(" -s download path on local machine (default program's folder)"); - System.out.println(" -o overwrite existing files (default false)"); - System.out.println(" -d delay between downloads in milliseconds (default 2000)"); - System.out.println(" -z unzip downloads (default true)"); - System.out.println(" -m max number of downloads (default 10, 0 for dowload all)"); - System.out.println(""); - System.out.println("(only -h to show options list)"); - System.out.println(""); + log.info(""); + log.info("Usage: java -jar JGutenbergDownload [options]"); + log.info("Options:"); + log.info(" -f xxx (xxx type of files to download, default: txt)"); + log.info(" -l xx (xx language of books to download, default: es)"); + log.info(" -s xxx (xxx download path on local machine, default: program folder)"); + log.info(" -d xxx (xxx delay between downloads in milliseconds, default 2000)"); + log.info(" -m xx (xx max number of downloads (default 10, 0 for dowload all)"); + log.info(" -o ( overwrite existing files, default: false)"); + log.info(" -z ( don't unzip downloads, default: true)"); + log.info(""); + log.info("(only -h to show options list)"); + log.info(""); } } diff --git a/src/main/java/org/josfranmc/gutenberg/download/engine/DownloadHttpUrlConnection.java b/src/main/java/org/josfranmc/gutenberg/download/engine/DownloadHttpUrlConnection.java index 3dc0f1e..bab7b5a 100644 --- a/src/main/java/org/josfranmc/gutenberg/download/engine/DownloadHttpUrlConnection.java +++ b/src/main/java/org/josfranmc/gutenberg/download/engine/DownloadHttpUrlConnection.java @@ -114,9 +114,11 @@ public DownloadResult download() { } catch (ConnectException e) { log.warn("Download timeout exceeded"); } catch (UnknownHostException e) { - throw new GutenbergException("Download UnknownHostException", e); + log.error("[ERROR] UnknownHostException in download engine"); + throw new GutenbergException("UnknownHostException in download engine", e); } catch (IOException e) { - throw new GutenbergException("Download IOException", e); + log.error("[ERROR] IOException in download engine"); + throw new GutenbergException("IOException in download engine", e); } finally { if (httpConnection != null) { httpConnection.disconnect(); diff --git a/src/test/java/org/josfranmc/gutenberg/download/JGutenbergDownloadTest.java b/src/test/java/org/josfranmc/gutenberg/download/JGutenbergDownloadTest.java index 491b8cd..7ef290e 100644 --- a/src/test/java/org/josfranmc/gutenberg/download/JGutenbergDownloadTest.java +++ b/src/test/java/org/josfranmc/gutenberg/download/JGutenbergDownloadTest.java @@ -158,7 +158,7 @@ public void downloadOneBookWithMainMethodTest() { deleteDownloadedFiles(jg); } - @Test + @Test(expected=IllegalArgumentException.class) public void wrongParameterskWithMainMethodTest() { String [] args = {"-d", "0", "-w", "1", "-s", "testdownload3"}; From 40b5ccb0ae2b42180428d5ee9b45a71098785315 Mon Sep 17 00:00:00 2001 From: josfranmc Date: Wed, 20 Nov 2019 21:17:47 +0100 Subject: [PATCH 17/27] Modificar description --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 03e70ea..d2b47ab 100644 --- a/pom.xml +++ b/pom.xml @@ -8,7 +8,7 @@ jar JGutenbergDownload - Download files from the Gutenberg project repositories + It allows to download books from the Gutenberg project repositories. From aa633fc419974f6d1ea7e45d06909fcf5792d3ce Mon Sep 17 00:00:00 2001 From: josfranmc Date: Wed, 20 Nov 2019 21:18:36 +0100 Subject: [PATCH 18/27] Quitar comentarios --- src/main/resources/log4j.properties | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/main/resources/log4j.properties b/src/main/resources/log4j.properties index 9ffc031..26daea2 100644 --- a/src/main/resources/log4j.properties +++ b/src/main/resources/log4j.properties @@ -1,11 +1,9 @@ -#log4j.logger.es.josfranmc.uned.colocare.download=ALL,CONSOLA,FILE -log4j.rootLogger =INFO,CONSOLA,FILE +log4j.rootLogger=INFO,CONSOLA,FILE log4j.appender.CONSOLA=org.apache.log4j.ConsoleAppender log4j.appender.CONSOLA.layout=org.apache.log4j.PatternLayout log4j.appender.CONSOLA.layout.ConversionPattern=%m%n -#log4j.logger.es.josfranmc.uned.colocare.download=ALL,FILE log4j.appender.FILE=org.apache.log4j.FileAppender log4j.appender.FILE.ImmediateFlush=true log4j.appender.FILE.File=log/gutenbergd.log From 0f472dfb2958634cc961cbf82d5a1236eb61e439 Mon Sep 17 00:00:00 2001 From: josfranmc Date: Wed, 20 Nov 2019 21:33:14 +0100 Subject: [PATCH 19/27] Javadoc actualizado --- javadoc/allclasses-frame.html | 30 + javadoc/allclasses-noframe.html | 30 + javadoc/constant-values.html | 153 ++++ javadoc/deprecated-list.html | 124 ++++ javadoc/help-doc.html | 229 ++++++ javadoc/index-files/index-1.html | 151 ++++ javadoc/index-files/index-10.html | 133 ++++ javadoc/index-files/index-11.html | 129 ++++ javadoc/index-files/index-12.html | 219 ++++++ javadoc/index-files/index-13.html | 135 ++++ javadoc/index-files/index-14.html | 136 ++++ javadoc/index-files/index-2.html | 177 +++++ javadoc/index-files/index-3.html | 131 ++++ javadoc/index-files/index-4.html | 139 ++++ javadoc/index-files/index-5.html | 201 ++++++ javadoc/index-files/index-6.html | 139 ++++ javadoc/index-files/index-7.html | 135 ++++ javadoc/index-files/index-8.html | 131 ++++ javadoc/index-files/index-9.html | 131 ++++ javadoc/index.html | 74 ++ .../gutenberg/download/DownloadBooks.html | 288 ++++++++ .../gutenberg/download/DownloadParams.html | 678 ++++++++++++++++++ .../gutenberg/download/DownloadThread.html | 295 ++++++++ .../download/JGutenbergDownload.html | 678 ++++++++++++++++++ .../download/class-use/DownloadBooks.html | 124 ++++ .../download/class-use/DownloadParams.html | 194 +++++ .../download/class-use/DownloadThread.html | 124 ++++ .../class-use/JGutenbergDownload.html | 124 ++++ .../engine/DownloadEngineFactory.html | 381 ++++++++++ .../download/engine/DownloadEngineType.html | 339 +++++++++ .../engine/DownloadHttpUrlConnection.html | 378 ++++++++++ .../download/engine/DownloadResult.html | 391 ++++++++++ .../download/engine/IDownloadEngine.html | 320 +++++++++ .../class-use/DownloadEngineFactory.html | 124 ++++ .../engine/class-use/DownloadEngineType.html | 250 +++++++ .../class-use/DownloadHttpUrlConnection.html | 124 ++++ .../engine/class-use/DownloadResult.html | 172 +++++ .../engine/class-use/IDownloadEngine.html | 222 ++++++ .../download/engine/package-frame.html | 30 + .../download/engine/package-summary.html | 190 +++++ .../download/engine/package-tree.html | 155 ++++ .../download/engine/package-use.html | 190 +++++ .../gutenberg/download/package-frame.html | 23 + .../gutenberg/download/package-summary.html | 162 +++++ .../gutenberg/download/package-tree.html | 140 ++++ .../gutenberg/download/package-use.html | 159 ++++ .../josfranmc/gutenberg/util/FileManager.html | 329 +++++++++ .../gutenberg/util/FileScraping.html | 254 +++++++ .../gutenberg/util/GutenbergException.html | 310 ++++++++ .../gutenberg/util/class-use/FileManager.html | 124 ++++ .../util/class-use/FileScraping.html | 124 ++++ .../util/class-use/GutenbergException.html | 124 ++++ .../gutenberg/util/package-frame.html | 25 + .../gutenberg/util/package-summary.html | 167 +++++ .../gutenberg/util/package-tree.html | 151 ++++ .../josfranmc/gutenberg/util/package-use.html | 124 ++++ javadoc/overview-frame.html | 23 + javadoc/overview-summary.html | 146 ++++ javadoc/overview-tree.html | 176 +++++ javadoc/package-list | 3 + javadoc/script.js | 30 + javadoc/serialized-form.html | 137 ++++ javadoc/stylesheet.css | 574 +++++++++++++++ 63 files changed, 11803 insertions(+) create mode 100644 javadoc/allclasses-frame.html create mode 100644 javadoc/allclasses-noframe.html create mode 100644 javadoc/constant-values.html create mode 100644 javadoc/deprecated-list.html create mode 100644 javadoc/help-doc.html create mode 100644 javadoc/index-files/index-1.html create mode 100644 javadoc/index-files/index-10.html create mode 100644 javadoc/index-files/index-11.html create mode 100644 javadoc/index-files/index-12.html create mode 100644 javadoc/index-files/index-13.html create mode 100644 javadoc/index-files/index-14.html create mode 100644 javadoc/index-files/index-2.html create mode 100644 javadoc/index-files/index-3.html create mode 100644 javadoc/index-files/index-4.html create mode 100644 javadoc/index-files/index-5.html create mode 100644 javadoc/index-files/index-6.html create mode 100644 javadoc/index-files/index-7.html create mode 100644 javadoc/index-files/index-8.html create mode 100644 javadoc/index-files/index-9.html create mode 100644 javadoc/index.html create mode 100644 javadoc/org/josfranmc/gutenberg/download/DownloadBooks.html create mode 100644 javadoc/org/josfranmc/gutenberg/download/DownloadParams.html create mode 100644 javadoc/org/josfranmc/gutenberg/download/DownloadThread.html create mode 100644 javadoc/org/josfranmc/gutenberg/download/JGutenbergDownload.html create mode 100644 javadoc/org/josfranmc/gutenberg/download/class-use/DownloadBooks.html create mode 100644 javadoc/org/josfranmc/gutenberg/download/class-use/DownloadParams.html create mode 100644 javadoc/org/josfranmc/gutenberg/download/class-use/DownloadThread.html create mode 100644 javadoc/org/josfranmc/gutenberg/download/class-use/JGutenbergDownload.html create mode 100644 javadoc/org/josfranmc/gutenberg/download/engine/DownloadEngineFactory.html create mode 100644 javadoc/org/josfranmc/gutenberg/download/engine/DownloadEngineType.html create mode 100644 javadoc/org/josfranmc/gutenberg/download/engine/DownloadHttpUrlConnection.html create mode 100644 javadoc/org/josfranmc/gutenberg/download/engine/DownloadResult.html create mode 100644 javadoc/org/josfranmc/gutenberg/download/engine/IDownloadEngine.html create mode 100644 javadoc/org/josfranmc/gutenberg/download/engine/class-use/DownloadEngineFactory.html create mode 100644 javadoc/org/josfranmc/gutenberg/download/engine/class-use/DownloadEngineType.html create mode 100644 javadoc/org/josfranmc/gutenberg/download/engine/class-use/DownloadHttpUrlConnection.html create mode 100644 javadoc/org/josfranmc/gutenberg/download/engine/class-use/DownloadResult.html create mode 100644 javadoc/org/josfranmc/gutenberg/download/engine/class-use/IDownloadEngine.html create mode 100644 javadoc/org/josfranmc/gutenberg/download/engine/package-frame.html create mode 100644 javadoc/org/josfranmc/gutenberg/download/engine/package-summary.html create mode 100644 javadoc/org/josfranmc/gutenberg/download/engine/package-tree.html create mode 100644 javadoc/org/josfranmc/gutenberg/download/engine/package-use.html create mode 100644 javadoc/org/josfranmc/gutenberg/download/package-frame.html create mode 100644 javadoc/org/josfranmc/gutenberg/download/package-summary.html create mode 100644 javadoc/org/josfranmc/gutenberg/download/package-tree.html create mode 100644 javadoc/org/josfranmc/gutenberg/download/package-use.html create mode 100644 javadoc/org/josfranmc/gutenberg/util/FileManager.html create mode 100644 javadoc/org/josfranmc/gutenberg/util/FileScraping.html create mode 100644 javadoc/org/josfranmc/gutenberg/util/GutenbergException.html create mode 100644 javadoc/org/josfranmc/gutenberg/util/class-use/FileManager.html create mode 100644 javadoc/org/josfranmc/gutenberg/util/class-use/FileScraping.html create mode 100644 javadoc/org/josfranmc/gutenberg/util/class-use/GutenbergException.html create mode 100644 javadoc/org/josfranmc/gutenberg/util/package-frame.html create mode 100644 javadoc/org/josfranmc/gutenberg/util/package-summary.html create mode 100644 javadoc/org/josfranmc/gutenberg/util/package-tree.html create mode 100644 javadoc/org/josfranmc/gutenberg/util/package-use.html create mode 100644 javadoc/overview-frame.html create mode 100644 javadoc/overview-summary.html create mode 100644 javadoc/overview-tree.html create mode 100644 javadoc/package-list create mode 100644 javadoc/script.js create mode 100644 javadoc/serialized-form.html create mode 100644 javadoc/stylesheet.css diff --git a/javadoc/allclasses-frame.html b/javadoc/allclasses-frame.html new file mode 100644 index 0000000..7806993 --- /dev/null +++ b/javadoc/allclasses-frame.html @@ -0,0 +1,30 @@ + + + + + +All Classes + + + + + +

All Classes

+ + + diff --git a/javadoc/allclasses-noframe.html b/javadoc/allclasses-noframe.html new file mode 100644 index 0000000..7a0cd96 --- /dev/null +++ b/javadoc/allclasses-noframe.html @@ -0,0 +1,30 @@ + + + + + +All Classes + + + + + +

All Classes

+ + + diff --git a/javadoc/constant-values.html b/javadoc/constant-values.html new file mode 100644 index 0000000..d503f87 --- /dev/null +++ b/javadoc/constant-values.html @@ -0,0 +1,153 @@ + + + + + +Constant Field Values + + + + + + + + +
+ + + + + + + +
+ + +
+

Constant Field Values

+

Contents

+ +
+
+ + +

org.josfranmc.*

+
    +
  • + + + + + + + + + + + + + + +
    org.josfranmc.gutenberg.download.DownloadParams 
    Modifier and TypeConstant FieldValue
    + +public static final java.lang.StringURL_BOOKS"http://www.gutenberg.org/robot/"
    +
  • +
+
+ +
+ + + + + + + +
+ + + + diff --git a/javadoc/deprecated-list.html b/javadoc/deprecated-list.html new file mode 100644 index 0000000..f27e7b4 --- /dev/null +++ b/javadoc/deprecated-list.html @@ -0,0 +1,124 @@ + + + + + +Deprecated List + + + + + + + + +
+ + + + + + + +
+ + +
+

Deprecated API

+

Contents

+
+ +
+ + + + + + + +
+ + + + diff --git a/javadoc/help-doc.html b/javadoc/help-doc.html new file mode 100644 index 0000000..ca814e9 --- /dev/null +++ b/javadoc/help-doc.html @@ -0,0 +1,229 @@ + + + + + +API Help + + + + + + + + +
+ + + + + + + +
+ + +
+

How This API Document Is Organized

+
This API (Application Programming Interface) document has pages corresponding to the items in the navigation bar, described as follows.
+
+
+
    +
  • +

    Overview

    +

    The Overview page is the front page of this API document and provides a list of all packages with a summary for each. This page can also contain an overall description of the set of packages.

    +
  • +
  • +

    Package

    +

    Each package has a page that contains a list of its classes and interfaces, with a summary for each. This page can contain six categories:

    +
      +
    • Interfaces (italic)
    • +
    • Classes
    • +
    • Enums
    • +
    • Exceptions
    • +
    • Errors
    • +
    • Annotation Types
    • +
    +
  • +
  • +

    Class/Interface

    +

    Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a class/interface description, summary tables, and detailed member descriptions:

    +
      +
    • Class inheritance diagram
    • +
    • Direct Subclasses
    • +
    • All Known Subinterfaces
    • +
    • All Known Implementing Classes
    • +
    • Class/interface declaration
    • +
    • Class/interface description
    • +
    +
      +
    • Nested Class Summary
    • +
    • Field Summary
    • +
    • Constructor Summary
    • +
    • Method Summary
    • +
    +
      +
    • Field Detail
    • +
    • Constructor Detail
    • +
    • Method Detail
    • +
    +

    Each summary entry contains the first sentence from the detailed description for that item. The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.

    +
  • +
  • +

    Annotation Type

    +

    Each annotation type has its own separate page with the following sections:

    +
      +
    • Annotation Type declaration
    • +
    • Annotation Type description
    • +
    • Required Element Summary
    • +
    • Optional Element Summary
    • +
    • Element Detail
    • +
    +
  • +
  • +

    Enum

    +

    Each enum has its own separate page with the following sections:

    +
      +
    • Enum declaration
    • +
    • Enum description
    • +
    • Enum Constant Summary
    • +
    • Enum Constant Detail
    • +
    +
  • +
  • +

    Use

    +

    Each documented package, class and interface has its own Use page. This page describes what packages, classes, methods, constructors and fields use any part of the given class or package. Given a class or interface A, its Use page includes subclasses of A, fields declared as A, methods that return A, and methods and constructors with parameters of type A. You can access this page by first going to the package, class or interface, then clicking on the "Use" link in the navigation bar.

    +
  • +
  • +

    Tree (Class Hierarchy)

    +

    There is a Class Hierarchy page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. The classes are organized by inheritance structure starting with java.lang.Object. The interfaces do not inherit from java.lang.Object.

    +
      +
    • When viewing the Overview page, clicking on "Tree" displays the hierarchy for all packages.
    • +
    • When viewing a particular package, class or interface page, clicking "Tree" displays the hierarchy for only that package.
    • +
    +
  • +
  • +

    Deprecated API

    +

    The Deprecated API page lists all of the API that have been deprecated. A deprecated API is not recommended for use, generally due to improvements, and a replacement API is usually given. Deprecated APIs may be removed in future implementations.

    +
  • +
  • +

    Index

    +

    The Index contains an alphabetic list of all classes, interfaces, constructors, methods, and fields.

    +
  • +
  • +

    Prev/Next

    +

    These links take you to the next or previous class, interface, package, or related page.

    +
  • +
  • +

    Frames/No Frames

    +

    These links show and hide the HTML frames. All pages are available with or without frames.

    +
  • +
  • +

    All Classes

    +

    The All Classes link shows all classes and interfaces except non-static nested types.

    +
  • +
  • +

    Serialized Form

    +

    Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to re-implementors, not to developers using the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See also" section of the class description.

    +
  • +
  • +

    Constant Field Values

    +

    The Constant Field Values page lists the static final fields and their values.

    +
  • +
+This help file applies to API documentation generated using the standard doclet.
+ +
+ + + + + + + +
+ + + + diff --git a/javadoc/index-files/index-1.html b/javadoc/index-files/index-1.html new file mode 100644 index 0000000..895ad11 --- /dev/null +++ b/javadoc/index-files/index-1.html @@ -0,0 +1,151 @@ + + + + + +C-Index + + + + + + + + +
+ + + + + + + +
+ + +
C D E F G I J M N O R S U V  + + +

C

+
+
create() - Static method in class org.josfranmc.gutenberg.download.engine.DownloadEngineFactory
+
+
Creates an engine for downloading.
+
+
create(DownloadEngineType) - Static method in class org.josfranmc.gutenberg.download.engine.DownloadEngineFactory
+
+
Creates a download engine of the indicated type.
+
+
create(URL, DownloadEngineType) - Static method in class org.josfranmc.gutenberg.download.engine.DownloadEngineFactory
+
+
Creates a download engine of the indicated type for downloading an url.
+
+
create(URL) - Static method in class org.josfranmc.gutenberg.download.engine.DownloadEngineFactory
+
+
Creates an engine for downloading an url.
+
+
create(URL, String, DownloadEngineType) - Static method in class org.josfranmc.gutenberg.download.engine.DownloadEngineFactory
+
+
Creates an engine for downloading.
+
+
create(URL, String) - Static method in class org.josfranmc.gutenberg.download.engine.DownloadEngineFactory
+
+
Creates an engine for downloading.
+
+
+C D E F G I J M N O R S U V 
+ +
+ + + + + + + +
+ + + + diff --git a/javadoc/index-files/index-10.html b/javadoc/index-files/index-10.html new file mode 100644 index 0000000..d19892c --- /dev/null +++ b/javadoc/index-files/index-10.html @@ -0,0 +1,133 @@ + + + + + +O-Index + + + + + + + + +
+ + + + + + + +
+ + +
C D E F G I J M N O R S U V  + + +

O

+
+
org.josfranmc.gutenberg.download - package org.josfranmc.gutenberg.download
+
 
+
org.josfranmc.gutenberg.download.engine - package org.josfranmc.gutenberg.download.engine
+
 
+
org.josfranmc.gutenberg.util - package org.josfranmc.gutenberg.util
+
 
+
+C D E F G I J M N O R S U V 
+ +
+ + + + + + + +
+ + + + diff --git a/javadoc/index-files/index-11.html b/javadoc/index-files/index-11.html new file mode 100644 index 0000000..c77c73d --- /dev/null +++ b/javadoc/index-files/index-11.html @@ -0,0 +1,129 @@ + + + + + +R-Index + + + + + + + + +
+ + + + + + + +
+ + +
C D E F G I J M N O R S U V  + + +

R

+
+
run() - Method in class org.josfranmc.gutenberg.download.DownloadThread
+
 
+
+C D E F G I J M N O R S U V 
+ +
+ + + + + + + +
+ + + + diff --git a/javadoc/index-files/index-12.html b/javadoc/index-files/index-12.html new file mode 100644 index 0000000..7c5b398 --- /dev/null +++ b/javadoc/index-files/index-12.html @@ -0,0 +1,219 @@ + + + + + +S-Index + + + + + + + + +
+ + + + + + + +
+ + +
C D E F G I J M N O R S U V  + + +

S

+
+
setDelay(int) - Method in class org.josfranmc.gutenberg.download.DownloadParams
+
+
Sets delay between downloads
+
+
setDelay(int) - Method in class org.josfranmc.gutenberg.download.JGutenbergDownload
+
+
Sets delay between downloads
+
+
setEngineType(DownloadEngineType) - Method in class org.josfranmc.gutenberg.download.DownloadParams
+
+
Sets the type of downloading engine to use
+
+
setEngineType(DownloadEngineType) - Method in class org.josfranmc.gutenberg.download.JGutenbergDownload
+
+
Sets the type of downloading engine to use
+
+
setFileType(String) - Method in class org.josfranmc.gutenberg.download.DownloadParams
+
+
Sets the type of file to download.
+
+
setFileType(String) - Method in class org.josfranmc.gutenberg.download.JGutenbergDownload
+
+
Sets the type of file to download.
+
+
setHeaders(URLConnection) - Method in class org.josfranmc.gutenberg.download.engine.DownloadResult
+
+
Sets the header obtained in response to a connection
+
+
setLanguage(String) - Method in class org.josfranmc.gutenberg.download.DownloadParams
+
+
Sets the language of the files to download acording to Gutenberg nomeclature.
+
+
setLanguage(String) - Method in class org.josfranmc.gutenberg.download.JGutenbergDownload
+
+
Sets the language of the files to download acording to Gutenberg nomeclature.
+
+
setMaxFilesToDownload(int) - Method in class org.josfranmc.gutenberg.download.DownloadParams
+
+
Sets the maximum number of files to download.
+
+
setMaxFilesToDownload(int) - Method in class org.josfranmc.gutenberg.download.JGutenbergDownload
+
+
Sets the maximum number of files to download.
+
+
setOverwrite(boolean) - Method in class org.josfranmc.gutenberg.download.DownloadParams
+
+
Sets if the existing files must be overwritten by the downloaded ones
+
+
setOverwrite(boolean) - Method in class org.josfranmc.gutenberg.download.JGutenbergDownload
+
+
Sets if the existing files must be overwritten by the downloaded ones
+
+
setParameters(DownloadParams) - Method in class org.josfranmc.gutenberg.download.JGutenbergDownload
+
+
Sets the application parameters through a DownloadParams object
+
+
setResource(URL) - Method in class org.josfranmc.gutenberg.download.engine.DownloadHttpUrlConnection
+
+
Sets the resource of the url to download, in the form of a URL object
+
+
setResource(URL) - Method in interface org.josfranmc.gutenberg.download.engine.IDownloadEngine
+
+
Sets the resource of the url to download, in the form of a URL object
+
+
setSavedFilePath(String) - Method in class org.josfranmc.gutenberg.download.engine.DownloadResult
+
+
Sets the path of the downloaded file on the local machine.
+
+
setSavePath(String) - Method in class org.josfranmc.gutenberg.download.DownloadParams
+
+
Sets folder path where to get downloaded resources
+
+
setSavePath(String) - Method in class org.josfranmc.gutenberg.download.engine.DownloadHttpUrlConnection
+
+
Sets the local path where to save the resource to be download
+
+
setSavePath(String) - Method in interface org.josfranmc.gutenberg.download.engine.IDownloadEngine
+
+
Sets the local path where to save the resource to be download
+
+
setSavePath(String) - Method in class org.josfranmc.gutenberg.download.JGutenbergDownload
+
+
Sets folder path where to get downloaded resources
+
+
setUnzip(boolean) - Method in class org.josfranmc.gutenberg.download.DownloadParams
+
+
Sets if downloaded files must be unzipping,
+
+
setUnzip(boolean) - Method in class org.josfranmc.gutenberg.download.JGutenbergDownload
+
+
Sets if downloaded files must be unzipping,
+
+
+C D E F G I J M N O R S U V 
+ +
+ + + + + + + +
+ + + + diff --git a/javadoc/index-files/index-13.html b/javadoc/index-files/index-13.html new file mode 100644 index 0000000..0f62803 --- /dev/null +++ b/javadoc/index-files/index-13.html @@ -0,0 +1,135 @@ + + + + + +U-Index + + + + + + + + +
+ + + + + + + +
+ + +
C D E F G I J M N O R S U V  + + +

U

+
+
unzipFiles(String, String) - Static method in class org.josfranmc.gutenberg.util.FileManager
+
+
Unzips files in format zip from a certain folder.
+
+
URL_BOOKS - Static variable in class org.josfranmc.gutenberg.download.DownloadParams
+
+
Base URL of the Gutenberg project to download
+
+
+C D E F G I J M N O R S U V 
+ +
+ + + + + + + +
+ + + + diff --git a/javadoc/index-files/index-14.html b/javadoc/index-files/index-14.html new file mode 100644 index 0000000..0aa7a66 --- /dev/null +++ b/javadoc/index-files/index-14.html @@ -0,0 +1,136 @@ + + + + + +V-Index + + + + + + + + +
+ + + + + + + +
+ + +
C D E F G I J M N O R S U V  + + +

V

+
+
valueOf(String) - Static method in enum org.josfranmc.gutenberg.download.engine.DownloadEngineType
+
+
Returns the enum constant of this type with the specified name.
+
+
values() - Static method in enum org.josfranmc.gutenberg.download.engine.DownloadEngineType
+
+
Returns an array containing the constants of this enum type, in +the order they are declared.
+
+
+C D E F G I J M N O R S U V 
+ +
+ + + + + + + +
+ + + + diff --git a/javadoc/index-files/index-2.html b/javadoc/index-files/index-2.html new file mode 100644 index 0000000..88e692c --- /dev/null +++ b/javadoc/index-files/index-2.html @@ -0,0 +1,177 @@ + + + + + +D-Index + + + + + + + + +
+ + + + + + + +
+ + +
C D E F G I J M N O R S U V  + + +

D

+
+
download() - Method in class org.josfranmc.gutenberg.download.engine.DownloadHttpUrlConnection
+
+
Runs a download.
+
+
download() - Method in interface org.josfranmc.gutenberg.download.engine.IDownloadEngine
+
+
Runs a download.
+
+
DownloadBooks - Class in org.josfranmc.gutenberg.download
+
+
Allows to perform the file download process.
+
+
DownloadBooks(DownloadParams) - Constructor for class org.josfranmc.gutenberg.download.DownloadBooks
+
 
+
downloadBooks() - Method in class org.josfranmc.gutenberg.download.JGutenbergDownload
+
+
Begins the process of downloading books.
+
+
DownloadEngineFactory - Class in org.josfranmc.gutenberg.download.engine
+
+
Factory for creating IDownloadEngine objects.
+
+
DownloadEngineType - Enum in org.josfranmc.gutenberg.download.engine
+
+
Types of download engines
+
+
DownloadHttpUrlConnection - Class in org.josfranmc.gutenberg.download.engine
+
+
Allows to download a resource identified by an url and save it in a local folder.
+
+
DownloadParams - Class in org.josfranmc.gutenberg.download
+
+
Parameters used in the application.
+
+
DownloadParams() - Constructor for class org.josfranmc.gutenberg.download.DownloadParams
+
+
Main constructor.
+
+
DownloadResult - Class in org.josfranmc.gutenberg.download.engine
+
+
It encapsulates the result of downloading a resource.
+
+
DownloadResult() - Constructor for class org.josfranmc.gutenberg.download.engine.DownloadResult
+
 
+
DownloadThread - Class in org.josfranmc.gutenberg.download
+
+
Downloads a resource.
+
+
DownloadThread(URL, DownloadParams) - Constructor for class org.josfranmc.gutenberg.download.DownloadThread
+
 
+
+C D E F G I J M N O R S U V 
+ +
+ + + + + + + +
+ + + + diff --git a/javadoc/index-files/index-3.html b/javadoc/index-files/index-3.html new file mode 100644 index 0000000..977abf1 --- /dev/null +++ b/javadoc/index-files/index-3.html @@ -0,0 +1,131 @@ + + + + + +E-Index + + + + + + + + +
+ + + + + + + +
+ + +
C D E F G I J M N O R S U V  + + +

E

+
+
executeDownload() - Method in class org.josfranmc.gutenberg.download.DownloadBooks
+
+
Perfoms the book download process.
+
+
+C D E F G I J M N O R S U V 
+ +
+ + + + + + + +
+ + + + diff --git a/javadoc/index-files/index-4.html b/javadoc/index-files/index-4.html new file mode 100644 index 0000000..25be0e0 --- /dev/null +++ b/javadoc/index-files/index-4.html @@ -0,0 +1,139 @@ + + + + + +F-Index + + + + + + + + +
+ + + + + + + +
+ + +
C D E F G I J M N O R S U V  + + +

F

+
+
fileExists(String, String) - Static method in class org.josfranmc.gutenberg.util.FileManager
+
+
Checks if the file indicated by an url already exists in a local path.
+
+
FileManager - Class in org.josfranmc.gutenberg.util
+
+
Tools for managing files.
+
+
FileScraping - Class in org.josfranmc.gutenberg.util
+
+
Tools for searching web links in files.
+
+
+C D E F G I J M N O R S U V 
+ +
+ + + + + + + +
+ + + + diff --git a/javadoc/index-files/index-5.html b/javadoc/index-files/index-5.html new file mode 100644 index 0000000..aafa3b6 --- /dev/null +++ b/javadoc/index-files/index-5.html @@ -0,0 +1,201 @@ + + + + + +G-Index + + + + + + + + +
+ + + + + + + +
+ + +
C D E F G I J M N O R S U V  + + +

G

+
+
getContentLength() - Method in class org.josfranmc.gutenberg.download.engine.DownloadResult
+
 
+
getContentType() - Method in class org.josfranmc.gutenberg.download.engine.DownloadResult
+
 
+
getDelay() - Method in class org.josfranmc.gutenberg.download.DownloadParams
+
 
+
getDelay() - Method in class org.josfranmc.gutenberg.download.JGutenbergDownload
+
 
+
getEngineType() - Method in class org.josfranmc.gutenberg.download.DownloadParams
+
 
+
getEngineType() - Method in class org.josfranmc.gutenberg.download.JGutenbergDownload
+
 
+
getFileType() - Method in class org.josfranmc.gutenberg.download.DownloadParams
+
 
+
getFileType() - Method in class org.josfranmc.gutenberg.download.JGutenbergDownload
+
 
+
getHeaders() - Method in class org.josfranmc.gutenberg.download.engine.DownloadResult
+
 
+
getLanguage() - Method in class org.josfranmc.gutenberg.download.DownloadParams
+
 
+
getLanguage() - Method in class org.josfranmc.gutenberg.download.JGutenbergDownload
+
 
+
getLastModified() - Method in class org.josfranmc.gutenberg.download.engine.DownloadResult
+
 
+
getLinks(String) - Static method in class org.josfranmc.gutenberg.util.FileScraping
+
+
Returns a list with all links within an html file.
+
+
getLocalFileName(String) - Static method in class org.josfranmc.gutenberg.util.FileManager
+
+
Returns the name of file inside a path.
+
+
getLocalFilePathFromURL(String, String) - Static method in class org.josfranmc.gutenberg.util.FileManager
+
+
Returns the path a file must have when downloaded on the local machine.
+
+
getMaxFilesToDownload() - Method in class org.josfranmc.gutenberg.download.DownloadParams
+
 
+
getMaxFilesToDownload() - Method in class org.josfranmc.gutenberg.download.JGutenbergDownload
+
 
+
getParameters() - Method in class org.josfranmc.gutenberg.download.JGutenbergDownload
+
 
+
getResource() - Method in class org.josfranmc.gutenberg.download.engine.DownloadHttpUrlConnection
+
 
+
getResource() - Method in interface org.josfranmc.gutenberg.download.engine.IDownloadEngine
+
 
+
getSavedFilePath() - Method in class org.josfranmc.gutenberg.download.engine.DownloadResult
+
 
+
getSavePath() - Method in class org.josfranmc.gutenberg.download.DownloadParams
+
 
+
getSavePath() - Method in class org.josfranmc.gutenberg.download.engine.DownloadHttpUrlConnection
+
 
+
getSavePath() - Method in interface org.josfranmc.gutenberg.download.engine.IDownloadEngine
+
 
+
getSavePath() - Method in class org.josfranmc.gutenberg.download.JGutenbergDownload
+
 
+
getUrlBase() - Method in class org.josfranmc.gutenberg.download.DownloadParams
+
 
+
getUrlBase() - Method in class org.josfranmc.gutenberg.download.JGutenbergDownload
+
 
+
getZipsPath() - Method in class org.josfranmc.gutenberg.download.DownloadParams
+
 
+
GutenbergException - Exception in org.josfranmc.gutenberg.util
+
+
It allows to capture exceptions in the application in the form of a RuntimeException.
+
+
GutenbergException() - Constructor for exception org.josfranmc.gutenberg.util.GutenbergException
+
 
+
GutenbergException(String, Throwable) - Constructor for exception org.josfranmc.gutenberg.util.GutenbergException
+
 
+
GutenbergException(String) - Constructor for exception org.josfranmc.gutenberg.util.GutenbergException
+
 
+
GutenbergException(Throwable) - Constructor for exception org.josfranmc.gutenberg.util.GutenbergException
+
 
+
+C D E F G I J M N O R S U V 
+ +
+ + + + + + + +
+ + + + diff --git a/javadoc/index-files/index-6.html b/javadoc/index-files/index-6.html new file mode 100644 index 0000000..3fcc610 --- /dev/null +++ b/javadoc/index-files/index-6.html @@ -0,0 +1,139 @@ + + + + + +I-Index + + + + + + + + +
+ + + + + + + +
+ + +
C D E F G I J M N O R S U V  + + +

I

+
+
IDownloadEngine - Interface in org.josfranmc.gutenberg.download.engine
+
+
Defines the behavior that a class have to implement in order to have the ability to download resources on net.
+
+
isOverwrite() - Method in class org.josfranmc.gutenberg.download.DownloadParams
+
 
+
isOverwrite() - Method in class org.josfranmc.gutenberg.download.JGutenbergDownload
+
 
+
isUnzip() - Method in class org.josfranmc.gutenberg.download.DownloadParams
+
 
+
isUnzip() - Method in class org.josfranmc.gutenberg.download.JGutenbergDownload
+
 
+
+C D E F G I J M N O R S U V 
+ +
+ + + + + + + +
+ + + + diff --git a/javadoc/index-files/index-7.html b/javadoc/index-files/index-7.html new file mode 100644 index 0000000..3bacfb6 --- /dev/null +++ b/javadoc/index-files/index-7.html @@ -0,0 +1,135 @@ + + + + + +J-Index + + + + + + + + +
+ + + + + + + +
+ + +
C D E F G I J M N O R S U V  + + +

J

+
+
JGutenbergDownload - Class in org.josfranmc.gutenberg.download
+
+
It allows to download books from the Gutenberg project repositories.
+
+
JGutenbergDownload() - Constructor for class org.josfranmc.gutenberg.download.JGutenbergDownload
+
+
Main constructor.
+
+
+C D E F G I J M N O R S U V 
+ +
+ + + + + + + +
+ + + + diff --git a/javadoc/index-files/index-8.html b/javadoc/index-files/index-8.html new file mode 100644 index 0000000..8a45d7f --- /dev/null +++ b/javadoc/index-files/index-8.html @@ -0,0 +1,131 @@ + + + + + +M-Index + + + + + + + + +
+ + + + + + + +
+ + +
C D E F G I J M N O R S U V  + + +

M

+
+
main(String[]) - Static method in class org.josfranmc.gutenberg.download.JGutenbergDownload
+
+
Main method for running the application.
+
+
+C D E F G I J M N O R S U V 
+ +
+ + + + + + + +
+ + + + diff --git a/javadoc/index-files/index-9.html b/javadoc/index-files/index-9.html new file mode 100644 index 0000000..56de4fc --- /dev/null +++ b/javadoc/index-files/index-9.html @@ -0,0 +1,131 @@ + + + + + +N-Index + + + + + + + + +
+ + + + + + + +
+ + +
C D E F G I J M N O R S U V  + + +

N

+
+
newInstance(URL, String) - Static method in class org.josfranmc.gutenberg.download.engine.DownloadHttpUrlConnection
+
+
Creates a DownloadHttpUrlConnection object which is an IDownloadEngine type instance.
+
+
+C D E F G I J M N O R S U V 
+ +
+ + + + + + + +
+ + + + diff --git a/javadoc/index.html b/javadoc/index.html new file mode 100644 index 0000000..dcf92af --- /dev/null +++ b/javadoc/index.html @@ -0,0 +1,74 @@ + + + + + +Generated Documentation (Untitled) + + + + + + + + + +<noscript> +<div>JavaScript is disabled on your browser.</div> +</noscript> +<h2>Frame Alert</h2> +<p>This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client. Link to <a href="overview-summary.html">Non-frame version</a>.</p> + + + diff --git a/javadoc/org/josfranmc/gutenberg/download/DownloadBooks.html b/javadoc/org/josfranmc/gutenberg/download/DownloadBooks.html new file mode 100644 index 0000000..ec7a453 --- /dev/null +++ b/javadoc/org/josfranmc/gutenberg/download/DownloadBooks.html @@ -0,0 +1,288 @@ + + + + + +DownloadBooks + + + + + + + + + + + + +
+
org.josfranmc.gutenberg.download
+

Class DownloadBooks

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.josfranmc.gutenberg.download.DownloadBooks
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class DownloadBooks
    +extends java.lang.Object
    +
    Allows to perform the file download process.
    +
    +
    Version:
    +
    2.0
    +
    Author:
    +
    Jose Francisco Mena Ceca
    +
    See Also:
    +
    JGutenbergDownload, +DownloadParams
    +
    +
  • +
+
+
+
    +
  • + + + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + +
      All Methods Instance Methods Concrete Methods 
      Modifier and TypeMethod and Description
      voidexecuteDownload() +
      Perfoms the book download process.
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        DownloadBooks

        +
        public DownloadBooks(DownloadParams parameters)
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        executeDownload

        +
        public void executeDownload()
        +
        Perfoms the book download process.

        + The first download should be a file with links to the books to download. All existing links are downloaded. + If there is a link to another page with more links, this page is downloaded and processed in the same way. + This process continues until there are no more pages.

        + All downloads run on separate threads.

        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + + + diff --git a/javadoc/org/josfranmc/gutenberg/download/DownloadParams.html b/javadoc/org/josfranmc/gutenberg/download/DownloadParams.html new file mode 100644 index 0000000..e751bb5 --- /dev/null +++ b/javadoc/org/josfranmc/gutenberg/download/DownloadParams.html @@ -0,0 +1,678 @@ + + + + + +DownloadParams + + + + + + + + + + + + +
+
org.josfranmc.gutenberg.download
+

Class DownloadParams

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.josfranmc.gutenberg.download.DownloadParams
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class DownloadParams
    +extends java.lang.Object
    +
    Parameters used in the application. They are: +
      +
    • fileType: the type of files to download (default txt)
    • +
    • language: the language of files to download (default es)
    • +
    • urlBase: initial download url
    • +
    • savePath: path where to get downloaded resources (default System.getProperty("user.dir"))
    • +
    • overwrite: if the existing files must be overwritten by the downloaded ones (default false)
    • +
    • delay: delay between downloads, in milliseconds (default 2000)
    • +
    • unzip: if downloaded files must be unzipping (default true)
    • +
    • maxFilesToDownload: the maximum number of files to download (default 10, 0 for download all existing)
    • +
    • engineType: the type of downloading engine to use (default DownloadEngineType.HTTP_CONNECTION)
    • +
    +
    +
    Version:
    +
    2.0
    +
    Author:
    +
    Jose Francisco Mena Ceca
    +
    See Also:
    +
    DownloadEngineType, +JGutenbergDownload
    +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Summary

      + + + + + + + + + + +
      Fields 
      Modifier and TypeField and Description
      static java.lang.StringURL_BOOKS +
      Base URL of the Gutenberg project to download
      +
      +
    • +
    + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      DownloadParams() +
      Main constructor.
      +
      +
    • +
    + + +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        URL_BOOKS

        +
        public static final java.lang.String URL_BOOKS
        +
        Base URL of the Gutenberg project to download
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        DownloadParams

        +
        public DownloadParams()
        +
        Main constructor. It initializes the object with default values: +
          +
        • fileType: txt
        • +
        • language: es
        • +
        • savePath: System.getProperty("user.dir")
        • +
        • overwrite: false
        • +
        • delay: 2000 milliseconds
        • +
        • unzip: true
        • +
        • maxFilesToDownload: 10 (0 for download all existing)
        • +
        • engineType: DownloadEngineType.HTTP_CONNECTION
        • +
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        getFileType

        +
        public java.lang.String getFileType()
        +
        +
        Returns:
        +
        the type of files to download
        +
        +
      • +
      + + + +
        +
      • +

        setFileType

        +
        public void setFileType(java.lang.String fileType)
        +
        Sets the type of file to download. Valid types: txt, epub, html
        +
        +
        Parameters:
        +
        fileType - type of file to download
        +
        Throws:
        +
        java.lang.IllegalArgumentException - if an invalid file type is indicated
        +
        +
      • +
      + + + +
        +
      • +

        getLanguage

        +
        public java.lang.String getLanguage()
        +
        +
        Returns:
        +
        the language of files to download
        +
        +
      • +
      + + + +
        +
      • +

        setLanguage

        +
        public void setLanguage(java.lang.String language)
        +
        Sets the language of the files to download acording to Gutenberg nomeclature.
        + Ej.: es - spanish, en - english, fr - french
        +
        +
        Parameters:
        +
        language - type of language
        +
        +
      • +
      + + + +
        +
      • +

        getUrlBase

        +
        public java.net.URL getUrlBase()
        +
        +
        Returns:
        +
        initial download url
        +
        +
      • +
      + + + +
        +
      • +

        getSavePath

        +
        public java.lang.String getSavePath()
        +
        +
        Returns:
        +
        folder path where to get downloaded resources
        +
        +
      • +
      + + + +
        +
      • +

        setSavePath

        +
        public void setSavePath(java.lang.String savePath)
        +
        Sets folder path where to get downloaded resources
        +
        +
        Parameters:
        +
        savePath - folder path where to get downloaded resources
        +
        Throws:
        +
        java.lang.IllegalArgumentException - if the parameter is null
        +
        +
      • +
      + + + +
        +
      • +

        getZipsPath

        +
        public java.lang.String getZipsPath()
        +
        +
        Returns:
        +
        folder path where to get downloaded zips
        +
        +
      • +
      + + + +
        +
      • +

        isOverwrite

        +
        public boolean isOverwrite()
        +
        +
        Returns:
        +
        true if the existing files must be overwritten by the downloaded ones, false otherwise
        +
        +
      • +
      + + + +
        +
      • +

        setOverwrite

        +
        public void setOverwrite(boolean overwrite)
        +
        Sets if the existing files must be overwritten by the downloaded ones
        +
        +
        Parameters:
        +
        overwrite - true if the existing files must be overwritten, false otherwise
        +
        +
      • +
      + + + +
        +
      • +

        getDelay

        +
        public int getDelay()
        +
        +
        Returns:
        +
        delay between downloads, in milliseconds
        +
        +
      • +
      + + + +
        +
      • +

        setDelay

        +
        public void setDelay(int delay)
        +
        Sets delay between downloads
        +
        +
        Parameters:
        +
        delay - waiting time, in milliseconds
        +
        Throws:
        +
        java.lang.IllegalArgumentException - if a number less than zero is indicated
        +
        +
      • +
      + + + +
        +
      • +

        isUnzip

        +
        public boolean isUnzip()
        +
        +
        Returns:
        +
        true if downloaded files must be unzipping, false otherwise
        +
        +
      • +
      + + + +
        +
      • +

        setUnzip

        +
        public void setUnzip(boolean unzip)
        +
        Sets if downloaded files must be unzipping,
        +
        +
        Parameters:
        +
        unzip - true if downloaded files must be unzipping, false otherwise
        +
        +
      • +
      + + + +
        +
      • +

        getMaxFilesToDownload

        +
        public int getMaxFilesToDownload()
        +
        +
        Returns:
        +
        the maximum number of files to download
        +
        +
      • +
      + + + +
        +
      • +

        setMaxFilesToDownload

        +
        public void setMaxFilesToDownload(int maxFilesToDownload)
        +
        Sets the maximum number of files to download. The zero indicates downloading all available files.
        +
        +
        Parameters:
        +
        maxFilesToDownload - files number
        +
        Throws:
        +
        java.lang.IllegalArgumentException - if a number less than zero is indicated
        +
        +
      • +
      + + + + + + + +
        +
      • +

        setEngineType

        +
        public void setEngineType(DownloadEngineType engineType)
        +
        Sets the type of downloading engine to use
        +
        +
        Parameters:
        +
        engineType - engine type
        +
        See Also:
        +
        DownloadEngineType
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + + + diff --git a/javadoc/org/josfranmc/gutenberg/download/DownloadThread.html b/javadoc/org/josfranmc/gutenberg/download/DownloadThread.html new file mode 100644 index 0000000..65a8a6d --- /dev/null +++ b/javadoc/org/josfranmc/gutenberg/download/DownloadThread.html @@ -0,0 +1,295 @@ + + + + + +DownloadThread + + + + + + + + + + + + +
+
org.josfranmc.gutenberg.download
+

Class DownloadThread

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.josfranmc.gutenberg.download.DownloadThread
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    java.lang.Runnable
    +
    +
    +
    +
    public class DownloadThread
    +extends java.lang.Object
    +implements java.lang.Runnable
    +
    Downloads a resource.
    + Objects of this class can be runned in separate threads.
    +
    +
    Version:
    +
    2.0
    +
    Author:
    +
    Jose Francisco Mena Ceca
    +
    +
  • +
+
+
+
    +
  • + + + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + +
      All Methods Instance Methods Concrete Methods 
      Modifier and TypeMethod and Description
      voidrun() 
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        DownloadThread

        +
        public DownloadThread(java.net.URL target,
        +                      DownloadParams parameters)
        +
        +
        Parameters:
        +
        target - download url
        +
        parameters - settings
        +
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        run

        +
        public void run()
        +
        +
        Specified by:
        +
        run in interface java.lang.Runnable
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + + + diff --git a/javadoc/org/josfranmc/gutenberg/download/JGutenbergDownload.html b/javadoc/org/josfranmc/gutenberg/download/JGutenbergDownload.html new file mode 100644 index 0000000..682ec84 --- /dev/null +++ b/javadoc/org/josfranmc/gutenberg/download/JGutenbergDownload.html @@ -0,0 +1,678 @@ + + + + + +JGutenbergDownload + + + + + + + + + + + + +
+
org.josfranmc.gutenberg.download
+

Class JGutenbergDownload

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.josfranmc.gutenberg.download.JGutenbergDownload
    • +
    +
  • +
+
+ +
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        JGutenbergDownload

        +
        public JGutenbergDownload()
        +
        Main constructor. It initializes the application with default values.
        +
        +
        See Also:
        +
        DownloadParams
        +
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        getParameters

        +
        public DownloadParams getParameters()
        +
        +
        Returns:
        +
        an object with the current parameters
        +
        See Also:
        +
        DownloadParams
        +
        +
      • +
      + + + +
        +
      • +

        setParameters

        +
        public void setParameters(DownloadParams parameters)
        +
        Sets the application parameters through a DownloadParams object
        +
        +
        Parameters:
        +
        parameters - application parameters
        +
        See Also:
        +
        DownloadParams
        +
        +
      • +
      + + + +
        +
      • +

        downloadBooks

        +
        public void downloadBooks()
        +
        Begins the process of downloading books.

        + If there is any problem It can be thrown GutenbergException

        +
      • +
      + + + +
        +
      • +

        getFileType

        +
        public java.lang.String getFileType()
        +
        +
        Returns:
        +
        the type of files to download
        +
        +
      • +
      + + + +
        +
      • +

        setFileType

        +
        public void setFileType(java.lang.String fileType)
        +
        Sets the type of file to download. Valid types: txt, epub, html
        +
        +
        Parameters:
        +
        fileType - type of file to download
        +
        Throws:
        +
        java.lang.IllegalArgumentException - if an invalid file type is indicated
        +
        +
      • +
      + + + +
        +
      • +

        getLanguage

        +
        public java.lang.String getLanguage()
        +
        +
        Returns:
        +
        the language of files to download
        +
        +
      • +
      + + + +
        +
      • +

        setLanguage

        +
        public void setLanguage(java.lang.String language)
        +
        Sets the language of the files to download acording to Gutenberg nomeclature.
        + Ej.: es - spanish, en - english, fr - french
        +
        +
        Parameters:
        +
        language - type of language
        +
        +
      • +
      + + + +
        +
      • +

        getUrlBase

        +
        public java.lang.String getUrlBase()
        +
        +
        Returns:
        +
        initial download url
        +
        +
      • +
      + + + +
        +
      • +

        getSavePath

        +
        public java.lang.String getSavePath()
        +
        +
        Returns:
        +
        folder path where to get downloaded resources
        +
        +
      • +
      + + + +
        +
      • +

        setSavePath

        +
        public void setSavePath(java.lang.String savePath)
        +
        Sets folder path where to get downloaded resources
        +
        +
        Parameters:
        +
        savePath - folder path where to get downloaded resources
        +
        Throws:
        +
        java.lang.IllegalArgumentException - if the parameter is null
        +
        +
      • +
      + + + +
        +
      • +

        isOverwrite

        +
        public boolean isOverwrite()
        +
        +
        Returns:
        +
        true if the existing files must be overwritten by the downloaded ones, false otherwise
        +
        +
      • +
      + + + +
        +
      • +

        setOverwrite

        +
        public void setOverwrite(boolean value)
        +
        Sets if the existing files must be overwritten by the downloaded ones
        +
        +
        Parameters:
        +
        value - true if the existing files must be overwritten, false otherwise
        +
        +
      • +
      + + + +
        +
      • +

        getDelay

        +
        public int getDelay()
        +
        +
        Returns:
        +
        delay between downloads, in milliseconds
        +
        +
      • +
      + + + +
        +
      • +

        setDelay

        +
        public void setDelay(int delay)
        +
        Sets delay between downloads
        +
        +
        Parameters:
        +
        delay - waiting time, in milliseconds
        +
        +
      • +
      + + + +
        +
      • +

        isUnzip

        +
        public boolean isUnzip()
        +
        +
        Returns:
        +
        true if downloaded files must be unzipping, false otherwise
        +
        +
      • +
      + + + +
        +
      • +

        setUnzip

        +
        public void setUnzip(boolean value)
        +
        Sets if downloaded files must be unzipping,
        +
        +
        Parameters:
        +
        value - true if downloaded files must be unzipping, false otherwise
        +
        +
      • +
      + + + +
        +
      • +

        getMaxFilesToDownload

        +
        public int getMaxFilesToDownload()
        +
        +
        Returns:
        +
        the maximum number of files to download
        +
        +
      • +
      + + + +
        +
      • +

        setMaxFilesToDownload

        +
        public void setMaxFilesToDownload(int maxFilesToDownload)
        +
        Sets the maximum number of files to download. The zero indicates downloading all available files.
        +
        +
        Parameters:
        +
        maxFilesToDownload - files number
        +
        Throws:
        +
        java.lang.IllegalArgumentException - if a number less than zero is indicated
        +
        +
      • +
      + + + + + + + +
        +
      • +

        setEngineType

        +
        public void setEngineType(DownloadEngineType engineType)
        +
        Sets the type of downloading engine to use
        +
        +
        Parameters:
        +
        engineType - engine type
        +
        See Also:
        +
        DownloadEngineType
        +
        +
      • +
      + + + +
        +
      • +

        main

        +
        public static void main(java.lang.String[] args)
        +
        Main method for running the application.
        +
        +
        Parameters:
        +
        args - list of arguments with application parameters
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + + + diff --git a/javadoc/org/josfranmc/gutenberg/download/class-use/DownloadBooks.html b/javadoc/org/josfranmc/gutenberg/download/class-use/DownloadBooks.html new file mode 100644 index 0000000..f3430a0 --- /dev/null +++ b/javadoc/org/josfranmc/gutenberg/download/class-use/DownloadBooks.html @@ -0,0 +1,124 @@ + + + + + +Uses of Class org.josfranmc.gutenberg.download.DownloadBooks + + + + + + + + + + + +
+

Uses of Class
org.josfranmc.gutenberg.download.DownloadBooks

+
+
No usage of org.josfranmc.gutenberg.download.DownloadBooks
+ + + + + + diff --git a/javadoc/org/josfranmc/gutenberg/download/class-use/DownloadParams.html b/javadoc/org/josfranmc/gutenberg/download/class-use/DownloadParams.html new file mode 100644 index 0000000..0f06f4c --- /dev/null +++ b/javadoc/org/josfranmc/gutenberg/download/class-use/DownloadParams.html @@ -0,0 +1,194 @@ + + + + + +Uses of Class org.josfranmc.gutenberg.download.DownloadParams + + + + + + + + + + + +
+

Uses of Class
org.josfranmc.gutenberg.download.DownloadParams

+
+
+ +
+ + + + + + diff --git a/javadoc/org/josfranmc/gutenberg/download/class-use/DownloadThread.html b/javadoc/org/josfranmc/gutenberg/download/class-use/DownloadThread.html new file mode 100644 index 0000000..0f83c00 --- /dev/null +++ b/javadoc/org/josfranmc/gutenberg/download/class-use/DownloadThread.html @@ -0,0 +1,124 @@ + + + + + +Uses of Class org.josfranmc.gutenberg.download.DownloadThread + + + + + + + + + + + +
+

Uses of Class
org.josfranmc.gutenberg.download.DownloadThread

+
+
No usage of org.josfranmc.gutenberg.download.DownloadThread
+ + + + + + diff --git a/javadoc/org/josfranmc/gutenberg/download/class-use/JGutenbergDownload.html b/javadoc/org/josfranmc/gutenberg/download/class-use/JGutenbergDownload.html new file mode 100644 index 0000000..cf75695 --- /dev/null +++ b/javadoc/org/josfranmc/gutenberg/download/class-use/JGutenbergDownload.html @@ -0,0 +1,124 @@ + + + + + +Uses of Class org.josfranmc.gutenberg.download.JGutenbergDownload + + + + + + + + + + + +
+

Uses of Class
org.josfranmc.gutenberg.download.JGutenbergDownload

+
+
No usage of org.josfranmc.gutenberg.download.JGutenbergDownload
+ + + + + + diff --git a/javadoc/org/josfranmc/gutenberg/download/engine/DownloadEngineFactory.html b/javadoc/org/josfranmc/gutenberg/download/engine/DownloadEngineFactory.html new file mode 100644 index 0000000..dfa0281 --- /dev/null +++ b/javadoc/org/josfranmc/gutenberg/download/engine/DownloadEngineFactory.html @@ -0,0 +1,381 @@ + + + + + +DownloadEngineFactory + + + + + + + + + + + + +
+
org.josfranmc.gutenberg.download.engine
+

Class DownloadEngineFactory

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.josfranmc.gutenberg.download.engine.DownloadEngineFactory
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class DownloadEngineFactory
    +extends java.lang.Object
    +
    Factory for creating IDownloadEngine objects.
    + It make use of the create method. This method is overloaded, so it can be invoked combining three parameters: +
      +
    • target: the url address to download
    • +
    • savePath: local path where to save download
    • +
    • type: engine type for downloading (for default DownloadEngineType.HTTTP_CONNECTION is used)
    • +
    +
    +
    Version:
    +
    2.0
    +
    Author:
    +
    Jose Francisco Mena Ceca
    +
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        create

        +
        public static IDownloadEngine create()
        +
        Creates an engine for downloading. Engine type is DownloadEngineType.HTTP_CONNECTION.
        +
        +
        Returns:
        +
        a download engine
        +
        +
      • +
      + + + +
        +
      • +

        create

        +
        public static IDownloadEngine create(DownloadEngineType type)
        +
        Creates a download engine of the indicated type.
        + The url to download and the path where to save are not initialized.
        +
        +
        Parameters:
        +
        type - engine type for downloading
        +
        Returns:
        +
        a download engine in the form of a IDownloadEngine object
        +
        +
      • +
      + + + +
        +
      • +

        create

        +
        public static IDownloadEngine create(java.net.URL target,
        +                                     DownloadEngineType type)
        +
        Creates a download engine of the indicated type for downloading an url.
        + The path where to save the download is not initialized.
        +
        +
        Parameters:
        +
        target - the url address to download
        +
        type - engine type for downloading
        +
        Returns:
        +
        a download engine in the form of a IDownloadEngine object
        +
        +
      • +
      + + + +
        +
      • +

        create

        +
        public static IDownloadEngine create(java.net.URL target)
        +
        Creates an engine for downloading an url. Engine type is DownloadEngineType.HTTP_CONNECTION.
        +
        +
        Parameters:
        +
        target - the url address to download
        +
        Returns:
        +
        a download engine in the form of a IDownloadEngine object
        +
        +
      • +
      + + + +
        +
      • +

        create

        +
        public static IDownloadEngine create(java.net.URL target,
        +                                     java.lang.String savePath,
        +                                     DownloadEngineType type)
        +
        Creates an engine for downloading.
        +
        +
        Parameters:
        +
        target - the url address to download
        +
        savePath - local path where to save download
        +
        type - engine type for downloading
        +
        Returns:
        +
        a download engine in the form of a IDownloadEngine object
        +
        +
      • +
      + + + +
        +
      • +

        create

        +
        public static IDownloadEngine create(java.net.URL target,
        +                                     java.lang.String savePath)
        +
        Creates an engine for downloading. Engine type is DownloadEngineType.HTTP_CONNECTION.
        +
        +
        Parameters:
        +
        target - the url address to download
        +
        savePath - local path where to save download
        +
        Returns:
        +
        a download engine in the form of a IDownloadEngine object
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + + + diff --git a/javadoc/org/josfranmc/gutenberg/download/engine/DownloadEngineType.html b/javadoc/org/josfranmc/gutenberg/download/engine/DownloadEngineType.html new file mode 100644 index 0000000..c7edd7a --- /dev/null +++ b/javadoc/org/josfranmc/gutenberg/download/engine/DownloadEngineType.html @@ -0,0 +1,339 @@ + + + + + +DownloadEngineType + + + + + + + + + + + + +
+
org.josfranmc.gutenberg.download.engine
+

Enum DownloadEngineType

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • java.lang.Enum<DownloadEngineType>
    • +
    • +
        +
      • org.josfranmc.gutenberg.download.engine.DownloadEngineType
      • +
      +
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    java.io.Serializable, java.lang.Comparable<DownloadEngineType>
    +
    +
    +
    +
    public enum DownloadEngineType
    +extends java.lang.Enum<DownloadEngineType>
    +
    Types of download engines
    +
    +
    Version:
    +
    2.0
    +
    Author:
    +
    Jose Francisco Mena Ceca
    +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Enum Constant Summary

      + + + + + + + + +
      Enum Constants 
      Enum Constant and Description
      HTTP_CONNECTION +
      Downloads based on the java.net.HttpURLConnection object
      +
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + +
      All Methods Static Methods Concrete Methods 
      Modifier and TypeMethod and Description
      static DownloadEngineTypevalueOf(java.lang.String name) +
      Returns the enum constant of this type with the specified name.
      +
      static DownloadEngineType[]values() +
      Returns an array containing the constants of this enum type, in +the order they are declared.
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Enum

        +compareTo, equals, getDeclaringClass, hashCode, name, ordinal, toString, valueOf
      • +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +getClass, notify, notifyAll, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Enum Constant Detail

      + + + +
        +
      • +

        HTTP_CONNECTION

        +
        public static final DownloadEngineType HTTP_CONNECTION
        +
        Downloads based on the java.net.HttpURLConnection object
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        values

        +
        public static DownloadEngineType[] values()
        +
        Returns an array containing the constants of this enum type, in +the order they are declared. This method may be used to iterate +over the constants as follows: +
        +for (DownloadEngineType c : DownloadEngineType.values())
        +    System.out.println(c);
        +
        +
        +
        Returns:
        +
        an array containing the constants of this enum type, in the order they are declared
        +
        +
      • +
      + + + +
        +
      • +

        valueOf

        +
        public static DownloadEngineType valueOf(java.lang.String name)
        +
        Returns the enum constant of this type with the specified name. +The string must match exactly an identifier used to declare an +enum constant in this type. (Extraneous whitespace characters are +not permitted.)
        +
        +
        Parameters:
        +
        name - the name of the enum constant to be returned.
        +
        Returns:
        +
        the enum constant with the specified name
        +
        Throws:
        +
        java.lang.IllegalArgumentException - if this enum type has no constant with the specified name
        +
        java.lang.NullPointerException - if the argument is null
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + + + diff --git a/javadoc/org/josfranmc/gutenberg/download/engine/DownloadHttpUrlConnection.html b/javadoc/org/josfranmc/gutenberg/download/engine/DownloadHttpUrlConnection.html new file mode 100644 index 0000000..3a2eb93 --- /dev/null +++ b/javadoc/org/josfranmc/gutenberg/download/engine/DownloadHttpUrlConnection.html @@ -0,0 +1,378 @@ + + + + + +DownloadHttpUrlConnection + + + + + + + + + + + + +
+
org.josfranmc.gutenberg.download.engine
+

Class DownloadHttpUrlConnection

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.josfranmc.gutenberg.download.engine.DownloadHttpUrlConnection
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    IDownloadEngine
    +
    +
    +
    +
    public class DownloadHttpUrlConnection
    +extends java.lang.Object
    +implements IDownloadEngine
    +
    Allows to download a resource identified by an url and save it in a local folder.
    + It makes use of the java.net.HttpURLConnection class for downloading.
    +
    +
    Version:
    +
    2.0
    +
    Author:
    +
    Jose Francisco Mena Ceca
    +
    See Also:
    +
    IDownloadEngine, +GutenbergException
    +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and TypeMethod and Description
      DownloadResultdownload() +
      Runs a download.
      +
      java.net.URLgetResource() 
      java.lang.StringgetSavePath() 
      static IDownloadEnginenewInstance(java.net.URL target, + java.lang.String savePath) +
      Creates a DownloadHttpUrlConnection object which is an IDownloadEngine type instance.
      +
      voidsetResource(java.net.URL resource) +
      Sets the resource of the url to download, in the form of a URL object
      +
      voidsetSavePath(java.lang.String savePath) +
      Sets the local path where to save the resource to be download
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        newInstance

        +
        public static IDownloadEngine newInstance(java.net.URL target,
        +                                          java.lang.String savePath)
        +
        Creates a DownloadHttpUrlConnection object which is an IDownloadEngine type instance.
        +
        +
        Parameters:
        +
        target - resource url to download
        +
        savePath - path where to save the download
        +
        Returns:
        +
        an IDownloadEngine instance in the form of a DownloadHttpUrlConnection
        +
        See Also:
        +
        IDownloadEngine
        +
        +
      • +
      + + + +
        +
      • +

        download

        +
        public DownloadResult download()
        +
        Runs a download.

        + Previously, it has been necessary to indicate the url address of the resource to download and the path of the folder in which to save it.
        + If the download is correct a new file in the indicated folder is obtained. The file name is extracted from download link, + beginning from the last directory separator character.

        +
        +
        Specified by:
        +
        download in interface IDownloadEngine
        +
        Returns:
        +
        the result of the download in the form of a DownloadResult object
        +
        Throws:
        +
        GutenbergException - if there is any error downloading
        +
        See Also:
        +
        DownloadResult
        +
        +
      • +
      + + + +
        +
      • +

        setResource

        +
        public void setResource(java.net.URL resource)
        +
        Sets the resource of the url to download, in the form of a URL object
        +
        +
        Specified by:
        +
        setResource in interface IDownloadEngine
        +
        Parameters:
        +
        resource - url address
        +
        +
      • +
      + + + +
        +
      • +

        getResource

        +
        public java.net.URL getResource()
        +
        +
        Specified by:
        +
        getResource in interface IDownloadEngine
        +
        Returns:
        +
        the resource of the url to download, in the form of a URL object
        +
        +
      • +
      + + + +
        +
      • +

        setSavePath

        +
        public void setSavePath(java.lang.String savePath)
        +
        Sets the local path where to save the resource to be download
        +
        +
        Specified by:
        +
        setSavePath in interface IDownloadEngine
        +
        Parameters:
        +
        savePath - local path
        +
        +
      • +
      + + + +
        +
      • +

        getSavePath

        +
        public java.lang.String getSavePath()
        +
        +
        Specified by:
        +
        getSavePath in interface IDownloadEngine
        +
        Returns:
        +
        the local path where to save the resource to be download
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + + + diff --git a/javadoc/org/josfranmc/gutenberg/download/engine/DownloadResult.html b/javadoc/org/josfranmc/gutenberg/download/engine/DownloadResult.html new file mode 100644 index 0000000..5c755ad --- /dev/null +++ b/javadoc/org/josfranmc/gutenberg/download/engine/DownloadResult.html @@ -0,0 +1,391 @@ + + + + + +DownloadResult + + + + + + + + + + + + +
+
org.josfranmc.gutenberg.download.engine
+

Class DownloadResult

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.josfranmc.gutenberg.download.engine.DownloadResult
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class DownloadResult
    +extends java.lang.Object
    +
    It encapsulates the result of downloading a resource. This class serves to save together different data related to the download: + the header returned in the connection and the name of the file created, along with its path.
    +
    +
    Version:
    +
    2.0
    +
    Author:
    +
    Jose Francisco Mena Ceca
    +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      DownloadResult() 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      All Methods Instance Methods Concrete Methods 
      Modifier and TypeMethod and Description
      java.lang.StringgetContentLength() 
      java.lang.StringgetContentType() 
      java.util.Map<java.lang.String,java.util.List<java.lang.String>>getHeaders() 
      java.lang.StringgetLastModified() 
      java.lang.StringgetSavedFilePath() 
      voidsetHeaders(java.net.URLConnection urlConnection) +
      Sets the header obtained in response to a connection
      +
      voidsetSavedFilePath(java.lang.String fileOutputPath) +
      Sets the path of the downloaded file on the local machine.
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        DownloadResult

        +
        public DownloadResult()
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        setHeaders

        +
        public void setHeaders(java.net.URLConnection urlConnection)
        +
        Sets the header obtained in response to a connection
        +
        +
        Parameters:
        +
        urlConnection - connection made
        +
        +
      • +
      + + + +
        +
      • +

        getHeaders

        +
        public java.util.Map<java.lang.String,java.util.List<java.lang.String>> getHeaders()
        +
        +
        Returns:
        +
        the header obtained in response to a connection
        +
        +
      • +
      + + + +
        +
      • +

        getLastModified

        +
        public java.lang.String getLastModified()
        +
        +
        Returns:
        +
        the value of the header field "Last-Modified"
        +
        +
      • +
      + + + +
        +
      • +

        getContentType

        +
        public java.lang.String getContentType()
        +
        +
        Returns:
        +
        the value of the header field "Content-Type"
        +
        +
      • +
      + + + +
        +
      • +

        getContentLength

        +
        public java.lang.String getContentLength()
        +
        +
        Returns:
        +
        the value of the header field "Content-Length"
        +
        +
      • +
      + + + +
        +
      • +

        setSavedFilePath

        +
        public void setSavedFilePath(java.lang.String fileOutputPath)
        +
        Sets the path of the downloaded file on the local machine.
        +
        +
        Parameters:
        +
        fileOutputPath - path of the downloaded file
        +
        +
      • +
      + + + +
        +
      • +

        getSavedFilePath

        +
        public java.lang.String getSavedFilePath()
        +
        +
        Returns:
        +
        the path of the downloaded file on the local machine.
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + + + diff --git a/javadoc/org/josfranmc/gutenberg/download/engine/IDownloadEngine.html b/javadoc/org/josfranmc/gutenberg/download/engine/IDownloadEngine.html new file mode 100644 index 0000000..9958208 --- /dev/null +++ b/javadoc/org/josfranmc/gutenberg/download/engine/IDownloadEngine.html @@ -0,0 +1,320 @@ + + + + + +IDownloadEngine + + + + + + + + + + + + +
+
org.josfranmc.gutenberg.download.engine
+

Interface IDownloadEngine

+
+
+
+
    +
  • +
    +
    All Known Implementing Classes:
    +
    DownloadHttpUrlConnection
    +
    +
    +
    +
    public interface IDownloadEngine
    +
    Defines the behavior that a class have to implement in order to have the ability to download resources on net.
    +
    +
    Version:
    +
    2.0
    +
    Author:
    +
    Jose Francisco Mena Ceca
    +
    See Also:
    +
    IDownloadEngine, +GutenbergException
    +
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        download

        +
        DownloadResult download()
        +
        Runs a download.
        +
        +
        Returns:
        +
        the result of the download in the form of a DownloadResult object
        +
        Throws:
        +
        GutenbergException - if there is any error downloading
        +
        See Also:
        +
        DownloadResult
        +
        +
      • +
      + + + +
        +
      • +

        setResource

        +
        void setResource(java.net.URL resource)
        +
        Sets the resource of the url to download, in the form of a URL object
        +
        +
        Parameters:
        +
        resource - url address
        +
        +
      • +
      + + + +
        +
      • +

        getResource

        +
        java.net.URL getResource()
        +
        +
        Returns:
        +
        the resource of the url to download, in the form of a URL object
        +
        +
      • +
      + + + +
        +
      • +

        setSavePath

        +
        void setSavePath(java.lang.String savePath)
        +
        Sets the local path where to save the resource to be download
        +
        +
        Parameters:
        +
        savePath - local path
        +
        +
      • +
      + + + +
        +
      • +

        getSavePath

        +
        java.lang.String getSavePath()
        +
        +
        Returns:
        +
        the local path where to save the resource to be download
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + + + diff --git a/javadoc/org/josfranmc/gutenberg/download/engine/class-use/DownloadEngineFactory.html b/javadoc/org/josfranmc/gutenberg/download/engine/class-use/DownloadEngineFactory.html new file mode 100644 index 0000000..03617fa --- /dev/null +++ b/javadoc/org/josfranmc/gutenberg/download/engine/class-use/DownloadEngineFactory.html @@ -0,0 +1,124 @@ + + + + + +Uses of Class org.josfranmc.gutenberg.download.engine.DownloadEngineFactory + + + + + + + + + + + +
+

Uses of Class
org.josfranmc.gutenberg.download.engine.DownloadEngineFactory

+
+
No usage of org.josfranmc.gutenberg.download.engine.DownloadEngineFactory
+ + + + + + diff --git a/javadoc/org/josfranmc/gutenberg/download/engine/class-use/DownloadEngineType.html b/javadoc/org/josfranmc/gutenberg/download/engine/class-use/DownloadEngineType.html new file mode 100644 index 0000000..3f5a659 --- /dev/null +++ b/javadoc/org/josfranmc/gutenberg/download/engine/class-use/DownloadEngineType.html @@ -0,0 +1,250 @@ + + + + + +Uses of Class org.josfranmc.gutenberg.download.engine.DownloadEngineType + + + + + + + + + + + +
+

Uses of Class
org.josfranmc.gutenberg.download.engine.DownloadEngineType

+
+
+ +
+ + + + + + diff --git a/javadoc/org/josfranmc/gutenberg/download/engine/class-use/DownloadHttpUrlConnection.html b/javadoc/org/josfranmc/gutenberg/download/engine/class-use/DownloadHttpUrlConnection.html new file mode 100644 index 0000000..73d77ed --- /dev/null +++ b/javadoc/org/josfranmc/gutenberg/download/engine/class-use/DownloadHttpUrlConnection.html @@ -0,0 +1,124 @@ + + + + + +Uses of Class org.josfranmc.gutenberg.download.engine.DownloadHttpUrlConnection + + + + + + + + + + + +
+

Uses of Class
org.josfranmc.gutenberg.download.engine.DownloadHttpUrlConnection

+
+
No usage of org.josfranmc.gutenberg.download.engine.DownloadHttpUrlConnection
+ + + + + + diff --git a/javadoc/org/josfranmc/gutenberg/download/engine/class-use/DownloadResult.html b/javadoc/org/josfranmc/gutenberg/download/engine/class-use/DownloadResult.html new file mode 100644 index 0000000..5bcc314 --- /dev/null +++ b/javadoc/org/josfranmc/gutenberg/download/engine/class-use/DownloadResult.html @@ -0,0 +1,172 @@ + + + + + +Uses of Class org.josfranmc.gutenberg.download.engine.DownloadResult + + + + + + + + + + + +
+

Uses of Class
org.josfranmc.gutenberg.download.engine.DownloadResult

+
+
+ +
+ + + + + + diff --git a/javadoc/org/josfranmc/gutenberg/download/engine/class-use/IDownloadEngine.html b/javadoc/org/josfranmc/gutenberg/download/engine/class-use/IDownloadEngine.html new file mode 100644 index 0000000..f319b5f --- /dev/null +++ b/javadoc/org/josfranmc/gutenberg/download/engine/class-use/IDownloadEngine.html @@ -0,0 +1,222 @@ + + + + + +Uses of Interface org.josfranmc.gutenberg.download.engine.IDownloadEngine + + + + + + + + + + + +
+

Uses of Interface
org.josfranmc.gutenberg.download.engine.IDownloadEngine

+
+
+ +
+ + + + + + diff --git a/javadoc/org/josfranmc/gutenberg/download/engine/package-frame.html b/javadoc/org/josfranmc/gutenberg/download/engine/package-frame.html new file mode 100644 index 0000000..e4a8062 --- /dev/null +++ b/javadoc/org/josfranmc/gutenberg/download/engine/package-frame.html @@ -0,0 +1,30 @@ + + + + + +org.josfranmc.gutenberg.download.engine + + + + + +

org.josfranmc.gutenberg.download.engine

+ + + diff --git a/javadoc/org/josfranmc/gutenberg/download/engine/package-summary.html b/javadoc/org/josfranmc/gutenberg/download/engine/package-summary.html new file mode 100644 index 0000000..f588af3 --- /dev/null +++ b/javadoc/org/josfranmc/gutenberg/download/engine/package-summary.html @@ -0,0 +1,190 @@ + + + + + +org.josfranmc.gutenberg.download.engine + + + + + + + + + + + +
+

Package org.josfranmc.gutenberg.download.engine

+
+
+
    +
  • + + + + + + + + + + + + +
    Interface Summary 
    InterfaceDescription
    IDownloadEngine +
    Defines the behavior that a class have to implement in order to have the ability to download resources on net.
    +
    +
  • +
  • + + + + + + + + + + + + + + + + + + + + +
    Class Summary 
    ClassDescription
    DownloadEngineFactory +
    Factory for creating IDownloadEngine objects.
    +
    DownloadHttpUrlConnection +
    Allows to download a resource identified by an url and save it in a local folder.
    +
    DownloadResult +
    It encapsulates the result of downloading a resource.
    +
    +
  • +
  • + + + + + + + + + + + + +
    Enum Summary 
    EnumDescription
    DownloadEngineType +
    Types of download engines
    +
    +
  • +
+
+ + + + + + diff --git a/javadoc/org/josfranmc/gutenberg/download/engine/package-tree.html b/javadoc/org/josfranmc/gutenberg/download/engine/package-tree.html new file mode 100644 index 0000000..a2ffdf3 --- /dev/null +++ b/javadoc/org/josfranmc/gutenberg/download/engine/package-tree.html @@ -0,0 +1,155 @@ + + + + + +org.josfranmc.gutenberg.download.engine Class Hierarchy + + + + + + + + + + + +
+

Hierarchy For Package org.josfranmc.gutenberg.download.engine

+Package Hierarchies: + +
+
+

Class Hierarchy

+ +

Interface Hierarchy

+ +

Enum Hierarchy

+
    +
  • java.lang.Object +
      +
    • java.lang.Enum<E> (implements java.lang.Comparable<T>, java.io.Serializable) + +
    • +
    +
  • +
+
+ + + + + + diff --git a/javadoc/org/josfranmc/gutenberg/download/engine/package-use.html b/javadoc/org/josfranmc/gutenberg/download/engine/package-use.html new file mode 100644 index 0000000..a35dd20 --- /dev/null +++ b/javadoc/org/josfranmc/gutenberg/download/engine/package-use.html @@ -0,0 +1,190 @@ + + + + + +Uses of Package org.josfranmc.gutenberg.download.engine + + + + + + + + + + + +
+

Uses of Package
org.josfranmc.gutenberg.download.engine

+
+
+ +
+ + + + + + diff --git a/javadoc/org/josfranmc/gutenberg/download/package-frame.html b/javadoc/org/josfranmc/gutenberg/download/package-frame.html new file mode 100644 index 0000000..3657e2a --- /dev/null +++ b/javadoc/org/josfranmc/gutenberg/download/package-frame.html @@ -0,0 +1,23 @@ + + + + + +org.josfranmc.gutenberg.download + + + + + +

org.josfranmc.gutenberg.download

+ + + diff --git a/javadoc/org/josfranmc/gutenberg/download/package-summary.html b/javadoc/org/josfranmc/gutenberg/download/package-summary.html new file mode 100644 index 0000000..a1b2b33 --- /dev/null +++ b/javadoc/org/josfranmc/gutenberg/download/package-summary.html @@ -0,0 +1,162 @@ + + + + + +org.josfranmc.gutenberg.download + + + + + + + + + + + +
+

Package org.josfranmc.gutenberg.download

+
+
+
    +
  • + + + + + + + + + + + + + + + + + + + + + + + + +
    Class Summary 
    ClassDescription
    DownloadBooks +
    Allows to perform the file download process.
    +
    DownloadParams +
    Parameters used in the application.
    +
    DownloadThread +
    Downloads a resource.
    +
    JGutenbergDownload +
    It allows to download books from the Gutenberg project repositories.
    +
    +
  • +
+
+ + + + + + diff --git a/javadoc/org/josfranmc/gutenberg/download/package-tree.html b/javadoc/org/josfranmc/gutenberg/download/package-tree.html new file mode 100644 index 0000000..85389ac --- /dev/null +++ b/javadoc/org/josfranmc/gutenberg/download/package-tree.html @@ -0,0 +1,140 @@ + + + + + +org.josfranmc.gutenberg.download Class Hierarchy + + + + + + + + + + + +
+

Hierarchy For Package org.josfranmc.gutenberg.download

+Package Hierarchies: + +
+
+

Class Hierarchy

+ +
+ + + + + + diff --git a/javadoc/org/josfranmc/gutenberg/download/package-use.html b/javadoc/org/josfranmc/gutenberg/download/package-use.html new file mode 100644 index 0000000..d0df101 --- /dev/null +++ b/javadoc/org/josfranmc/gutenberg/download/package-use.html @@ -0,0 +1,159 @@ + + + + + +Uses of Package org.josfranmc.gutenberg.download + + + + + + + + + + + +
+

Uses of Package
org.josfranmc.gutenberg.download

+
+
+ +
+ + + + + + diff --git a/javadoc/org/josfranmc/gutenberg/util/FileManager.html b/javadoc/org/josfranmc/gutenberg/util/FileManager.html new file mode 100644 index 0000000..7a72579 --- /dev/null +++ b/javadoc/org/josfranmc/gutenberg/util/FileManager.html @@ -0,0 +1,329 @@ + + + + + +FileManager + + + + + + + + + + + + +
+
org.josfranmc.gutenberg.util
+

Class FileManager

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.josfranmc.gutenberg.util.FileManager
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class FileManager
    +extends java.lang.Object
    +
    Tools for managing files.
    +
    +
    Version:
    +
    2.0
    +
    Author:
    +
    Jose Francisco Mena Ceca
    +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + +
      All Methods Static Methods Concrete Methods 
      Modifier and TypeMethod and Description
      static booleanfileExists(java.lang.String localPath, + java.lang.String url) +
      Checks if the file indicated by an url already exists in a local path.
      +
      static java.lang.StringgetLocalFileName(java.lang.String str) +
      Returns the name of file inside a path.
      +
      static java.lang.StringgetLocalFilePathFromURL(java.lang.String savePath, + java.lang.String link) +
      Returns the path a file must have when downloaded on the local machine.
      +
      static voidunzipFiles(java.lang.String inputPath, + java.lang.String outputPath) +
      Unzips files in format zip from a certain folder.
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        fileExists

        +
        public static boolean fileExists(java.lang.String localPath,
        +                                 java.lang.String url)
        +
        Checks if the file indicated by an url already exists in a local path.
        +
        +
        Parameters:
        +
        localPath - local path
        +
        url - download url
        +
        Returns:
        +
        true if the file indicated by the url exists in the local path, false otherwise
        +
        +
      • +
      + + + +
        +
      • +

        getLocalFilePathFromURL

        +
        public static java.lang.String getLocalFilePathFromURL(java.lang.String savePath,
        +                                                       java.lang.String link)
        +
        Returns the path a file must have when downloaded on the local machine.
        + The path is formed by concatenating two elements: on the one hand, tha path of the folder where the download will be saved, + on the other hand, the name of the file in the download url (file name is at the end of the url, from last separator character of folders).
        + If the name of the file contains ? and &amp; characters are replaced by _ and & respectively.
        +
        +
        Parameters:
        +
        savePath - path of the folder in which to get the download
        +
        link - download link
        +
        Returns:
        +
        la ruta del fichero en el equipo local
        +
        +
      • +
      + + + +
        +
      • +

        getLocalFileName

        +
        public static java.lang.String getLocalFileName(java.lang.String str)
        +
        Returns the name of file inside a path.
        +
        +
        Parameters:
        +
        str - file path
        +
        Returns:
        +
        the name of file inside str parameter
        +
        +
      • +
      + + + +
        +
      • +

        unzipFiles

        +
        public static void unzipFiles(java.lang.String inputPath,
        +                              java.lang.String outputPath)
        +
        Unzips files in format zip from a certain folder.
        +
        +
        Parameters:
        +
        inputPath - folder path with zip files
        +
        outputPath - folder path where unzip files
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + + + diff --git a/javadoc/org/josfranmc/gutenberg/util/FileScraping.html b/javadoc/org/josfranmc/gutenberg/util/FileScraping.html new file mode 100644 index 0000000..d01d131 --- /dev/null +++ b/javadoc/org/josfranmc/gutenberg/util/FileScraping.html @@ -0,0 +1,254 @@ + + + + + +FileScraping + + + + + + + + + + + + +
+
org.josfranmc.gutenberg.util
+

Class FileScraping

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.josfranmc.gutenberg.util.FileScraping
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class FileScraping
    +extends java.lang.Object
    +
    Tools for searching web links in files.
    +
    +
    Version:
    +
    2.0
    +
    Author:
    +
    Jose Francisco Mena Ceca
    +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + +
      All Methods Static Methods Concrete Methods 
      Modifier and TypeMethod and Description
      static java.util.List<java.lang.String>getLinks(java.lang.String filePath) +
      Returns a list with all links within an html file.
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        getLinks

        +
        public static java.util.List<java.lang.String> getLinks(java.lang.String filePath)
        +
        Returns a list with all links within an html file.
        + The links are extracted from href attributes of <a> elements.
        +
        +
        Parameters:
        +
        filePath - path of file to analyze
        +
        Returns:
        +
        a List element with links
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + + + diff --git a/javadoc/org/josfranmc/gutenberg/util/GutenbergException.html b/javadoc/org/josfranmc/gutenberg/util/GutenbergException.html new file mode 100644 index 0000000..b588400 --- /dev/null +++ b/javadoc/org/josfranmc/gutenberg/util/GutenbergException.html @@ -0,0 +1,310 @@ + + + + + +GutenbergException + + + + + + + + + + + + +
+
org.josfranmc.gutenberg.util
+

Class GutenbergException

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • java.lang.Throwable
    • +
    • +
        +
      • java.lang.Exception
      • +
      • +
          +
        • java.lang.RuntimeException
        • +
        • +
            +
          • org.josfranmc.gutenberg.util.GutenbergException
          • +
          +
        • +
        +
      • +
      +
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    java.io.Serializable
    +
    +
    +
    +
    public class GutenbergException
    +extends java.lang.RuntimeException
    +
    It allows to capture exceptions in the application in the form of a RuntimeException.
    +
    +
    Version:
    +
    2.0
    +
    Author:
    +
    Jose Francisco Mena Ceca
    +
    See Also:
    +
    Serialized Form
    +
    +
  • +
+
+
+
    +
  • + + + +
      +
    • + + +

      Method Summary

      +
        +
      • + + +

        Methods inherited from class java.lang.Throwable

        +addSuppressed, fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, getSuppressed, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString
      • +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        GutenbergException

        +
        public GutenbergException()
        +
      • +
      + + + +
        +
      • +

        GutenbergException

        +
        public GutenbergException(java.lang.String message,
        +                          java.lang.Throwable cause)
        +
      • +
      + + + +
        +
      • +

        GutenbergException

        +
        public GutenbergException(java.lang.String message)
        +
      • +
      + + + +
        +
      • +

        GutenbergException

        +
        public GutenbergException(java.lang.Throwable cause)
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + + + diff --git a/javadoc/org/josfranmc/gutenberg/util/class-use/FileManager.html b/javadoc/org/josfranmc/gutenberg/util/class-use/FileManager.html new file mode 100644 index 0000000..e8f5ffc --- /dev/null +++ b/javadoc/org/josfranmc/gutenberg/util/class-use/FileManager.html @@ -0,0 +1,124 @@ + + + + + +Uses of Class org.josfranmc.gutenberg.util.FileManager + + + + + + + + + + + +
+

Uses of Class
org.josfranmc.gutenberg.util.FileManager

+
+
No usage of org.josfranmc.gutenberg.util.FileManager
+ + + + + + diff --git a/javadoc/org/josfranmc/gutenberg/util/class-use/FileScraping.html b/javadoc/org/josfranmc/gutenberg/util/class-use/FileScraping.html new file mode 100644 index 0000000..3edca9e --- /dev/null +++ b/javadoc/org/josfranmc/gutenberg/util/class-use/FileScraping.html @@ -0,0 +1,124 @@ + + + + + +Uses of Class org.josfranmc.gutenberg.util.FileScraping + + + + + + + + + + + +
+

Uses of Class
org.josfranmc.gutenberg.util.FileScraping

+
+
No usage of org.josfranmc.gutenberg.util.FileScraping
+ + + + + + diff --git a/javadoc/org/josfranmc/gutenberg/util/class-use/GutenbergException.html b/javadoc/org/josfranmc/gutenberg/util/class-use/GutenbergException.html new file mode 100644 index 0000000..712504b --- /dev/null +++ b/javadoc/org/josfranmc/gutenberg/util/class-use/GutenbergException.html @@ -0,0 +1,124 @@ + + + + + +Uses of Class org.josfranmc.gutenberg.util.GutenbergException + + + + + + + + + + + +
+

Uses of Class
org.josfranmc.gutenberg.util.GutenbergException

+
+
No usage of org.josfranmc.gutenberg.util.GutenbergException
+ + + + + + diff --git a/javadoc/org/josfranmc/gutenberg/util/package-frame.html b/javadoc/org/josfranmc/gutenberg/util/package-frame.html new file mode 100644 index 0000000..713d762 --- /dev/null +++ b/javadoc/org/josfranmc/gutenberg/util/package-frame.html @@ -0,0 +1,25 @@ + + + + + +org.josfranmc.gutenberg.util + + + + + +

org.josfranmc.gutenberg.util

+
+

Classes

+ +

Exceptions

+ +
+ + diff --git a/javadoc/org/josfranmc/gutenberg/util/package-summary.html b/javadoc/org/josfranmc/gutenberg/util/package-summary.html new file mode 100644 index 0000000..3a6dd43 --- /dev/null +++ b/javadoc/org/josfranmc/gutenberg/util/package-summary.html @@ -0,0 +1,167 @@ + + + + + +org.josfranmc.gutenberg.util + + + + + + + + + + + +
+

Package org.josfranmc.gutenberg.util

+
+
+
    +
  • + + + + + + + + + + + + + + + + +
    Class Summary 
    ClassDescription
    FileManager +
    Tools for managing files.
    +
    FileScraping +
    Tools for searching web links in files.
    +
    +
  • +
  • + + + + + + + + + + + + +
    Exception Summary 
    ExceptionDescription
    GutenbergException +
    It allows to capture exceptions in the application in the form of a RuntimeException.
    +
    +
  • +
+
+ + + + + + diff --git a/javadoc/org/josfranmc/gutenberg/util/package-tree.html b/javadoc/org/josfranmc/gutenberg/util/package-tree.html new file mode 100644 index 0000000..d8e6dc7 --- /dev/null +++ b/javadoc/org/josfranmc/gutenberg/util/package-tree.html @@ -0,0 +1,151 @@ + + + + + +org.josfranmc.gutenberg.util Class Hierarchy + + + + + + + + + + + +
+

Hierarchy For Package org.josfranmc.gutenberg.util

+Package Hierarchies: + +
+
+

Class Hierarchy

+
    +
  • java.lang.Object +
      +
    • org.josfranmc.gutenberg.util.FileManager
    • +
    • org.josfranmc.gutenberg.util.FileScraping
    • +
    • java.lang.Throwable (implements java.io.Serializable) +
        +
      • java.lang.Exception + +
      • +
      +
    • +
    +
  • +
+
+ + + + + + diff --git a/javadoc/org/josfranmc/gutenberg/util/package-use.html b/javadoc/org/josfranmc/gutenberg/util/package-use.html new file mode 100644 index 0000000..52d0c11 --- /dev/null +++ b/javadoc/org/josfranmc/gutenberg/util/package-use.html @@ -0,0 +1,124 @@ + + + + + +Uses of Package org.josfranmc.gutenberg.util + + + + + + + + + + + +
+

Uses of Package
org.josfranmc.gutenberg.util

+
+
No usage of org.josfranmc.gutenberg.util
+ + + + + + diff --git a/javadoc/overview-frame.html b/javadoc/overview-frame.html new file mode 100644 index 0000000..94cd3fc --- /dev/null +++ b/javadoc/overview-frame.html @@ -0,0 +1,23 @@ + + + + + +Overview List + + + + + + + +

 

+ + diff --git a/javadoc/overview-summary.html b/javadoc/overview-summary.html new file mode 100644 index 0000000..43b91b1 --- /dev/null +++ b/javadoc/overview-summary.html @@ -0,0 +1,146 @@ + + + + + +Overview + + + + + + + + +
+ + + + + + + +
+ + +
+

JGutenbergDownload

+
+
+ + + + + + + + + + + + + + + + + + + + +
Packages 
PackageDescription
org.josfranmc.gutenberg.download 
org.josfranmc.gutenberg.download.engine 
org.josfranmc.gutenberg.util 
+
+ +
+ + + + + + + +
+ + + + diff --git a/javadoc/overview-tree.html b/javadoc/overview-tree.html new file mode 100644 index 0000000..e430dde --- /dev/null +++ b/javadoc/overview-tree.html @@ -0,0 +1,176 @@ + + + + + +Class Hierarchy + + + + + + + + +
+ + + + + + + +
+ + + +
+

Class Hierarchy

+ +

Interface Hierarchy

+ +

Enum Hierarchy

+
    +
  • java.lang.Object +
      +
    • java.lang.Enum<E> (implements java.lang.Comparable<T>, java.io.Serializable) + +
    • +
    +
  • +
+
+ +
+ + + + + + + +
+ + + + diff --git a/javadoc/package-list b/javadoc/package-list new file mode 100644 index 0000000..5ea2853 --- /dev/null +++ b/javadoc/package-list @@ -0,0 +1,3 @@ +org.josfranmc.gutenberg.download +org.josfranmc.gutenberg.download.engine +org.josfranmc.gutenberg.util diff --git a/javadoc/script.js b/javadoc/script.js new file mode 100644 index 0000000..b346356 --- /dev/null +++ b/javadoc/script.js @@ -0,0 +1,30 @@ +function show(type) +{ + count = 0; + for (var key in methods) { + var row = document.getElementById(key); + if ((methods[key] & type) != 0) { + row.style.display = ''; + row.className = (count++ % 2) ? rowColor : altColor; + } + else + row.style.display = 'none'; + } + updateTabs(type); +} + +function updateTabs(type) +{ + for (var value in tabs) { + var sNode = document.getElementById(tabs[value][0]); + var spanNode = sNode.firstChild; + if (value == type) { + sNode.className = activeTableTab; + spanNode.innerHTML = tabs[value][1]; + } + else { + sNode.className = tableTab; + spanNode.innerHTML = "" + tabs[value][1] + ""; + } + } +} diff --git a/javadoc/serialized-form.html b/javadoc/serialized-form.html new file mode 100644 index 0000000..28a5db6 --- /dev/null +++ b/javadoc/serialized-form.html @@ -0,0 +1,137 @@ + + + + + +Serialized Form + + + + + + + + +
+ + + + + + + +
+ + +
+

Serialized Form

+
+
+ +
+ +
+ + + + + + + +
+ + + + diff --git a/javadoc/stylesheet.css b/javadoc/stylesheet.css new file mode 100644 index 0000000..98055b2 --- /dev/null +++ b/javadoc/stylesheet.css @@ -0,0 +1,574 @@ +/* Javadoc style sheet */ +/* +Overall document style +*/ + +@import url('resources/fonts/dejavu.css'); + +body { + background-color:#ffffff; + color:#353833; + font-family:'DejaVu Sans', Arial, Helvetica, sans-serif; + font-size:14px; + margin:0; +} +a:link, a:visited { + text-decoration:none; + color:#4A6782; +} +a:hover, a:focus { + text-decoration:none; + color:#bb7a2a; +} +a:active { + text-decoration:none; + color:#4A6782; +} +a[name] { + color:#353833; +} +a[name]:hover { + text-decoration:none; + color:#353833; +} +pre { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; +} +h1 { + font-size:20px; +} +h2 { + font-size:18px; +} +h3 { + font-size:16px; + font-style:italic; +} +h4 { + font-size:13px; +} +h5 { + font-size:12px; +} +h6 { + font-size:11px; +} +ul { + list-style-type:disc; +} +code, tt { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; + padding-top:4px; + margin-top:8px; + line-height:1.4em; +} +dt code { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; + padding-top:4px; +} +table tr td dt code { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; + vertical-align:top; + padding-top:4px; +} +sup { + font-size:8px; +} +/* +Document title and Copyright styles +*/ +.clear { + clear:both; + height:0px; + overflow:hidden; +} +.aboutLanguage { + float:right; + padding:0px 21px; + font-size:11px; + z-index:200; + margin-top:-9px; +} +.legalCopy { + margin-left:.5em; +} +.bar a, .bar a:link, .bar a:visited, .bar a:active { + color:#FFFFFF; + text-decoration:none; +} +.bar a:hover, .bar a:focus { + color:#bb7a2a; +} +.tab { + background-color:#0066FF; + color:#ffffff; + padding:8px; + width:5em; + font-weight:bold; +} +/* +Navigation bar styles +*/ +.bar { + background-color:#4D7A97; + color:#FFFFFF; + padding:.8em .5em .4em .8em; + height:auto;/*height:1.8em;*/ + font-size:11px; + margin:0; +} +.topNav { + background-color:#4D7A97; + color:#FFFFFF; + float:left; + padding:0; + width:100%; + clear:right; + height:2.8em; + padding-top:10px; + overflow:hidden; + font-size:12px; +} +.bottomNav { + margin-top:10px; + background-color:#4D7A97; + color:#FFFFFF; + float:left; + padding:0; + width:100%; + clear:right; + height:2.8em; + padding-top:10px; + overflow:hidden; + font-size:12px; +} +.subNav { + background-color:#dee3e9; + float:left; + width:100%; + overflow:hidden; + font-size:12px; +} +.subNav div { + clear:left; + float:left; + padding:0 0 5px 6px; + text-transform:uppercase; +} +ul.navList, ul.subNavList { + float:left; + margin:0 25px 0 0; + padding:0; +} +ul.navList li{ + list-style:none; + float:left; + padding: 5px 6px; + text-transform:uppercase; +} +ul.subNavList li{ + list-style:none; + float:left; +} +.topNav a:link, .topNav a:active, .topNav a:visited, .bottomNav a:link, .bottomNav a:active, .bottomNav a:visited { + color:#FFFFFF; + text-decoration:none; + text-transform:uppercase; +} +.topNav a:hover, .bottomNav a:hover { + text-decoration:none; + color:#bb7a2a; + text-transform:uppercase; +} +.navBarCell1Rev { + background-color:#F8981D; + color:#253441; + margin: auto 5px; +} +.skipNav { + position:absolute; + top:auto; + left:-9999px; + overflow:hidden; +} +/* +Page header and footer styles +*/ +.header, .footer { + clear:both; + margin:0 20px; + padding:5px 0 0 0; +} +.indexHeader { + margin:10px; + position:relative; +} +.indexHeader span{ + margin-right:15px; +} +.indexHeader h1 { + font-size:13px; +} +.title { + color:#2c4557; + margin:10px 0; +} +.subTitle { + margin:5px 0 0 0; +} +.header ul { + margin:0 0 15px 0; + padding:0; +} +.footer ul { + margin:20px 0 5px 0; +} +.header ul li, .footer ul li { + list-style:none; + font-size:13px; +} +/* +Heading styles +*/ +div.details ul.blockList ul.blockList ul.blockList li.blockList h4, div.details ul.blockList ul.blockList ul.blockListLast li.blockList h4 { + background-color:#dee3e9; + border:1px solid #d0d9e0; + margin:0 0 6px -8px; + padding:7px 5px; +} +ul.blockList ul.blockList ul.blockList li.blockList h3 { + background-color:#dee3e9; + border:1px solid #d0d9e0; + margin:0 0 6px -8px; + padding:7px 5px; +} +ul.blockList ul.blockList li.blockList h3 { + padding:0; + margin:15px 0; +} +ul.blockList li.blockList h2 { + padding:0px 0 20px 0; +} +/* +Page layout container styles +*/ +.contentContainer, .sourceContainer, .classUseContainer, .serializedFormContainer, .constantValuesContainer { + clear:both; + padding:10px 20px; + position:relative; +} +.indexContainer { + margin:10px; + position:relative; + font-size:12px; +} +.indexContainer h2 { + font-size:13px; + padding:0 0 3px 0; +} +.indexContainer ul { + margin:0; + padding:0; +} +.indexContainer ul li { + list-style:none; + padding-top:2px; +} +.contentContainer .description dl dt, .contentContainer .details dl dt, .serializedFormContainer dl dt { + font-size:12px; + font-weight:bold; + margin:10px 0 0 0; + color:#4E4E4E; +} +.contentContainer .description dl dd, .contentContainer .details dl dd, .serializedFormContainer dl dd { + margin:5px 0 10px 0px; + font-size:14px; + font-family:'DejaVu Sans Mono',monospace; +} +.serializedFormContainer dl.nameValue dt { + margin-left:1px; + font-size:1.1em; + display:inline; + font-weight:bold; +} +.serializedFormContainer dl.nameValue dd { + margin:0 0 0 1px; + font-size:1.1em; + display:inline; +} +/* +List styles +*/ +ul.horizontal li { + display:inline; + font-size:0.9em; +} +ul.inheritance { + margin:0; + padding:0; +} +ul.inheritance li { + display:inline; + list-style:none; +} +ul.inheritance li ul.inheritance { + margin-left:15px; + padding-left:15px; + padding-top:1px; +} +ul.blockList, ul.blockListLast { + margin:10px 0 10px 0; + padding:0; +} +ul.blockList li.blockList, ul.blockListLast li.blockList { + list-style:none; + margin-bottom:15px; + line-height:1.4; +} +ul.blockList ul.blockList li.blockList, ul.blockList ul.blockListLast li.blockList { + padding:0px 20px 5px 10px; + border:1px solid #ededed; + background-color:#f8f8f8; +} +ul.blockList ul.blockList ul.blockList li.blockList, ul.blockList ul.blockList ul.blockListLast li.blockList { + padding:0 0 5px 8px; + background-color:#ffffff; + border:none; +} +ul.blockList ul.blockList ul.blockList ul.blockList li.blockList { + margin-left:0; + padding-left:0; + padding-bottom:15px; + border:none; +} +ul.blockList ul.blockList ul.blockList ul.blockList li.blockListLast { + list-style:none; + border-bottom:none; + padding-bottom:0; +} +table tr td dl, table tr td dl dt, table tr td dl dd { + margin-top:0; + margin-bottom:1px; +} +/* +Table styles +*/ +.overviewSummary, .memberSummary, .typeSummary, .useSummary, .constantsSummary, .deprecatedSummary { + width:100%; + border-left:1px solid #EEE; + border-right:1px solid #EEE; + border-bottom:1px solid #EEE; +} +.overviewSummary, .memberSummary { + padding:0px; +} +.overviewSummary caption, .memberSummary caption, .typeSummary caption, +.useSummary caption, .constantsSummary caption, .deprecatedSummary caption { + position:relative; + text-align:left; + background-repeat:no-repeat; + color:#253441; + font-weight:bold; + clear:none; + overflow:hidden; + padding:0px; + padding-top:10px; + padding-left:1px; + margin:0px; + white-space:pre; +} +.overviewSummary caption a:link, .memberSummary caption a:link, .typeSummary caption a:link, +.useSummary caption a:link, .constantsSummary caption a:link, .deprecatedSummary caption a:link, +.overviewSummary caption a:hover, .memberSummary caption a:hover, .typeSummary caption a:hover, +.useSummary caption a:hover, .constantsSummary caption a:hover, .deprecatedSummary caption a:hover, +.overviewSummary caption a:active, .memberSummary caption a:active, .typeSummary caption a:active, +.useSummary caption a:active, .constantsSummary caption a:active, .deprecatedSummary caption a:active, +.overviewSummary caption a:visited, .memberSummary caption a:visited, .typeSummary caption a:visited, +.useSummary caption a:visited, .constantsSummary caption a:visited, .deprecatedSummary caption a:visited { + color:#FFFFFF; +} +.overviewSummary caption span, .memberSummary caption span, .typeSummary caption span, +.useSummary caption span, .constantsSummary caption span, .deprecatedSummary caption span { + white-space:nowrap; + padding-top:5px; + padding-left:12px; + padding-right:12px; + padding-bottom:7px; + display:inline-block; + float:left; + background-color:#F8981D; + border: none; + height:16px; +} +.memberSummary caption span.activeTableTab span { + white-space:nowrap; + padding-top:5px; + padding-left:12px; + padding-right:12px; + margin-right:3px; + display:inline-block; + float:left; + background-color:#F8981D; + height:16px; +} +.memberSummary caption span.tableTab span { + white-space:nowrap; + padding-top:5px; + padding-left:12px; + padding-right:12px; + margin-right:3px; + display:inline-block; + float:left; + background-color:#4D7A97; + height:16px; +} +.memberSummary caption span.tableTab, .memberSummary caption span.activeTableTab { + padding-top:0px; + padding-left:0px; + padding-right:0px; + background-image:none; + float:none; + display:inline; +} +.overviewSummary .tabEnd, .memberSummary .tabEnd, .typeSummary .tabEnd, +.useSummary .tabEnd, .constantsSummary .tabEnd, .deprecatedSummary .tabEnd { + display:none; + width:5px; + position:relative; + float:left; + background-color:#F8981D; +} +.memberSummary .activeTableTab .tabEnd { + display:none; + width:5px; + margin-right:3px; + position:relative; + float:left; + background-color:#F8981D; +} +.memberSummary .tableTab .tabEnd { + display:none; + width:5px; + margin-right:3px; + position:relative; + background-color:#4D7A97; + float:left; + +} +.overviewSummary td, .memberSummary td, .typeSummary td, +.useSummary td, .constantsSummary td, .deprecatedSummary td { + text-align:left; + padding:0px 0px 12px 10px; +} +th.colOne, th.colFirst, th.colLast, .useSummary th, .constantsSummary th, +td.colOne, td.colFirst, td.colLast, .useSummary td, .constantsSummary td{ + vertical-align:top; + padding-right:0px; + padding-top:8px; + padding-bottom:3px; +} +th.colFirst, th.colLast, th.colOne, .constantsSummary th { + background:#dee3e9; + text-align:left; + padding:8px 3px 3px 7px; +} +td.colFirst, th.colFirst { + white-space:nowrap; + font-size:13px; +} +td.colLast, th.colLast { + font-size:13px; +} +td.colOne, th.colOne { + font-size:13px; +} +.overviewSummary td.colFirst, .overviewSummary th.colFirst, +.useSummary td.colFirst, .useSummary th.colFirst, +.overviewSummary td.colOne, .overviewSummary th.colOne, +.memberSummary td.colFirst, .memberSummary th.colFirst, +.memberSummary td.colOne, .memberSummary th.colOne, +.typeSummary td.colFirst{ + width:25%; + vertical-align:top; +} +td.colOne a:link, td.colOne a:active, td.colOne a:visited, td.colOne a:hover, td.colFirst a:link, td.colFirst a:active, td.colFirst a:visited, td.colFirst a:hover, td.colLast a:link, td.colLast a:active, td.colLast a:visited, td.colLast a:hover, .constantValuesContainer td a:link, .constantValuesContainer td a:active, .constantValuesContainer td a:visited, .constantValuesContainer td a:hover { + font-weight:bold; +} +.tableSubHeadingColor { + background-color:#EEEEFF; +} +.altColor { + background-color:#FFFFFF; +} +.rowColor { + background-color:#EEEEEF; +} +/* +Content styles +*/ +.description pre { + margin-top:0; +} +.deprecatedContent { + margin:0; + padding:10px 0; +} +.docSummary { + padding:0; +} + +ul.blockList ul.blockList ul.blockList li.blockList h3 { + font-style:normal; +} + +div.block { + font-size:14px; + font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; +} + +td.colLast div { + padding-top:0px; +} + + +td.colLast a { + padding-bottom:3px; +} +/* +Formatting effect styles +*/ +.sourceLineNo { + color:green; + padding:0 30px 0 0; +} +h1.hidden { + visibility:hidden; + overflow:hidden; + font-size:10px; +} +.block { + display:block; + margin:3px 10px 2px 0px; + color:#474747; +} +.deprecatedLabel, .descfrmTypeLabel, .memberNameLabel, .memberNameLink, +.overrideSpecifyLabel, .packageHierarchyLabel, .paramLabel, .returnLabel, +.seeLabel, .simpleTagLabel, .throwsLabel, .typeNameLabel, .typeNameLink { + font-weight:bold; +} +.deprecationComment, .emphasizedPhrase, .interfaceName { + font-style:italic; +} + +div.block div.block span.deprecationComment, div.block div.block span.emphasizedPhrase, +div.block div.block span.interfaceName { + font-style:normal; +} + +div.contentContainer ul.blockList li.blockList h2{ + padding-bottom:0px; +} From 6de8679a2bbfe789f02b36bc84c4d23f44cfdd15 Mon Sep 17 00:00:00 2001 From: josfranmc Date: Wed, 20 Nov 2019 22:23:59 +0100 Subject: [PATCH 20/27] =?UTF-8?q?Cambios=20documentaci=C3=B3n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- javadoc/allclasses-noframe.html | 60 +- javadoc/constant-values.html | 306 ++-- javadoc/deprecated-list.html | 248 +-- javadoc/help-doc.html | 458 +++--- javadoc/index-files/index-1.html | 302 ++-- javadoc/index-files/index-10.html | 266 ++-- javadoc/index-files/index-11.html | 258 ++-- javadoc/index-files/index-12.html | 438 +++--- javadoc/index-files/index-13.html | 270 ++-- javadoc/index-files/index-14.html | 272 ++-- javadoc/index-files/index-2.html | 354 ++--- javadoc/index-files/index-3.html | 262 ++-- javadoc/index-files/index-4.html | 278 ++-- javadoc/index-files/index-6.html | 278 ++-- javadoc/index-files/index-7.html | 270 ++-- javadoc/index-files/index-8.html | 262 ++-- javadoc/index-files/index-9.html | 262 ++-- javadoc/index.html | 148 +- .../gutenberg/download/DownloadBooks.html | 576 +++---- .../gutenberg/download/DownloadParams.html | 1356 ++++++++--------- .../gutenberg/download/DownloadThread.html | 590 +++---- .../download/JGutenbergDownload.html | 1356 ++++++++--------- .../download/class-use/DownloadBooks.html | 248 +-- .../download/class-use/DownloadParams.html | 388 ++--- .../class-use/JGutenbergDownload.html | 248 +-- .../engine/DownloadEngineFactory.html | 762 ++++----- .../download/engine/DownloadEngineType.html | 678 ++++----- .../engine/DownloadHttpUrlConnection.html | 756 ++++----- .../download/engine/DownloadResult.html | 782 +++++----- .../download/engine/IDownloadEngine.html | 640 ++++---- .../class-use/DownloadEngineFactory.html | 248 +-- .../class-use/DownloadHttpUrlConnection.html | 248 +-- .../engine/class-use/IDownloadEngine.html | 444 +++--- .../download/engine/package-frame.html | 60 +- .../download/engine/package-summary.html | 380 ++--- .../download/engine/package-tree.html | 310 ++-- .../gutenberg/download/package-frame.html | 46 +- .../gutenberg/download/package-summary.html | 324 ++-- .../gutenberg/download/package-tree.html | 280 ++-- .../gutenberg/download/package-use.html | 318 ++-- .../josfranmc/gutenberg/util/FileManager.html | 658 ++++---- .../gutenberg/util/FileScraping.html | 508 +++--- .../gutenberg/util/GutenbergException.html | 620 ++++---- .../gutenberg/util/class-use/FileManager.html | 248 +-- .../util/class-use/FileScraping.html | 248 +-- .../util/class-use/GutenbergException.html | 248 +-- .../gutenberg/util/package-frame.html | 50 +- .../gutenberg/util/package-summary.html | 334 ++-- .../gutenberg/util/package-tree.html | 302 ++-- .../josfranmc/gutenberg/util/package-use.html | 248 +-- javadoc/overview-frame.html | 46 +- javadoc/overview-summary.html | 292 ++-- javadoc/overview-tree.html | 352 ++--- javadoc/package-list | 6 +- javadoc/script.js | 60 +- javadoc/serialized-form.html | 274 ++-- javadoc/stylesheet.css | 1148 +++++++------- 57 files changed, 10836 insertions(+), 10836 deletions(-) diff --git a/javadoc/allclasses-noframe.html b/javadoc/allclasses-noframe.html index 7a0cd96..8552275 100644 --- a/javadoc/allclasses-noframe.html +++ b/javadoc/allclasses-noframe.html @@ -1,30 +1,30 @@ - - - - - -All Classes - - - - - -

All Classes

- - - + + + + + +All Classes + + + + + +

All Classes

+ + + diff --git a/javadoc/constant-values.html b/javadoc/constant-values.html index d503f87..bcd9bf0 100644 --- a/javadoc/constant-values.html +++ b/javadoc/constant-values.html @@ -1,153 +1,153 @@ - - - - - -Constant Field Values - - - - - - - - -
- - - - - - - -
- - -
-

Constant Field Values

-

Contents

- -
-
- - -

org.josfranmc.*

-
    -
  • - - - - - - - - - - - - - - -
    org.josfranmc.gutenberg.download.DownloadParams 
    Modifier and TypeConstant FieldValue
    - -public static final java.lang.StringURL_BOOKS"http://www.gutenberg.org/robot/"
    -
  • -
-
- -
- - - - - - - -
- - - - + + + + + +Constant Field Values + + + + + + + + +
+ + + + + + + +
+ + +
+

Constant Field Values

+

Contents

+ +
+
+ + +

org.josfranmc.*

+
    +
  • + + + + + + + + + + + + + + +
    org.josfranmc.gutenberg.download.DownloadParams 
    Modifier and TypeConstant FieldValue
    + +public static final java.lang.StringURL_BOOKS"http://www.gutenberg.org/robot/"
    +
  • +
+
+ +
+ + + + + + + +
+ + + + diff --git a/javadoc/deprecated-list.html b/javadoc/deprecated-list.html index f27e7b4..a2175ba 100644 --- a/javadoc/deprecated-list.html +++ b/javadoc/deprecated-list.html @@ -1,124 +1,124 @@ - - - - - -Deprecated List - - - - - - - - -
- - - - - - - -
- - -
-

Deprecated API

-

Contents

-
- -
- - - - - - - -
- - - - + + + + + +Deprecated List + + + + + + + + +
+ + + + + + + +
+ + +
+

Deprecated API

+

Contents

+
+ +
+ + + + + + + +
+ + + + diff --git a/javadoc/help-doc.html b/javadoc/help-doc.html index ca814e9..675e791 100644 --- a/javadoc/help-doc.html +++ b/javadoc/help-doc.html @@ -1,229 +1,229 @@ - - - - - -API Help - - - - - - - - -
- - - - - - - -
- - -
-

How This API Document Is Organized

-
This API (Application Programming Interface) document has pages corresponding to the items in the navigation bar, described as follows.
-
-
-
    -
  • -

    Overview

    -

    The Overview page is the front page of this API document and provides a list of all packages with a summary for each. This page can also contain an overall description of the set of packages.

    -
  • -
  • -

    Package

    -

    Each package has a page that contains a list of its classes and interfaces, with a summary for each. This page can contain six categories:

    -
      -
    • Interfaces (italic)
    • -
    • Classes
    • -
    • Enums
    • -
    • Exceptions
    • -
    • Errors
    • -
    • Annotation Types
    • -
    -
  • -
  • -

    Class/Interface

    -

    Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a class/interface description, summary tables, and detailed member descriptions:

    -
      -
    • Class inheritance diagram
    • -
    • Direct Subclasses
    • -
    • All Known Subinterfaces
    • -
    • All Known Implementing Classes
    • -
    • Class/interface declaration
    • -
    • Class/interface description
    • -
    -
      -
    • Nested Class Summary
    • -
    • Field Summary
    • -
    • Constructor Summary
    • -
    • Method Summary
    • -
    -
      -
    • Field Detail
    • -
    • Constructor Detail
    • -
    • Method Detail
    • -
    -

    Each summary entry contains the first sentence from the detailed description for that item. The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.

    -
  • -
  • -

    Annotation Type

    -

    Each annotation type has its own separate page with the following sections:

    -
      -
    • Annotation Type declaration
    • -
    • Annotation Type description
    • -
    • Required Element Summary
    • -
    • Optional Element Summary
    • -
    • Element Detail
    • -
    -
  • -
  • -

    Enum

    -

    Each enum has its own separate page with the following sections:

    -
      -
    • Enum declaration
    • -
    • Enum description
    • -
    • Enum Constant Summary
    • -
    • Enum Constant Detail
    • -
    -
  • -
  • -

    Use

    -

    Each documented package, class and interface has its own Use page. This page describes what packages, classes, methods, constructors and fields use any part of the given class or package. Given a class or interface A, its Use page includes subclasses of A, fields declared as A, methods that return A, and methods and constructors with parameters of type A. You can access this page by first going to the package, class or interface, then clicking on the "Use" link in the navigation bar.

    -
  • -
  • -

    Tree (Class Hierarchy)

    -

    There is a Class Hierarchy page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. The classes are organized by inheritance structure starting with java.lang.Object. The interfaces do not inherit from java.lang.Object.

    -
      -
    • When viewing the Overview page, clicking on "Tree" displays the hierarchy for all packages.
    • -
    • When viewing a particular package, class or interface page, clicking "Tree" displays the hierarchy for only that package.
    • -
    -
  • -
  • -

    Deprecated API

    -

    The Deprecated API page lists all of the API that have been deprecated. A deprecated API is not recommended for use, generally due to improvements, and a replacement API is usually given. Deprecated APIs may be removed in future implementations.

    -
  • -
  • -

    Index

    -

    The Index contains an alphabetic list of all classes, interfaces, constructors, methods, and fields.

    -
  • -
  • -

    Prev/Next

    -

    These links take you to the next or previous class, interface, package, or related page.

    -
  • -
  • -

    Frames/No Frames

    -

    These links show and hide the HTML frames. All pages are available with or without frames.

    -
  • -
  • -

    All Classes

    -

    The All Classes link shows all classes and interfaces except non-static nested types.

    -
  • -
  • -

    Serialized Form

    -

    Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to re-implementors, not to developers using the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See also" section of the class description.

    -
  • -
  • -

    Constant Field Values

    -

    The Constant Field Values page lists the static final fields and their values.

    -
  • -
-This help file applies to API documentation generated using the standard doclet.
- -
- - - - - - - -
- - - - + + + + + +API Help + + + + + + + + +
+ + + + + + + +
+ + +
+

How This API Document Is Organized

+
This API (Application Programming Interface) document has pages corresponding to the items in the navigation bar, described as follows.
+
+
+
    +
  • +

    Overview

    +

    The Overview page is the front page of this API document and provides a list of all packages with a summary for each. This page can also contain an overall description of the set of packages.

    +
  • +
  • +

    Package

    +

    Each package has a page that contains a list of its classes and interfaces, with a summary for each. This page can contain six categories:

    +
      +
    • Interfaces (italic)
    • +
    • Classes
    • +
    • Enums
    • +
    • Exceptions
    • +
    • Errors
    • +
    • Annotation Types
    • +
    +
  • +
  • +

    Class/Interface

    +

    Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a class/interface description, summary tables, and detailed member descriptions:

    +
      +
    • Class inheritance diagram
    • +
    • Direct Subclasses
    • +
    • All Known Subinterfaces
    • +
    • All Known Implementing Classes
    • +
    • Class/interface declaration
    • +
    • Class/interface description
    • +
    +
      +
    • Nested Class Summary
    • +
    • Field Summary
    • +
    • Constructor Summary
    • +
    • Method Summary
    • +
    +
      +
    • Field Detail
    • +
    • Constructor Detail
    • +
    • Method Detail
    • +
    +

    Each summary entry contains the first sentence from the detailed description for that item. The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.

    +
  • +
  • +

    Annotation Type

    +

    Each annotation type has its own separate page with the following sections:

    +
      +
    • Annotation Type declaration
    • +
    • Annotation Type description
    • +
    • Required Element Summary
    • +
    • Optional Element Summary
    • +
    • Element Detail
    • +
    +
  • +
  • +

    Enum

    +

    Each enum has its own separate page with the following sections:

    +
      +
    • Enum declaration
    • +
    • Enum description
    • +
    • Enum Constant Summary
    • +
    • Enum Constant Detail
    • +
    +
  • +
  • +

    Use

    +

    Each documented package, class and interface has its own Use page. This page describes what packages, classes, methods, constructors and fields use any part of the given class or package. Given a class or interface A, its Use page includes subclasses of A, fields declared as A, methods that return A, and methods and constructors with parameters of type A. You can access this page by first going to the package, class or interface, then clicking on the "Use" link in the navigation bar.

    +
  • +
  • +

    Tree (Class Hierarchy)

    +

    There is a Class Hierarchy page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. The classes are organized by inheritance structure starting with java.lang.Object. The interfaces do not inherit from java.lang.Object.

    +
      +
    • When viewing the Overview page, clicking on "Tree" displays the hierarchy for all packages.
    • +
    • When viewing a particular package, class or interface page, clicking "Tree" displays the hierarchy for only that package.
    • +
    +
  • +
  • +

    Deprecated API

    +

    The Deprecated API page lists all of the API that have been deprecated. A deprecated API is not recommended for use, generally due to improvements, and a replacement API is usually given. Deprecated APIs may be removed in future implementations.

    +
  • +
  • +

    Index

    +

    The Index contains an alphabetic list of all classes, interfaces, constructors, methods, and fields.

    +
  • +
  • +

    Prev/Next

    +

    These links take you to the next or previous class, interface, package, or related page.

    +
  • +
  • +

    Frames/No Frames

    +

    These links show and hide the HTML frames. All pages are available with or without frames.

    +
  • +
  • +

    All Classes

    +

    The All Classes link shows all classes and interfaces except non-static nested types.

    +
  • +
  • +

    Serialized Form

    +

    Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to re-implementors, not to developers using the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See also" section of the class description.

    +
  • +
  • +

    Constant Field Values

    +

    The Constant Field Values page lists the static final fields and their values.

    +
  • +
+This help file applies to API documentation generated using the standard doclet.
+ +
+ + + + + + + +
+ + + + diff --git a/javadoc/index-files/index-1.html b/javadoc/index-files/index-1.html index 895ad11..3e379e0 100644 --- a/javadoc/index-files/index-1.html +++ b/javadoc/index-files/index-1.html @@ -1,151 +1,151 @@ - - - - - -C-Index - - - - - - - - -
- - - - - - - -
- - -
C D E F G I J M N O R S U V  - - -

C

-
-
create() - Static method in class org.josfranmc.gutenberg.download.engine.DownloadEngineFactory
-
-
Creates an engine for downloading.
-
-
create(DownloadEngineType) - Static method in class org.josfranmc.gutenberg.download.engine.DownloadEngineFactory
-
-
Creates a download engine of the indicated type.
-
-
create(URL, DownloadEngineType) - Static method in class org.josfranmc.gutenberg.download.engine.DownloadEngineFactory
-
-
Creates a download engine of the indicated type for downloading an url.
-
-
create(URL) - Static method in class org.josfranmc.gutenberg.download.engine.DownloadEngineFactory
-
-
Creates an engine for downloading an url.
-
-
create(URL, String, DownloadEngineType) - Static method in class org.josfranmc.gutenberg.download.engine.DownloadEngineFactory
-
-
Creates an engine for downloading.
-
-
create(URL, String) - Static method in class org.josfranmc.gutenberg.download.engine.DownloadEngineFactory
-
-
Creates an engine for downloading.
-
-
-C D E F G I J M N O R S U V 
- -
- - - - - - - -
- - - - + + + + + +C-Index + + + + + + + + +
+ + + + + + + +
+ + +
C D E F G I J M N O R S U V  + + +

C

+
+
create() - Static method in class org.josfranmc.gutenberg.download.engine.DownloadEngineFactory
+
+
Creates an engine for downloading.
+
+
create(DownloadEngineType) - Static method in class org.josfranmc.gutenberg.download.engine.DownloadEngineFactory
+
+
Creates a download engine of the indicated type.
+
+
create(URL, DownloadEngineType) - Static method in class org.josfranmc.gutenberg.download.engine.DownloadEngineFactory
+
+
Creates a download engine of the indicated type for downloading an url.
+
+
create(URL) - Static method in class org.josfranmc.gutenberg.download.engine.DownloadEngineFactory
+
+
Creates an engine for downloading an url.
+
+
create(URL, String, DownloadEngineType) - Static method in class org.josfranmc.gutenberg.download.engine.DownloadEngineFactory
+
+
Creates an engine for downloading.
+
+
create(URL, String) - Static method in class org.josfranmc.gutenberg.download.engine.DownloadEngineFactory
+
+
Creates an engine for downloading.
+
+
+C D E F G I J M N O R S U V 
+ +
+ + + + + + + +
+ + + + diff --git a/javadoc/index-files/index-10.html b/javadoc/index-files/index-10.html index d19892c..79ac760 100644 --- a/javadoc/index-files/index-10.html +++ b/javadoc/index-files/index-10.html @@ -1,133 +1,133 @@ - - - - - -O-Index - - - - - - - - -
- - - - - - - -
- - -
C D E F G I J M N O R S U V  - - -

O

-
-
org.josfranmc.gutenberg.download - package org.josfranmc.gutenberg.download
-
 
-
org.josfranmc.gutenberg.download.engine - package org.josfranmc.gutenberg.download.engine
-
 
-
org.josfranmc.gutenberg.util - package org.josfranmc.gutenberg.util
-
 
-
-C D E F G I J M N O R S U V 
- -
- - - - - - - -
- - - - + + + + + +O-Index + + + + + + + + +
+ + + + + + + +
+ + +
C D E F G I J M N O R S U V  + + +

O

+
+
org.josfranmc.gutenberg.download - package org.josfranmc.gutenberg.download
+
 
+
org.josfranmc.gutenberg.download.engine - package org.josfranmc.gutenberg.download.engine
+
 
+
org.josfranmc.gutenberg.util - package org.josfranmc.gutenberg.util
+
 
+
+C D E F G I J M N O R S U V 
+ +
+ + + + + + + +
+ + + + diff --git a/javadoc/index-files/index-11.html b/javadoc/index-files/index-11.html index c77c73d..6f20d11 100644 --- a/javadoc/index-files/index-11.html +++ b/javadoc/index-files/index-11.html @@ -1,129 +1,129 @@ - - - - - -R-Index - - - - - - - - -
- - - - - - - -
- - -
C D E F G I J M N O R S U V  - - -

R

-
-
run() - Method in class org.josfranmc.gutenberg.download.DownloadThread
-
 
-
-C D E F G I J M N O R S U V 
- -
- - - - - - - -
- - - - + + + + + +R-Index + + + + + + + + +
+ + + + + + + +
+ + +
C D E F G I J M N O R S U V  + + +

R

+
+
run() - Method in class org.josfranmc.gutenberg.download.DownloadThread
+
 
+
+C D E F G I J M N O R S U V 
+ +
+ + + + + + + +
+ + + + diff --git a/javadoc/index-files/index-12.html b/javadoc/index-files/index-12.html index 7c5b398..a563b31 100644 --- a/javadoc/index-files/index-12.html +++ b/javadoc/index-files/index-12.html @@ -1,219 +1,219 @@ - - - - - -S-Index - - - - - - - - -
- - - - - - - -
- - -
C D E F G I J M N O R S U V  - - -

S

-
-
setDelay(int) - Method in class org.josfranmc.gutenberg.download.DownloadParams
-
-
Sets delay between downloads
-
-
setDelay(int) - Method in class org.josfranmc.gutenberg.download.JGutenbergDownload
-
-
Sets delay between downloads
-
-
setEngineType(DownloadEngineType) - Method in class org.josfranmc.gutenberg.download.DownloadParams
-
-
Sets the type of downloading engine to use
-
-
setEngineType(DownloadEngineType) - Method in class org.josfranmc.gutenberg.download.JGutenbergDownload
-
-
Sets the type of downloading engine to use
-
-
setFileType(String) - Method in class org.josfranmc.gutenberg.download.DownloadParams
-
-
Sets the type of file to download.
-
-
setFileType(String) - Method in class org.josfranmc.gutenberg.download.JGutenbergDownload
-
-
Sets the type of file to download.
-
-
setHeaders(URLConnection) - Method in class org.josfranmc.gutenberg.download.engine.DownloadResult
-
-
Sets the header obtained in response to a connection
-
-
setLanguage(String) - Method in class org.josfranmc.gutenberg.download.DownloadParams
-
-
Sets the language of the files to download acording to Gutenberg nomeclature.
-
-
setLanguage(String) - Method in class org.josfranmc.gutenberg.download.JGutenbergDownload
-
-
Sets the language of the files to download acording to Gutenberg nomeclature.
-
-
setMaxFilesToDownload(int) - Method in class org.josfranmc.gutenberg.download.DownloadParams
-
-
Sets the maximum number of files to download.
-
-
setMaxFilesToDownload(int) - Method in class org.josfranmc.gutenberg.download.JGutenbergDownload
-
-
Sets the maximum number of files to download.
-
-
setOverwrite(boolean) - Method in class org.josfranmc.gutenberg.download.DownloadParams
-
-
Sets if the existing files must be overwritten by the downloaded ones
-
-
setOverwrite(boolean) - Method in class org.josfranmc.gutenberg.download.JGutenbergDownload
-
-
Sets if the existing files must be overwritten by the downloaded ones
-
-
setParameters(DownloadParams) - Method in class org.josfranmc.gutenberg.download.JGutenbergDownload
-
-
Sets the application parameters through a DownloadParams object
-
-
setResource(URL) - Method in class org.josfranmc.gutenberg.download.engine.DownloadHttpUrlConnection
-
-
Sets the resource of the url to download, in the form of a URL object
-
-
setResource(URL) - Method in interface org.josfranmc.gutenberg.download.engine.IDownloadEngine
-
-
Sets the resource of the url to download, in the form of a URL object
-
-
setSavedFilePath(String) - Method in class org.josfranmc.gutenberg.download.engine.DownloadResult
-
-
Sets the path of the downloaded file on the local machine.
-
-
setSavePath(String) - Method in class org.josfranmc.gutenberg.download.DownloadParams
-
-
Sets folder path where to get downloaded resources
-
-
setSavePath(String) - Method in class org.josfranmc.gutenberg.download.engine.DownloadHttpUrlConnection
-
-
Sets the local path where to save the resource to be download
-
-
setSavePath(String) - Method in interface org.josfranmc.gutenberg.download.engine.IDownloadEngine
-
-
Sets the local path where to save the resource to be download
-
-
setSavePath(String) - Method in class org.josfranmc.gutenberg.download.JGutenbergDownload
-
-
Sets folder path where to get downloaded resources
-
-
setUnzip(boolean) - Method in class org.josfranmc.gutenberg.download.DownloadParams
-
-
Sets if downloaded files must be unzipping,
-
-
setUnzip(boolean) - Method in class org.josfranmc.gutenberg.download.JGutenbergDownload
-
-
Sets if downloaded files must be unzipping,
-
-
-C D E F G I J M N O R S U V 
- -
- - - - - - - -
- - - - + + + + + +S-Index + + + + + + + + +
+ + + + + + + +
+ + +
C D E F G I J M N O R S U V  + + +

S

+
+
setDelay(int) - Method in class org.josfranmc.gutenberg.download.DownloadParams
+
+
Sets delay between downloads
+
+
setDelay(int) - Method in class org.josfranmc.gutenberg.download.JGutenbergDownload
+
+
Sets delay between downloads
+
+
setEngineType(DownloadEngineType) - Method in class org.josfranmc.gutenberg.download.DownloadParams
+
+
Sets the type of downloading engine to use
+
+
setEngineType(DownloadEngineType) - Method in class org.josfranmc.gutenberg.download.JGutenbergDownload
+
+
Sets the type of downloading engine to use
+
+
setFileType(String) - Method in class org.josfranmc.gutenberg.download.DownloadParams
+
+
Sets the type of file to download.
+
+
setFileType(String) - Method in class org.josfranmc.gutenberg.download.JGutenbergDownload
+
+
Sets the type of file to download.
+
+
setHeaders(URLConnection) - Method in class org.josfranmc.gutenberg.download.engine.DownloadResult
+
+
Sets the header obtained in response to a connection
+
+
setLanguage(String) - Method in class org.josfranmc.gutenberg.download.DownloadParams
+
+
Sets the language of the files to download acording to Gutenberg nomeclature.
+
+
setLanguage(String) - Method in class org.josfranmc.gutenberg.download.JGutenbergDownload
+
+
Sets the language of the files to download acording to Gutenberg nomeclature.
+
+
setMaxFilesToDownload(int) - Method in class org.josfranmc.gutenberg.download.DownloadParams
+
+
Sets the maximum number of files to download.
+
+
setMaxFilesToDownload(int) - Method in class org.josfranmc.gutenberg.download.JGutenbergDownload
+
+
Sets the maximum number of files to download.
+
+
setOverwrite(boolean) - Method in class org.josfranmc.gutenberg.download.DownloadParams
+
+
Sets if the existing files must be overwritten by the downloaded ones
+
+
setOverwrite(boolean) - Method in class org.josfranmc.gutenberg.download.JGutenbergDownload
+
+
Sets if the existing files must be overwritten by the downloaded ones
+
+
setParameters(DownloadParams) - Method in class org.josfranmc.gutenberg.download.JGutenbergDownload
+
+
Sets the application parameters through a DownloadParams object
+
+
setResource(URL) - Method in class org.josfranmc.gutenberg.download.engine.DownloadHttpUrlConnection
+
+
Sets the resource of the url to download, in the form of a URL object
+
+
setResource(URL) - Method in interface org.josfranmc.gutenberg.download.engine.IDownloadEngine
+
+
Sets the resource of the url to download, in the form of a URL object
+
+
setSavedFilePath(String) - Method in class org.josfranmc.gutenberg.download.engine.DownloadResult
+
+
Sets the path of the downloaded file on the local machine.
+
+
setSavePath(String) - Method in class org.josfranmc.gutenberg.download.DownloadParams
+
+
Sets folder path where to get downloaded resources
+
+
setSavePath(String) - Method in class org.josfranmc.gutenberg.download.engine.DownloadHttpUrlConnection
+
+
Sets the local path where to save the resource to be download
+
+
setSavePath(String) - Method in interface org.josfranmc.gutenberg.download.engine.IDownloadEngine
+
+
Sets the local path where to save the resource to be download
+
+
setSavePath(String) - Method in class org.josfranmc.gutenberg.download.JGutenbergDownload
+
+
Sets folder path where to get downloaded resources
+
+
setUnzip(boolean) - Method in class org.josfranmc.gutenberg.download.DownloadParams
+
+
Sets if downloaded files must be unzipping,
+
+
setUnzip(boolean) - Method in class org.josfranmc.gutenberg.download.JGutenbergDownload
+
+
Sets if downloaded files must be unzipping,
+
+
+C D E F G I J M N O R S U V 
+ +
+ + + + + + + +
+ + + + diff --git a/javadoc/index-files/index-13.html b/javadoc/index-files/index-13.html index 0f62803..35a23f3 100644 --- a/javadoc/index-files/index-13.html +++ b/javadoc/index-files/index-13.html @@ -1,135 +1,135 @@ - - - - - -U-Index - - - - - - - - -
- - - - - - - -
- - -
C D E F G I J M N O R S U V  - - -

U

-
-
unzipFiles(String, String) - Static method in class org.josfranmc.gutenberg.util.FileManager
-
-
Unzips files in format zip from a certain folder.
-
-
URL_BOOKS - Static variable in class org.josfranmc.gutenberg.download.DownloadParams
-
-
Base URL of the Gutenberg project to download
-
-
-C D E F G I J M N O R S U V 
- -
- - - - - - - -
- - - - + + + + + +U-Index + + + + + + + + +
+ + + + + + + +
+ + +
C D E F G I J M N O R S U V  + + +

U

+
+
unzipFiles(String, String) - Static method in class org.josfranmc.gutenberg.util.FileManager
+
+
Unzips files in format zip from a certain folder.
+
+
URL_BOOKS - Static variable in class org.josfranmc.gutenberg.download.DownloadParams
+
+
Base URL of the Gutenberg project to download
+
+
+C D E F G I J M N O R S U V 
+ +
+ + + + + + + +
+ + + + diff --git a/javadoc/index-files/index-14.html b/javadoc/index-files/index-14.html index 0aa7a66..1117d08 100644 --- a/javadoc/index-files/index-14.html +++ b/javadoc/index-files/index-14.html @@ -1,136 +1,136 @@ - - - - - -V-Index - - - - - - - - -
- - - - - - - -
- - -
C D E F G I J M N O R S U V  - - -

V

-
-
valueOf(String) - Static method in enum org.josfranmc.gutenberg.download.engine.DownloadEngineType
-
-
Returns the enum constant of this type with the specified name.
-
-
values() - Static method in enum org.josfranmc.gutenberg.download.engine.DownloadEngineType
-
-
Returns an array containing the constants of this enum type, in -the order they are declared.
-
-
-C D E F G I J M N O R S U V 
- -
- - - - - - - -
- - - - + + + + + +V-Index + + + + + + + + +
+ + + + + + + +
+ + +
C D E F G I J M N O R S U V  + + +

V

+
+
valueOf(String) - Static method in enum org.josfranmc.gutenberg.download.engine.DownloadEngineType
+
+
Returns the enum constant of this type with the specified name.
+
+
values() - Static method in enum org.josfranmc.gutenberg.download.engine.DownloadEngineType
+
+
Returns an array containing the constants of this enum type, in +the order they are declared.
+
+
+C D E F G I J M N O R S U V 
+ +
+ + + + + + + +
+ + + + diff --git a/javadoc/index-files/index-2.html b/javadoc/index-files/index-2.html index 88e692c..80fc767 100644 --- a/javadoc/index-files/index-2.html +++ b/javadoc/index-files/index-2.html @@ -1,177 +1,177 @@ - - - - - -D-Index - - - - - - - - -
- - - - - - - -
- - -
C D E F G I J M N O R S U V  - - -

D

-
-
download() - Method in class org.josfranmc.gutenberg.download.engine.DownloadHttpUrlConnection
-
-
Runs a download.
-
-
download() - Method in interface org.josfranmc.gutenberg.download.engine.IDownloadEngine
-
-
Runs a download.
-
-
DownloadBooks - Class in org.josfranmc.gutenberg.download
-
-
Allows to perform the file download process.
-
-
DownloadBooks(DownloadParams) - Constructor for class org.josfranmc.gutenberg.download.DownloadBooks
-
 
-
downloadBooks() - Method in class org.josfranmc.gutenberg.download.JGutenbergDownload
-
-
Begins the process of downloading books.
-
-
DownloadEngineFactory - Class in org.josfranmc.gutenberg.download.engine
-
-
Factory for creating IDownloadEngine objects.
-
-
DownloadEngineType - Enum in org.josfranmc.gutenberg.download.engine
-
-
Types of download engines
-
-
DownloadHttpUrlConnection - Class in org.josfranmc.gutenberg.download.engine
-
-
Allows to download a resource identified by an url and save it in a local folder.
-
-
DownloadParams - Class in org.josfranmc.gutenberg.download
-
-
Parameters used in the application.
-
-
DownloadParams() - Constructor for class org.josfranmc.gutenberg.download.DownloadParams
-
-
Main constructor.
-
-
DownloadResult - Class in org.josfranmc.gutenberg.download.engine
-
-
It encapsulates the result of downloading a resource.
-
-
DownloadResult() - Constructor for class org.josfranmc.gutenberg.download.engine.DownloadResult
-
 
-
DownloadThread - Class in org.josfranmc.gutenberg.download
-
-
Downloads a resource.
-
-
DownloadThread(URL, DownloadParams) - Constructor for class org.josfranmc.gutenberg.download.DownloadThread
-
 
-
-C D E F G I J M N O R S U V 
- -
- - - - - - - -
- - - - + + + + + +D-Index + + + + + + + + +
+ + + + + + + +
+ + +
C D E F G I J M N O R S U V  + + +

D

+
+
download() - Method in class org.josfranmc.gutenberg.download.engine.DownloadHttpUrlConnection
+
+
Runs a download.
+
+
download() - Method in interface org.josfranmc.gutenberg.download.engine.IDownloadEngine
+
+
Runs a download.
+
+
DownloadBooks - Class in org.josfranmc.gutenberg.download
+
+
Allows to perform the file download process.
+
+
DownloadBooks(DownloadParams) - Constructor for class org.josfranmc.gutenberg.download.DownloadBooks
+
 
+
downloadBooks() - Method in class org.josfranmc.gutenberg.download.JGutenbergDownload
+
+
Begins the process of downloading books.
+
+
DownloadEngineFactory - Class in org.josfranmc.gutenberg.download.engine
+
+
Factory for creating IDownloadEngine objects.
+
+
DownloadEngineType - Enum in org.josfranmc.gutenberg.download.engine
+
+
Types of download engines
+
+
DownloadHttpUrlConnection - Class in org.josfranmc.gutenberg.download.engine
+
+
Allows to download a resource identified by an url and save it in a local folder.
+
+
DownloadParams - Class in org.josfranmc.gutenberg.download
+
+
Parameters used in the application.
+
+
DownloadParams() - Constructor for class org.josfranmc.gutenberg.download.DownloadParams
+
+
Main constructor.
+
+
DownloadResult - Class in org.josfranmc.gutenberg.download.engine
+
+
It encapsulates the result of downloading a resource.
+
+
DownloadResult() - Constructor for class org.josfranmc.gutenberg.download.engine.DownloadResult
+
 
+
DownloadThread - Class in org.josfranmc.gutenberg.download
+
+
Downloads a resource.
+
+
DownloadThread(URL, DownloadParams) - Constructor for class org.josfranmc.gutenberg.download.DownloadThread
+
 
+
+C D E F G I J M N O R S U V 
+ +
+ + + + + + + +
+ + + + diff --git a/javadoc/index-files/index-3.html b/javadoc/index-files/index-3.html index 977abf1..5ba8ee9 100644 --- a/javadoc/index-files/index-3.html +++ b/javadoc/index-files/index-3.html @@ -1,131 +1,131 @@ - - - - - -E-Index - - - - - - - - -
- - - - - - - -
- - -
C D E F G I J M N O R S U V  - - -

E

-
-
executeDownload() - Method in class org.josfranmc.gutenberg.download.DownloadBooks
-
-
Perfoms the book download process.
-
-
-C D E F G I J M N O R S U V 
- -
- - - - - - - -
- - - - + + + + + +E-Index + + + + + + + + +
+ + + + + + + +
+ + +
C D E F G I J M N O R S U V  + + +

E

+
+
executeDownload() - Method in class org.josfranmc.gutenberg.download.DownloadBooks
+
+
Perfoms the book download process.
+
+
+C D E F G I J M N O R S U V 
+ +
+ + + + + + + +
+ + + + diff --git a/javadoc/index-files/index-4.html b/javadoc/index-files/index-4.html index 25be0e0..551f0d3 100644 --- a/javadoc/index-files/index-4.html +++ b/javadoc/index-files/index-4.html @@ -1,139 +1,139 @@ - - - - - -F-Index - - - - - - - - -
- - - - - - - -
- - -
C D E F G I J M N O R S U V  - - -

F

-
-
fileExists(String, String) - Static method in class org.josfranmc.gutenberg.util.FileManager
-
-
Checks if the file indicated by an url already exists in a local path.
-
-
FileManager - Class in org.josfranmc.gutenberg.util
-
-
Tools for managing files.
-
-
FileScraping - Class in org.josfranmc.gutenberg.util
-
-
Tools for searching web links in files.
-
-
-C D E F G I J M N O R S U V 
- -
- - - - - - - -
- - - - + + + + + +F-Index + + + + + + + + +
+ + + + + + + +
+ + +
C D E F G I J M N O R S U V  + + +

F

+
+
fileExists(String, String) - Static method in class org.josfranmc.gutenberg.util.FileManager
+
+
Checks if the file indicated by an url already exists in a local path.
+
+
FileManager - Class in org.josfranmc.gutenberg.util
+
+
Tools for managing files.
+
+
FileScraping - Class in org.josfranmc.gutenberg.util
+
+
Tools for searching web links in files.
+
+
+C D E F G I J M N O R S U V 
+ +
+ + + + + + + +
+ + + + diff --git a/javadoc/index-files/index-6.html b/javadoc/index-files/index-6.html index 3fcc610..52a8a69 100644 --- a/javadoc/index-files/index-6.html +++ b/javadoc/index-files/index-6.html @@ -1,139 +1,139 @@ - - - - - -I-Index - - - - - - - - -
- - - - - - - -
- - -
C D E F G I J M N O R S U V  - - -

I

-
-
IDownloadEngine - Interface in org.josfranmc.gutenberg.download.engine
-
-
Defines the behavior that a class have to implement in order to have the ability to download resources on net.
-
-
isOverwrite() - Method in class org.josfranmc.gutenberg.download.DownloadParams
-
 
-
isOverwrite() - Method in class org.josfranmc.gutenberg.download.JGutenbergDownload
-
 
-
isUnzip() - Method in class org.josfranmc.gutenberg.download.DownloadParams
-
 
-
isUnzip() - Method in class org.josfranmc.gutenberg.download.JGutenbergDownload
-
 
-
-C D E F G I J M N O R S U V 
- -
- - - - - - - -
- - - - + + + + + +I-Index + + + + + + + + +
+ + + + + + + +
+ + +
C D E F G I J M N O R S U V  + + +

I

+
+
IDownloadEngine - Interface in org.josfranmc.gutenberg.download.engine
+
+
Defines the behavior that a class have to implement in order to have the ability to download resources on net.
+
+
isOverwrite() - Method in class org.josfranmc.gutenberg.download.DownloadParams
+
 
+
isOverwrite() - Method in class org.josfranmc.gutenberg.download.JGutenbergDownload
+
 
+
isUnzip() - Method in class org.josfranmc.gutenberg.download.DownloadParams
+
 
+
isUnzip() - Method in class org.josfranmc.gutenberg.download.JGutenbergDownload
+
 
+
+C D E F G I J M N O R S U V 
+ +
+ + + + + + + +
+ + + + diff --git a/javadoc/index-files/index-7.html b/javadoc/index-files/index-7.html index 3bacfb6..91df234 100644 --- a/javadoc/index-files/index-7.html +++ b/javadoc/index-files/index-7.html @@ -1,135 +1,135 @@ - - - - - -J-Index - - - - - - - - -
- - - - - - - -
- - -
C D E F G I J M N O R S U V  - - -

J

-
-
JGutenbergDownload - Class in org.josfranmc.gutenberg.download
-
-
It allows to download books from the Gutenberg project repositories.
-
-
JGutenbergDownload() - Constructor for class org.josfranmc.gutenberg.download.JGutenbergDownload
-
-
Main constructor.
-
-
-C D E F G I J M N O R S U V 
- -
- - - - - - - -
- - - - + + + + + +J-Index + + + + + + + + +
+ + + + + + + +
+ + +
C D E F G I J M N O R S U V  + + +

J

+
+
JGutenbergDownload - Class in org.josfranmc.gutenberg.download
+
+
It allows to download books from the Gutenberg project repositories.
+
+
JGutenbergDownload() - Constructor for class org.josfranmc.gutenberg.download.JGutenbergDownload
+
+
Main constructor.
+
+
+C D E F G I J M N O R S U V 
+ +
+ + + + + + + +
+ + + + diff --git a/javadoc/index-files/index-8.html b/javadoc/index-files/index-8.html index 8a45d7f..429502d 100644 --- a/javadoc/index-files/index-8.html +++ b/javadoc/index-files/index-8.html @@ -1,131 +1,131 @@ - - - - - -M-Index - - - - - - - - -
- - - - - - - -
- - -
C D E F G I J M N O R S U V  - - -

M

-
-
main(String[]) - Static method in class org.josfranmc.gutenberg.download.JGutenbergDownload
-
-
Main method for running the application.
-
-
-C D E F G I J M N O R S U V 
- -
- - - - - - - -
- - - - + + + + + +M-Index + + + + + + + + +
+ + + + + + + +
+ + +
C D E F G I J M N O R S U V  + + +

M

+
+
main(String[]) - Static method in class org.josfranmc.gutenberg.download.JGutenbergDownload
+
+
Main method for running the application.
+
+
+C D E F G I J M N O R S U V 
+ +
+ + + + + + + +
+ + + + diff --git a/javadoc/index-files/index-9.html b/javadoc/index-files/index-9.html index 56de4fc..fbe5425 100644 --- a/javadoc/index-files/index-9.html +++ b/javadoc/index-files/index-9.html @@ -1,131 +1,131 @@ - - - - - -N-Index - - - - - - - - -
- - - - - - - -
- - -
C D E F G I J M N O R S U V  - - -

N

-
-
newInstance(URL, String) - Static method in class org.josfranmc.gutenberg.download.engine.DownloadHttpUrlConnection
-
-
Creates a DownloadHttpUrlConnection object which is an IDownloadEngine type instance.
-
-
-C D E F G I J M N O R S U V 
- -
- - - - - - - -
- - - - + + + + + +N-Index + + + + + + + + +
+ + + + + + + +
+ + +
C D E F G I J M N O R S U V  + + +

N

+
+
newInstance(URL, String) - Static method in class org.josfranmc.gutenberg.download.engine.DownloadHttpUrlConnection
+
+
Creates a DownloadHttpUrlConnection object which is an IDownloadEngine type instance.
+
+
+C D E F G I J M N O R S U V 
+ +
+ + + + + + + +
+ + + + diff --git a/javadoc/index.html b/javadoc/index.html index dcf92af..336c2c0 100644 --- a/javadoc/index.html +++ b/javadoc/index.html @@ -1,74 +1,74 @@ - - - - - -Generated Documentation (Untitled) - - - - - - - - - -<noscript> -<div>JavaScript is disabled on your browser.</div> -</noscript> -<h2>Frame Alert</h2> -<p>This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client. Link to <a href="overview-summary.html">Non-frame version</a>.</p> - - - + + + + + +Generated Documentation (Untitled) + + + + + + + + + +<noscript> +<div>JavaScript is disabled on your browser.</div> +</noscript> +<h2>Frame Alert</h2> +<p>This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client. Link to <a href="overview-summary.html">Non-frame version</a>.</p> + + + diff --git a/javadoc/org/josfranmc/gutenberg/download/DownloadBooks.html b/javadoc/org/josfranmc/gutenberg/download/DownloadBooks.html index ec7a453..f46c9dd 100644 --- a/javadoc/org/josfranmc/gutenberg/download/DownloadBooks.html +++ b/javadoc/org/josfranmc/gutenberg/download/DownloadBooks.html @@ -1,288 +1,288 @@ - - - - - -DownloadBooks - - - - - - - - - - - - -
-
org.josfranmc.gutenberg.download
-

Class DownloadBooks

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • org.josfranmc.gutenberg.download.DownloadBooks
    • -
    -
  • -
-
-
    -
  • -
    -
    -
    public class DownloadBooks
    -extends java.lang.Object
    -
    Allows to perform the file download process.
    -
    -
    Version:
    -
    2.0
    -
    Author:
    -
    Jose Francisco Mena Ceca
    -
    See Also:
    -
    JGutenbergDownload, -DownloadParams
    -
    -
  • -
-
-
-
    -
  • - - - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - -
      All Methods Instance Methods Concrete Methods 
      Modifier and TypeMethod and Description
      voidexecuteDownload() -
      Perfoms the book download process.
      -
      -
        -
      • - - -

        Methods inherited from class java.lang.Object

        -equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        DownloadBooks

        -
        public DownloadBooks(DownloadParams parameters)
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        executeDownload

        -
        public void executeDownload()
        -
        Perfoms the book download process.

        - The first download should be a file with links to the books to download. All existing links are downloaded. - If there is a link to another page with more links, this page is downloaded and processed in the same way. - This process continues until there are no more pages.

        - All downloads run on separate threads.

        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - + + + + + +DownloadBooks + + + + + + + + + + + + +
+
org.josfranmc.gutenberg.download
+

Class DownloadBooks

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.josfranmc.gutenberg.download.DownloadBooks
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class DownloadBooks
    +extends java.lang.Object
    +
    Allows to perform the file download process.
    +
    +
    Version:
    +
    2.0
    +
    Author:
    +
    Jose Francisco Mena Ceca
    +
    See Also:
    +
    JGutenbergDownload, +DownloadParams
    +
    +
  • +
+
+
+
    +
  • + + + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + +
      All Methods Instance Methods Concrete Methods 
      Modifier and TypeMethod and Description
      voidexecuteDownload() +
      Perfoms the book download process.
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        DownloadBooks

        +
        public DownloadBooks(DownloadParams parameters)
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        executeDownload

        +
        public void executeDownload()
        +
        Perfoms the book download process.

        + The first download should be a file with links to the books to download. All existing links are downloaded. + If there is a link to another page with more links, this page is downloaded and processed in the same way. + This process continues until there are no more pages.

        + All downloads run on separate threads.

        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + + + diff --git a/javadoc/org/josfranmc/gutenberg/download/DownloadParams.html b/javadoc/org/josfranmc/gutenberg/download/DownloadParams.html index e751bb5..378e342 100644 --- a/javadoc/org/josfranmc/gutenberg/download/DownloadParams.html +++ b/javadoc/org/josfranmc/gutenberg/download/DownloadParams.html @@ -1,678 +1,678 @@ - - - - - -DownloadParams - - - - - - - - - - - - -
-
org.josfranmc.gutenberg.download
-

Class DownloadParams

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • org.josfranmc.gutenberg.download.DownloadParams
    • -
    -
  • -
-
-
    -
  • -
    -
    -
    public class DownloadParams
    -extends java.lang.Object
    -
    Parameters used in the application. They are: -
      -
    • fileType: the type of files to download (default txt)
    • -
    • language: the language of files to download (default es)
    • -
    • urlBase: initial download url
    • -
    • savePath: path where to get downloaded resources (default System.getProperty("user.dir"))
    • -
    • overwrite: if the existing files must be overwritten by the downloaded ones (default false)
    • -
    • delay: delay between downloads, in milliseconds (default 2000)
    • -
    • unzip: if downloaded files must be unzipping (default true)
    • -
    • maxFilesToDownload: the maximum number of files to download (default 10, 0 for download all existing)
    • -
    • engineType: the type of downloading engine to use (default DownloadEngineType.HTTP_CONNECTION)
    • -
    -
    -
    Version:
    -
    2.0
    -
    Author:
    -
    Jose Francisco Mena Ceca
    -
    See Also:
    -
    DownloadEngineType, -JGutenbergDownload
    -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Field Summary

      - - - - - - - - - - -
      Fields 
      Modifier and TypeField and Description
      static java.lang.StringURL_BOOKS -
      Base URL of the Gutenberg project to download
      -
      -
    • -
    - -
      -
    • - - -

      Constructor Summary

      - - - - - - - - -
      Constructors 
      Constructor and Description
      DownloadParams() -
      Main constructor.
      -
      -
    • -
    - - -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Field Detail

      - - - -
        -
      • -

        URL_BOOKS

        -
        public static final java.lang.String URL_BOOKS
        -
        Base URL of the Gutenberg project to download
        -
        -
        See Also:
        -
        Constant Field Values
        -
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        DownloadParams

        -
        public DownloadParams()
        -
        Main constructor. It initializes the object with default values: -
          -
        • fileType: txt
        • -
        • language: es
        • -
        • savePath: System.getProperty("user.dir")
        • -
        • overwrite: false
        • -
        • delay: 2000 milliseconds
        • -
        • unzip: true
        • -
        • maxFilesToDownload: 10 (0 for download all existing)
        • -
        • engineType: DownloadEngineType.HTTP_CONNECTION
        • -
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        getFileType

        -
        public java.lang.String getFileType()
        -
        -
        Returns:
        -
        the type of files to download
        -
        -
      • -
      - - - -
        -
      • -

        setFileType

        -
        public void setFileType(java.lang.String fileType)
        -
        Sets the type of file to download. Valid types: txt, epub, html
        -
        -
        Parameters:
        -
        fileType - type of file to download
        -
        Throws:
        -
        java.lang.IllegalArgumentException - if an invalid file type is indicated
        -
        -
      • -
      - - - -
        -
      • -

        getLanguage

        -
        public java.lang.String getLanguage()
        -
        -
        Returns:
        -
        the language of files to download
        -
        -
      • -
      - - - -
        -
      • -

        setLanguage

        -
        public void setLanguage(java.lang.String language)
        -
        Sets the language of the files to download acording to Gutenberg nomeclature.
        - Ej.: es - spanish, en - english, fr - french
        -
        -
        Parameters:
        -
        language - type of language
        -
        -
      • -
      - - - -
        -
      • -

        getUrlBase

        -
        public java.net.URL getUrlBase()
        -
        -
        Returns:
        -
        initial download url
        -
        -
      • -
      - - - -
        -
      • -

        getSavePath

        -
        public java.lang.String getSavePath()
        -
        -
        Returns:
        -
        folder path where to get downloaded resources
        -
        -
      • -
      - - - -
        -
      • -

        setSavePath

        -
        public void setSavePath(java.lang.String savePath)
        -
        Sets folder path where to get downloaded resources
        -
        -
        Parameters:
        -
        savePath - folder path where to get downloaded resources
        -
        Throws:
        -
        java.lang.IllegalArgumentException - if the parameter is null
        -
        -
      • -
      - - - -
        -
      • -

        getZipsPath

        -
        public java.lang.String getZipsPath()
        -
        -
        Returns:
        -
        folder path where to get downloaded zips
        -
        -
      • -
      - - - -
        -
      • -

        isOverwrite

        -
        public boolean isOverwrite()
        -
        -
        Returns:
        -
        true if the existing files must be overwritten by the downloaded ones, false otherwise
        -
        -
      • -
      - - - -
        -
      • -

        setOverwrite

        -
        public void setOverwrite(boolean overwrite)
        -
        Sets if the existing files must be overwritten by the downloaded ones
        -
        -
        Parameters:
        -
        overwrite - true if the existing files must be overwritten, false otherwise
        -
        -
      • -
      - - - -
        -
      • -

        getDelay

        -
        public int getDelay()
        -
        -
        Returns:
        -
        delay between downloads, in milliseconds
        -
        -
      • -
      - - - -
        -
      • -

        setDelay

        -
        public void setDelay(int delay)
        -
        Sets delay between downloads
        -
        -
        Parameters:
        -
        delay - waiting time, in milliseconds
        -
        Throws:
        -
        java.lang.IllegalArgumentException - if a number less than zero is indicated
        -
        -
      • -
      - - - -
        -
      • -

        isUnzip

        -
        public boolean isUnzip()
        -
        -
        Returns:
        -
        true if downloaded files must be unzipping, false otherwise
        -
        -
      • -
      - - - -
        -
      • -

        setUnzip

        -
        public void setUnzip(boolean unzip)
        -
        Sets if downloaded files must be unzipping,
        -
        -
        Parameters:
        -
        unzip - true if downloaded files must be unzipping, false otherwise
        -
        -
      • -
      - - - -
        -
      • -

        getMaxFilesToDownload

        -
        public int getMaxFilesToDownload()
        -
        -
        Returns:
        -
        the maximum number of files to download
        -
        -
      • -
      - - - -
        -
      • -

        setMaxFilesToDownload

        -
        public void setMaxFilesToDownload(int maxFilesToDownload)
        -
        Sets the maximum number of files to download. The zero indicates downloading all available files.
        -
        -
        Parameters:
        -
        maxFilesToDownload - files number
        -
        Throws:
        -
        java.lang.IllegalArgumentException - if a number less than zero is indicated
        -
        -
      • -
      - - - - - - - -
        -
      • -

        setEngineType

        -
        public void setEngineType(DownloadEngineType engineType)
        -
        Sets the type of downloading engine to use
        -
        -
        Parameters:
        -
        engineType - engine type
        -
        See Also:
        -
        DownloadEngineType
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - + + + + + +DownloadParams + + + + + + + + + + + + +
+
org.josfranmc.gutenberg.download
+

Class DownloadParams

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.josfranmc.gutenberg.download.DownloadParams
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class DownloadParams
    +extends java.lang.Object
    +
    Parameters used in the application. They are: +
      +
    • fileType: the type of files to download (default txt)
    • +
    • language: the language of files to download (default es)
    • +
    • urlBase: initial download url
    • +
    • savePath: path where to get downloaded resources (default System.getProperty("user.dir"))
    • +
    • overwrite: if the existing files must be overwritten by the downloaded ones (default false)
    • +
    • delay: delay between downloads, in milliseconds (default 2000)
    • +
    • unzip: if downloaded files must be unzipping (default true)
    • +
    • maxFilesToDownload: the maximum number of files to download (default 10, 0 for download all existing)
    • +
    • engineType: the type of downloading engine to use (default DownloadEngineType.HTTP_CONNECTION)
    • +
    +
    +
    Version:
    +
    2.0
    +
    Author:
    +
    Jose Francisco Mena Ceca
    +
    See Also:
    +
    DownloadEngineType, +JGutenbergDownload
    +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Summary

      + + + + + + + + + + +
      Fields 
      Modifier and TypeField and Description
      static java.lang.StringURL_BOOKS +
      Base URL of the Gutenberg project to download
      +
      +
    • +
    + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      DownloadParams() +
      Main constructor.
      +
      +
    • +
    + + +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        URL_BOOKS

        +
        public static final java.lang.String URL_BOOKS
        +
        Base URL of the Gutenberg project to download
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        DownloadParams

        +
        public DownloadParams()
        +
        Main constructor. It initializes the object with default values: +
          +
        • fileType: txt
        • +
        • language: es
        • +
        • savePath: System.getProperty("user.dir")
        • +
        • overwrite: false
        • +
        • delay: 2000 milliseconds
        • +
        • unzip: true
        • +
        • maxFilesToDownload: 10 (0 for download all existing)
        • +
        • engineType: DownloadEngineType.HTTP_CONNECTION
        • +
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        getFileType

        +
        public java.lang.String getFileType()
        +
        +
        Returns:
        +
        the type of files to download
        +
        +
      • +
      + + + +
        +
      • +

        setFileType

        +
        public void setFileType(java.lang.String fileType)
        +
        Sets the type of file to download. Valid types: txt, epub, html
        +
        +
        Parameters:
        +
        fileType - type of file to download
        +
        Throws:
        +
        java.lang.IllegalArgumentException - if an invalid file type is indicated
        +
        +
      • +
      + + + +
        +
      • +

        getLanguage

        +
        public java.lang.String getLanguage()
        +
        +
        Returns:
        +
        the language of files to download
        +
        +
      • +
      + + + +
        +
      • +

        setLanguage

        +
        public void setLanguage(java.lang.String language)
        +
        Sets the language of the files to download acording to Gutenberg nomeclature.
        + Ej.: es - spanish, en - english, fr - french
        +
        +
        Parameters:
        +
        language - type of language
        +
        +
      • +
      + + + +
        +
      • +

        getUrlBase

        +
        public java.net.URL getUrlBase()
        +
        +
        Returns:
        +
        initial download url
        +
        +
      • +
      + + + +
        +
      • +

        getSavePath

        +
        public java.lang.String getSavePath()
        +
        +
        Returns:
        +
        folder path where to get downloaded resources
        +
        +
      • +
      + + + +
        +
      • +

        setSavePath

        +
        public void setSavePath(java.lang.String savePath)
        +
        Sets folder path where to get downloaded resources
        +
        +
        Parameters:
        +
        savePath - folder path where to get downloaded resources
        +
        Throws:
        +
        java.lang.IllegalArgumentException - if the parameter is null
        +
        +
      • +
      + + + +
        +
      • +

        getZipsPath

        +
        public java.lang.String getZipsPath()
        +
        +
        Returns:
        +
        folder path where to get downloaded zips
        +
        +
      • +
      + + + +
        +
      • +

        isOverwrite

        +
        public boolean isOverwrite()
        +
        +
        Returns:
        +
        true if the existing files must be overwritten by the downloaded ones, false otherwise
        +
        +
      • +
      + + + +
        +
      • +

        setOverwrite

        +
        public void setOverwrite(boolean overwrite)
        +
        Sets if the existing files must be overwritten by the downloaded ones
        +
        +
        Parameters:
        +
        overwrite - true if the existing files must be overwritten, false otherwise
        +
        +
      • +
      + + + +
        +
      • +

        getDelay

        +
        public int getDelay()
        +
        +
        Returns:
        +
        delay between downloads, in milliseconds
        +
        +
      • +
      + + + +
        +
      • +

        setDelay

        +
        public void setDelay(int delay)
        +
        Sets delay between downloads
        +
        +
        Parameters:
        +
        delay - waiting time, in milliseconds
        +
        Throws:
        +
        java.lang.IllegalArgumentException - if a number less than zero is indicated
        +
        +
      • +
      + + + +
        +
      • +

        isUnzip

        +
        public boolean isUnzip()
        +
        +
        Returns:
        +
        true if downloaded files must be unzipping, false otherwise
        +
        +
      • +
      + + + +
        +
      • +

        setUnzip

        +
        public void setUnzip(boolean unzip)
        +
        Sets if downloaded files must be unzipping,
        +
        +
        Parameters:
        +
        unzip - true if downloaded files must be unzipping, false otherwise
        +
        +
      • +
      + + + +
        +
      • +

        getMaxFilesToDownload

        +
        public int getMaxFilesToDownload()
        +
        +
        Returns:
        +
        the maximum number of files to download
        +
        +
      • +
      + + + +
        +
      • +

        setMaxFilesToDownload

        +
        public void setMaxFilesToDownload(int maxFilesToDownload)
        +
        Sets the maximum number of files to download. The zero indicates downloading all available files.
        +
        +
        Parameters:
        +
        maxFilesToDownload - files number
        +
        Throws:
        +
        java.lang.IllegalArgumentException - if a number less than zero is indicated
        +
        +
      • +
      + + + + + + + +
        +
      • +

        setEngineType

        +
        public void setEngineType(DownloadEngineType engineType)
        +
        Sets the type of downloading engine to use
        +
        +
        Parameters:
        +
        engineType - engine type
        +
        See Also:
        +
        DownloadEngineType
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + + + diff --git a/javadoc/org/josfranmc/gutenberg/download/DownloadThread.html b/javadoc/org/josfranmc/gutenberg/download/DownloadThread.html index 65a8a6d..65bd7e6 100644 --- a/javadoc/org/josfranmc/gutenberg/download/DownloadThread.html +++ b/javadoc/org/josfranmc/gutenberg/download/DownloadThread.html @@ -1,295 +1,295 @@ - - - - - -DownloadThread - - - - - - - - - - - - -
-
org.josfranmc.gutenberg.download
-

Class DownloadThread

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • org.josfranmc.gutenberg.download.DownloadThread
    • -
    -
  • -
-
-
    -
  • -
    -
    All Implemented Interfaces:
    -
    java.lang.Runnable
    -
    -
    -
    -
    public class DownloadThread
    -extends java.lang.Object
    -implements java.lang.Runnable
    -
    Downloads a resource.
    - Objects of this class can be runned in separate threads.
    -
    -
    Version:
    -
    2.0
    -
    Author:
    -
    Jose Francisco Mena Ceca
    -
    -
  • -
-
-
-
    -
  • - - - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - -
      All Methods Instance Methods Concrete Methods 
      Modifier and TypeMethod and Description
      voidrun() 
      -
        -
      • - - -

        Methods inherited from class java.lang.Object

        -equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        DownloadThread

        -
        public DownloadThread(java.net.URL target,
        -                      DownloadParams parameters)
        -
        -
        Parameters:
        -
        target - download url
        -
        parameters - settings
        -
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        run

        -
        public void run()
        -
        -
        Specified by:
        -
        run in interface java.lang.Runnable
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - + + + + + +DownloadThread + + + + + + + + + + + + +
+
org.josfranmc.gutenberg.download
+

Class DownloadThread

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.josfranmc.gutenberg.download.DownloadThread
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    java.lang.Runnable
    +
    +
    +
    +
    public class DownloadThread
    +extends java.lang.Object
    +implements java.lang.Runnable
    +
    Downloads a resource.
    + Objects of this class can be runned in separate threads.
    +
    +
    Version:
    +
    2.0
    +
    Author:
    +
    Jose Francisco Mena Ceca
    +
    +
  • +
+
+
+
    +
  • + + + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + +
      All Methods Instance Methods Concrete Methods 
      Modifier and TypeMethod and Description
      voidrun() 
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        DownloadThread

        +
        public DownloadThread(java.net.URL target,
        +                      DownloadParams parameters)
        +
        +
        Parameters:
        +
        target - download url
        +
        parameters - settings
        +
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        run

        +
        public void run()
        +
        +
        Specified by:
        +
        run in interface java.lang.Runnable
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + + + diff --git a/javadoc/org/josfranmc/gutenberg/download/JGutenbergDownload.html b/javadoc/org/josfranmc/gutenberg/download/JGutenbergDownload.html index 682ec84..ab148e9 100644 --- a/javadoc/org/josfranmc/gutenberg/download/JGutenbergDownload.html +++ b/javadoc/org/josfranmc/gutenberg/download/JGutenbergDownload.html @@ -1,678 +1,678 @@ - - - - - -JGutenbergDownload - - - - - - - - - - - - -
-
org.josfranmc.gutenberg.download
-

Class JGutenbergDownload

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • org.josfranmc.gutenberg.download.JGutenbergDownload
    • -
    -
  • -
-
- -
-
- -
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        JGutenbergDownload

        -
        public JGutenbergDownload()
        -
        Main constructor. It initializes the application with default values.
        -
        -
        See Also:
        -
        DownloadParams
        -
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        getParameters

        -
        public DownloadParams getParameters()
        -
        -
        Returns:
        -
        an object with the current parameters
        -
        See Also:
        -
        DownloadParams
        -
        -
      • -
      - - - -
        -
      • -

        setParameters

        -
        public void setParameters(DownloadParams parameters)
        -
        Sets the application parameters through a DownloadParams object
        -
        -
        Parameters:
        -
        parameters - application parameters
        -
        See Also:
        -
        DownloadParams
        -
        -
      • -
      - - - -
        -
      • -

        downloadBooks

        -
        public void downloadBooks()
        -
        Begins the process of downloading books.

        - If there is any problem It can be thrown GutenbergException

        -
      • -
      - - - -
        -
      • -

        getFileType

        -
        public java.lang.String getFileType()
        -
        -
        Returns:
        -
        the type of files to download
        -
        -
      • -
      - - - -
        -
      • -

        setFileType

        -
        public void setFileType(java.lang.String fileType)
        -
        Sets the type of file to download. Valid types: txt, epub, html
        -
        -
        Parameters:
        -
        fileType - type of file to download
        -
        Throws:
        -
        java.lang.IllegalArgumentException - if an invalid file type is indicated
        -
        -
      • -
      - - - -
        -
      • -

        getLanguage

        -
        public java.lang.String getLanguage()
        -
        -
        Returns:
        -
        the language of files to download
        -
        -
      • -
      - - - -
        -
      • -

        setLanguage

        -
        public void setLanguage(java.lang.String language)
        -
        Sets the language of the files to download acording to Gutenberg nomeclature.
        - Ej.: es - spanish, en - english, fr - french
        -
        -
        Parameters:
        -
        language - type of language
        -
        -
      • -
      - - - -
        -
      • -

        getUrlBase

        -
        public java.lang.String getUrlBase()
        -
        -
        Returns:
        -
        initial download url
        -
        -
      • -
      - - - -
        -
      • -

        getSavePath

        -
        public java.lang.String getSavePath()
        -
        -
        Returns:
        -
        folder path where to get downloaded resources
        -
        -
      • -
      - - - -
        -
      • -

        setSavePath

        -
        public void setSavePath(java.lang.String savePath)
        -
        Sets folder path where to get downloaded resources
        -
        -
        Parameters:
        -
        savePath - folder path where to get downloaded resources
        -
        Throws:
        -
        java.lang.IllegalArgumentException - if the parameter is null
        -
        -
      • -
      - - - -
        -
      • -

        isOverwrite

        -
        public boolean isOverwrite()
        -
        -
        Returns:
        -
        true if the existing files must be overwritten by the downloaded ones, false otherwise
        -
        -
      • -
      - - - -
        -
      • -

        setOverwrite

        -
        public void setOverwrite(boolean value)
        -
        Sets if the existing files must be overwritten by the downloaded ones
        -
        -
        Parameters:
        -
        value - true if the existing files must be overwritten, false otherwise
        -
        -
      • -
      - - - -
        -
      • -

        getDelay

        -
        public int getDelay()
        -
        -
        Returns:
        -
        delay between downloads, in milliseconds
        -
        -
      • -
      - - - -
        -
      • -

        setDelay

        -
        public void setDelay(int delay)
        -
        Sets delay between downloads
        -
        -
        Parameters:
        -
        delay - waiting time, in milliseconds
        -
        -
      • -
      - - - -
        -
      • -

        isUnzip

        -
        public boolean isUnzip()
        -
        -
        Returns:
        -
        true if downloaded files must be unzipping, false otherwise
        -
        -
      • -
      - - - -
        -
      • -

        setUnzip

        -
        public void setUnzip(boolean value)
        -
        Sets if downloaded files must be unzipping,
        -
        -
        Parameters:
        -
        value - true if downloaded files must be unzipping, false otherwise
        -
        -
      • -
      - - - -
        -
      • -

        getMaxFilesToDownload

        -
        public int getMaxFilesToDownload()
        -
        -
        Returns:
        -
        the maximum number of files to download
        -
        -
      • -
      - - - -
        -
      • -

        setMaxFilesToDownload

        -
        public void setMaxFilesToDownload(int maxFilesToDownload)
        -
        Sets the maximum number of files to download. The zero indicates downloading all available files.
        -
        -
        Parameters:
        -
        maxFilesToDownload - files number
        -
        Throws:
        -
        java.lang.IllegalArgumentException - if a number less than zero is indicated
        -
        -
      • -
      - - - - - - - -
        -
      • -

        setEngineType

        -
        public void setEngineType(DownloadEngineType engineType)
        -
        Sets the type of downloading engine to use
        -
        -
        Parameters:
        -
        engineType - engine type
        -
        See Also:
        -
        DownloadEngineType
        -
        -
      • -
      - - - -
        -
      • -

        main

        -
        public static void main(java.lang.String[] args)
        -
        Main method for running the application.
        -
        -
        Parameters:
        -
        args - list of arguments with application parameters
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - + + + + + +JGutenbergDownload + + + + + + + + + + + + +
+
org.josfranmc.gutenberg.download
+

Class JGutenbergDownload

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.josfranmc.gutenberg.download.JGutenbergDownload
    • +
    +
  • +
+
+ +
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        JGutenbergDownload

        +
        public JGutenbergDownload()
        +
        Main constructor. It initializes the application with default values.
        +
        +
        See Also:
        +
        DownloadParams
        +
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        getParameters

        +
        public DownloadParams getParameters()
        +
        +
        Returns:
        +
        an object with the current parameters
        +
        See Also:
        +
        DownloadParams
        +
        +
      • +
      + + + +
        +
      • +

        setParameters

        +
        public void setParameters(DownloadParams parameters)
        +
        Sets the application parameters through a DownloadParams object
        +
        +
        Parameters:
        +
        parameters - application parameters
        +
        See Also:
        +
        DownloadParams
        +
        +
      • +
      + + + +
        +
      • +

        downloadBooks

        +
        public void downloadBooks()
        +
        Begins the process of downloading books.

        + If there is any problem It can be thrown GutenbergException

        +
      • +
      + + + +
        +
      • +

        getFileType

        +
        public java.lang.String getFileType()
        +
        +
        Returns:
        +
        the type of files to download
        +
        +
      • +
      + + + +
        +
      • +

        setFileType

        +
        public void setFileType(java.lang.String fileType)
        +
        Sets the type of file to download. Valid types: txt, epub, html
        +
        +
        Parameters:
        +
        fileType - type of file to download
        +
        Throws:
        +
        java.lang.IllegalArgumentException - if an invalid file type is indicated
        +
        +
      • +
      + + + +
        +
      • +

        getLanguage

        +
        public java.lang.String getLanguage()
        +
        +
        Returns:
        +
        the language of files to download
        +
        +
      • +
      + + + +
        +
      • +

        setLanguage

        +
        public void setLanguage(java.lang.String language)
        +
        Sets the language of the files to download acording to Gutenberg nomeclature.
        + Ej.: es - spanish, en - english, fr - french
        +
        +
        Parameters:
        +
        language - type of language
        +
        +
      • +
      + + + +
        +
      • +

        getUrlBase

        +
        public java.lang.String getUrlBase()
        +
        +
        Returns:
        +
        initial download url
        +
        +
      • +
      + + + +
        +
      • +

        getSavePath

        +
        public java.lang.String getSavePath()
        +
        +
        Returns:
        +
        folder path where to get downloaded resources
        +
        +
      • +
      + + + +
        +
      • +

        setSavePath

        +
        public void setSavePath(java.lang.String savePath)
        +
        Sets folder path where to get downloaded resources
        +
        +
        Parameters:
        +
        savePath - folder path where to get downloaded resources
        +
        Throws:
        +
        java.lang.IllegalArgumentException - if the parameter is null
        +
        +
      • +
      + + + +
        +
      • +

        isOverwrite

        +
        public boolean isOverwrite()
        +
        +
        Returns:
        +
        true if the existing files must be overwritten by the downloaded ones, false otherwise
        +
        +
      • +
      + + + +
        +
      • +

        setOverwrite

        +
        public void setOverwrite(boolean value)
        +
        Sets if the existing files must be overwritten by the downloaded ones
        +
        +
        Parameters:
        +
        value - true if the existing files must be overwritten, false otherwise
        +
        +
      • +
      + + + +
        +
      • +

        getDelay

        +
        public int getDelay()
        +
        +
        Returns:
        +
        delay between downloads, in milliseconds
        +
        +
      • +
      + + + +
        +
      • +

        setDelay

        +
        public void setDelay(int delay)
        +
        Sets delay between downloads
        +
        +
        Parameters:
        +
        delay - waiting time, in milliseconds
        +
        +
      • +
      + + + +
        +
      • +

        isUnzip

        +
        public boolean isUnzip()
        +
        +
        Returns:
        +
        true if downloaded files must be unzipping, false otherwise
        +
        +
      • +
      + + + +
        +
      • +

        setUnzip

        +
        public void setUnzip(boolean value)
        +
        Sets if downloaded files must be unzipping,
        +
        +
        Parameters:
        +
        value - true if downloaded files must be unzipping, false otherwise
        +
        +
      • +
      + + + +
        +
      • +

        getMaxFilesToDownload

        +
        public int getMaxFilesToDownload()
        +
        +
        Returns:
        +
        the maximum number of files to download
        +
        +
      • +
      + + + +
        +
      • +

        setMaxFilesToDownload

        +
        public void setMaxFilesToDownload(int maxFilesToDownload)
        +
        Sets the maximum number of files to download. The zero indicates downloading all available files.
        +
        +
        Parameters:
        +
        maxFilesToDownload - files number
        +
        Throws:
        +
        java.lang.IllegalArgumentException - if a number less than zero is indicated
        +
        +
      • +
      + + + + + + + +
        +
      • +

        setEngineType

        +
        public void setEngineType(DownloadEngineType engineType)
        +
        Sets the type of downloading engine to use
        +
        +
        Parameters:
        +
        engineType - engine type
        +
        See Also:
        +
        DownloadEngineType
        +
        +
      • +
      + + + +
        +
      • +

        main

        +
        public static void main(java.lang.String[] args)
        +
        Main method for running the application.
        +
        +
        Parameters:
        +
        args - list of arguments with application parameters
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + + + diff --git a/javadoc/org/josfranmc/gutenberg/download/class-use/DownloadBooks.html b/javadoc/org/josfranmc/gutenberg/download/class-use/DownloadBooks.html index f3430a0..22d501a 100644 --- a/javadoc/org/josfranmc/gutenberg/download/class-use/DownloadBooks.html +++ b/javadoc/org/josfranmc/gutenberg/download/class-use/DownloadBooks.html @@ -1,124 +1,124 @@ - - - - - -Uses of Class org.josfranmc.gutenberg.download.DownloadBooks - - - - - - - - - - - -
-

Uses of Class
org.josfranmc.gutenberg.download.DownloadBooks

-
-
No usage of org.josfranmc.gutenberg.download.DownloadBooks
- - - - - - + + + + + +Uses of Class org.josfranmc.gutenberg.download.DownloadBooks + + + + + + + + + + + +
+

Uses of Class
org.josfranmc.gutenberg.download.DownloadBooks

+
+
No usage of org.josfranmc.gutenberg.download.DownloadBooks
+ + + + + + diff --git a/javadoc/org/josfranmc/gutenberg/download/class-use/DownloadParams.html b/javadoc/org/josfranmc/gutenberg/download/class-use/DownloadParams.html index 0f06f4c..c58a1ef 100644 --- a/javadoc/org/josfranmc/gutenberg/download/class-use/DownloadParams.html +++ b/javadoc/org/josfranmc/gutenberg/download/class-use/DownloadParams.html @@ -1,194 +1,194 @@ - - - - - -Uses of Class org.josfranmc.gutenberg.download.DownloadParams - - - - - - - - - - - -
-

Uses of Class
org.josfranmc.gutenberg.download.DownloadParams

-
-
- -
- - - - - - + + + + + +Uses of Class org.josfranmc.gutenberg.download.DownloadParams + + + + + + + + + + + +
+

Uses of Class
org.josfranmc.gutenberg.download.DownloadParams

+
+
+ +
+ + + + + + diff --git a/javadoc/org/josfranmc/gutenberg/download/class-use/JGutenbergDownload.html b/javadoc/org/josfranmc/gutenberg/download/class-use/JGutenbergDownload.html index cf75695..60d4c31 100644 --- a/javadoc/org/josfranmc/gutenberg/download/class-use/JGutenbergDownload.html +++ b/javadoc/org/josfranmc/gutenberg/download/class-use/JGutenbergDownload.html @@ -1,124 +1,124 @@ - - - - - -Uses of Class org.josfranmc.gutenberg.download.JGutenbergDownload - - - - - - - - - - - -
-

Uses of Class
org.josfranmc.gutenberg.download.JGutenbergDownload

-
-
No usage of org.josfranmc.gutenberg.download.JGutenbergDownload
- - - - - - + + + + + +Uses of Class org.josfranmc.gutenberg.download.JGutenbergDownload + + + + + + + + + + + +
+

Uses of Class
org.josfranmc.gutenberg.download.JGutenbergDownload

+
+
No usage of org.josfranmc.gutenberg.download.JGutenbergDownload
+ + + + + + diff --git a/javadoc/org/josfranmc/gutenberg/download/engine/DownloadEngineFactory.html b/javadoc/org/josfranmc/gutenberg/download/engine/DownloadEngineFactory.html index dfa0281..69faad4 100644 --- a/javadoc/org/josfranmc/gutenberg/download/engine/DownloadEngineFactory.html +++ b/javadoc/org/josfranmc/gutenberg/download/engine/DownloadEngineFactory.html @@ -1,381 +1,381 @@ - - - - - -DownloadEngineFactory - - - - - - - - - - - - -
-
org.josfranmc.gutenberg.download.engine
-

Class DownloadEngineFactory

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • org.josfranmc.gutenberg.download.engine.DownloadEngineFactory
    • -
    -
  • -
-
-
    -
  • -
    -
    -
    public class DownloadEngineFactory
    -extends java.lang.Object
    -
    Factory for creating IDownloadEngine objects.
    - It make use of the create method. This method is overloaded, so it can be invoked combining three parameters: -
      -
    • target: the url address to download
    • -
    • savePath: local path where to save download
    • -
    • type: engine type for downloading (for default DownloadEngineType.HTTTP_CONNECTION is used)
    • -
    -
    -
    Version:
    -
    2.0
    -
    Author:
    -
    Jose Francisco Mena Ceca
    -
    -
  • -
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        create

        -
        public static IDownloadEngine create()
        -
        Creates an engine for downloading. Engine type is DownloadEngineType.HTTP_CONNECTION.
        -
        -
        Returns:
        -
        a download engine
        -
        -
      • -
      - - - -
        -
      • -

        create

        -
        public static IDownloadEngine create(DownloadEngineType type)
        -
        Creates a download engine of the indicated type.
        - The url to download and the path where to save are not initialized.
        -
        -
        Parameters:
        -
        type - engine type for downloading
        -
        Returns:
        -
        a download engine in the form of a IDownloadEngine object
        -
        -
      • -
      - - - -
        -
      • -

        create

        -
        public static IDownloadEngine create(java.net.URL target,
        -                                     DownloadEngineType type)
        -
        Creates a download engine of the indicated type for downloading an url.
        - The path where to save the download is not initialized.
        -
        -
        Parameters:
        -
        target - the url address to download
        -
        type - engine type for downloading
        -
        Returns:
        -
        a download engine in the form of a IDownloadEngine object
        -
        -
      • -
      - - - -
        -
      • -

        create

        -
        public static IDownloadEngine create(java.net.URL target)
        -
        Creates an engine for downloading an url. Engine type is DownloadEngineType.HTTP_CONNECTION.
        -
        -
        Parameters:
        -
        target - the url address to download
        -
        Returns:
        -
        a download engine in the form of a IDownloadEngine object
        -
        -
      • -
      - - - -
        -
      • -

        create

        -
        public static IDownloadEngine create(java.net.URL target,
        -                                     java.lang.String savePath,
        -                                     DownloadEngineType type)
        -
        Creates an engine for downloading.
        -
        -
        Parameters:
        -
        target - the url address to download
        -
        savePath - local path where to save download
        -
        type - engine type for downloading
        -
        Returns:
        -
        a download engine in the form of a IDownloadEngine object
        -
        -
      • -
      - - - -
        -
      • -

        create

        -
        public static IDownloadEngine create(java.net.URL target,
        -                                     java.lang.String savePath)
        -
        Creates an engine for downloading. Engine type is DownloadEngineType.HTTP_CONNECTION.
        -
        -
        Parameters:
        -
        target - the url address to download
        -
        savePath - local path where to save download
        -
        Returns:
        -
        a download engine in the form of a IDownloadEngine object
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - + + + + + +DownloadEngineFactory + + + + + + + + + + + + +
+
org.josfranmc.gutenberg.download.engine
+

Class DownloadEngineFactory

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.josfranmc.gutenberg.download.engine.DownloadEngineFactory
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class DownloadEngineFactory
    +extends java.lang.Object
    +
    Factory for creating IDownloadEngine objects.
    + It make use of the create method. This method is overloaded, so it can be invoked combining three parameters: +
      +
    • target: the url address to download
    • +
    • savePath: local path where to save download
    • +
    • type: engine type for downloading (for default DownloadEngineType.HTTTP_CONNECTION is used)
    • +
    +
    +
    Version:
    +
    2.0
    +
    Author:
    +
    Jose Francisco Mena Ceca
    +
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        create

        +
        public static IDownloadEngine create()
        +
        Creates an engine for downloading. Engine type is DownloadEngineType.HTTP_CONNECTION.
        +
        +
        Returns:
        +
        a download engine
        +
        +
      • +
      + + + +
        +
      • +

        create

        +
        public static IDownloadEngine create(DownloadEngineType type)
        +
        Creates a download engine of the indicated type.
        + The url to download and the path where to save are not initialized.
        +
        +
        Parameters:
        +
        type - engine type for downloading
        +
        Returns:
        +
        a download engine in the form of a IDownloadEngine object
        +
        +
      • +
      + + + +
        +
      • +

        create

        +
        public static IDownloadEngine create(java.net.URL target,
        +                                     DownloadEngineType type)
        +
        Creates a download engine of the indicated type for downloading an url.
        + The path where to save the download is not initialized.
        +
        +
        Parameters:
        +
        target - the url address to download
        +
        type - engine type for downloading
        +
        Returns:
        +
        a download engine in the form of a IDownloadEngine object
        +
        +
      • +
      + + + +
        +
      • +

        create

        +
        public static IDownloadEngine create(java.net.URL target)
        +
        Creates an engine for downloading an url. Engine type is DownloadEngineType.HTTP_CONNECTION.
        +
        +
        Parameters:
        +
        target - the url address to download
        +
        Returns:
        +
        a download engine in the form of a IDownloadEngine object
        +
        +
      • +
      + + + +
        +
      • +

        create

        +
        public static IDownloadEngine create(java.net.URL target,
        +                                     java.lang.String savePath,
        +                                     DownloadEngineType type)
        +
        Creates an engine for downloading.
        +
        +
        Parameters:
        +
        target - the url address to download
        +
        savePath - local path where to save download
        +
        type - engine type for downloading
        +
        Returns:
        +
        a download engine in the form of a IDownloadEngine object
        +
        +
      • +
      + + + +
        +
      • +

        create

        +
        public static IDownloadEngine create(java.net.URL target,
        +                                     java.lang.String savePath)
        +
        Creates an engine for downloading. Engine type is DownloadEngineType.HTTP_CONNECTION.
        +
        +
        Parameters:
        +
        target - the url address to download
        +
        savePath - local path where to save download
        +
        Returns:
        +
        a download engine in the form of a IDownloadEngine object
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + + + diff --git a/javadoc/org/josfranmc/gutenberg/download/engine/DownloadEngineType.html b/javadoc/org/josfranmc/gutenberg/download/engine/DownloadEngineType.html index c7edd7a..b37afc6 100644 --- a/javadoc/org/josfranmc/gutenberg/download/engine/DownloadEngineType.html +++ b/javadoc/org/josfranmc/gutenberg/download/engine/DownloadEngineType.html @@ -1,339 +1,339 @@ - - - - - -DownloadEngineType - - - - - - - - - - - - -
-
org.josfranmc.gutenberg.download.engine
-

Enum DownloadEngineType

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • java.lang.Enum<DownloadEngineType>
    • -
    • -
        -
      • org.josfranmc.gutenberg.download.engine.DownloadEngineType
      • -
      -
    • -
    -
  • -
-
-
    -
  • -
    -
    All Implemented Interfaces:
    -
    java.io.Serializable, java.lang.Comparable<DownloadEngineType>
    -
    -
    -
    -
    public enum DownloadEngineType
    -extends java.lang.Enum<DownloadEngineType>
    -
    Types of download engines
    -
    -
    Version:
    -
    2.0
    -
    Author:
    -
    Jose Francisco Mena Ceca
    -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Enum Constant Summary

      - - - - - - - - -
      Enum Constants 
      Enum Constant and Description
      HTTP_CONNECTION -
      Downloads based on the java.net.HttpURLConnection object
      -
      -
    • -
    - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - - - - - -
      All Methods Static Methods Concrete Methods 
      Modifier and TypeMethod and Description
      static DownloadEngineTypevalueOf(java.lang.String name) -
      Returns the enum constant of this type with the specified name.
      -
      static DownloadEngineType[]values() -
      Returns an array containing the constants of this enum type, in -the order they are declared.
      -
      -
        -
      • - - -

        Methods inherited from class java.lang.Enum

        -compareTo, equals, getDeclaringClass, hashCode, name, ordinal, toString, valueOf
      • -
      -
        -
      • - - -

        Methods inherited from class java.lang.Object

        -getClass, notify, notifyAll, wait, wait, wait
      • -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Enum Constant Detail

      - - - -
        -
      • -

        HTTP_CONNECTION

        -
        public static final DownloadEngineType HTTP_CONNECTION
        -
        Downloads based on the java.net.HttpURLConnection object
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        values

        -
        public static DownloadEngineType[] values()
        -
        Returns an array containing the constants of this enum type, in -the order they are declared. This method may be used to iterate -over the constants as follows: -
        -for (DownloadEngineType c : DownloadEngineType.values())
        -    System.out.println(c);
        -
        -
        -
        Returns:
        -
        an array containing the constants of this enum type, in the order they are declared
        -
        -
      • -
      - - - -
        -
      • -

        valueOf

        -
        public static DownloadEngineType valueOf(java.lang.String name)
        -
        Returns the enum constant of this type with the specified name. -The string must match exactly an identifier used to declare an -enum constant in this type. (Extraneous whitespace characters are -not permitted.)
        -
        -
        Parameters:
        -
        name - the name of the enum constant to be returned.
        -
        Returns:
        -
        the enum constant with the specified name
        -
        Throws:
        -
        java.lang.IllegalArgumentException - if this enum type has no constant with the specified name
        -
        java.lang.NullPointerException - if the argument is null
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - + + + + + +DownloadEngineType + + + + + + + + + + + + +
+
org.josfranmc.gutenberg.download.engine
+

Enum DownloadEngineType

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • java.lang.Enum<DownloadEngineType>
    • +
    • +
        +
      • org.josfranmc.gutenberg.download.engine.DownloadEngineType
      • +
      +
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    java.io.Serializable, java.lang.Comparable<DownloadEngineType>
    +
    +
    +
    +
    public enum DownloadEngineType
    +extends java.lang.Enum<DownloadEngineType>
    +
    Types of download engines
    +
    +
    Version:
    +
    2.0
    +
    Author:
    +
    Jose Francisco Mena Ceca
    +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Enum Constant Summary

      + + + + + + + + +
      Enum Constants 
      Enum Constant and Description
      HTTP_CONNECTION +
      Downloads based on the java.net.HttpURLConnection object
      +
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + +
      All Methods Static Methods Concrete Methods 
      Modifier and TypeMethod and Description
      static DownloadEngineTypevalueOf(java.lang.String name) +
      Returns the enum constant of this type with the specified name.
      +
      static DownloadEngineType[]values() +
      Returns an array containing the constants of this enum type, in +the order they are declared.
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Enum

        +compareTo, equals, getDeclaringClass, hashCode, name, ordinal, toString, valueOf
      • +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +getClass, notify, notifyAll, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Enum Constant Detail

      + + + +
        +
      • +

        HTTP_CONNECTION

        +
        public static final DownloadEngineType HTTP_CONNECTION
        +
        Downloads based on the java.net.HttpURLConnection object
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        values

        +
        public static DownloadEngineType[] values()
        +
        Returns an array containing the constants of this enum type, in +the order they are declared. This method may be used to iterate +over the constants as follows: +
        +for (DownloadEngineType c : DownloadEngineType.values())
        +    System.out.println(c);
        +
        +
        +
        Returns:
        +
        an array containing the constants of this enum type, in the order they are declared
        +
        +
      • +
      + + + +
        +
      • +

        valueOf

        +
        public static DownloadEngineType valueOf(java.lang.String name)
        +
        Returns the enum constant of this type with the specified name. +The string must match exactly an identifier used to declare an +enum constant in this type. (Extraneous whitespace characters are +not permitted.)
        +
        +
        Parameters:
        +
        name - the name of the enum constant to be returned.
        +
        Returns:
        +
        the enum constant with the specified name
        +
        Throws:
        +
        java.lang.IllegalArgumentException - if this enum type has no constant with the specified name
        +
        java.lang.NullPointerException - if the argument is null
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + + + diff --git a/javadoc/org/josfranmc/gutenberg/download/engine/DownloadHttpUrlConnection.html b/javadoc/org/josfranmc/gutenberg/download/engine/DownloadHttpUrlConnection.html index 3a2eb93..9ff7fce 100644 --- a/javadoc/org/josfranmc/gutenberg/download/engine/DownloadHttpUrlConnection.html +++ b/javadoc/org/josfranmc/gutenberg/download/engine/DownloadHttpUrlConnection.html @@ -1,378 +1,378 @@ - - - - - -DownloadHttpUrlConnection - - - - - - - - - - - - -
-
org.josfranmc.gutenberg.download.engine
-

Class DownloadHttpUrlConnection

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • org.josfranmc.gutenberg.download.engine.DownloadHttpUrlConnection
    • -
    -
  • -
-
-
    -
  • -
    -
    All Implemented Interfaces:
    -
    IDownloadEngine
    -
    -
    -
    -
    public class DownloadHttpUrlConnection
    -extends java.lang.Object
    -implements IDownloadEngine
    -
    Allows to download a resource identified by an url and save it in a local folder.
    - It makes use of the java.net.HttpURLConnection class for downloading.
    -
    -
    Version:
    -
    2.0
    -
    Author:
    -
    Jose Francisco Mena Ceca
    -
    See Also:
    -
    IDownloadEngine, -GutenbergException
    -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and TypeMethod and Description
      DownloadResultdownload() -
      Runs a download.
      -
      java.net.URLgetResource() 
      java.lang.StringgetSavePath() 
      static IDownloadEnginenewInstance(java.net.URL target, - java.lang.String savePath) -
      Creates a DownloadHttpUrlConnection object which is an IDownloadEngine type instance.
      -
      voidsetResource(java.net.URL resource) -
      Sets the resource of the url to download, in the form of a URL object
      -
      voidsetSavePath(java.lang.String savePath) -
      Sets the local path where to save the resource to be download
      -
      -
        -
      • - - -

        Methods inherited from class java.lang.Object

        -equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        newInstance

        -
        public static IDownloadEngine newInstance(java.net.URL target,
        -                                          java.lang.String savePath)
        -
        Creates a DownloadHttpUrlConnection object which is an IDownloadEngine type instance.
        -
        -
        Parameters:
        -
        target - resource url to download
        -
        savePath - path where to save the download
        -
        Returns:
        -
        an IDownloadEngine instance in the form of a DownloadHttpUrlConnection
        -
        See Also:
        -
        IDownloadEngine
        -
        -
      • -
      - - - -
        -
      • -

        download

        -
        public DownloadResult download()
        -
        Runs a download.

        - Previously, it has been necessary to indicate the url address of the resource to download and the path of the folder in which to save it.
        - If the download is correct a new file in the indicated folder is obtained. The file name is extracted from download link, - beginning from the last directory separator character.

        -
        -
        Specified by:
        -
        download in interface IDownloadEngine
        -
        Returns:
        -
        the result of the download in the form of a DownloadResult object
        -
        Throws:
        -
        GutenbergException - if there is any error downloading
        -
        See Also:
        -
        DownloadResult
        -
        -
      • -
      - - - -
        -
      • -

        setResource

        -
        public void setResource(java.net.URL resource)
        -
        Sets the resource of the url to download, in the form of a URL object
        -
        -
        Specified by:
        -
        setResource in interface IDownloadEngine
        -
        Parameters:
        -
        resource - url address
        -
        -
      • -
      - - - -
        -
      • -

        getResource

        -
        public java.net.URL getResource()
        -
        -
        Specified by:
        -
        getResource in interface IDownloadEngine
        -
        Returns:
        -
        the resource of the url to download, in the form of a URL object
        -
        -
      • -
      - - - -
        -
      • -

        setSavePath

        -
        public void setSavePath(java.lang.String savePath)
        -
        Sets the local path where to save the resource to be download
        -
        -
        Specified by:
        -
        setSavePath in interface IDownloadEngine
        -
        Parameters:
        -
        savePath - local path
        -
        -
      • -
      - - - -
        -
      • -

        getSavePath

        -
        public java.lang.String getSavePath()
        -
        -
        Specified by:
        -
        getSavePath in interface IDownloadEngine
        -
        Returns:
        -
        the local path where to save the resource to be download
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - + + + + + +DownloadHttpUrlConnection + + + + + + + + + + + + +
+
org.josfranmc.gutenberg.download.engine
+

Class DownloadHttpUrlConnection

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.josfranmc.gutenberg.download.engine.DownloadHttpUrlConnection
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    IDownloadEngine
    +
    +
    +
    +
    public class DownloadHttpUrlConnection
    +extends java.lang.Object
    +implements IDownloadEngine
    +
    Allows to download a resource identified by an url and save it in a local folder.
    + It makes use of the java.net.HttpURLConnection class for downloading.
    +
    +
    Version:
    +
    2.0
    +
    Author:
    +
    Jose Francisco Mena Ceca
    +
    See Also:
    +
    IDownloadEngine, +GutenbergException
    +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and TypeMethod and Description
      DownloadResultdownload() +
      Runs a download.
      +
      java.net.URLgetResource() 
      java.lang.StringgetSavePath() 
      static IDownloadEnginenewInstance(java.net.URL target, + java.lang.String savePath) +
      Creates a DownloadHttpUrlConnection object which is an IDownloadEngine type instance.
      +
      voidsetResource(java.net.URL resource) +
      Sets the resource of the url to download, in the form of a URL object
      +
      voidsetSavePath(java.lang.String savePath) +
      Sets the local path where to save the resource to be download
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        newInstance

        +
        public static IDownloadEngine newInstance(java.net.URL target,
        +                                          java.lang.String savePath)
        +
        Creates a DownloadHttpUrlConnection object which is an IDownloadEngine type instance.
        +
        +
        Parameters:
        +
        target - resource url to download
        +
        savePath - path where to save the download
        +
        Returns:
        +
        an IDownloadEngine instance in the form of a DownloadHttpUrlConnection
        +
        See Also:
        +
        IDownloadEngine
        +
        +
      • +
      + + + +
        +
      • +

        download

        +
        public DownloadResult download()
        +
        Runs a download.

        + Previously, it has been necessary to indicate the url address of the resource to download and the path of the folder in which to save it.
        + If the download is correct a new file in the indicated folder is obtained. The file name is extracted from download link, + beginning from the last directory separator character.

        +
        +
        Specified by:
        +
        download in interface IDownloadEngine
        +
        Returns:
        +
        the result of the download in the form of a DownloadResult object
        +
        Throws:
        +
        GutenbergException - if there is any error downloading
        +
        See Also:
        +
        DownloadResult
        +
        +
      • +
      + + + +
        +
      • +

        setResource

        +
        public void setResource(java.net.URL resource)
        +
        Sets the resource of the url to download, in the form of a URL object
        +
        +
        Specified by:
        +
        setResource in interface IDownloadEngine
        +
        Parameters:
        +
        resource - url address
        +
        +
      • +
      + + + +
        +
      • +

        getResource

        +
        public java.net.URL getResource()
        +
        +
        Specified by:
        +
        getResource in interface IDownloadEngine
        +
        Returns:
        +
        the resource of the url to download, in the form of a URL object
        +
        +
      • +
      + + + +
        +
      • +

        setSavePath

        +
        public void setSavePath(java.lang.String savePath)
        +
        Sets the local path where to save the resource to be download
        +
        +
        Specified by:
        +
        setSavePath in interface IDownloadEngine
        +
        Parameters:
        +
        savePath - local path
        +
        +
      • +
      + + + +
        +
      • +

        getSavePath

        +
        public java.lang.String getSavePath()
        +
        +
        Specified by:
        +
        getSavePath in interface IDownloadEngine
        +
        Returns:
        +
        the local path where to save the resource to be download
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + + + diff --git a/javadoc/org/josfranmc/gutenberg/download/engine/DownloadResult.html b/javadoc/org/josfranmc/gutenberg/download/engine/DownloadResult.html index 5c755ad..3f0c5e0 100644 --- a/javadoc/org/josfranmc/gutenberg/download/engine/DownloadResult.html +++ b/javadoc/org/josfranmc/gutenberg/download/engine/DownloadResult.html @@ -1,391 +1,391 @@ - - - - - -DownloadResult - - - - - - - - - - - - -
-
org.josfranmc.gutenberg.download.engine
-

Class DownloadResult

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • org.josfranmc.gutenberg.download.engine.DownloadResult
    • -
    -
  • -
-
-
    -
  • -
    -
    -
    public class DownloadResult
    -extends java.lang.Object
    -
    It encapsulates the result of downloading a resource. This class serves to save together different data related to the download: - the header returned in the connection and the name of the file created, along with its path.
    -
    -
    Version:
    -
    2.0
    -
    Author:
    -
    Jose Francisco Mena Ceca
    -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Constructor Summary

      - - - - - - - - -
      Constructors 
      Constructor and Description
      DownloadResult() 
      -
    • -
    - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      All Methods Instance Methods Concrete Methods 
      Modifier and TypeMethod and Description
      java.lang.StringgetContentLength() 
      java.lang.StringgetContentType() 
      java.util.Map<java.lang.String,java.util.List<java.lang.String>>getHeaders() 
      java.lang.StringgetLastModified() 
      java.lang.StringgetSavedFilePath() 
      voidsetHeaders(java.net.URLConnection urlConnection) -
      Sets the header obtained in response to a connection
      -
      voidsetSavedFilePath(java.lang.String fileOutputPath) -
      Sets the path of the downloaded file on the local machine.
      -
      -
        -
      • - - -

        Methods inherited from class java.lang.Object

        -equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        DownloadResult

        -
        public DownloadResult()
        -
      • -
      -
    • -
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        setHeaders

        -
        public void setHeaders(java.net.URLConnection urlConnection)
        -
        Sets the header obtained in response to a connection
        -
        -
        Parameters:
        -
        urlConnection - connection made
        -
        -
      • -
      - - - -
        -
      • -

        getHeaders

        -
        public java.util.Map<java.lang.String,java.util.List<java.lang.String>> getHeaders()
        -
        -
        Returns:
        -
        the header obtained in response to a connection
        -
        -
      • -
      - - - -
        -
      • -

        getLastModified

        -
        public java.lang.String getLastModified()
        -
        -
        Returns:
        -
        the value of the header field "Last-Modified"
        -
        -
      • -
      - - - -
        -
      • -

        getContentType

        -
        public java.lang.String getContentType()
        -
        -
        Returns:
        -
        the value of the header field "Content-Type"
        -
        -
      • -
      - - - -
        -
      • -

        getContentLength

        -
        public java.lang.String getContentLength()
        -
        -
        Returns:
        -
        the value of the header field "Content-Length"
        -
        -
      • -
      - - - -
        -
      • -

        setSavedFilePath

        -
        public void setSavedFilePath(java.lang.String fileOutputPath)
        -
        Sets the path of the downloaded file on the local machine.
        -
        -
        Parameters:
        -
        fileOutputPath - path of the downloaded file
        -
        -
      • -
      - - - -
        -
      • -

        getSavedFilePath

        -
        public java.lang.String getSavedFilePath()
        -
        -
        Returns:
        -
        the path of the downloaded file on the local machine.
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - + + + + + +DownloadResult + + + + + + + + + + + + +
+
org.josfranmc.gutenberg.download.engine
+

Class DownloadResult

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.josfranmc.gutenberg.download.engine.DownloadResult
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class DownloadResult
    +extends java.lang.Object
    +
    It encapsulates the result of downloading a resource. This class serves to save together different data related to the download: + the header returned in the connection and the name of the file created, along with its path.
    +
    +
    Version:
    +
    2.0
    +
    Author:
    +
    Jose Francisco Mena Ceca
    +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      DownloadResult() 
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      All Methods Instance Methods Concrete Methods 
      Modifier and TypeMethod and Description
      java.lang.StringgetContentLength() 
      java.lang.StringgetContentType() 
      java.util.Map<java.lang.String,java.util.List<java.lang.String>>getHeaders() 
      java.lang.StringgetLastModified() 
      java.lang.StringgetSavedFilePath() 
      voidsetHeaders(java.net.URLConnection urlConnection) +
      Sets the header obtained in response to a connection
      +
      voidsetSavedFilePath(java.lang.String fileOutputPath) +
      Sets the path of the downloaded file on the local machine.
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        DownloadResult

        +
        public DownloadResult()
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        setHeaders

        +
        public void setHeaders(java.net.URLConnection urlConnection)
        +
        Sets the header obtained in response to a connection
        +
        +
        Parameters:
        +
        urlConnection - connection made
        +
        +
      • +
      + + + +
        +
      • +

        getHeaders

        +
        public java.util.Map<java.lang.String,java.util.List<java.lang.String>> getHeaders()
        +
        +
        Returns:
        +
        the header obtained in response to a connection
        +
        +
      • +
      + + + +
        +
      • +

        getLastModified

        +
        public java.lang.String getLastModified()
        +
        +
        Returns:
        +
        the value of the header field "Last-Modified"
        +
        +
      • +
      + + + +
        +
      • +

        getContentType

        +
        public java.lang.String getContentType()
        +
        +
        Returns:
        +
        the value of the header field "Content-Type"
        +
        +
      • +
      + + + +
        +
      • +

        getContentLength

        +
        public java.lang.String getContentLength()
        +
        +
        Returns:
        +
        the value of the header field "Content-Length"
        +
        +
      • +
      + + + +
        +
      • +

        setSavedFilePath

        +
        public void setSavedFilePath(java.lang.String fileOutputPath)
        +
        Sets the path of the downloaded file on the local machine.
        +
        +
        Parameters:
        +
        fileOutputPath - path of the downloaded file
        +
        +
      • +
      + + + +
        +
      • +

        getSavedFilePath

        +
        public java.lang.String getSavedFilePath()
        +
        +
        Returns:
        +
        the path of the downloaded file on the local machine.
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + + + diff --git a/javadoc/org/josfranmc/gutenberg/download/engine/IDownloadEngine.html b/javadoc/org/josfranmc/gutenberg/download/engine/IDownloadEngine.html index 9958208..510f126 100644 --- a/javadoc/org/josfranmc/gutenberg/download/engine/IDownloadEngine.html +++ b/javadoc/org/josfranmc/gutenberg/download/engine/IDownloadEngine.html @@ -1,320 +1,320 @@ - - - - - -IDownloadEngine - - - - - - - - - - - - -
-
org.josfranmc.gutenberg.download.engine
-

Interface IDownloadEngine

-
-
-
-
    -
  • -
    -
    All Known Implementing Classes:
    -
    DownloadHttpUrlConnection
    -
    -
    -
    -
    public interface IDownloadEngine
    -
    Defines the behavior that a class have to implement in order to have the ability to download resources on net.
    -
    -
    Version:
    -
    2.0
    -
    Author:
    -
    Jose Francisco Mena Ceca
    -
    See Also:
    -
    IDownloadEngine, -GutenbergException
    -
    -
  • -
-
-
- -
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        download

        -
        DownloadResult download()
        -
        Runs a download.
        -
        -
        Returns:
        -
        the result of the download in the form of a DownloadResult object
        -
        Throws:
        -
        GutenbergException - if there is any error downloading
        -
        See Also:
        -
        DownloadResult
        -
        -
      • -
      - - - -
        -
      • -

        setResource

        -
        void setResource(java.net.URL resource)
        -
        Sets the resource of the url to download, in the form of a URL object
        -
        -
        Parameters:
        -
        resource - url address
        -
        -
      • -
      - - - -
        -
      • -

        getResource

        -
        java.net.URL getResource()
        -
        -
        Returns:
        -
        the resource of the url to download, in the form of a URL object
        -
        -
      • -
      - - - -
        -
      • -

        setSavePath

        -
        void setSavePath(java.lang.String savePath)
        -
        Sets the local path where to save the resource to be download
        -
        -
        Parameters:
        -
        savePath - local path
        -
        -
      • -
      - - - -
        -
      • -

        getSavePath

        -
        java.lang.String getSavePath()
        -
        -
        Returns:
        -
        the local path where to save the resource to be download
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - + + + + + +IDownloadEngine + + + + + + + + + + + + +
+
org.josfranmc.gutenberg.download.engine
+

Interface IDownloadEngine

+
+
+
+
    +
  • +
    +
    All Known Implementing Classes:
    +
    DownloadHttpUrlConnection
    +
    +
    +
    +
    public interface IDownloadEngine
    +
    Defines the behavior that a class have to implement in order to have the ability to download resources on net.
    +
    +
    Version:
    +
    2.0
    +
    Author:
    +
    Jose Francisco Mena Ceca
    +
    See Also:
    +
    IDownloadEngine, +GutenbergException
    +
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        download

        +
        DownloadResult download()
        +
        Runs a download.
        +
        +
        Returns:
        +
        the result of the download in the form of a DownloadResult object
        +
        Throws:
        +
        GutenbergException - if there is any error downloading
        +
        See Also:
        +
        DownloadResult
        +
        +
      • +
      + + + +
        +
      • +

        setResource

        +
        void setResource(java.net.URL resource)
        +
        Sets the resource of the url to download, in the form of a URL object
        +
        +
        Parameters:
        +
        resource - url address
        +
        +
      • +
      + + + +
        +
      • +

        getResource

        +
        java.net.URL getResource()
        +
        +
        Returns:
        +
        the resource of the url to download, in the form of a URL object
        +
        +
      • +
      + + + +
        +
      • +

        setSavePath

        +
        void setSavePath(java.lang.String savePath)
        +
        Sets the local path where to save the resource to be download
        +
        +
        Parameters:
        +
        savePath - local path
        +
        +
      • +
      + + + +
        +
      • +

        getSavePath

        +
        java.lang.String getSavePath()
        +
        +
        Returns:
        +
        the local path where to save the resource to be download
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + + + diff --git a/javadoc/org/josfranmc/gutenberg/download/engine/class-use/DownloadEngineFactory.html b/javadoc/org/josfranmc/gutenberg/download/engine/class-use/DownloadEngineFactory.html index 03617fa..372504e 100644 --- a/javadoc/org/josfranmc/gutenberg/download/engine/class-use/DownloadEngineFactory.html +++ b/javadoc/org/josfranmc/gutenberg/download/engine/class-use/DownloadEngineFactory.html @@ -1,124 +1,124 @@ - - - - - -Uses of Class org.josfranmc.gutenberg.download.engine.DownloadEngineFactory - - - - - - - - - - - -
-

Uses of Class
org.josfranmc.gutenberg.download.engine.DownloadEngineFactory

-
-
No usage of org.josfranmc.gutenberg.download.engine.DownloadEngineFactory
- - - - - - + + + + + +Uses of Class org.josfranmc.gutenberg.download.engine.DownloadEngineFactory + + + + + + + + + + + +
+

Uses of Class
org.josfranmc.gutenberg.download.engine.DownloadEngineFactory

+
+
No usage of org.josfranmc.gutenberg.download.engine.DownloadEngineFactory
+ + + + + + diff --git a/javadoc/org/josfranmc/gutenberg/download/engine/class-use/DownloadHttpUrlConnection.html b/javadoc/org/josfranmc/gutenberg/download/engine/class-use/DownloadHttpUrlConnection.html index 73d77ed..1fd7a08 100644 --- a/javadoc/org/josfranmc/gutenberg/download/engine/class-use/DownloadHttpUrlConnection.html +++ b/javadoc/org/josfranmc/gutenberg/download/engine/class-use/DownloadHttpUrlConnection.html @@ -1,124 +1,124 @@ - - - - - -Uses of Class org.josfranmc.gutenberg.download.engine.DownloadHttpUrlConnection - - - - - - - - - - - -
-

Uses of Class
org.josfranmc.gutenberg.download.engine.DownloadHttpUrlConnection

-
-
No usage of org.josfranmc.gutenberg.download.engine.DownloadHttpUrlConnection
- - - - - - + + + + + +Uses of Class org.josfranmc.gutenberg.download.engine.DownloadHttpUrlConnection + + + + + + + + + + + +
+

Uses of Class
org.josfranmc.gutenberg.download.engine.DownloadHttpUrlConnection

+
+
No usage of org.josfranmc.gutenberg.download.engine.DownloadHttpUrlConnection
+ + + + + + diff --git a/javadoc/org/josfranmc/gutenberg/download/engine/class-use/IDownloadEngine.html b/javadoc/org/josfranmc/gutenberg/download/engine/class-use/IDownloadEngine.html index f319b5f..72852b3 100644 --- a/javadoc/org/josfranmc/gutenberg/download/engine/class-use/IDownloadEngine.html +++ b/javadoc/org/josfranmc/gutenberg/download/engine/class-use/IDownloadEngine.html @@ -1,222 +1,222 @@ - - - - - -Uses of Interface org.josfranmc.gutenberg.download.engine.IDownloadEngine - - - - - - - - - - - -
-

Uses of Interface
org.josfranmc.gutenberg.download.engine.IDownloadEngine

-
-
- -
- - - - - - + + + + + +Uses of Interface org.josfranmc.gutenberg.download.engine.IDownloadEngine + + + + + + + + + + + +
+

Uses of Interface
org.josfranmc.gutenberg.download.engine.IDownloadEngine

+
+
+ +
+ + + + + + diff --git a/javadoc/org/josfranmc/gutenberg/download/engine/package-frame.html b/javadoc/org/josfranmc/gutenberg/download/engine/package-frame.html index e4a8062..9021f83 100644 --- a/javadoc/org/josfranmc/gutenberg/download/engine/package-frame.html +++ b/javadoc/org/josfranmc/gutenberg/download/engine/package-frame.html @@ -1,30 +1,30 @@ - - - - - -org.josfranmc.gutenberg.download.engine - - - - - -

org.josfranmc.gutenberg.download.engine

- - - + + + + + +org.josfranmc.gutenberg.download.engine + + + + + +

org.josfranmc.gutenberg.download.engine

+ + + diff --git a/javadoc/org/josfranmc/gutenberg/download/engine/package-summary.html b/javadoc/org/josfranmc/gutenberg/download/engine/package-summary.html index f588af3..193fce3 100644 --- a/javadoc/org/josfranmc/gutenberg/download/engine/package-summary.html +++ b/javadoc/org/josfranmc/gutenberg/download/engine/package-summary.html @@ -1,190 +1,190 @@ - - - - - -org.josfranmc.gutenberg.download.engine - - - - - - - - - - - -
-

Package org.josfranmc.gutenberg.download.engine

-
-
-
    -
  • - - - - - - - - - - - - -
    Interface Summary 
    InterfaceDescription
    IDownloadEngine -
    Defines the behavior that a class have to implement in order to have the ability to download resources on net.
    -
    -
  • -
  • - - - - - - - - - - - - - - - - - - - - -
    Class Summary 
    ClassDescription
    DownloadEngineFactory -
    Factory for creating IDownloadEngine objects.
    -
    DownloadHttpUrlConnection -
    Allows to download a resource identified by an url and save it in a local folder.
    -
    DownloadResult -
    It encapsulates the result of downloading a resource.
    -
    -
  • -
  • - - - - - - - - - - - - -
    Enum Summary 
    EnumDescription
    DownloadEngineType -
    Types of download engines
    -
    -
  • -
-
- - - - - - + + + + + +org.josfranmc.gutenberg.download.engine + + + + + + + + + + + +
+

Package org.josfranmc.gutenberg.download.engine

+
+
+
    +
  • + + + + + + + + + + + + +
    Interface Summary 
    InterfaceDescription
    IDownloadEngine +
    Defines the behavior that a class have to implement in order to have the ability to download resources on net.
    +
    +
  • +
  • + + + + + + + + + + + + + + + + + + + + +
    Class Summary 
    ClassDescription
    DownloadEngineFactory +
    Factory for creating IDownloadEngine objects.
    +
    DownloadHttpUrlConnection +
    Allows to download a resource identified by an url and save it in a local folder.
    +
    DownloadResult +
    It encapsulates the result of downloading a resource.
    +
    +
  • +
  • + + + + + + + + + + + + +
    Enum Summary 
    EnumDescription
    DownloadEngineType +
    Types of download engines
    +
    +
  • +
+
+ + + + + + diff --git a/javadoc/org/josfranmc/gutenberg/download/engine/package-tree.html b/javadoc/org/josfranmc/gutenberg/download/engine/package-tree.html index a2ffdf3..d42a571 100644 --- a/javadoc/org/josfranmc/gutenberg/download/engine/package-tree.html +++ b/javadoc/org/josfranmc/gutenberg/download/engine/package-tree.html @@ -1,155 +1,155 @@ - - - - - -org.josfranmc.gutenberg.download.engine Class Hierarchy - - - - - - - - - - - -
-

Hierarchy For Package org.josfranmc.gutenberg.download.engine

-Package Hierarchies: - -
-
-

Class Hierarchy

- -

Interface Hierarchy

- -

Enum Hierarchy

-
    -
  • java.lang.Object -
      -
    • java.lang.Enum<E> (implements java.lang.Comparable<T>, java.io.Serializable) - -
    • -
    -
  • -
-
- - - - - - + + + + + +org.josfranmc.gutenberg.download.engine Class Hierarchy + + + + + + + + + + + +
+

Hierarchy For Package org.josfranmc.gutenberg.download.engine

+Package Hierarchies: + +
+
+

Class Hierarchy

+ +

Interface Hierarchy

+ +

Enum Hierarchy

+
    +
  • java.lang.Object +
      +
    • java.lang.Enum<E> (implements java.lang.Comparable<T>, java.io.Serializable) + +
    • +
    +
  • +
+
+ + + + + + diff --git a/javadoc/org/josfranmc/gutenberg/download/package-frame.html b/javadoc/org/josfranmc/gutenberg/download/package-frame.html index 3657e2a..afb6fa2 100644 --- a/javadoc/org/josfranmc/gutenberg/download/package-frame.html +++ b/javadoc/org/josfranmc/gutenberg/download/package-frame.html @@ -1,23 +1,23 @@ - - - - - -org.josfranmc.gutenberg.download - - - - - -

org.josfranmc.gutenberg.download

- - - + + + + + +org.josfranmc.gutenberg.download + + + + + +

org.josfranmc.gutenberg.download

+ + + diff --git a/javadoc/org/josfranmc/gutenberg/download/package-summary.html b/javadoc/org/josfranmc/gutenberg/download/package-summary.html index a1b2b33..81719ee 100644 --- a/javadoc/org/josfranmc/gutenberg/download/package-summary.html +++ b/javadoc/org/josfranmc/gutenberg/download/package-summary.html @@ -1,162 +1,162 @@ - - - - - -org.josfranmc.gutenberg.download - - - - - - - - - - - -
-

Package org.josfranmc.gutenberg.download

-
-
-
    -
  • - - - - - - - - - - - - - - - - - - - - - - - - -
    Class Summary 
    ClassDescription
    DownloadBooks -
    Allows to perform the file download process.
    -
    DownloadParams -
    Parameters used in the application.
    -
    DownloadThread -
    Downloads a resource.
    -
    JGutenbergDownload -
    It allows to download books from the Gutenberg project repositories.
    -
    -
  • -
-
- - - - - - + + + + + +org.josfranmc.gutenberg.download + + + + + + + + + + + +
+

Package org.josfranmc.gutenberg.download

+
+
+
    +
  • + + + + + + + + + + + + + + + + + + + + + + + + +
    Class Summary 
    ClassDescription
    DownloadBooks +
    Allows to perform the file download process.
    +
    DownloadParams +
    Parameters used in the application.
    +
    DownloadThread +
    Downloads a resource.
    +
    JGutenbergDownload +
    It allows to download books from the Gutenberg project repositories.
    +
    +
  • +
+
+ + + + + + diff --git a/javadoc/org/josfranmc/gutenberg/download/package-tree.html b/javadoc/org/josfranmc/gutenberg/download/package-tree.html index 85389ac..ec68137 100644 --- a/javadoc/org/josfranmc/gutenberg/download/package-tree.html +++ b/javadoc/org/josfranmc/gutenberg/download/package-tree.html @@ -1,140 +1,140 @@ - - - - - -org.josfranmc.gutenberg.download Class Hierarchy - - - - - - - - - - - -
-

Hierarchy For Package org.josfranmc.gutenberg.download

-Package Hierarchies: - -
-
-

Class Hierarchy

- -
- - - - - - + + + + + +org.josfranmc.gutenberg.download Class Hierarchy + + + + + + + + + + + +
+

Hierarchy For Package org.josfranmc.gutenberg.download

+Package Hierarchies: + +
+
+

Class Hierarchy

+ +
+ + + + + + diff --git a/javadoc/org/josfranmc/gutenberg/download/package-use.html b/javadoc/org/josfranmc/gutenberg/download/package-use.html index d0df101..28b8dbe 100644 --- a/javadoc/org/josfranmc/gutenberg/download/package-use.html +++ b/javadoc/org/josfranmc/gutenberg/download/package-use.html @@ -1,159 +1,159 @@ - - - - - -Uses of Package org.josfranmc.gutenberg.download - - - - - - - - - - - -
-

Uses of Package
org.josfranmc.gutenberg.download

-
-
- -
- - - - - - + + + + + +Uses of Package org.josfranmc.gutenberg.download + + + + + + + + + + + +
+

Uses of Package
org.josfranmc.gutenberg.download

+
+
+ +
+ + + + + + diff --git a/javadoc/org/josfranmc/gutenberg/util/FileManager.html b/javadoc/org/josfranmc/gutenberg/util/FileManager.html index 7a72579..353c0f8 100644 --- a/javadoc/org/josfranmc/gutenberg/util/FileManager.html +++ b/javadoc/org/josfranmc/gutenberg/util/FileManager.html @@ -1,329 +1,329 @@ - - - - - -FileManager - - - - - - - - - - - - -
-
org.josfranmc.gutenberg.util
-

Class FileManager

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • org.josfranmc.gutenberg.util.FileManager
    • -
    -
  • -
-
-
    -
  • -
    -
    -
    public class FileManager
    -extends java.lang.Object
    -
    Tools for managing files.
    -
    -
    Version:
    -
    2.0
    -
    Author:
    -
    Jose Francisco Mena Ceca
    -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - - - - - - - - - - - - - -
      All Methods Static Methods Concrete Methods 
      Modifier and TypeMethod and Description
      static booleanfileExists(java.lang.String localPath, - java.lang.String url) -
      Checks if the file indicated by an url already exists in a local path.
      -
      static java.lang.StringgetLocalFileName(java.lang.String str) -
      Returns the name of file inside a path.
      -
      static java.lang.StringgetLocalFilePathFromURL(java.lang.String savePath, - java.lang.String link) -
      Returns the path a file must have when downloaded on the local machine.
      -
      static voidunzipFiles(java.lang.String inputPath, - java.lang.String outputPath) -
      Unzips files in format zip from a certain folder.
      -
      -
        -
      • - - -

        Methods inherited from class java.lang.Object

        -equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        fileExists

        -
        public static boolean fileExists(java.lang.String localPath,
        -                                 java.lang.String url)
        -
        Checks if the file indicated by an url already exists in a local path.
        -
        -
        Parameters:
        -
        localPath - local path
        -
        url - download url
        -
        Returns:
        -
        true if the file indicated by the url exists in the local path, false otherwise
        -
        -
      • -
      - - - -
        -
      • -

        getLocalFilePathFromURL

        -
        public static java.lang.String getLocalFilePathFromURL(java.lang.String savePath,
        -                                                       java.lang.String link)
        -
        Returns the path a file must have when downloaded on the local machine.
        - The path is formed by concatenating two elements: on the one hand, tha path of the folder where the download will be saved, - on the other hand, the name of the file in the download url (file name is at the end of the url, from last separator character of folders).
        - If the name of the file contains ? and &amp; characters are replaced by _ and & respectively.
        -
        -
        Parameters:
        -
        savePath - path of the folder in which to get the download
        -
        link - download link
        -
        Returns:
        -
        la ruta del fichero en el equipo local
        -
        -
      • -
      - - - -
        -
      • -

        getLocalFileName

        -
        public static java.lang.String getLocalFileName(java.lang.String str)
        -
        Returns the name of file inside a path.
        -
        -
        Parameters:
        -
        str - file path
        -
        Returns:
        -
        the name of file inside str parameter
        -
        -
      • -
      - - - -
        -
      • -

        unzipFiles

        -
        public static void unzipFiles(java.lang.String inputPath,
        -                              java.lang.String outputPath)
        -
        Unzips files in format zip from a certain folder.
        -
        -
        Parameters:
        -
        inputPath - folder path with zip files
        -
        outputPath - folder path where unzip files
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - + + + + + +FileManager + + + + + + + + + + + + +
+
org.josfranmc.gutenberg.util
+

Class FileManager

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.josfranmc.gutenberg.util.FileManager
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class FileManager
    +extends java.lang.Object
    +
    Tools for managing files.
    +
    +
    Version:
    +
    2.0
    +
    Author:
    +
    Jose Francisco Mena Ceca
    +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + +
      All Methods Static Methods Concrete Methods 
      Modifier and TypeMethod and Description
      static booleanfileExists(java.lang.String localPath, + java.lang.String url) +
      Checks if the file indicated by an url already exists in a local path.
      +
      static java.lang.StringgetLocalFileName(java.lang.String str) +
      Returns the name of file inside a path.
      +
      static java.lang.StringgetLocalFilePathFromURL(java.lang.String savePath, + java.lang.String link) +
      Returns the path a file must have when downloaded on the local machine.
      +
      static voidunzipFiles(java.lang.String inputPath, + java.lang.String outputPath) +
      Unzips files in format zip from a certain folder.
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        fileExists

        +
        public static boolean fileExists(java.lang.String localPath,
        +                                 java.lang.String url)
        +
        Checks if the file indicated by an url already exists in a local path.
        +
        +
        Parameters:
        +
        localPath - local path
        +
        url - download url
        +
        Returns:
        +
        true if the file indicated by the url exists in the local path, false otherwise
        +
        +
      • +
      + + + +
        +
      • +

        getLocalFilePathFromURL

        +
        public static java.lang.String getLocalFilePathFromURL(java.lang.String savePath,
        +                                                       java.lang.String link)
        +
        Returns the path a file must have when downloaded on the local machine.
        + The path is formed by concatenating two elements: on the one hand, tha path of the folder where the download will be saved, + on the other hand, the name of the file in the download url (file name is at the end of the url, from last separator character of folders).
        + If the name of the file contains ? and &amp; characters are replaced by _ and & respectively.
        +
        +
        Parameters:
        +
        savePath - path of the folder in which to get the download
        +
        link - download link
        +
        Returns:
        +
        la ruta del fichero en el equipo local
        +
        +
      • +
      + + + +
        +
      • +

        getLocalFileName

        +
        public static java.lang.String getLocalFileName(java.lang.String str)
        +
        Returns the name of file inside a path.
        +
        +
        Parameters:
        +
        str - file path
        +
        Returns:
        +
        the name of file inside str parameter
        +
        +
      • +
      + + + +
        +
      • +

        unzipFiles

        +
        public static void unzipFiles(java.lang.String inputPath,
        +                              java.lang.String outputPath)
        +
        Unzips files in format zip from a certain folder.
        +
        +
        Parameters:
        +
        inputPath - folder path with zip files
        +
        outputPath - folder path where unzip files
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + + + diff --git a/javadoc/org/josfranmc/gutenberg/util/FileScraping.html b/javadoc/org/josfranmc/gutenberg/util/FileScraping.html index d01d131..f41f4e2 100644 --- a/javadoc/org/josfranmc/gutenberg/util/FileScraping.html +++ b/javadoc/org/josfranmc/gutenberg/util/FileScraping.html @@ -1,254 +1,254 @@ - - - - - -FileScraping - - - - - - - - - - - - -
-
org.josfranmc.gutenberg.util
-

Class FileScraping

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • org.josfranmc.gutenberg.util.FileScraping
    • -
    -
  • -
-
-
    -
  • -
    -
    -
    public class FileScraping
    -extends java.lang.Object
    -
    Tools for searching web links in files.
    -
    -
    Version:
    -
    2.0
    -
    Author:
    -
    Jose Francisco Mena Ceca
    -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Method Summary

      - - - - - - - - - - -
      All Methods Static Methods Concrete Methods 
      Modifier and TypeMethod and Description
      static java.util.List<java.lang.String>getLinks(java.lang.String filePath) -
      Returns a list with all links within an html file.
      -
      -
        -
      • - - -

        Methods inherited from class java.lang.Object

        -equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        getLinks

        -
        public static java.util.List<java.lang.String> getLinks(java.lang.String filePath)
        -
        Returns a list with all links within an html file.
        - The links are extracted from href attributes of <a> elements.
        -
        -
        Parameters:
        -
        filePath - path of file to analyze
        -
        Returns:
        -
        a List element with links
        -
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - + + + + + +FileScraping + + + + + + + + + + + + +
+
org.josfranmc.gutenberg.util
+

Class FileScraping

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.josfranmc.gutenberg.util.FileScraping
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public class FileScraping
    +extends java.lang.Object
    +
    Tools for searching web links in files.
    +
    +
    Version:
    +
    2.0
    +
    Author:
    +
    Jose Francisco Mena Ceca
    +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + +
      All Methods Static Methods Concrete Methods 
      Modifier and TypeMethod and Description
      static java.util.List<java.lang.String>getLinks(java.lang.String filePath) +
      Returns a list with all links within an html file.
      +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        getLinks

        +
        public static java.util.List<java.lang.String> getLinks(java.lang.String filePath)
        +
        Returns a list with all links within an html file.
        + The links are extracted from href attributes of <a> elements.
        +
        +
        Parameters:
        +
        filePath - path of file to analyze
        +
        Returns:
        +
        a List element with links
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + + + diff --git a/javadoc/org/josfranmc/gutenberg/util/GutenbergException.html b/javadoc/org/josfranmc/gutenberg/util/GutenbergException.html index b588400..70506ed 100644 --- a/javadoc/org/josfranmc/gutenberg/util/GutenbergException.html +++ b/javadoc/org/josfranmc/gutenberg/util/GutenbergException.html @@ -1,310 +1,310 @@ - - - - - -GutenbergException - - - - - - - - - - - - -
-
org.josfranmc.gutenberg.util
-

Class GutenbergException

-
-
-
    -
  • java.lang.Object
  • -
  • -
      -
    • java.lang.Throwable
    • -
    • -
        -
      • java.lang.Exception
      • -
      • -
          -
        • java.lang.RuntimeException
        • -
        • -
            -
          • org.josfranmc.gutenberg.util.GutenbergException
          • -
          -
        • -
        -
      • -
      -
    • -
    -
  • -
-
-
    -
  • -
    -
    All Implemented Interfaces:
    -
    java.io.Serializable
    -
    -
    -
    -
    public class GutenbergException
    -extends java.lang.RuntimeException
    -
    It allows to capture exceptions in the application in the form of a RuntimeException.
    -
    -
    Version:
    -
    2.0
    -
    Author:
    -
    Jose Francisco Mena Ceca
    -
    See Also:
    -
    Serialized Form
    -
    -
  • -
-
-
-
    -
  • - - - -
      -
    • - - -

      Method Summary

      -
        -
      • - - -

        Methods inherited from class java.lang.Throwable

        -addSuppressed, fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, getSuppressed, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString
      • -
      -
        -
      • - - -

        Methods inherited from class java.lang.Object

        -equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
      • -
      -
    • -
    -
  • -
-
-
-
    -
  • - -
      -
    • - - -

      Constructor Detail

      - - - -
        -
      • -

        GutenbergException

        -
        public GutenbergException()
        -
      • -
      - - - -
        -
      • -

        GutenbergException

        -
        public GutenbergException(java.lang.String message,
        -                          java.lang.Throwable cause)
        -
      • -
      - - - -
        -
      • -

        GutenbergException

        -
        public GutenbergException(java.lang.String message)
        -
      • -
      - - - -
        -
      • -

        GutenbergException

        -
        public GutenbergException(java.lang.Throwable cause)
        -
      • -
      -
    • -
    -
  • -
-
-
- - - - - - - + + + + + +GutenbergException + + + + + + + + + + + + +
+
org.josfranmc.gutenberg.util
+

Class GutenbergException

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • java.lang.Throwable
    • +
    • +
        +
      • java.lang.Exception
      • +
      • +
          +
        • java.lang.RuntimeException
        • +
        • +
            +
          • org.josfranmc.gutenberg.util.GutenbergException
          • +
          +
        • +
        +
      • +
      +
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    java.io.Serializable
    +
    +
    +
    +
    public class GutenbergException
    +extends java.lang.RuntimeException
    +
    It allows to capture exceptions in the application in the form of a RuntimeException.
    +
    +
    Version:
    +
    2.0
    +
    Author:
    +
    Jose Francisco Mena Ceca
    +
    See Also:
    +
    Serialized Form
    +
    +
  • +
+
+
+
    +
  • + + + +
      +
    • + + +

      Method Summary

      +
        +
      • + + +

        Methods inherited from class java.lang.Throwable

        +addSuppressed, fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, getSuppressed, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString
      • +
      +
        +
      • + + +

        Methods inherited from class java.lang.Object

        +equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
      • +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        GutenbergException

        +
        public GutenbergException()
        +
      • +
      + + + +
        +
      • +

        GutenbergException

        +
        public GutenbergException(java.lang.String message,
        +                          java.lang.Throwable cause)
        +
      • +
      + + + +
        +
      • +

        GutenbergException

        +
        public GutenbergException(java.lang.String message)
        +
      • +
      + + + +
        +
      • +

        GutenbergException

        +
        public GutenbergException(java.lang.Throwable cause)
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + + + diff --git a/javadoc/org/josfranmc/gutenberg/util/class-use/FileManager.html b/javadoc/org/josfranmc/gutenberg/util/class-use/FileManager.html index e8f5ffc..a27394d 100644 --- a/javadoc/org/josfranmc/gutenberg/util/class-use/FileManager.html +++ b/javadoc/org/josfranmc/gutenberg/util/class-use/FileManager.html @@ -1,124 +1,124 @@ - - - - - -Uses of Class org.josfranmc.gutenberg.util.FileManager - - - - - - - - - - - -
-

Uses of Class
org.josfranmc.gutenberg.util.FileManager

-
-
No usage of org.josfranmc.gutenberg.util.FileManager
- - - - - - + + + + + +Uses of Class org.josfranmc.gutenberg.util.FileManager + + + + + + + + + + + +
+

Uses of Class
org.josfranmc.gutenberg.util.FileManager

+
+
No usage of org.josfranmc.gutenberg.util.FileManager
+ + + + + + diff --git a/javadoc/org/josfranmc/gutenberg/util/class-use/FileScraping.html b/javadoc/org/josfranmc/gutenberg/util/class-use/FileScraping.html index 3edca9e..b557ad6 100644 --- a/javadoc/org/josfranmc/gutenberg/util/class-use/FileScraping.html +++ b/javadoc/org/josfranmc/gutenberg/util/class-use/FileScraping.html @@ -1,124 +1,124 @@ - - - - - -Uses of Class org.josfranmc.gutenberg.util.FileScraping - - - - - - - - - - - -
-

Uses of Class
org.josfranmc.gutenberg.util.FileScraping

-
-
No usage of org.josfranmc.gutenberg.util.FileScraping
- - - - - - + + + + + +Uses of Class org.josfranmc.gutenberg.util.FileScraping + + + + + + + + + + + +
+

Uses of Class
org.josfranmc.gutenberg.util.FileScraping

+
+
No usage of org.josfranmc.gutenberg.util.FileScraping
+ + + + + + diff --git a/javadoc/org/josfranmc/gutenberg/util/class-use/GutenbergException.html b/javadoc/org/josfranmc/gutenberg/util/class-use/GutenbergException.html index 712504b..9e9c39c 100644 --- a/javadoc/org/josfranmc/gutenberg/util/class-use/GutenbergException.html +++ b/javadoc/org/josfranmc/gutenberg/util/class-use/GutenbergException.html @@ -1,124 +1,124 @@ - - - - - -Uses of Class org.josfranmc.gutenberg.util.GutenbergException - - - - - - - - - - - -
-

Uses of Class
org.josfranmc.gutenberg.util.GutenbergException

-
-
No usage of org.josfranmc.gutenberg.util.GutenbergException
- - - - - - + + + + + +Uses of Class org.josfranmc.gutenberg.util.GutenbergException + + + + + + + + + + + +
+

Uses of Class
org.josfranmc.gutenberg.util.GutenbergException

+
+
No usage of org.josfranmc.gutenberg.util.GutenbergException
+ + + + + + diff --git a/javadoc/org/josfranmc/gutenberg/util/package-frame.html b/javadoc/org/josfranmc/gutenberg/util/package-frame.html index 713d762..56fd848 100644 --- a/javadoc/org/josfranmc/gutenberg/util/package-frame.html +++ b/javadoc/org/josfranmc/gutenberg/util/package-frame.html @@ -1,25 +1,25 @@ - - - - - -org.josfranmc.gutenberg.util - - - - - -

org.josfranmc.gutenberg.util

-
-

Classes

- -

Exceptions

- -
- - + + + + + +org.josfranmc.gutenberg.util + + + + + +

org.josfranmc.gutenberg.util

+
+

Classes

+ +

Exceptions

+ +
+ + diff --git a/javadoc/org/josfranmc/gutenberg/util/package-summary.html b/javadoc/org/josfranmc/gutenberg/util/package-summary.html index 3a6dd43..f471847 100644 --- a/javadoc/org/josfranmc/gutenberg/util/package-summary.html +++ b/javadoc/org/josfranmc/gutenberg/util/package-summary.html @@ -1,167 +1,167 @@ - - - - - -org.josfranmc.gutenberg.util - - - - - - - - - - - -
-

Package org.josfranmc.gutenberg.util

-
-
-
    -
  • - - - - - - - - - - - - - - - - -
    Class Summary 
    ClassDescription
    FileManager -
    Tools for managing files.
    -
    FileScraping -
    Tools for searching web links in files.
    -
    -
  • -
  • - - - - - - - - - - - - -
    Exception Summary 
    ExceptionDescription
    GutenbergException -
    It allows to capture exceptions in the application in the form of a RuntimeException.
    -
    -
  • -
-
- - - - - - + + + + + +org.josfranmc.gutenberg.util + + + + + + + + + + + +
+

Package org.josfranmc.gutenberg.util

+
+
+
    +
  • + + + + + + + + + + + + + + + + +
    Class Summary 
    ClassDescription
    FileManager +
    Tools for managing files.
    +
    FileScraping +
    Tools for searching web links in files.
    +
    +
  • +
  • + + + + + + + + + + + + +
    Exception Summary 
    ExceptionDescription
    GutenbergException +
    It allows to capture exceptions in the application in the form of a RuntimeException.
    +
    +
  • +
+
+ + + + + + diff --git a/javadoc/org/josfranmc/gutenberg/util/package-tree.html b/javadoc/org/josfranmc/gutenberg/util/package-tree.html index d8e6dc7..4584014 100644 --- a/javadoc/org/josfranmc/gutenberg/util/package-tree.html +++ b/javadoc/org/josfranmc/gutenberg/util/package-tree.html @@ -1,151 +1,151 @@ - - - - - -org.josfranmc.gutenberg.util Class Hierarchy - - - - - - - - - - - -
-

Hierarchy For Package org.josfranmc.gutenberg.util

-Package Hierarchies: - -
-
-

Class Hierarchy

-
    -
  • java.lang.Object -
      -
    • org.josfranmc.gutenberg.util.FileManager
    • -
    • org.josfranmc.gutenberg.util.FileScraping
    • -
    • java.lang.Throwable (implements java.io.Serializable) -
        -
      • java.lang.Exception - -
      • -
      -
    • -
    -
  • -
-
- - - - - - + + + + + +org.josfranmc.gutenberg.util Class Hierarchy + + + + + + + + + + + +
+

Hierarchy For Package org.josfranmc.gutenberg.util

+Package Hierarchies: + +
+
+

Class Hierarchy

+
    +
  • java.lang.Object +
      +
    • org.josfranmc.gutenberg.util.FileManager
    • +
    • org.josfranmc.gutenberg.util.FileScraping
    • +
    • java.lang.Throwable (implements java.io.Serializable) +
        +
      • java.lang.Exception + +
      • +
      +
    • +
    +
  • +
+
+ + + + + + diff --git a/javadoc/org/josfranmc/gutenberg/util/package-use.html b/javadoc/org/josfranmc/gutenberg/util/package-use.html index 52d0c11..6429231 100644 --- a/javadoc/org/josfranmc/gutenberg/util/package-use.html +++ b/javadoc/org/josfranmc/gutenberg/util/package-use.html @@ -1,124 +1,124 @@ - - - - - -Uses of Package org.josfranmc.gutenberg.util - - - - - - - - - - - -
-

Uses of Package
org.josfranmc.gutenberg.util

-
-
No usage of org.josfranmc.gutenberg.util
- - - - - - + + + + + +Uses of Package org.josfranmc.gutenberg.util + + + + + + + + + + + +
+

Uses of Package
org.josfranmc.gutenberg.util

+
+
No usage of org.josfranmc.gutenberg.util
+ + + + + + diff --git a/javadoc/overview-frame.html b/javadoc/overview-frame.html index 94cd3fc..244d34b 100644 --- a/javadoc/overview-frame.html +++ b/javadoc/overview-frame.html @@ -1,23 +1,23 @@ - - - - - -Overview List - - - - - - - -

 

- - + + + + + +Overview List + + + + + + + +

 

+ + diff --git a/javadoc/overview-summary.html b/javadoc/overview-summary.html index 43b91b1..ca7832b 100644 --- a/javadoc/overview-summary.html +++ b/javadoc/overview-summary.html @@ -1,146 +1,146 @@ - - - - - -Overview - - - - - - - - -
- - - - - - - -
- - -
-

JGutenbergDownload

-
-
- - - - - - - - - - - - - - - - - - - - -
Packages 
PackageDescription
org.josfranmc.gutenberg.download 
org.josfranmc.gutenberg.download.engine 
org.josfranmc.gutenberg.util 
-
- -
- - - - - - - -
- - - - + + + + + +Overview + + + + + + + + +
+ + + + + + + +
+ + +
+

JGutenbergDownload

+
+
+ + + + + + + + + + + + + + + + + + + + +
Packages 
PackageDescription
org.josfranmc.gutenberg.download 
org.josfranmc.gutenberg.download.engine 
org.josfranmc.gutenberg.util 
+
+ +
+ + + + + + + +
+ + + + diff --git a/javadoc/overview-tree.html b/javadoc/overview-tree.html index e430dde..a29a841 100644 --- a/javadoc/overview-tree.html +++ b/javadoc/overview-tree.html @@ -1,176 +1,176 @@ - - - - - -Class Hierarchy - - - - - - - - -
- - - - - - - -
- - - -
-

Class Hierarchy

- -

Interface Hierarchy

- -

Enum Hierarchy

-
    -
  • java.lang.Object -
      -
    • java.lang.Enum<E> (implements java.lang.Comparable<T>, java.io.Serializable) - -
    • -
    -
  • -
-
- -
- - - - - - - -
- - - - + + + + + +Class Hierarchy + + + + + + + + +
+ + + + + + + +
+ + + +
+

Class Hierarchy

+ +

Interface Hierarchy

+ +

Enum Hierarchy

+
    +
  • java.lang.Object +
      +
    • java.lang.Enum<E> (implements java.lang.Comparable<T>, java.io.Serializable) + +
    • +
    +
  • +
+
+ +
+ + + + + + + +
+ + + + diff --git a/javadoc/package-list b/javadoc/package-list index 5ea2853..274399b 100644 --- a/javadoc/package-list +++ b/javadoc/package-list @@ -1,3 +1,3 @@ -org.josfranmc.gutenberg.download -org.josfranmc.gutenberg.download.engine -org.josfranmc.gutenberg.util +org.josfranmc.gutenberg.download +org.josfranmc.gutenberg.download.engine +org.josfranmc.gutenberg.util diff --git a/javadoc/script.js b/javadoc/script.js index b346356..c3a1cae 100644 --- a/javadoc/script.js +++ b/javadoc/script.js @@ -1,30 +1,30 @@ -function show(type) -{ - count = 0; - for (var key in methods) { - var row = document.getElementById(key); - if ((methods[key] & type) != 0) { - row.style.display = ''; - row.className = (count++ % 2) ? rowColor : altColor; - } - else - row.style.display = 'none'; - } - updateTabs(type); -} - -function updateTabs(type) -{ - for (var value in tabs) { - var sNode = document.getElementById(tabs[value][0]); - var spanNode = sNode.firstChild; - if (value == type) { - sNode.className = activeTableTab; - spanNode.innerHTML = tabs[value][1]; - } - else { - sNode.className = tableTab; - spanNode.innerHTML = "" + tabs[value][1] + ""; - } - } -} +function show(type) +{ + count = 0; + for (var key in methods) { + var row = document.getElementById(key); + if ((methods[key] & type) != 0) { + row.style.display = ''; + row.className = (count++ % 2) ? rowColor : altColor; + } + else + row.style.display = 'none'; + } + updateTabs(type); +} + +function updateTabs(type) +{ + for (var value in tabs) { + var sNode = document.getElementById(tabs[value][0]); + var spanNode = sNode.firstChild; + if (value == type) { + sNode.className = activeTableTab; + spanNode.innerHTML = tabs[value][1]; + } + else { + sNode.className = tableTab; + spanNode.innerHTML = "" + tabs[value][1] + ""; + } + } +} diff --git a/javadoc/serialized-form.html b/javadoc/serialized-form.html index 28a5db6..3764a8e 100644 --- a/javadoc/serialized-form.html +++ b/javadoc/serialized-form.html @@ -1,137 +1,137 @@ - - - - - -Serialized Form - - - - - - - - -
- - - - - - - -
- - -
-

Serialized Form

-
-
- -
- -
- - - - - - - -
- - - - + + + + + +Serialized Form + + + + + + + + +
+ + + + + + + +
+ + +
+

Serialized Form

+
+
+ +
+ +
+ + + + + + + +
+ + + + diff --git a/javadoc/stylesheet.css b/javadoc/stylesheet.css index 98055b2..b8dad08 100644 --- a/javadoc/stylesheet.css +++ b/javadoc/stylesheet.css @@ -1,574 +1,574 @@ -/* Javadoc style sheet */ -/* -Overall document style -*/ - -@import url('resources/fonts/dejavu.css'); - -body { - background-color:#ffffff; - color:#353833; - font-family:'DejaVu Sans', Arial, Helvetica, sans-serif; - font-size:14px; - margin:0; -} -a:link, a:visited { - text-decoration:none; - color:#4A6782; -} -a:hover, a:focus { - text-decoration:none; - color:#bb7a2a; -} -a:active { - text-decoration:none; - color:#4A6782; -} -a[name] { - color:#353833; -} -a[name]:hover { - text-decoration:none; - color:#353833; -} -pre { - font-family:'DejaVu Sans Mono', monospace; - font-size:14px; -} -h1 { - font-size:20px; -} -h2 { - font-size:18px; -} -h3 { - font-size:16px; - font-style:italic; -} -h4 { - font-size:13px; -} -h5 { - font-size:12px; -} -h6 { - font-size:11px; -} -ul { - list-style-type:disc; -} -code, tt { - font-family:'DejaVu Sans Mono', monospace; - font-size:14px; - padding-top:4px; - margin-top:8px; - line-height:1.4em; -} -dt code { - font-family:'DejaVu Sans Mono', monospace; - font-size:14px; - padding-top:4px; -} -table tr td dt code { - font-family:'DejaVu Sans Mono', monospace; - font-size:14px; - vertical-align:top; - padding-top:4px; -} -sup { - font-size:8px; -} -/* -Document title and Copyright styles -*/ -.clear { - clear:both; - height:0px; - overflow:hidden; -} -.aboutLanguage { - float:right; - padding:0px 21px; - font-size:11px; - z-index:200; - margin-top:-9px; -} -.legalCopy { - margin-left:.5em; -} -.bar a, .bar a:link, .bar a:visited, .bar a:active { - color:#FFFFFF; - text-decoration:none; -} -.bar a:hover, .bar a:focus { - color:#bb7a2a; -} -.tab { - background-color:#0066FF; - color:#ffffff; - padding:8px; - width:5em; - font-weight:bold; -} -/* -Navigation bar styles -*/ -.bar { - background-color:#4D7A97; - color:#FFFFFF; - padding:.8em .5em .4em .8em; - height:auto;/*height:1.8em;*/ - font-size:11px; - margin:0; -} -.topNav { - background-color:#4D7A97; - color:#FFFFFF; - float:left; - padding:0; - width:100%; - clear:right; - height:2.8em; - padding-top:10px; - overflow:hidden; - font-size:12px; -} -.bottomNav { - margin-top:10px; - background-color:#4D7A97; - color:#FFFFFF; - float:left; - padding:0; - width:100%; - clear:right; - height:2.8em; - padding-top:10px; - overflow:hidden; - font-size:12px; -} -.subNav { - background-color:#dee3e9; - float:left; - width:100%; - overflow:hidden; - font-size:12px; -} -.subNav div { - clear:left; - float:left; - padding:0 0 5px 6px; - text-transform:uppercase; -} -ul.navList, ul.subNavList { - float:left; - margin:0 25px 0 0; - padding:0; -} -ul.navList li{ - list-style:none; - float:left; - padding: 5px 6px; - text-transform:uppercase; -} -ul.subNavList li{ - list-style:none; - float:left; -} -.topNav a:link, .topNav a:active, .topNav a:visited, .bottomNav a:link, .bottomNav a:active, .bottomNav a:visited { - color:#FFFFFF; - text-decoration:none; - text-transform:uppercase; -} -.topNav a:hover, .bottomNav a:hover { - text-decoration:none; - color:#bb7a2a; - text-transform:uppercase; -} -.navBarCell1Rev { - background-color:#F8981D; - color:#253441; - margin: auto 5px; -} -.skipNav { - position:absolute; - top:auto; - left:-9999px; - overflow:hidden; -} -/* -Page header and footer styles -*/ -.header, .footer { - clear:both; - margin:0 20px; - padding:5px 0 0 0; -} -.indexHeader { - margin:10px; - position:relative; -} -.indexHeader span{ - margin-right:15px; -} -.indexHeader h1 { - font-size:13px; -} -.title { - color:#2c4557; - margin:10px 0; -} -.subTitle { - margin:5px 0 0 0; -} -.header ul { - margin:0 0 15px 0; - padding:0; -} -.footer ul { - margin:20px 0 5px 0; -} -.header ul li, .footer ul li { - list-style:none; - font-size:13px; -} -/* -Heading styles -*/ -div.details ul.blockList ul.blockList ul.blockList li.blockList h4, div.details ul.blockList ul.blockList ul.blockListLast li.blockList h4 { - background-color:#dee3e9; - border:1px solid #d0d9e0; - margin:0 0 6px -8px; - padding:7px 5px; -} -ul.blockList ul.blockList ul.blockList li.blockList h3 { - background-color:#dee3e9; - border:1px solid #d0d9e0; - margin:0 0 6px -8px; - padding:7px 5px; -} -ul.blockList ul.blockList li.blockList h3 { - padding:0; - margin:15px 0; -} -ul.blockList li.blockList h2 { - padding:0px 0 20px 0; -} -/* -Page layout container styles -*/ -.contentContainer, .sourceContainer, .classUseContainer, .serializedFormContainer, .constantValuesContainer { - clear:both; - padding:10px 20px; - position:relative; -} -.indexContainer { - margin:10px; - position:relative; - font-size:12px; -} -.indexContainer h2 { - font-size:13px; - padding:0 0 3px 0; -} -.indexContainer ul { - margin:0; - padding:0; -} -.indexContainer ul li { - list-style:none; - padding-top:2px; -} -.contentContainer .description dl dt, .contentContainer .details dl dt, .serializedFormContainer dl dt { - font-size:12px; - font-weight:bold; - margin:10px 0 0 0; - color:#4E4E4E; -} -.contentContainer .description dl dd, .contentContainer .details dl dd, .serializedFormContainer dl dd { - margin:5px 0 10px 0px; - font-size:14px; - font-family:'DejaVu Sans Mono',monospace; -} -.serializedFormContainer dl.nameValue dt { - margin-left:1px; - font-size:1.1em; - display:inline; - font-weight:bold; -} -.serializedFormContainer dl.nameValue dd { - margin:0 0 0 1px; - font-size:1.1em; - display:inline; -} -/* -List styles -*/ -ul.horizontal li { - display:inline; - font-size:0.9em; -} -ul.inheritance { - margin:0; - padding:0; -} -ul.inheritance li { - display:inline; - list-style:none; -} -ul.inheritance li ul.inheritance { - margin-left:15px; - padding-left:15px; - padding-top:1px; -} -ul.blockList, ul.blockListLast { - margin:10px 0 10px 0; - padding:0; -} -ul.blockList li.blockList, ul.blockListLast li.blockList { - list-style:none; - margin-bottom:15px; - line-height:1.4; -} -ul.blockList ul.blockList li.blockList, ul.blockList ul.blockListLast li.blockList { - padding:0px 20px 5px 10px; - border:1px solid #ededed; - background-color:#f8f8f8; -} -ul.blockList ul.blockList ul.blockList li.blockList, ul.blockList ul.blockList ul.blockListLast li.blockList { - padding:0 0 5px 8px; - background-color:#ffffff; - border:none; -} -ul.blockList ul.blockList ul.blockList ul.blockList li.blockList { - margin-left:0; - padding-left:0; - padding-bottom:15px; - border:none; -} -ul.blockList ul.blockList ul.blockList ul.blockList li.blockListLast { - list-style:none; - border-bottom:none; - padding-bottom:0; -} -table tr td dl, table tr td dl dt, table tr td dl dd { - margin-top:0; - margin-bottom:1px; -} -/* -Table styles -*/ -.overviewSummary, .memberSummary, .typeSummary, .useSummary, .constantsSummary, .deprecatedSummary { - width:100%; - border-left:1px solid #EEE; - border-right:1px solid #EEE; - border-bottom:1px solid #EEE; -} -.overviewSummary, .memberSummary { - padding:0px; -} -.overviewSummary caption, .memberSummary caption, .typeSummary caption, -.useSummary caption, .constantsSummary caption, .deprecatedSummary caption { - position:relative; - text-align:left; - background-repeat:no-repeat; - color:#253441; - font-weight:bold; - clear:none; - overflow:hidden; - padding:0px; - padding-top:10px; - padding-left:1px; - margin:0px; - white-space:pre; -} -.overviewSummary caption a:link, .memberSummary caption a:link, .typeSummary caption a:link, -.useSummary caption a:link, .constantsSummary caption a:link, .deprecatedSummary caption a:link, -.overviewSummary caption a:hover, .memberSummary caption a:hover, .typeSummary caption a:hover, -.useSummary caption a:hover, .constantsSummary caption a:hover, .deprecatedSummary caption a:hover, -.overviewSummary caption a:active, .memberSummary caption a:active, .typeSummary caption a:active, -.useSummary caption a:active, .constantsSummary caption a:active, .deprecatedSummary caption a:active, -.overviewSummary caption a:visited, .memberSummary caption a:visited, .typeSummary caption a:visited, -.useSummary caption a:visited, .constantsSummary caption a:visited, .deprecatedSummary caption a:visited { - color:#FFFFFF; -} -.overviewSummary caption span, .memberSummary caption span, .typeSummary caption span, -.useSummary caption span, .constantsSummary caption span, .deprecatedSummary caption span { - white-space:nowrap; - padding-top:5px; - padding-left:12px; - padding-right:12px; - padding-bottom:7px; - display:inline-block; - float:left; - background-color:#F8981D; - border: none; - height:16px; -} -.memberSummary caption span.activeTableTab span { - white-space:nowrap; - padding-top:5px; - padding-left:12px; - padding-right:12px; - margin-right:3px; - display:inline-block; - float:left; - background-color:#F8981D; - height:16px; -} -.memberSummary caption span.tableTab span { - white-space:nowrap; - padding-top:5px; - padding-left:12px; - padding-right:12px; - margin-right:3px; - display:inline-block; - float:left; - background-color:#4D7A97; - height:16px; -} -.memberSummary caption span.tableTab, .memberSummary caption span.activeTableTab { - padding-top:0px; - padding-left:0px; - padding-right:0px; - background-image:none; - float:none; - display:inline; -} -.overviewSummary .tabEnd, .memberSummary .tabEnd, .typeSummary .tabEnd, -.useSummary .tabEnd, .constantsSummary .tabEnd, .deprecatedSummary .tabEnd { - display:none; - width:5px; - position:relative; - float:left; - background-color:#F8981D; -} -.memberSummary .activeTableTab .tabEnd { - display:none; - width:5px; - margin-right:3px; - position:relative; - float:left; - background-color:#F8981D; -} -.memberSummary .tableTab .tabEnd { - display:none; - width:5px; - margin-right:3px; - position:relative; - background-color:#4D7A97; - float:left; - -} -.overviewSummary td, .memberSummary td, .typeSummary td, -.useSummary td, .constantsSummary td, .deprecatedSummary td { - text-align:left; - padding:0px 0px 12px 10px; -} -th.colOne, th.colFirst, th.colLast, .useSummary th, .constantsSummary th, -td.colOne, td.colFirst, td.colLast, .useSummary td, .constantsSummary td{ - vertical-align:top; - padding-right:0px; - padding-top:8px; - padding-bottom:3px; -} -th.colFirst, th.colLast, th.colOne, .constantsSummary th { - background:#dee3e9; - text-align:left; - padding:8px 3px 3px 7px; -} -td.colFirst, th.colFirst { - white-space:nowrap; - font-size:13px; -} -td.colLast, th.colLast { - font-size:13px; -} -td.colOne, th.colOne { - font-size:13px; -} -.overviewSummary td.colFirst, .overviewSummary th.colFirst, -.useSummary td.colFirst, .useSummary th.colFirst, -.overviewSummary td.colOne, .overviewSummary th.colOne, -.memberSummary td.colFirst, .memberSummary th.colFirst, -.memberSummary td.colOne, .memberSummary th.colOne, -.typeSummary td.colFirst{ - width:25%; - vertical-align:top; -} -td.colOne a:link, td.colOne a:active, td.colOne a:visited, td.colOne a:hover, td.colFirst a:link, td.colFirst a:active, td.colFirst a:visited, td.colFirst a:hover, td.colLast a:link, td.colLast a:active, td.colLast a:visited, td.colLast a:hover, .constantValuesContainer td a:link, .constantValuesContainer td a:active, .constantValuesContainer td a:visited, .constantValuesContainer td a:hover { - font-weight:bold; -} -.tableSubHeadingColor { - background-color:#EEEEFF; -} -.altColor { - background-color:#FFFFFF; -} -.rowColor { - background-color:#EEEEEF; -} -/* -Content styles -*/ -.description pre { - margin-top:0; -} -.deprecatedContent { - margin:0; - padding:10px 0; -} -.docSummary { - padding:0; -} - -ul.blockList ul.blockList ul.blockList li.blockList h3 { - font-style:normal; -} - -div.block { - font-size:14px; - font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; -} - -td.colLast div { - padding-top:0px; -} - - -td.colLast a { - padding-bottom:3px; -} -/* -Formatting effect styles -*/ -.sourceLineNo { - color:green; - padding:0 30px 0 0; -} -h1.hidden { - visibility:hidden; - overflow:hidden; - font-size:10px; -} -.block { - display:block; - margin:3px 10px 2px 0px; - color:#474747; -} -.deprecatedLabel, .descfrmTypeLabel, .memberNameLabel, .memberNameLink, -.overrideSpecifyLabel, .packageHierarchyLabel, .paramLabel, .returnLabel, -.seeLabel, .simpleTagLabel, .throwsLabel, .typeNameLabel, .typeNameLink { - font-weight:bold; -} -.deprecationComment, .emphasizedPhrase, .interfaceName { - font-style:italic; -} - -div.block div.block span.deprecationComment, div.block div.block span.emphasizedPhrase, -div.block div.block span.interfaceName { - font-style:normal; -} - -div.contentContainer ul.blockList li.blockList h2{ - padding-bottom:0px; -} +/* Javadoc style sheet */ +/* +Overall document style +*/ + +@import url('resources/fonts/dejavu.css'); + +body { + background-color:#ffffff; + color:#353833; + font-family:'DejaVu Sans', Arial, Helvetica, sans-serif; + font-size:14px; + margin:0; +} +a:link, a:visited { + text-decoration:none; + color:#4A6782; +} +a:hover, a:focus { + text-decoration:none; + color:#bb7a2a; +} +a:active { + text-decoration:none; + color:#4A6782; +} +a[name] { + color:#353833; +} +a[name]:hover { + text-decoration:none; + color:#353833; +} +pre { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; +} +h1 { + font-size:20px; +} +h2 { + font-size:18px; +} +h3 { + font-size:16px; + font-style:italic; +} +h4 { + font-size:13px; +} +h5 { + font-size:12px; +} +h6 { + font-size:11px; +} +ul { + list-style-type:disc; +} +code, tt { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; + padding-top:4px; + margin-top:8px; + line-height:1.4em; +} +dt code { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; + padding-top:4px; +} +table tr td dt code { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; + vertical-align:top; + padding-top:4px; +} +sup { + font-size:8px; +} +/* +Document title and Copyright styles +*/ +.clear { + clear:both; + height:0px; + overflow:hidden; +} +.aboutLanguage { + float:right; + padding:0px 21px; + font-size:11px; + z-index:200; + margin-top:-9px; +} +.legalCopy { + margin-left:.5em; +} +.bar a, .bar a:link, .bar a:visited, .bar a:active { + color:#FFFFFF; + text-decoration:none; +} +.bar a:hover, .bar a:focus { + color:#bb7a2a; +} +.tab { + background-color:#0066FF; + color:#ffffff; + padding:8px; + width:5em; + font-weight:bold; +} +/* +Navigation bar styles +*/ +.bar { + background-color:#4D7A97; + color:#FFFFFF; + padding:.8em .5em .4em .8em; + height:auto;/*height:1.8em;*/ + font-size:11px; + margin:0; +} +.topNav { + background-color:#4D7A97; + color:#FFFFFF; + float:left; + padding:0; + width:100%; + clear:right; + height:2.8em; + padding-top:10px; + overflow:hidden; + font-size:12px; +} +.bottomNav { + margin-top:10px; + background-color:#4D7A97; + color:#FFFFFF; + float:left; + padding:0; + width:100%; + clear:right; + height:2.8em; + padding-top:10px; + overflow:hidden; + font-size:12px; +} +.subNav { + background-color:#dee3e9; + float:left; + width:100%; + overflow:hidden; + font-size:12px; +} +.subNav div { + clear:left; + float:left; + padding:0 0 5px 6px; + text-transform:uppercase; +} +ul.navList, ul.subNavList { + float:left; + margin:0 25px 0 0; + padding:0; +} +ul.navList li{ + list-style:none; + float:left; + padding: 5px 6px; + text-transform:uppercase; +} +ul.subNavList li{ + list-style:none; + float:left; +} +.topNav a:link, .topNav a:active, .topNav a:visited, .bottomNav a:link, .bottomNav a:active, .bottomNav a:visited { + color:#FFFFFF; + text-decoration:none; + text-transform:uppercase; +} +.topNav a:hover, .bottomNav a:hover { + text-decoration:none; + color:#bb7a2a; + text-transform:uppercase; +} +.navBarCell1Rev { + background-color:#F8981D; + color:#253441; + margin: auto 5px; +} +.skipNav { + position:absolute; + top:auto; + left:-9999px; + overflow:hidden; +} +/* +Page header and footer styles +*/ +.header, .footer { + clear:both; + margin:0 20px; + padding:5px 0 0 0; +} +.indexHeader { + margin:10px; + position:relative; +} +.indexHeader span{ + margin-right:15px; +} +.indexHeader h1 { + font-size:13px; +} +.title { + color:#2c4557; + margin:10px 0; +} +.subTitle { + margin:5px 0 0 0; +} +.header ul { + margin:0 0 15px 0; + padding:0; +} +.footer ul { + margin:20px 0 5px 0; +} +.header ul li, .footer ul li { + list-style:none; + font-size:13px; +} +/* +Heading styles +*/ +div.details ul.blockList ul.blockList ul.blockList li.blockList h4, div.details ul.blockList ul.blockList ul.blockListLast li.blockList h4 { + background-color:#dee3e9; + border:1px solid #d0d9e0; + margin:0 0 6px -8px; + padding:7px 5px; +} +ul.blockList ul.blockList ul.blockList li.blockList h3 { + background-color:#dee3e9; + border:1px solid #d0d9e0; + margin:0 0 6px -8px; + padding:7px 5px; +} +ul.blockList ul.blockList li.blockList h3 { + padding:0; + margin:15px 0; +} +ul.blockList li.blockList h2 { + padding:0px 0 20px 0; +} +/* +Page layout container styles +*/ +.contentContainer, .sourceContainer, .classUseContainer, .serializedFormContainer, .constantValuesContainer { + clear:both; + padding:10px 20px; + position:relative; +} +.indexContainer { + margin:10px; + position:relative; + font-size:12px; +} +.indexContainer h2 { + font-size:13px; + padding:0 0 3px 0; +} +.indexContainer ul { + margin:0; + padding:0; +} +.indexContainer ul li { + list-style:none; + padding-top:2px; +} +.contentContainer .description dl dt, .contentContainer .details dl dt, .serializedFormContainer dl dt { + font-size:12px; + font-weight:bold; + margin:10px 0 0 0; + color:#4E4E4E; +} +.contentContainer .description dl dd, .contentContainer .details dl dd, .serializedFormContainer dl dd { + margin:5px 0 10px 0px; + font-size:14px; + font-family:'DejaVu Sans Mono',monospace; +} +.serializedFormContainer dl.nameValue dt { + margin-left:1px; + font-size:1.1em; + display:inline; + font-weight:bold; +} +.serializedFormContainer dl.nameValue dd { + margin:0 0 0 1px; + font-size:1.1em; + display:inline; +} +/* +List styles +*/ +ul.horizontal li { + display:inline; + font-size:0.9em; +} +ul.inheritance { + margin:0; + padding:0; +} +ul.inheritance li { + display:inline; + list-style:none; +} +ul.inheritance li ul.inheritance { + margin-left:15px; + padding-left:15px; + padding-top:1px; +} +ul.blockList, ul.blockListLast { + margin:10px 0 10px 0; + padding:0; +} +ul.blockList li.blockList, ul.blockListLast li.blockList { + list-style:none; + margin-bottom:15px; + line-height:1.4; +} +ul.blockList ul.blockList li.blockList, ul.blockList ul.blockListLast li.blockList { + padding:0px 20px 5px 10px; + border:1px solid #ededed; + background-color:#f8f8f8; +} +ul.blockList ul.blockList ul.blockList li.blockList, ul.blockList ul.blockList ul.blockListLast li.blockList { + padding:0 0 5px 8px; + background-color:#ffffff; + border:none; +} +ul.blockList ul.blockList ul.blockList ul.blockList li.blockList { + margin-left:0; + padding-left:0; + padding-bottom:15px; + border:none; +} +ul.blockList ul.blockList ul.blockList ul.blockList li.blockListLast { + list-style:none; + border-bottom:none; + padding-bottom:0; +} +table tr td dl, table tr td dl dt, table tr td dl dd { + margin-top:0; + margin-bottom:1px; +} +/* +Table styles +*/ +.overviewSummary, .memberSummary, .typeSummary, .useSummary, .constantsSummary, .deprecatedSummary { + width:100%; + border-left:1px solid #EEE; + border-right:1px solid #EEE; + border-bottom:1px solid #EEE; +} +.overviewSummary, .memberSummary { + padding:0px; +} +.overviewSummary caption, .memberSummary caption, .typeSummary caption, +.useSummary caption, .constantsSummary caption, .deprecatedSummary caption { + position:relative; + text-align:left; + background-repeat:no-repeat; + color:#253441; + font-weight:bold; + clear:none; + overflow:hidden; + padding:0px; + padding-top:10px; + padding-left:1px; + margin:0px; + white-space:pre; +} +.overviewSummary caption a:link, .memberSummary caption a:link, .typeSummary caption a:link, +.useSummary caption a:link, .constantsSummary caption a:link, .deprecatedSummary caption a:link, +.overviewSummary caption a:hover, .memberSummary caption a:hover, .typeSummary caption a:hover, +.useSummary caption a:hover, .constantsSummary caption a:hover, .deprecatedSummary caption a:hover, +.overviewSummary caption a:active, .memberSummary caption a:active, .typeSummary caption a:active, +.useSummary caption a:active, .constantsSummary caption a:active, .deprecatedSummary caption a:active, +.overviewSummary caption a:visited, .memberSummary caption a:visited, .typeSummary caption a:visited, +.useSummary caption a:visited, .constantsSummary caption a:visited, .deprecatedSummary caption a:visited { + color:#FFFFFF; +} +.overviewSummary caption span, .memberSummary caption span, .typeSummary caption span, +.useSummary caption span, .constantsSummary caption span, .deprecatedSummary caption span { + white-space:nowrap; + padding-top:5px; + padding-left:12px; + padding-right:12px; + padding-bottom:7px; + display:inline-block; + float:left; + background-color:#F8981D; + border: none; + height:16px; +} +.memberSummary caption span.activeTableTab span { + white-space:nowrap; + padding-top:5px; + padding-left:12px; + padding-right:12px; + margin-right:3px; + display:inline-block; + float:left; + background-color:#F8981D; + height:16px; +} +.memberSummary caption span.tableTab span { + white-space:nowrap; + padding-top:5px; + padding-left:12px; + padding-right:12px; + margin-right:3px; + display:inline-block; + float:left; + background-color:#4D7A97; + height:16px; +} +.memberSummary caption span.tableTab, .memberSummary caption span.activeTableTab { + padding-top:0px; + padding-left:0px; + padding-right:0px; + background-image:none; + float:none; + display:inline; +} +.overviewSummary .tabEnd, .memberSummary .tabEnd, .typeSummary .tabEnd, +.useSummary .tabEnd, .constantsSummary .tabEnd, .deprecatedSummary .tabEnd { + display:none; + width:5px; + position:relative; + float:left; + background-color:#F8981D; +} +.memberSummary .activeTableTab .tabEnd { + display:none; + width:5px; + margin-right:3px; + position:relative; + float:left; + background-color:#F8981D; +} +.memberSummary .tableTab .tabEnd { + display:none; + width:5px; + margin-right:3px; + position:relative; + background-color:#4D7A97; + float:left; + +} +.overviewSummary td, .memberSummary td, .typeSummary td, +.useSummary td, .constantsSummary td, .deprecatedSummary td { + text-align:left; + padding:0px 0px 12px 10px; +} +th.colOne, th.colFirst, th.colLast, .useSummary th, .constantsSummary th, +td.colOne, td.colFirst, td.colLast, .useSummary td, .constantsSummary td{ + vertical-align:top; + padding-right:0px; + padding-top:8px; + padding-bottom:3px; +} +th.colFirst, th.colLast, th.colOne, .constantsSummary th { + background:#dee3e9; + text-align:left; + padding:8px 3px 3px 7px; +} +td.colFirst, th.colFirst { + white-space:nowrap; + font-size:13px; +} +td.colLast, th.colLast { + font-size:13px; +} +td.colOne, th.colOne { + font-size:13px; +} +.overviewSummary td.colFirst, .overviewSummary th.colFirst, +.useSummary td.colFirst, .useSummary th.colFirst, +.overviewSummary td.colOne, .overviewSummary th.colOne, +.memberSummary td.colFirst, .memberSummary th.colFirst, +.memberSummary td.colOne, .memberSummary th.colOne, +.typeSummary td.colFirst{ + width:25%; + vertical-align:top; +} +td.colOne a:link, td.colOne a:active, td.colOne a:visited, td.colOne a:hover, td.colFirst a:link, td.colFirst a:active, td.colFirst a:visited, td.colFirst a:hover, td.colLast a:link, td.colLast a:active, td.colLast a:visited, td.colLast a:hover, .constantValuesContainer td a:link, .constantValuesContainer td a:active, .constantValuesContainer td a:visited, .constantValuesContainer td a:hover { + font-weight:bold; +} +.tableSubHeadingColor { + background-color:#EEEEFF; +} +.altColor { + background-color:#FFFFFF; +} +.rowColor { + background-color:#EEEEEF; +} +/* +Content styles +*/ +.description pre { + margin-top:0; +} +.deprecatedContent { + margin:0; + padding:10px 0; +} +.docSummary { + padding:0; +} + +ul.blockList ul.blockList ul.blockList li.blockList h3 { + font-style:normal; +} + +div.block { + font-size:14px; + font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; +} + +td.colLast div { + padding-top:0px; +} + + +td.colLast a { + padding-bottom:3px; +} +/* +Formatting effect styles +*/ +.sourceLineNo { + color:green; + padding:0 30px 0 0; +} +h1.hidden { + visibility:hidden; + overflow:hidden; + font-size:10px; +} +.block { + display:block; + margin:3px 10px 2px 0px; + color:#474747; +} +.deprecatedLabel, .descfrmTypeLabel, .memberNameLabel, .memberNameLink, +.overrideSpecifyLabel, .packageHierarchyLabel, .paramLabel, .returnLabel, +.seeLabel, .simpleTagLabel, .throwsLabel, .typeNameLabel, .typeNameLink { + font-weight:bold; +} +.deprecationComment, .emphasizedPhrase, .interfaceName { + font-style:italic; +} + +div.block div.block span.deprecationComment, div.block div.block span.emphasizedPhrase, +div.block div.block span.interfaceName { + font-style:normal; +} + +div.contentContainer ul.blockList li.blockList h2{ + padding-bottom:0px; +} From 94c79acc9b661625dd467f69075df376fb41cdb4 Mon Sep 17 00:00:00 2001 From: josfranmc Date: Thu, 21 Nov 2019 12:59:41 +0100 Subject: [PATCH 21/27] Create LICENSE GNU GENERAL PUBLIC LICENSE Version 3 --- LICENSE | 674 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 674 insertions(+) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..f288702 --- /dev/null +++ b/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. From ecc2dcf4675e1f9e07f7a4511dd23895a639bc1d Mon Sep 17 00:00:00 2001 From: josfranmc Date: Thu, 21 Nov 2019 13:38:39 +0100 Subject: [PATCH 22/27] Incluir notas de licencia --- LICENSE | 1348 ++++++++--------- NOTICE | 17 + .../gutenberg/download/DownloadBooks.java | 21 + .../gutenberg/download/DownloadParams.java | 18 + .../gutenberg/download/DownloadThread.java | 18 + .../download/JGutenbergDownload.java | 21 + .../engine/DownloadEngineFactory.java | 26 +- .../download/engine/DownloadEngineType.java | 18 + .../engine/DownloadHttpUrlConnection.java | 21 + .../download/engine/DownloadResult.java | 18 + .../download/engine/IDownloadEngine.java | 18 + .../josfranmc/gutenberg/util/FileManager.java | 21 + .../gutenberg/util/FileScraping.java | 21 + .../gutenberg/util/GutenbergException.java | 18 + 14 files changed, 929 insertions(+), 675 deletions(-) create mode 100644 NOTICE diff --git a/LICENSE b/LICENSE index f288702..3877ae0 100644 --- a/LICENSE +++ b/LICENSE @@ -1,674 +1,674 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -. - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -. + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/NOTICE b/NOTICE new file mode 100644 index 0000000..676d3a5 --- /dev/null +++ b/NOTICE @@ -0,0 +1,17 @@ + Copyright (C) 2018-2019 Jose Francisco Mena Ceca + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + JGutenbergDownload is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with JGutenbergDownload. If not, see . + + This product includes software developed at + The Apache Software Foundation (http://www.apache.org/). diff --git a/src/main/java/org/josfranmc/gutenberg/download/DownloadBooks.java b/src/main/java/org/josfranmc/gutenberg/download/DownloadBooks.java index 7bbe996..0db4965 100644 --- a/src/main/java/org/josfranmc/gutenberg/download/DownloadBooks.java +++ b/src/main/java/org/josfranmc/gutenberg/download/DownloadBooks.java @@ -1,3 +1,24 @@ +/* + * Copyright (C) 2018-2019 Jose Francisco Mena Ceca + * + * This file is part of JGutenbergDownload. + * + * JGutenbergDownload is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * JGutenbergDownload is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with JGutenbergDownload. If not, see . + * + * This file includes software developed at + * The Apache Software Foundation (http://www.apache.org/). + */ package org.josfranmc.gutenberg.download; import java.net.MalformedURLException; diff --git a/src/main/java/org/josfranmc/gutenberg/download/DownloadParams.java b/src/main/java/org/josfranmc/gutenberg/download/DownloadParams.java index da2a948..44a390f 100644 --- a/src/main/java/org/josfranmc/gutenberg/download/DownloadParams.java +++ b/src/main/java/org/josfranmc/gutenberg/download/DownloadParams.java @@ -1,3 +1,21 @@ +/* + * Copyright (C) 2018-2019 Jose Francisco Mena Ceca + * + * This file is part of JGutenbergDownload. + * + * JGutenbergDownload is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * JGutenbergDownload is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with JGutenbergDownload. If not, see . + */ package org.josfranmc.gutenberg.download; import java.net.MalformedURLException; diff --git a/src/main/java/org/josfranmc/gutenberg/download/DownloadThread.java b/src/main/java/org/josfranmc/gutenberg/download/DownloadThread.java index 18bad57..a5144ea 100644 --- a/src/main/java/org/josfranmc/gutenberg/download/DownloadThread.java +++ b/src/main/java/org/josfranmc/gutenberg/download/DownloadThread.java @@ -1,3 +1,21 @@ +/* + * Copyright (C) 2018-2019 Jose Francisco Mena Ceca + * + * This file is part of JGutenbergDownload. + * + * JGutenbergDownload is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * JGutenbergDownload is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with JGutenbergDownload. If not, see . + */ package org.josfranmc.gutenberg.download; import java.net.URL; diff --git a/src/main/java/org/josfranmc/gutenberg/download/JGutenbergDownload.java b/src/main/java/org/josfranmc/gutenberg/download/JGutenbergDownload.java index 2d80864..381a2a5 100644 --- a/src/main/java/org/josfranmc/gutenberg/download/JGutenbergDownload.java +++ b/src/main/java/org/josfranmc/gutenberg/download/JGutenbergDownload.java @@ -1,3 +1,24 @@ +/* + * Copyright (C) 2018-2019 Jose Francisco Mena Ceca + * + * This file is part of JGutenbergDownload. + * + * JGutenbergDownload is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * JGutenbergDownload is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with JGutenbergDownload. If not, see . + * + * This file includes software developed at + * The Apache Software Foundation (http://www.apache.org/). + */ package org.josfranmc.gutenberg.download; import java.io.File; diff --git a/src/main/java/org/josfranmc/gutenberg/download/engine/DownloadEngineFactory.java b/src/main/java/org/josfranmc/gutenberg/download/engine/DownloadEngineFactory.java index 6a312c5..c5f5ad2 100644 --- a/src/main/java/org/josfranmc/gutenberg/download/engine/DownloadEngineFactory.java +++ b/src/main/java/org/josfranmc/gutenberg/download/engine/DownloadEngineFactory.java @@ -1,3 +1,21 @@ +/* + * Copyright (C) 2018-2019 Jose Francisco Mena Ceca + * + * This file is part of JGutenbergDownload. + * + * JGutenbergDownload is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * JGutenbergDownload is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with JGutenbergDownload. If not, see . + */ package org.josfranmc.gutenberg.download.engine; import java.net.URL; @@ -87,6 +105,12 @@ public static IDownloadEngine create(URL target, String savePath) { * @return a download engine in the form of a IDownloadEngine object */ private static IDownloadEngine createDownloadEngine(URL target, String savePath, DownloadEngineType type) { - return DownloadHttpUrlConnection.newInstance(target, savePath); + IDownloadEngine engine = null; + if (type == DownloadEngineType.HTTP_CONNECTION) { + engine = DownloadHttpUrlConnection.newInstance(target, savePath); + } else { + engine = DownloadHttpUrlConnection.newInstance(target, savePath); + } + return engine; } } \ No newline at end of file diff --git a/src/main/java/org/josfranmc/gutenberg/download/engine/DownloadEngineType.java b/src/main/java/org/josfranmc/gutenberg/download/engine/DownloadEngineType.java index d2c58c4..2efe9f8 100644 --- a/src/main/java/org/josfranmc/gutenberg/download/engine/DownloadEngineType.java +++ b/src/main/java/org/josfranmc/gutenberg/download/engine/DownloadEngineType.java @@ -1,3 +1,21 @@ +/* + * Copyright (C) 2018-2019 Jose Francisco Mena Ceca + * + * This file is part of JGutenbergDownload. + * + * JGutenbergDownload is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * JGutenbergDownload is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with JGutenbergDownload. If not, see . + */ package org.josfranmc.gutenberg.download.engine; /** diff --git a/src/main/java/org/josfranmc/gutenberg/download/engine/DownloadHttpUrlConnection.java b/src/main/java/org/josfranmc/gutenberg/download/engine/DownloadHttpUrlConnection.java index bab7b5a..b8108ed 100644 --- a/src/main/java/org/josfranmc/gutenberg/download/engine/DownloadHttpUrlConnection.java +++ b/src/main/java/org/josfranmc/gutenberg/download/engine/DownloadHttpUrlConnection.java @@ -1,3 +1,24 @@ +/* + * Copyright (C) 2018-2019 Jose Francisco Mena Ceca + * + * This file is part of JGutenbergDownload. + * + * JGutenbergDownload is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * JGutenbergDownload is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with JGutenbergDownload. If not, see . + * + * This file includes software developed at + * The Apache Software Foundation (http://www.apache.org/). + */ package org.josfranmc.gutenberg.download.engine; import java.io.BufferedOutputStream; diff --git a/src/main/java/org/josfranmc/gutenberg/download/engine/DownloadResult.java b/src/main/java/org/josfranmc/gutenberg/download/engine/DownloadResult.java index c4d8b51..fa7d928 100644 --- a/src/main/java/org/josfranmc/gutenberg/download/engine/DownloadResult.java +++ b/src/main/java/org/josfranmc/gutenberg/download/engine/DownloadResult.java @@ -1,3 +1,21 @@ +/* + * Copyright (C) 2018-2019 Jose Francisco Mena Ceca + * + * This file is part of JGutenbergDownload. + * + * JGutenbergDownload is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * JGutenbergDownload is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with JGutenbergDownload. If not, see . + */ package org.josfranmc.gutenberg.download.engine; import java.net.URLConnection; diff --git a/src/main/java/org/josfranmc/gutenberg/download/engine/IDownloadEngine.java b/src/main/java/org/josfranmc/gutenberg/download/engine/IDownloadEngine.java index 1227567..13177a4 100644 --- a/src/main/java/org/josfranmc/gutenberg/download/engine/IDownloadEngine.java +++ b/src/main/java/org/josfranmc/gutenberg/download/engine/IDownloadEngine.java @@ -1,3 +1,21 @@ +/* + * Copyright (C) 2018-2019 Jose Francisco Mena Ceca + * + * This file is part of JGutenbergDownload. + * + * JGutenbergDownload is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * JGutenbergDownload is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with JGutenbergDownload. If not, see . + */ package org.josfranmc.gutenberg.download.engine; import java.net.URL; diff --git a/src/main/java/org/josfranmc/gutenberg/util/FileManager.java b/src/main/java/org/josfranmc/gutenberg/util/FileManager.java index 6119206..9bff8fc 100644 --- a/src/main/java/org/josfranmc/gutenberg/util/FileManager.java +++ b/src/main/java/org/josfranmc/gutenberg/util/FileManager.java @@ -1,3 +1,24 @@ +/* + * Copyright (C) 2018-2019 Jose Francisco Mena Ceca + * + * This file is part of JGutenbergDownload. + * + * JGutenbergDownload is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * JGutenbergDownload is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with JGutenbergDownload. If not, see . + * + * This file includes software developed at + * The Apache Software Foundation (http://www.apache.org/). + */ package org.josfranmc.gutenberg.util; import java.io.File; diff --git a/src/main/java/org/josfranmc/gutenberg/util/FileScraping.java b/src/main/java/org/josfranmc/gutenberg/util/FileScraping.java index c472d08..51eddba 100644 --- a/src/main/java/org/josfranmc/gutenberg/util/FileScraping.java +++ b/src/main/java/org/josfranmc/gutenberg/util/FileScraping.java @@ -1,3 +1,24 @@ +/* + * Copyright (C) 2018-2019 Jose Francisco Mena Ceca + * + * This file is part of JGutenbergDownload. + * + * JGutenbergDownload is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * JGutenbergDownload is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with JGutenbergDownload. If not, see . + * + * This file includes software developed at + * The Apache Software Foundation (http://www.apache.org/). + */ package org.josfranmc.gutenberg.util; import java.io.IOException; diff --git a/src/main/java/org/josfranmc/gutenberg/util/GutenbergException.java b/src/main/java/org/josfranmc/gutenberg/util/GutenbergException.java index 6ec3409..0434ae8 100644 --- a/src/main/java/org/josfranmc/gutenberg/util/GutenbergException.java +++ b/src/main/java/org/josfranmc/gutenberg/util/GutenbergException.java @@ -1,3 +1,21 @@ +/* + * Copyright (C) 2018-2019 Jose Francisco Mena Ceca + * + * This file is part of JGutenbergDownload. + * + * JGutenbergDownload is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * JGutenbergDownload is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with JGutenbergDownload. If not, see . + */ package org.josfranmc.gutenberg.util; /** From c4e4f5f5a1e03ae35ca7f3606e13293dabedbc75 Mon Sep 17 00:00:00 2001 From: josfranmc Date: Thu, 21 Nov 2019 18:38:50 +0100 Subject: [PATCH 23/27] =?UTF-8?q?Abrir=20conexi=C3=B3n=20para=20descarga?= =?UTF-8?q?=20antes=20de=20crear=20fichero=20local.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../download/engine/DownloadHttpUrlConnection.java | 6 +++--- .../download/engine/DownloadHttpUrlConnectionTest.java | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/josfranmc/gutenberg/download/engine/DownloadHttpUrlConnection.java b/src/main/java/org/josfranmc/gutenberg/download/engine/DownloadHttpUrlConnection.java index b8108ed..c979490 100644 --- a/src/main/java/org/josfranmc/gutenberg/download/engine/DownloadHttpUrlConnection.java +++ b/src/main/java/org/josfranmc/gutenberg/download/engine/DownloadHttpUrlConnection.java @@ -119,11 +119,11 @@ public DownloadResult download() { configHeader(httpConnection); String outputFilePath = FileManager.getLocalFilePathFromURL(getSavePath(), getResource().toString()); - + + InputStream inputStream = httpConnection.getInputStream(); + try (BufferedOutputStream outputFileStream = new BufferedOutputStream (new FileOutputStream(outputFilePath))) { - InputStream inputStream = httpConnection.getInputStream(); - copyResource(inputStream, outputFileStream); downloadResult.setHeaders(httpConnection); diff --git a/src/test/java/org/josfranmc/gutenberg/download/engine/DownloadHttpUrlConnectionTest.java b/src/test/java/org/josfranmc/gutenberg/download/engine/DownloadHttpUrlConnectionTest.java index 48a2184..d674b4b 100644 --- a/src/test/java/org/josfranmc/gutenberg/download/engine/DownloadHttpUrlConnectionTest.java +++ b/src/test/java/org/josfranmc/gutenberg/download/engine/DownloadHttpUrlConnectionTest.java @@ -42,10 +42,10 @@ public void givenDownloadParametersWhenNullThenDownloadResultShoulbBeNotNull() { } /** - * Si se indica una dirección de descarga errónea, se debe lanzar DownloadException + * Si se indica una dirección de descarga errónea, se debe lanzar GutenbergException */ @Test(expected=GutenbergException.class) - public void givenUrlWhenWrongAddressThenFileOutputPathShoulbBeNull() { + public void givenUrlWhenWrongAddressThenGutenbergException() { try { DownloadHttpUrlConnection.newInstance(new URL("http://www.qsctyhu.com/fake.img"), null).download(); } catch (MalformedURLException e) { From acdc1739990781e206d949a9ebddc9b97313c51e Mon Sep 17 00:00:00 2001 From: josfranmc Date: Fri, 22 Nov 2019 12:42:27 +0100 Subject: [PATCH 24/27] =?UTF-8?q?A=C3=B1adir=20ficheros=20de=20licencia=20?= =?UTF-8?q?al=20construir=20jar?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- NOTICE | 34 +++---- pom.xml | 284 ++++++++++++++++++++++++++++++-------------------------- 2 files changed, 168 insertions(+), 150 deletions(-) diff --git a/NOTICE b/NOTICE index 676d3a5..6aed1b7 100644 --- a/NOTICE +++ b/NOTICE @@ -1,17 +1,17 @@ - Copyright (C) 2018-2019 Jose Francisco Mena Ceca - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - JGutenbergDownload is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with JGutenbergDownload. If not, see . - - This product includes software developed at - The Apache Software Foundation (http://www.apache.org/). + Copyright (C) 2018-2019 Jose Francisco Mena Ceca + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + JGutenbergDownload is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with JGutenbergDownload. If not, see . + + This product includes software developed at + The Apache Software Foundation (http://www.apache.org/). diff --git a/pom.xml b/pom.xml index d2b47ab..8df4a97 100644 --- a/pom.xml +++ b/pom.xml @@ -1,133 +1,151 @@ - - 4.0.0 - - org.josfranmc.gutenberg - JGutenbergDownload - 2.0 - jar - - JGutenbergDownload - It allows to download books from the Gutenberg project repositories. - - - - Jose Francisco Mena Ceca - org.josfranmc - - - - - 1.2.17 - 4.12 - 1.8 - 1.8 - 3.6.1 - UTF-8 - - - - - log4j - log4j - ${log4j.version} - - - junit - junit - ${junit.version} - test - - - - - ${project.artifactId}-${project.version} - - - org.apache.maven.plugins - maven-compiler-plugin - ${maven.compiler.plugin.version} - - ${jdk.source.version} - ${jdk.target.version} - false - - - - - org.apache.maven.plugins - maven-jar-plugin - 3.0.2 - - - - true - lib/ - org.josfranmc.gutenberg.download.JGutenbergDownload - - - - - - - org.apache.maven.plugins - maven-dependency-plugin - - - copy - package - - copy-dependencies - - - ${project.build.directory}/lib - junit,hamcrest-core - - - - - - - org.apache.maven.plugins - maven-shade-plugin - 2.4.3 - - - package - - shade - - - true - - - org.josfranmc.gutenberg.download.JGutenbergDownload - - - - - - - - - org.jacoco - jacoco-maven-plugin - 0.8.5 - - - - prepare-agent - - - - report - test - - report - - - - - - - + + 4.0.0 + + org.josfranmc.gutenberg + JGutenbergDownload + 2.0 + jar + + JGutenbergDownload + This software allows you to download books from the Gutenberg project repositories. + https://github.com/josfranmc/JGutenbergDownload + + + + Jose Francisco Mena Ceca + org.josfranmc + + + + + 1.8 + 1.8 + UTF-8 + org.josfranmc.gutenberg.download.JGutenbergDownload + + + + + log4j + log4j + 1.2.17 + + + junit + junit + 4.12 + test + + + + + ${project.artifactId}-${project.version} + + + + src/main/resources + + + ${project.basedir} + + LICENSE + NOTICE + + META-INF + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.6.1 + + ${jdk.source.version} + ${jdk.target.version} + false + + + + + org.apache.maven.plugins + maven-jar-plugin + 3.2.0 + + + + true + true + lib/ + ${main.class} + + + ${project.url} + + + + + + + org.apache.maven.plugins + maven-dependency-plugin + + + copy + package + + copy-dependencies + + + ${project.build.directory}/lib + junit,hamcrest-core + + + + + + + org.apache.maven.plugins + maven-shade-plugin + 3.2.1 + + + package + + shade + + + true + + + ${main.class} + + + + + + + + + org.jacoco + jacoco-maven-plugin + 0.8.5 + + + + prepare-agent + + + + report + test + + report + + + + + + + From 292406eaf8d781bd854a4a238ee01d45bd2880cf Mon Sep 17 00:00:00 2001 From: josfranmc Date: Fri, 22 Nov 2019 14:39:53 +0100 Subject: [PATCH 25/27] Corregir error cuando el fichero zip contiene carpetas, no solo archivos --- .../java/org/josfranmc/gutenberg/util/FileManager.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/josfranmc/gutenberg/util/FileManager.java b/src/main/java/org/josfranmc/gutenberg/util/FileManager.java index 9bff8fc..ab68974 100644 --- a/src/main/java/org/josfranmc/gutenberg/util/FileManager.java +++ b/src/main/java/org/josfranmc/gutenberg/util/FileManager.java @@ -104,8 +104,11 @@ public static void unzipFiles(String inputPath, String outputPath) { try (ZipInputStream zis = new ZipInputStream(new FileInputStream(zipFile))) { ZipEntry zipEntry = zis.getNextEntry(); while (zipEntry != null) { - String targetFile = outputPath + getFileName(zipEntry.getName()) ; - extractFile(zis, targetFile); + String fileName = getFileName(zipEntry.getName()); + if (!fileName.isEmpty()) { + String targetFile = outputPath + fileName; + extractFile(zis, targetFile); + } zipEntry = zis.getNextEntry(); } } catch (IOException e) { From c4d2db8c53f281fab8cc5d347f7abaa2aa376e65 Mon Sep 17 00:00:00 2001 From: josfranmc Date: Fri, 22 Nov 2019 15:55:19 +0100 Subject: [PATCH 26/27] Modificar tratamiento de excepciones --- .../gutenberg/download/DownloadParams.java | 20 +++++++++---------- .../GutenbergException.java | 2 +- .../download/JGutenbergDownload.java | 7 +++++-- .../engine/DownloadEngineFactory.java | 8 +------- .../engine/DownloadHttpUrlConnection.java | 8 ++++---- .../download/engine/IDownloadEngine.java | 2 +- .../josfranmc/gutenberg/util/FileManager.java | 3 ++- .../download/DownloadParamsTest.java | 10 ++++++---- .../download/JGutenbergDownloadTest.java | 9 ++++----- .../engine/DownloadHttpUrlConnectionTest.java | 2 +- 10 files changed, 35 insertions(+), 36 deletions(-) rename src/main/java/org/josfranmc/gutenberg/{util => download}/GutenbergException.java (93%) diff --git a/src/main/java/org/josfranmc/gutenberg/download/DownloadParams.java b/src/main/java/org/josfranmc/gutenberg/download/DownloadParams.java index 44a390f..e1c0bc7 100644 --- a/src/main/java/org/josfranmc/gutenberg/download/DownloadParams.java +++ b/src/main/java/org/josfranmc/gutenberg/download/DownloadParams.java @@ -108,11 +108,11 @@ public String getFileType() { /** * Sets the type of file to download. Valid types: txt, epub, html * @param fileType type of file to download - * @throws IllegalArgumentException if an invalid file type is indicated + * @throws GutenbergException if an invalid file type is indicated */ public void setFileType(String fileType) { if (!fileType.equals("txt") && !fileType.equals("epub") && !fileType.equals("html")) { - throw new IllegalArgumentException("Invalid file type"); + throw new GutenbergException("org.josfranmc.gutenberg.GutenbergException: Wrong file type parameter"); } this.fileType = fileType; buildHarvestURL(); @@ -160,11 +160,11 @@ public String getSavePath() { /** * Sets folder path where to get downloaded resources * @param savePath folder path where to get downloaded resources - * @throws IllegalArgumentException if the parameter is null + * @throws GutenbergException if the parameter is null */ public void setSavePath(String savePath) { if (savePath == null) { - throw new IllegalArgumentException("The directory path where to save downloads cannot be null"); + throw new GutenbergException("org.josfranmc.gutenberg.GutenbergException: The directory path where to save downloads cannot be null"); } String path = (!savePath.endsWith(FILE_SEPARATOR)) ? savePath.concat(FILE_SEPARATOR) : savePath; this.savePath = path; @@ -207,11 +207,11 @@ public int getDelay() { /** * Sets delay between downloads * @param delay waiting time, in milliseconds - * @throws IllegalArgumentException if a number less than zero is indicated + * @throws GutenbergException if a number less than zero is indicated */ public void setDelay(int delay) { if (delay < 0) { - throw new IllegalArgumentException("delay cannot be less than zero"); + throw new GutenbergException("org.josfranmc.gutenberg.GutenbergException: Delay parameter cannot be less than zero"); } this.delay = delay; } @@ -241,11 +241,11 @@ public int getMaxFilesToDownload() { /** * Sets the maximum number of files to download. The zero indicates downloading all available files. * @param maxFilesToDownload files number - * @throws IllegalArgumentException if a number less than zero is indicated + * @throws GutenbergException if a number less than zero is indicated */ public void setMaxFilesToDownload(int maxFilesToDownload) { if (maxFilesToDownload < 0) { - throw new IllegalArgumentException("maxFilesToDownload cannot be less than zero"); + throw new GutenbergException("org.josfranmc.gutenberg.GutenbergException: MaxFilesToDownload parameter cannot be less than zero"); } this.maxFilesToDownload = (maxFilesToDownload == 0) ? Integer.MAX_VALUE : maxFilesToDownload; } @@ -276,9 +276,9 @@ private void buildHarvestURL() { try { setUrlBase(new URL(url)); } catch (MalformedURLException e) { - throw new IllegalStateException("Wrong base URL: " + url); + throw new GutenbergException("org.josfranmc.gutenberg.GutenbergException: Wrong base URL: " + url); } catch (Exception e) { - throw new IllegalStateException("Cannot create base URL: " + url); + throw new GutenbergException("org.josfranmc.gutenberg.GutenbergException: Cannot create base URL: " + url); } } } diff --git a/src/main/java/org/josfranmc/gutenberg/util/GutenbergException.java b/src/main/java/org/josfranmc/gutenberg/download/GutenbergException.java similarity index 93% rename from src/main/java/org/josfranmc/gutenberg/util/GutenbergException.java rename to src/main/java/org/josfranmc/gutenberg/download/GutenbergException.java index 0434ae8..b34188b 100644 --- a/src/main/java/org/josfranmc/gutenberg/util/GutenbergException.java +++ b/src/main/java/org/josfranmc/gutenberg/download/GutenbergException.java @@ -16,7 +16,7 @@ * You should have received a copy of the GNU General Public License * along with JGutenbergDownload. If not, see . */ -package org.josfranmc.gutenberg.util; +package org.josfranmc.gutenberg.download; /** * It allows to capture exceptions in the application in the form of a RuntimeException. diff --git a/src/main/java/org/josfranmc/gutenberg/download/JGutenbergDownload.java b/src/main/java/org/josfranmc/gutenberg/download/JGutenbergDownload.java index 381a2a5..feba99b 100644 --- a/src/main/java/org/josfranmc/gutenberg/download/JGutenbergDownload.java +++ b/src/main/java/org/josfranmc/gutenberg/download/JGutenbergDownload.java @@ -37,6 +37,7 @@ * @version 2.0 * @see DownloadParams * @see DownloadEngineType + * @see GutenbergException */ public class JGutenbergDownload { @@ -73,6 +74,8 @@ public void setParameters(DownloadParams parameters) { /** * Begins the process of downloading books.

* If there is any problem It can be thrown GutenbergException + * @throws GutenbergException + * @see GutenbergException */ public void downloadBooks() { printParameters(); @@ -313,10 +316,10 @@ private static DownloadParams getParametersFromCommandLine(String [] args) { params.setUnzip(false); step = 1; } else { - throw new IllegalArgumentException("Parameter " + args[i]); + throw new GutenbergException("org.josfranmc.gutenberg.GutenbergException: Parameter " + args[i]); } } catch (ArrayIndexOutOfBoundsException a) { - throw new IllegalArgumentException("Parameter " + args[i]); + throw new GutenbergException("org.josfranmc.gutenberg.GutenbergException: Parameter " + args[i]); } catch (Exception e) { throw e; } diff --git a/src/main/java/org/josfranmc/gutenberg/download/engine/DownloadEngineFactory.java b/src/main/java/org/josfranmc/gutenberg/download/engine/DownloadEngineFactory.java index c5f5ad2..17debe3 100644 --- a/src/main/java/org/josfranmc/gutenberg/download/engine/DownloadEngineFactory.java +++ b/src/main/java/org/josfranmc/gutenberg/download/engine/DownloadEngineFactory.java @@ -105,12 +105,6 @@ public static IDownloadEngine create(URL target, String savePath) { * @return a download engine in the form of a IDownloadEngine object */ private static IDownloadEngine createDownloadEngine(URL target, String savePath, DownloadEngineType type) { - IDownloadEngine engine = null; - if (type == DownloadEngineType.HTTP_CONNECTION) { - engine = DownloadHttpUrlConnection.newInstance(target, savePath); - } else { - engine = DownloadHttpUrlConnection.newInstance(target, savePath); - } - return engine; + return DownloadHttpUrlConnection.newInstance(target, savePath); } } \ No newline at end of file diff --git a/src/main/java/org/josfranmc/gutenberg/download/engine/DownloadHttpUrlConnection.java b/src/main/java/org/josfranmc/gutenberg/download/engine/DownloadHttpUrlConnection.java index c979490..95813f8 100644 --- a/src/main/java/org/josfranmc/gutenberg/download/engine/DownloadHttpUrlConnection.java +++ b/src/main/java/org/josfranmc/gutenberg/download/engine/DownloadHttpUrlConnection.java @@ -32,7 +32,7 @@ import java.net.UnknownHostException; import org.apache.log4j.Logger; -import org.josfranmc.gutenberg.util.GutenbergException; +import org.josfranmc.gutenberg.download.GutenbergException; import org.josfranmc.gutenberg.util.FileManager; /** @@ -136,17 +136,17 @@ public DownloadResult download() { log.warn("Download timeout exceeded"); } catch (UnknownHostException e) { log.error("[ERROR] UnknownHostException in download engine"); - throw new GutenbergException("UnknownHostException in download engine", e); + throw new GutenbergException("org.josfranmc.gutenberg.GutenbergException: UnknownHostException in download engine", e); } catch (IOException e) { log.error("[ERROR] IOException in download engine"); - throw new GutenbergException("IOException in download engine", e); + throw new GutenbergException("org.josfranmc.gutenberg.GutenbergException: IOException in download engine", e); } finally { if (httpConnection != null) { httpConnection.disconnect(); } } } else { - log.warn("DOWNLOAD It must be indicated resource and route where to obtain the download"); + log.warn("[WARN] ENGINE It must be indicated resource and route where to obtain the download"); } return downloadResult; } diff --git a/src/main/java/org/josfranmc/gutenberg/download/engine/IDownloadEngine.java b/src/main/java/org/josfranmc/gutenberg/download/engine/IDownloadEngine.java index 13177a4..84b2a2e 100644 --- a/src/main/java/org/josfranmc/gutenberg/download/engine/IDownloadEngine.java +++ b/src/main/java/org/josfranmc/gutenberg/download/engine/IDownloadEngine.java @@ -20,7 +20,7 @@ import java.net.URL; -import org.josfranmc.gutenberg.util.GutenbergException; +import org.josfranmc.gutenberg.download.GutenbergException; /** * Defines the behavior that a class have to implement in order to have the ability to download resources on net. diff --git a/src/main/java/org/josfranmc/gutenberg/util/FileManager.java b/src/main/java/org/josfranmc/gutenberg/util/FileManager.java index ab68974..83c08e8 100644 --- a/src/main/java/org/josfranmc/gutenberg/util/FileManager.java +++ b/src/main/java/org/josfranmc/gutenberg/util/FileManager.java @@ -35,6 +35,7 @@ import java.util.zip.ZipInputStream; import org.apache.log4j.Logger; +import org.josfranmc.gutenberg.download.GutenbergException; /** * Tools for managing files. @@ -147,7 +148,7 @@ private static String getFileName(String entryName) { if ((index = fileName.lastIndexOf('/')) != -1) { fileName = fileName.substring(index+1); if (fileName.contains("..")) { - throw new GutenbergException("Entry is trying to leave the target dir: " + entryName); + throw new GutenbergException("org.josfranmc.gutenberg.GutenbergException: Entry is trying to leave the target dir: " + entryName); } } return fileName; diff --git a/src/test/java/org/josfranmc/gutenberg/download/DownloadParamsTest.java b/src/test/java/org/josfranmc/gutenberg/download/DownloadParamsTest.java index b627ab2..db7f598 100644 --- a/src/test/java/org/josfranmc/gutenberg/download/DownloadParamsTest.java +++ b/src/test/java/org/josfranmc/gutenberg/download/DownloadParamsTest.java @@ -18,11 +18,13 @@ public void savePathTest() { assertEquals("Valor Last-Modified incorrecto", p.getSavePath() + "zips" + System.getProperty("file.separator"), p.getZipsPath()); } - @Test - public void maxDownloadasTest() { + @Test(expected=GutenbergException.class) + public void maxDownloadsTest() { DownloadParams p = new DownloadParams(); p.setMaxFilesToDownload(0); assertEquals("Valor Last-Modified incorrecto", Integer.MAX_VALUE, p.getMaxFilesToDownload()); + + p.setMaxFilesToDownload(-1); } @Test @@ -46,7 +48,7 @@ public void unzipTest() { assertFalse(p.isUnzip()); } - @Test(expected=IllegalArgumentException.class) + @Test(expected=GutenbergException.class) public void delayExceptionTest() { DownloadParams p = new DownloadParams(); p.setDelay(-1); @@ -59,7 +61,7 @@ public void delayTest() { assertEquals("Delay incorrecto", 5000, p.getDelay()); } - @Test(expected=IllegalArgumentException.class) + @Test(expected=GutenbergException.class) public void fileTypeExceptionTest() { DownloadParams p = new DownloadParams(); p.setFileType("doc"); diff --git a/src/test/java/org/josfranmc/gutenberg/download/JGutenbergDownloadTest.java b/src/test/java/org/josfranmc/gutenberg/download/JGutenbergDownloadTest.java index 7ef290e..3a419e0 100644 --- a/src/test/java/org/josfranmc/gutenberg/download/JGutenbergDownloadTest.java +++ b/src/test/java/org/josfranmc/gutenberg/download/JGutenbergDownloadTest.java @@ -7,7 +7,6 @@ import java.io.File; import org.josfranmc.gutenberg.download.engine.DownloadEngineType; -import org.josfranmc.gutenberg.util.GutenbergException; import org.junit.Test; /** @@ -54,7 +53,7 @@ public void setParametersTest() { /** * Si el parámetro fileType es un valor no válido, entonces lanzar excepción IllegalArgumentException */ - @Test(expected=IllegalArgumentException.class) + @Test(expected=GutenbergException.class) public void givenFileTypeWhenWrongValueThenIllegalArgumentException() { JGutenbergDownload jg = new JGutenbergDownload(); jg.setFileType("bad"); @@ -63,7 +62,7 @@ public void givenFileTypeWhenWrongValueThenIllegalArgumentException() { /** * Si la ruta indicada para guardar las descargas es null, entonces lanzar excepción IllegalArgumentException */ - @Test(expected=IllegalArgumentException.class) + @Test(expected=GutenbergException.class) public void givenSavePathWhenNullThenIllegalArgumentException() { JGutenbergDownload jg = new JGutenbergDownload(); jg.setSavePath(null); @@ -95,7 +94,7 @@ public void givenFileTypeThenUrlTest() { /** * Si el parámetro MaxFilesToDownload es menor de cero, entonces lanzar excepción IllegalArgumentException */ - @Test(expected=IllegalArgumentException.class) + @Test(expected=GutenbergException.class) public void givenMaxFilesToDownloadWhenMinusZeroThenIllegalArgumentException() { JGutenbergDownload jg = new JGutenbergDownload(); jg.setMaxFilesToDownload(-1); @@ -158,7 +157,7 @@ public void downloadOneBookWithMainMethodTest() { deleteDownloadedFiles(jg); } - @Test(expected=IllegalArgumentException.class) + @Test(expected=GutenbergException.class) public void wrongParameterskWithMainMethodTest() { String [] args = {"-d", "0", "-w", "1", "-s", "testdownload3"}; diff --git a/src/test/java/org/josfranmc/gutenberg/download/engine/DownloadHttpUrlConnectionTest.java b/src/test/java/org/josfranmc/gutenberg/download/engine/DownloadHttpUrlConnectionTest.java index d674b4b..2aa1db3 100644 --- a/src/test/java/org/josfranmc/gutenberg/download/engine/DownloadHttpUrlConnectionTest.java +++ b/src/test/java/org/josfranmc/gutenberg/download/engine/DownloadHttpUrlConnectionTest.java @@ -9,10 +9,10 @@ import java.net.MalformedURLException; import java.net.URL; +import org.josfranmc.gutenberg.download.GutenbergException; import org.josfranmc.gutenberg.download.engine.DownloadHttpUrlConnection; import org.josfranmc.gutenberg.download.engine.DownloadResult; import org.josfranmc.gutenberg.download.engine.IDownloadEngine; -import org.josfranmc.gutenberg.util.GutenbergException; import org.junit.Test; public class DownloadHttpUrlConnectionTest { From ae82fbbecf394e4a7b0c6b8e63dc6aaa4c787b53 Mon Sep 17 00:00:00 2001 From: josfranmc Date: Fri, 22 Nov 2019 23:07:40 +0100 Subject: [PATCH 27/27] =?UTF-8?q?Actualizar=20contenido=20para=20versi?= =?UTF-8?q?=C3=B3n=202.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 126 +++++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 101 insertions(+), 25 deletions(-) diff --git a/README.md b/README.md index 8194bb9..553dd89 100644 --- a/README.md +++ b/README.md @@ -1,25 +1,101 @@ -# JGutenbergDownload -It allows to download books from the Gutenberg project repositories. - -## Content -+ javadoc: code documentation -+ src: source code - -## How to use -From command line: - -java -jar JGutenbergDownload-2.0-shaded.jar [options] - -options: - --f type of files to download (default txt) --l language of books to download (default en) --s download path (default program's folder) --o overwrite existing files (default false) --d delay between downloads in milliseconds (default 2000) --z unzip downloads (default true) --m max number of downloads (default 10, 0 for dowload all) --h show options list - -## Notas -A log file in a folder called log is generated. +# JGutenbergDownload +This software allows you to download books from the Gutenberg project repositories. + +The Gutenberg project website is intended for human users only. If you want to download many books using an automated tool like this, keep in mind that your ip address can be blocked temporarily or permanently. +The Gutenberg project is a solidarity project based on the hard work of thousands of volunteers. So please, don't abuse. + +[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0) + +## Getting Started + +The project is a Maven project, so you can import it in your favorite IDE as any other Maven project. + +~~~ +mvn install +~~~ + +will install the artifact in your local repository, being ready to be used as a dependency in any project: + +~~~ + + org.josfranmc.gutenberg + JGutenbergDownload + 2.0 + +~~~ + +When you build the project with Maven you get two jars in the target directory: _JGutenbergDownload-2.0.jar_ and _JGutenbergDownload-2.0-shaded.jar_. The first one is the standard jar of the project. The second one is an _uber_ jar with all necessary dependencies, which is suitable to use from command line. + +Download the latest _uber_ jar from [Releases](https://github.com/josfranmc/JGutenbergDownload/releases). + +## Usage + +The main class to use is `JGutenbergDownload`, which offers some methods to set up the download process. + +The following code will download 20 english books in a folder called _mybooks_: + +~~~ +try { + JGutenbergDownload jg = new JGutenbergDownload(); + jg.setLanguage("en"); + jg.setSavePath("mybooks"); + jg.setMaxFilesToDownload(20); + jg.downloadBooks(); +} catch(GutenbergException e) { + System.err.println(e.getMessage()); +} +~~~ + +You can also use the `DownloadParams` class to set up: + +~~~ +try { + DownloadParams params = new DownloadParams(); + params.setLanguage("en"); + params.setSavePath("mybooks"); + params.setMaxFilesToDownload(20); + + JGutenbergDownload jg = new JGutenbergDownload(); + jg.setParameters(params); + jg.downloadBooks(); +} catch(GutenbergException e) { + System.err.println(e.getMessage()); +} +~~~ + +Finally, you can execute the `JGutenbergDownload`'s main method by passing the setting options as argument. The following code perfoms the same function as the previous ones: + +~~~ +try { + String[] args = {"-l", "en", "-s", "mybooks", "-m", "20" }; + JGutenbergDownload.main(args); +} catch(GutenbergException e) { + System.err.println(e.getMessage()); +} +~~~ + +These are the options you can use as arguments: + +~~~ +-f xxx (xxx type of files to download, default: txt) +-l xx (xx language of books to download, default: es) +-s xxx (xxx download path on local machine, default: program folder) +-d xxx (xxx delay between downloads in milliseconds, default 2000) +-m xx (xx max number of downloads (default 10, 0 for dowload all) +-o ( overwrite existing files, default: false) +-z ( don't unzip downloads, default: true) +(only -h to show options list)"); +~~~ + +--- + +It is possible to run the program from the command line. To this purpose, you may use the _JGutenbergDownload-2.0-shaded.jar_ package with any of the options above: + +~~~ +java -jar JGutenbergDownload-2.0-shaded.jar -l en -s mybooks -m 20 +~~~ + +## License + +[GPLv3](https://www.gnu.org/licenses/gpl-3.0) or later, see +[LICENSE](LICENSE) for more details. \ No newline at end of file

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%0DB0l(!{0 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 Date: Tue, 19 Nov 2019 12:50:48 +0100 Subject: [PATCH 04/27] Actualizar comentarios y README --- README.md | 40 ++++++++----------- .../gutenberg/download/DownloadBooks.java | 2 +- .../download/JGutenbergDownload.java | 6 +-- 3 files changed, 21 insertions(+), 27 deletions(-) diff --git a/README.md b/README.md index 2122a84..0760925 100644 --- a/README.md +++ b/README.md @@ -1,31 +1,25 @@ # JGutenbergDownload -Descarga de ficheros desde los repositorios del proyecto Gutenberg. +It allows to download books from the Gutenberg project repositories. -## Contenido -+ jar-flat: fichero jar con las clases de la aplicación junto a las dependencias necesarias, que se ubican en la carpeta lib -+ jar-shaded: fichero jar con las clases de la aplicación y con las dependencias necesarias incluidas en él -+ javadoc: documentación del código -+ src: Código fuente +## Content ++ javadoc: code documentation ++ src: source code -## Uso -Desde línea de comandos: +## How to use +From command line: -java -jar JGutenbergDownload-1.0-shaded.jar [*opciones*] +java -jar JGutenbergDownload-2.0-shaded.jar [options] -opciones: +options: --t tipo fichero (por defecto txt) --i idioma (por defecto en) --d tiempo de espera en milisegundos (por defecto 2000) --s ruta donde guardar las descargas --m total_ficheros_a_descargar (por defecto 10, el valor 0 descarga todo) --z descomprimir (true/false, por defecto true) --o sobreescribir existentes (true/false, por defecto false) --x modo de descarga (SOFT/GREEDY, por defecto SOFT) - --h muestra lista de opciones +-f type of files to download (default txt) +-l language of books to download (default en) +-s download path (default program's folder) +-o overwrite existing files (default false) +-d delay between downloads in milliseconds (default 2000) +-z unzip downloads (default true) +-m max number of downloads (default 10, 0 for dowload all) +-h show options list ## Notas -Si se usa el jar flat hay que asegurarse que exista la carpeta lib dentro de la carpeta desde la que ejecutemos la aplicación. - -El fichero de log generado se guarda en la carpeta log. +A log file in a folder called log is generated. diff --git a/src/main/java/org/josfranmc/gutenberg/download/DownloadBooks.java b/src/main/java/org/josfranmc/gutenberg/download/DownloadBooks.java index 58d9301..dc4cb3c 100644 --- a/src/main/java/org/josfranmc/gutenberg/download/DownloadBooks.java +++ b/src/main/java/org/josfranmc/gutenberg/download/DownloadBooks.java @@ -49,7 +49,7 @@ private void settingDownloadEngine() { * Perfoms the book download process.