From cf320c6a59eeb36cc8fde3904061626cc5c0b36d Mon Sep 17 00:00:00 2001 From: HydroxideX Date: Sat, 7 Dec 2019 16:44:10 +0200 Subject: [PATCH] error more --- dist/Databases/{x/yahia.xml => a/y.xml} | 1 - dist/Databases/{x/yahia.xsd => a/y.xsd} | 8 -- dist/JDBC-API.jar | Bin 476798 -> 476802 bytes .../{JDBCLibrary.jar => Library/JDBC-API.jar} | Bin 476877 -> 476881 bytes dist/Log.txt | 121 ++++-------------- .../alexu/csd/oop/cs71/db/FileManagement.java | 2 +- .../oop/cs71/db/FileManagementInterface.java | 41 +++++- .../edu/alexu/csd/oop/cs71/db/SQLParser.java | 6 +- 8 files changed, 68 insertions(+), 111 deletions(-) rename dist/Databases/{x/yahia.xml => a/y.xml} (68%) rename dist/Databases/{x/yahia.xsd => a/y.xsd} (65%) rename dist/{JDBCLibrary.jar => Library/JDBC-API.jar} (90%) diff --git a/dist/Databases/x/yahia.xml b/dist/Databases/a/y.xml similarity index 68% rename from dist/Databases/x/yahia.xml rename to dist/Databases/a/y.xml index 99b148a..937c286 100644 --- a/dist/Databases/x/yahia.xml +++ b/dist/Databases/a/y.xml @@ -1,5 +1,4 @@ - yahia-15
diff --git a/dist/Databases/x/yahia.xsd b/dist/Databases/a/y.xsd similarity index 65% rename from dist/Databases/x/yahia.xsd rename to dist/Databases/a/y.xsd index 9ab453a..4d08528 100644 --- a/dist/Databases/x/yahia.xsd +++ b/dist/Databases/a/y.xsd @@ -1,12 +1,5 @@ - - - - - - - @@ -16,7 +9,6 @@ - diff --git a/dist/JDBC-API.jar b/dist/JDBC-API.jar index 3a5c7be642e4b4629f764985b28fb2abc2ad133a..b149347681ea2f4804b1d54124ff16f99ba14024 100644 GIT binary patch delta 17489 zcmZ{K2Rzl^|G#@L?<;$gJ+rd1S7yqlLfM5PTSXC9A%$#?$R;Zq6pqS1}(_M|+&7|@9eL&OO*nhhJ* zLw~piVG=XHb`Fj4>$`gnJl!x2EES9qS;@5`Ysc+bDWK2TMTyQRCSTXf(s zE;=as&W+J#Del>-VIVn_ZoGN*@!#3Ee0pGCGaQvmYZ+K zPAQ@-!ansBPDoc2e2vRX7Zogh5mJ(%Q0N9xm81{TKD8@`WffG-qz9t^FyADN8_~wI)$V2qH-x{J2@X4OG|z>YpbMJ;6eKv zWM)SnwA6CATF@-HbxMpwwec0&siurSPgD&@>DK3eHDv7W!F2A zjeAHZmwW2wR32xG=#`{r9n16#eepuJP4msMY}#jT^R)EkzUF2-Lgi@k&R?!nG2%>A z*XoptU(|gN$Qp5KBmQfgUPs5UK(-Yp{gzhLiDmZ~^Sn)&M1h-;PUj9v8LpJ)`Znfl zsyhXM5$11q|vx_Fe8KxAlw2Z`Z}Wc@u4!!P9Df{Csm}jy;QM)Q$H8+`K`3 zGFrOeI-87f#GPV&n-8Vd9%$7Iy@j*>jqenj&Qqw)PrnJv>Hfp7`pIOV?2E2!ll{UI z&V__I>HrU(*j}>F1v>6Aq29H#$+M@T>~+1Q&!m{7|^(8W=U%9A2lR5rTy5w#kz%& zP489aJ2T>VL5aL-rp;7gTB;LS*g=&z>N=Z4%eNO6@{IV&QIsCW|pgATdb6tKE3LL@-{R+y~T#R_~^^G-6b@kzu<+f5q+8?2J z3chsFPnL127`61aM5P5Cc}RiaqKM*5yLuhEA$gPe+O_h>V;?SB-~RZpE4RUGbQ zO$`arcs&m{5Iq4tYp6c;b$ znz!JNFAh3fO|2HrJU?4zdZ1tE-i5)t=03gOgooJ@FKabZ7w5gVylnBV{dSDywzCQ6 z@zSbvJ?bs(!S<~`#iKV$}pJo(mFTXUEQK1L> zN)6rF2SI+rE3dvkox6JvWik zRHrUogS)=5aDeHN=c8MJ;Q|W*6_2tXy8b(Td8XDy~3)K5ofoVA?kX+$v`_n z`kXB;6MZbHg40r(7D7a{O+`fXzpZe%-0s*mG2DS{4c}nk&Q`C85(AH_5QcJB(+~V; z9b7`zHhxE9-ai%R*+18+I2w5K`YTSijCU6~N1I4LbB6>cWchOHPq0o@#j#{c3*Dv} zbt`N0`1a0&u2%Q0hfIxBXTZ+^H-7FlyN_25It{3q6IQmrMFbk9FP5D6xYlp6^00XE zt^8Qvk^paN>qFu>tprj(0m_1l{I>$s#Tk(p>GfX;N`7iM5~a?#E$a{oiY1l0*W>p)_f787I3UmRLh5zey54g)xhwjy4?mas3?A@wm#=CW z=RoY-zsn*xZrp3#F&D3rw?*&96B}#tid0|MD2f5s%XJ;&(cJmko17ui$a%_dGVA_# zO*+P3G?Jv(P>i{HRW@!>)M@y8$gCd-S$iYmA-5iaeB^Z)5lLN-HQ`ErHPPuy3@%@3dydMT}_gxbL5-!_>T{=42V=aDF>x2@{?$m3BffSEUesY`V3@0uN zXXrn8743Mx*294ZbW})KN3H2NDW7=m$di5<5t@JftiUSG%vG*6Pf&W}+es?bbH1b1 zj#SnpD_7=D>nMh2JAL=Qy3&{Ot|H%wtc{8y*7!^xdFt`6my4d2RXZNNU}s_DT30Hb z_O&^1`(E|4^vk%WvEWBPd+%x%t0sx^xLaEs2n@8iFtK@{#Od+@yJP1pvx|$%VAymrkgZ8b(l4hI0lN+&^Tb7meJX?4YU$O?y(>7X7Zx+A`y-j^`Oa zRweSM1!S0z4=2qsx4t{Ek+;2{f6uS%etY{`F<-x>{g92UHLh0R&g2N2J}b@i_;uk! zOBW9C*?3WC&o4NVQLz*`+Yf|lW8^R8#5@d3v3|zJu>7g1Y|kX3U*bRd=UorZLf~i3V`+hf7lrv(XP&0SKe^T*B}toA)|-&>H6pOI$ms6DbIaiu zN8ZIBUde1+KQA`xcI#sFDaq=~e#I-*ug*RwDfOp5P(#Ub>a|=%?74+%Pm5=wy*D{@ zwvq& z&ngO8uEuD3B&PUZprOqbpxV!kSyu zO~U!d)|By9aF|nyGOH7L*$Hvo^T^=W^D(TvwN?-gXQNw4_H=yBizg*M-W#Q7;r{Qh? zCg2uk(Y;1x?pdIuFIFN@&T_NNvd;9L?P&Ho*gk=Ntw{26tr7Q0o_u{ue#+6QW~|cD zRM$HBoo`DL~E;daNPob!>1 zr!pPM8~f^v@=~uRCEk3{E-2CaQdIYR#Jd`E2JiiPzmB&#(B%i(=NZ^kPC1+^2`Wd1 zE`7WC%QoVe&AambRJd!~q`f0@J!CotWtyd3-X4Y*jLpeH$6vWwl*v9lB*rAuUK)As z&6@*(_YR{Lgm^~tsC(THjEV#0NuL7iZ#ly$)9JN8L~K%0muaih=5osGYWzc$`tky1 zJrWMCpLl-)SIo!7QT{>N^qz#u4?ny1wIdG^&iZQ=Rz8rw4V9&d^n*~}$rUr$rM zv2aswQMqK1d^ulv$Wb%%Q@FwQL9Rn{;mbF5>$B{5{kYoQd;Df=QpUy{sjj*h&4e3n zy9Q|!$%hzjaQwEN>BQarC4?KBY^`Fxch{{v(fdH{u~x~JDN#AO8v#YuD^K68K6phH zHSylSc{KjbxgiJh_e^iN&&f2~)BmbkKdbM@zF8D)A*O3#F?AyBLVl@KRdKQh@u$Ro zWbB&Z8{SW2509C;J#EABDg6}Id7(g|VX%!>JM)8fo8erJ<7e3ihj602)f4?f;pyh0 zjSNMvk69M4R-Rn+)LrmwYh9~6c7zPAY|$cf)&8z)jgr!PrzuB1i;B;0zFv?|?r1(q z!r|JPPa}KrF}gT7r8hEM^WanJAR7H<)`Yw5nr^PoMDLS@pAsLftD&)ad8vPBVd0do zg+WW*wS#wEB1_-th43A?i_>o_DVnc|=b))@@%wUf;M?Tb$p^7_zBXU>6G;y5aoB&E zjLs^0xaZnoImY3X#^uY~Ic>&2fMY>s{L2S?X$NP2RkU?}FYj5u*Vg%y-XKYj-pt!d zLeDjY(y}D^VDX4uOK2;Jw_-pX@cUX5Tuei^T$z+a~9GpTI7h z!8{YM6*O}s|FqIhWPa{qfIW^XKmd2VfUW9+kIF>jm9A4}PWq(-4g!4+C-;pqwc6WF zKO{0PO^?>CW^@e}Z*5LKf8y%kGGn{{{hZRX_H=i==I%&_Cn~iZTBs~&EG%frbGucl zJF|A|2Du|k4_d=gKfg_4$$MesKBWcP_nIh>bGJV8V;@qnc~<{}cuZRvPR=u!xn4`K zMZ4}oPtB!Qj?@7pjPJ$eH=Izfy0sjhhFCWx%+jg)(oub#Jf6%q~iS>L*E)omoM?(vh&>Lmx=Il2&i_IU3+xSl@EBB=MITcl8Pj)ADr@mu|cTp5e zHTiXX=~*Go7u{!1Dcg=NMCsuCYd4nf3>>B=vpT~nqnt)*S`}OSgkIO*;rQ{ipT&9- zRvID2tWsh5G&5le+?8s#{aWZ;^~F3+C2%-6-VR&PvGOkeIIJPbem3j9{*-T{Sl&|L z>j3=+&gJyn5xv^$zl|cFl#sKu$}zGn^}TRS`DXJp*??cZMAfC;S2^JG9Bx5`Ldr5= zP0uZ$NNjZ`*5RumWomW$ONISHoJUhSE;tRg_YGvCH@~{&qcWQD#`kiL zK)Q?m*K*${p&i-0#)tD&uB|9~;BG%=dmgqDn4NRMYObfL;D_GP^Ip5|f`z-{H)J*zUz{)eHGk4KO2;8f zs`I#FMy5|IYuE~nA+MU@&2tXRL>Z4>cGLLWq6!HWQj4RKjXi&WiR0Oa?(vJH^;)w_ z-v_>54P+Rk<0@_4D$I#_CCg&UcMTV$5Mh2KdNFq&C2HnQR>9%WSGNOY=4fPfLNpD> z=qPnCW6!CkP9)YJo-C5*JC_r4Uqv&nP=Z!!OXz?N*5I4!PhSc5NQ9S1(wNeCK6fsB z?$C;xy!n;kP3Kp$%}p`_UrxAZe9rLZEd)A)fqHJFXX`I<=N-}PZqSeU{bXY5aP#>EwWEwD5WJe_y&i`hI^q`9h!zF|3q=O2U1Io$=-)UWm94$aOG zyHMt8NBx$m$$oLbGNbToZuQOX?(R=G@~k2)8G80?=c|2ejJ7tD3cn<}*wt2!qhDNP zT$EXkRw93x+Bx>Qtt0vJELFmT(iriD+^gZ-tz5#&dd$z~*Ucpi&4%6T{W)0-!ZqB> zOFyTFoV<2Ru4+sB9iMwmP_p|6tY-l3B=v_k2@Zwl`l2=ykEEK`2Y#5cO}MqW>4K{p zx%~X7;gZE& zcA*+Qc5&`pH4Td_bzLBjs`k%0-RhJ&9rD>$_3L&o>v81!{ut>$k4j!5zA!0Vac`!V ztS;XChp%PJe#>`Tb3S#EW#e03YTB;rIB&~0fqidr`t$2n6&ZE~l-J_rF4zv`85YP| z%G%`j_nNzNxc5E_G3uczy;JtStiZM6cNH$h@@Z4w{lJ^Yhh|*Bs?&uJwgnZdOg06- zqYe#u&ia4lpHg9+Qq>T-^0IGgzj1(SZ=uzv{+O&VtLrw@XkEiPl4Gm;O`KACIUnGb z;vIq=ES3>F(E&W-<`R($!2o6_hJxm^{pK6-=EWdzc>m1qCD^P zYiR_8hOlVRDCtjhs^4)^QZ4BHskB15#dYU5H_N=5?!;5I?k8Es%18QVPhW|+@6efB zaBRZQCA?|-7gy02{*AoLtIGUuS*u>fc#>{jQYwy0J#)pp>Kdw^c`k*KYaPdza`*;u z;Ar{4iN!lt#A1V_XqPMxO9c5pemNPAeJW<+?niwgt#D|S@`9_$>xsquJc{wi_0JcA zznr~)rFo_&VsyslS_9T@n~J7tlSORgLax_39g$~uTI50YZv`!_)K?lm&Z>UCBH7>M zdE4XV*)<12&zp;ZG`9Za0@=UJCviNdC%M<`KdK>{L6cmqjcc-#`_IlrX2;uncYbWe zwViJA>@%aRq8wR!`>H_o=ii=3ojF5?9H2j@`z1(^r9er7sv3IBMq zU?UsU^z4hmEd8>X$$-dWtG(GHUH7O^pV>p4wl{7qqz^Mt+mXGLu59F52?u((#P=NE zrP+DMi>P&Om~sdO#P!}>=ji9tu%9^;7Rht%pBz9Z7K_GYt1 zu0oN?gV#N8l3hE;%j)BB+RJ1lGNd0D5pcq6ge}g@u%O1d_`@mF&gr-$MN?1RmmW4_ z_ER#ZTD4M`YUz{aA@+`zk>3m1&xbMovJF=)@#g%Jzj8#YbUl)U^UgXFwM|ZH7%J04 zF5MeP60O6jz!|K{F`Y(aZAWZh!$4EZ+E7J8G>XtKs#{TcU6WQ{6K@!;?HUci1y@NB zjcj_UUf=qN(yJ$@2_%=?WNR1__K*0zEMw6ltrDIwbx!Fz~9&I_HqvU7v3dzJZq6V^W z=#x&^mfncG-7Q}{eq84v?~wJ_qwzRDX$POc}|XC!<2t%%9+4HHwCmj{2J!8KGnJzaF0Y=uWE2 zyhJ@$f1OOBvBlP%`n^LbMWX72g+}eP$?AG%^~74$#G3sz*HBKs(2&@J4LusTPtqn1 z&d0pY$QQm22~8p?C`9pm{`Kj4UJn(2!5lih4waFb5K427B&ql08Tq=9$6~RY2P#(9 zsE)bVwQgpc*1bg)p{j1(!&tBLZGZCmR5^|g)Ea;3*%Vf`^A}a|+;w zK3Q%6<5a_LccJE9)p1J8)d8x!Vb8VYqn0^%3LYVRAEOp*Ay ze|u=Q^m=N&DAC}A$wi~9Cp&oFyHP&;S};9PY*xE`y5?%S%m;glTA?4qXK}%})f{KC z)@J@k+Lfl9?+WR?&9cfZo96qM1$lq7^hjKP1Uw>cy8Ypdn-Y0+DoFLB0=bT&9$R#e zP9*bw%_|9JA~6jCQ>H@?&OQ=4Uu@}EYB|AgZ`AGM_}S`U8BX_@LFS8mA^AYke*VYI zPjAM&;*O2RsvDojJmSo0am!g1&Bc`#YWTfWUiAf;EQKy^mb~WW!k4E!Vo>bia5)`*qY$~|dRVPt5#E~1a>ZO|Vq7 z(ogP8k8Qpm>S6Fu)Kg}?_Nip*{)gsLty zu|fY^;@@#3cXeNj3fFCu8b;sby{=LIjj6z@=PK`pe4qXq@|TQH!u?5{ zPgph8Y!>~lN!@j#9Tb-I5*qHPN|pPH_+Uvo?e&^IO%^!*Cf4iVcGw@Jy?i2l%(v{f zn|DSY3*9Aq1ES7?sl-BK#fkk1;?W0jqWY{@knLX*shqZ!k^|@G)lXZU z@A7$SSjSrd!3S-F>@ACKMxieXoLo0I82U9X3kpjTx#bkwbxC~Hn=!0-6I2-{`LMhz zM=Lw5;4sa;LM?HR;yXvt9(r9z1Bk^d!iB~6CtS=+n#)b)eU|F=Ua{}O;cp51V)$|S z+{f3dxFe;r=fjPJW(*2{uiKw7pT3+ewy>c21EU!+t$3-uyorP)EU?cheL8@OxN2>* z0Bhj9|IW=0WfLk#X9hps%hjANC#VJzu-_PFeZS>|Uy-PNIV$9~`nXa4JIOVA&rd3g z>U4eWl|s@rag&~3ZOb2j=27x+XrVfll<**i%@*9@a$l}@|K*(falq*f6`Pt43MKZ- z%cLp3d!k)owtd#yNrA-RdX#jq&YRq=n^$GD@8y^s)NR?X7pHjdT^Lnz$W*&p_Ydh? z6X)aBqFvYOTP7BRgUpH2V`_-ILJ|aGxp4ZPZ)Fl7n=2mlIk;zvYvnyZT_`Aqt^qQ|sCMj%&>K$y`meCgq(bec0`E1&R zlUK-HJ$}ig^^Q@v_JE&V49kzC6dQajXQKE~H(^6OwH;d&t)@x7?h*V|^-*F>PSv_X&a$90*T=}upAT0jsoh3T1Z@i8 zBEC&EEi0&zE^bihMTB1wQG5Gy!^pNd=7+7`wu;@Gn5EKRRr9)+g=~o*X|cHQ{#LFf z<|Df}a;F+=^HA~DF^?moAs&6IvpS<8a+d<6{%~FI3{Se2vYplOLG!!yk^!cq`u4UK z$Dyi*vb>e59)D{Wsz0y|l#JN!w)1@Z&7>o4 z=QsJ7{!rySTgm_9>U&?UGosRUq0hZEX`S!OP1m?ptGlWEoAt#-UklPcw6BCd{&noAHnEIsd+sF6L^|;{V zw?O@gN0#^Q)!(b|6L!PhSJI7_c|ksPTDVyyKv#a)^>prOyW|JdYBdu^Q*?Dl6fGRi z#{Yg{q1xIo{<|UT{*zFeA5Y~|XntnCI5Kv+NJi6v&bvnZMuf_Pic7e&4FY|B+}}cY zR&tN4>M{O8oBfEqq{x+P_=|C%}Uxfxtn(8(ap^8THm>4?-2ow zyPrE?tdb?|L*|se*ZBpM?9^aJF8T-aGTvpDZT6pqx)4k#TMByqKk% z5@Zq>8Pcmt{0=hI_bcTlrFo3Lcuy(mH=kgWz|X$(w(hX3VLu565s|z4-nVrl<>?7V zSopSXA+-a+f0^`_9~c&H{Z&b&G*4Yt+8V7-m!w)6VxV1OPw) z0mKamZKaPmiW;i_Pqs=Lg&?SrO8D;a0sMvr|8DtPLS0`=0{dpa6(Q}5za7}K9U%wN1*n~rrWBy0@itA0P$FQh z07d)1FsLesY5!J-sbB|og@k-vFGT6=2xs0v!96#NWFfFoQIU;GsFxIH=pe&3_U}fDW?O% zjd$P21LI1>oO{?m+*nv?#yXprh$vtm5s@U(-k%f461>T|5@L?ggR9RFiXG|5l&76m z7$PDvED@2`USXo+hW|)Y0HZ48z>f4%m=va#pNJ^cl!!?DFKJHGf27GlT@^ydt%D0U z-n;x9{7YKi7cUK{pCfE=QligcvXT>a47^Jq2UmEp6maI(@$gjYj%59FSPGao+qVci zx*~fA6RbvPp|)Z*6kFbb5=3)Y!Cl%N?F>9@owp-7QjG|5kHFjvSLgd|z)u$*3lb3> z`YWQczht$!!G56spf%&6hydgw1@`+u-@J;DfMw8Z1bnSn+FB7olws6lBx3~(4! z;~AXdyNsP}f@3G=*e}sNqcB1Vn1jEI9stxEU}5k{^0fEaFoo4qfZg$Ta8)3y0a1lH z7;AtooHRgVBO(q&8xaPGsW(FGgBAh11F;=rfydeVjxi7s@k;;KV>4)I{HGPzLV7yn z;gbCc_6wBT^Wz4%Um}`2mNsL#PZq$-vkZnNyGMkGh!|XdiD>T>xKHBNTRLcIlbVP~ z=Pw~D7eYexUEo$B)`U>t`%AeA_E(}ep2I`fv~Z9ECll2KC-eS)48pavlf#LX6ec-x zm_sHaBBj4vXaL&gowdxW8ESvT?J*1YLUw4j7SE81-NS&}AvM+CT@AQeps)*2X+cVi!orW7#pJ zc__e>hhn7Idx?QFZxD8j0%V!y!Ndi>Ldft6QLiBC3(-&4(EI-z|H0SL_ye%`3fb9l z;KI+28U>QA$j(Ne(F$`;kq@L=5&E4y8^pE}s1rwSN!?VON z0?yY2al9M!vwYClhA;xVe?WIUIP(vf^%`NsN6P}|fZ_oSZ3yRoVoh#?9LpUJc+`zS z{=){wc>Y}i|GNM&`G5F3>Z5qJB;L=CbM^v!L`)!v7E21m+X=DmaLji&i~ybh70DdLJv_SOCek?a2dqXgbpBM&RhyvGHvF!hejZisd$b9^h znCHLDhj`7a|1beJ50(sUK%@UpSi*mW)d&?(2e2Z*`N5r=!XkHePAE`+=D1!yMWpco^>OKF!IAFU^0vn0^=VM8o<{BwZy>T z9>fz>1Il_315E2I3XIR91i^&`C?L}d1uTJaFEo2(VaE^`c+m^Zs(;&=3oF3%!C>Wo z?oe!?X9Hmd&V2|gT5uU3<9?71`S616=tIt;W`I;bVu;_@`Vj*ZKX}`Zn4w+J!21L2 zQ~Pd&6l9{&2srv4I@l&g;{)LWW&@B}^d6ez*taW50>TJ@fl?Uk{=K?cpu{R z0R~!0j|N@z=!1kgZhnB8woIUN3gG~4TL=R z5MqOfCh8UN8btKbr}zk%xE7icj13}ED1SgRgjk_lU4Z#wX zs_fBI8-{uvz1caMYDj+A;{7jgDg>p zT~_i(gdaQ@gYGyz_JUSuNv|CmSbL$#!L^Uj&pTfN!aa^4;Eykw6Q6AnbZ5XWd<6aa z+Ae{B&1>ibpne6qtsIALlW*+d{V7M2fwgf&3LP7=3sV5SPl!DF%MA@8Llsj9~u+jGs4o4{SF9 zja)6f{>B(ItfJWobvXM4@`%<6JmUp~7O1Sl6h8O@%}xFTLzVsb#-;%b^H7@n*RCac zU_K8sWbmaoH(>d56Bka#5qWIkt1kLEP;TQ=|M0SLk2F;z~a1LfO#|o zOAE+pbQ&2!#O^Ds{|GICDE*39paDIBfJwyy?r$*7!3+eXgaJc|zww{}A>Ux2ovgcB zl%W0_B8MJeCmaoz^-`H2gQ#HW2#%*9j8aPeiP)kOH3>SwKVh%YX%i%ue?n{LbO^+W zWk^&X!xManRD>Ek;$c!t@M#T(mbHTD zqB(8w1QRf@!LSfk58+iPbJ&&uyV=4x-B)45+_fWUsas;m!H6A(l_32MFMZZ&4^MUt zUcJH2dypn)38=!0bNt@Aw;l0tp4BzJQJt^;!Q*glX49M9$&+-gLN`k z1m8^VR2tA%-m9!Cehj@PZhtj(#)pudpmIA%R8(#`lO^8pqHRI`lmWmK9YFmPoKJ z=+4i3L^vlf+#nDQJFE$T9xA8z@Sq0@AUF!IK}jq$P5gzxgDIp0H?deLwEi~&68sHA z4Ll}bm@8Q5X9duZV$Y%}~dAIoX@Lu!507a-^em>xNH39@44F%Q&cIO!i>=ksB z7yubBhjp~G^5NC#qi{3a%XK6j3Q+&c#ov$L&{(7~EJ z0B$<04Z778Z;KHm(qZ*c55YJcOw)BBMUOp+CcjKz-J{29qK*6sM1cRlWnpB1R+xb# z0~GBEB5?l%5mOS1Rt34}cfr7v2?m3?4rc`OM*~pLhxx#1Myvw*U>HH>Y#5y0 z&JEB9yi8OC0e%@l%s_x;nV`QsV8Vp8MzhBdxNn)TM(9Tg1VV`!X4@}`K$Ipym(ZLD zS}_GQ?#J=~&izv&&XTYr^~ff3&GU%zjwoF3_+a z)_A-G&)5%CSYdWfJR}fY>{u+wV#VsCzm)GHW8@mDuqFsu)Bb76TweILvk6(`IZ$wxe*0DL%Mc&?xEgghAGgx9UuJf08) zvRsf;us~3hP$OXg84!VYu3cPMH+0HR0>hpgdl;?0LLl6zN%ny^+)xj-MnK?G0zI_# z<}N`8vUp&QA;5#ZfSw=%JOVH*J6^07nifMKV2p4h-C;7^@G(~6 z;U*9KjP`?tgIINV7#9=6YM`zGPce9Dd=CO%Vpt}?i6fx^V`4D;u$u&gTO2Eod3Bov ze7sE}L^wyri$h}xvAY@wXcvbKe?OjpFi2qKQGvif0&9UjmrTHFB(SpZ=(i++HOEkw zkN~ciB!a-W1V-&A37ri+0)`Us*1JX$Hrg0iki?!uodp_F(88~Jf`vy?SOxgFVonNc zgh5{JSdaiNhoG`l3qiuJ1)77WIU3M-2zCh-7&(MJ3Nz0y4Tp!oO&Y6-ngS1{vBoHM z@JAZIN{xVQ87w^*9wDJ8T-aeUP?Hv9$zaXUwx0;x2eR0GfL<2%WAX$Z;RRh2(386? z^o^U@l~G2Q&k=~RIecr#VMQ>{7Dzzn0tqK58-ZcD$YEJA@oOZYWDWM-&TUsEg!nj! z5F!Izts_P!j)?6%FB89X<-n;j32m7oV9g&ka&0AZD32l*=j92|kFGHgc&5TuON$DCI~K(HEo(*cje6rkZS zmKdN^U`fINy9)Lwrb-h5-I@q5!Ac6`U|Mt#Fs6gBfi4v|Qzfvaf;B|N16@_D5y};$ zsA5gwGwLs@*wd(VpnVu?jK-YW$r_M21z*svDZvypABNHVfzNPYGJ&Wag#R3dwH2tKFN(10yT2I4fZR_LHG0;@O-rjJ?^hOq>n(BQ2aYr;ig9zKP^6WN;3 zj1YXtf+rR{NFJ%fIW&}zpu)675&|Z5Q9$^K)(%|O_|BDg@ zF*J1sfhVsG+eIIEX~WClRt~|!h&Eia;B)w$wwlg|cb#x6{AY@%jzHzcLIN-92v!@V X47!hCtx+~WTnDR%Y(Iu?z=-}2Y+gt` delta 17462 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 delta 17590 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 diff --git a/dist/Log.txt b/dist/Log.txt index a6ad46e..f57b340 100644 --- a/dist/Log.txt +++ b/dist/Log.txt @@ -1,94 +1,27 @@ -[ FINER ] 12\07\2019 , 15:20 : Connection Initiated -[ FINER ] 12\07\2019 , 15:20 : Statement Created -[ SEVERE ] 12\07\2019 , 15:20 : Use Query failed! -[ FINE ] 12\07\2019 , 15:20 : Connection Closed -[ FINE ] 12\07\2019 , 15:20 : Statement Closed -[ FINER ] 12\07\2019 , 15:20 : Connection Initiated -[ FINER ] 12\07\2019 , 15:20 : Statement Created -[ FINE ] 12\07\2019 , 15:20 : Connection Closed -[ FINE ] 12\07\2019 , 15:20 : Statement Closed -[ FINER ] 12\07\2019 , 15:20 : Connection Initiated -[ FINER ] 12\07\2019 , 15:20 : Statement Created -[ FINE ] 12\07\2019 , 15:20 : Connection Closed -[ FINE ] 12\07\2019 , 15:20 : Statement Closed -[ FINER ] 12\07\2019 , 15:20 : Connection Initiated -[ FINER ] 12\07\2019 , 15:20 : Statement Created -[ FINE ] 12\07\2019 , 15:20 : Connection Closed -[ FINE ] 12\07\2019 , 15:20 : Statement Closed -[ FINER ] 12\07\2019 , 15:20 : Connection Initiated -[ FINER ] 12\07\2019 , 15:20 : Statement Created -[ FINE ] 12\07\2019 , 15:20 : Select Query executed -[ FINE ] 12\07\2019 , 15:20 : Connection Closed -[ FINE ] 12\07\2019 , 15:20 : Statement Closed -[ FINER ] 12\07\2019 , 15:20 : Connection Initiated -[ FINER ] 12\07\2019 , 15:20 : Statement Created -[ FINE ] 12\07\2019 , 15:21 : Select Query executed -[ FINE ] 12\07\2019 , 15:21 : Connection Closed -[ FINE ] 12\07\2019 , 15:21 : Statement Closed -[ FINER ] 12\07\2019 , 15:21 : Connection Initiated -[ FINER ] 12\07\2019 , 15:21 : Statement Created -[ FINE ] 12\07\2019 , 15:21 : Connection Closed -[ FINE ] 12\07\2019 , 15:21 : Statement Closed -[ FINER ] 12\07\2019 , 15:21 : Connection Initiated -[ FINER ] 12\07\2019 , 15:21 : Statement Created -[ FINE ] 12\07\2019 , 15:21 : Select Query executed -[ FINE ] 12\07\2019 , 15:21 : Connection Closed -[ FINE ] 12\07\2019 , 15:21 : Statement Closed -[ FINER ] 12\07\2019 , 15:21 : Connection Initiated -[ FINER ] 12\07\2019 , 15:21 : Statement Created -[ FINE ] 12\07\2019 , 15:21 : Connection Closed -[ FINE ] 12\07\2019 , 15:21 : Statement Closed -[ FINER ] 12\07\2019 , 15:21 : Connection Initiated -[ FINER ] 12\07\2019 , 15:21 : Statement Created -[ SEVERE ] 12\07\2019 , 15:21 : Select Query failed -[ FINE ] 12\07\2019 , 15:21 : Connection Closed -[ FINE ] 12\07\2019 , 15:21 : Statement Closed -[ FINER ] 12\07\2019 , 15:21 : Connection Initiated -[ FINER ] 12\07\2019 , 15:21 : Statement Created -[ FINE ] 12\07\2019 , 15:21 : Select Query executed -[ FINE ] 12\07\2019 , 15:21 : Connection Closed -[ FINE ] 12\07\2019 , 15:21 : Statement Closed -[ FINER ] 12\07\2019 , 15:21 : Connection Initiated -[ FINER ] 12\07\2019 , 15:21 : Statement Created -[ SEVERE ] 12\07\2019 , 15:21 : Select Query failed -[ FINE ] 12\07\2019 , 15:21 : Connection Closed -[ FINE ] 12\07\2019 , 15:21 : Statement Closed -[ FINER ] 12\07\2019 , 15:21 : Connection Initiated -[ FINER ] 12\07\2019 , 15:21 : Statement Created -[ FINER ] 12\07\2019 , 15:26 : Connection Initiated -[ FINER ] 12\07\2019 , 15:26 : Statement Created -[ FINE ] 12\07\2019 , 15:26 : Use Query executed -[ FINE ] 12\07\2019 , 15:26 : Connection Closed -[ FINE ] 12\07\2019 , 15:26 : Statement Closed -[ FINER ] 12\07\2019 , 15:26 : Connection Initiated -[ FINER ] 12\07\2019 , 15:26 : Statement Created -[ FINE ] 12\07\2019 , 15:26 : Select Query executed -[ FINE ] 12\07\2019 , 15:26 : Connection Closed -[ FINE ] 12\07\2019 , 15:26 : Statement Closed -[ FINER ] 12\07\2019 , 15:26 : Connection Initiated -[ FINER ] 12\07\2019 , 15:26 : Statement Created -[ FINE ] 12\07\2019 , 15:26 : Update Query executed -[ FINE ] 12\07\2019 , 15:26 : Connection Closed -[ FINE ] 12\07\2019 , 15:26 : Statement Closed -[ FINER ] 12\07\2019 , 15:26 : Connection Initiated -[ FINER ] 12\07\2019 , 15:26 : Statement Created -[ FINE ] 12\07\2019 , 15:27 : Select Query executed -[ FINE ] 12\07\2019 , 15:27 : Connection Closed -[ FINE ] 12\07\2019 , 15:27 : Statement Closed -[ FINER ] 12\07\2019 , 15:27 : Connection Initiated -[ FINER ] 12\07\2019 , 15:27 : Statement Created -[ SEVERE ] 12\07\2019 , 15:27 : Select Query failed -[ FINE ] 12\07\2019 , 15:27 : Connection Closed -[ FINE ] 12\07\2019 , 15:27 : Statement Closed -[ FINER ] 12\07\2019 , 15:27 : Connection Initiated -[ FINER ] 12\07\2019 , 15:27 : Statement Created -[ SEVERE ] 12\07\2019 , 15:27 : Select Query failed -[ FINE ] 12\07\2019 , 15:27 : Connection Closed -[ FINE ] 12\07\2019 , 15:27 : Statement Closed -[ FINER ] 12\07\2019 , 15:27 : Connection Initiated -[ FINER ] 12\07\2019 , 15:27 : Statement Created -[ SEVERE ] 12\07\2019 , 15:27 : Select Query failed -[ FINE ] 12\07\2019 , 15:27 : Connection Closed -[ FINE ] 12\07\2019 , 15:27 : Statement Closed -[ FINER ] 12\07\2019 , 15:27 : Connection Initiated -[ FINER ] 12\07\2019 , 15:27 : Statement Created +[ FINER ] 12\07\2019 , 15:59 : Connection Initiated +[ FINER ] 12\07\2019 , 15:59 : Statement Created +[ FINE ] 12\07\2019 , 15:59 : Connection Closed +[ FINE ] 12\07\2019 , 15:59 : Statement Closed +[ FINER ] 12\07\2019 , 15:59 : Connection Initiated +[ FINER ] 12\07\2019 , 15:59 : Statement Created +[ FINE ] 12\07\2019 , 15:59 : Connection Closed +[ FINE ] 12\07\2019 , 15:59 : Statement Closed +[ FINER ] 12\07\2019 , 15:59 : Connection Initiated +[ FINER ] 12\07\2019 , 15:59 : Statement Created +[ FINE ] 12\07\2019 , 15:59 : Update Query executed +[ FINE ] 12\07\2019 , 15:59 : Connection Closed +[ FINE ] 12\07\2019 , 15:59 : Statement Closed +[ FINER ] 12\07\2019 , 15:59 : Connection Initiated +[ FINER ] 12\07\2019 , 15:59 : Statement Created +[ FINE ] 12\07\2019 , 16:00 : Select Query executed +[ FINE ] 12\07\2019 , 16:00 : Connection Closed +[ FINE ] 12\07\2019 , 16:00 : Statement Closed +[ FINER ] 12\07\2019 , 16:00 : Connection Initiated +[ FINER ] 12\07\2019 , 16:00 : Statement Created +[ FINE ] 12\07\2019 , 16:00 : Select Query executed +[ FINE ] 12\07\2019 , 16:00 : Connection Closed +[ FINE ] 12\07\2019 , 16:00 : Statement Closed +[ FINER ] 12\07\2019 , 16:00 : Connection Initiated +[ FINER ] 12\07\2019 , 16:00 : Statement Created +[ FINER ] 12\07\2019 , 16:13 : Connection Initiated +[ FINER ] 12\07\2019 , 16:13 : Statement Created diff --git a/src/eg/edu/alexu/csd/oop/cs71/db/FileManagement.java b/src/eg/edu/alexu/csd/oop/cs71/db/FileManagement.java index d2adb42..864fe74 100644 --- a/src/eg/edu/alexu/csd/oop/cs71/db/FileManagement.java +++ b/src/eg/edu/alexu/csd/oop/cs71/db/FileManagement.java @@ -17,7 +17,7 @@ import java.util.Arrays; import java.util.HashMap; -public class FileManagement implements FileManagementInterface{ +public class FileManagement extends FileManagementInterface{ public void writeInFile(String tableName, HashMap tableColumns, ArrayList> tableData, String currentDatabase,ArrayList cNames, ArrayList cTypes){ String[] columnContents =new String[tableColumns.size()]; Arrays.fill(columnContents, ""); diff --git a/src/eg/edu/alexu/csd/oop/cs71/db/FileManagementInterface.java b/src/eg/edu/alexu/csd/oop/cs71/db/FileManagementInterface.java index 71149a1..a3045bf 100644 --- a/src/eg/edu/alexu/csd/oop/cs71/db/FileManagementInterface.java +++ b/src/eg/edu/alexu/csd/oop/cs71/db/FileManagementInterface.java @@ -8,8 +8,41 @@ import java.util.ArrayList; import java.util.HashMap; -public interface FileManagementInterface { - void writeInFile(String tableName, HashMap tableColumns, ArrayList> tableData, String currentDatabase,ArrayList cNames, ArrayList cTypes); - void readFile(String tableName, HashMap tableColumns, ArrayList> tableData, String currentDatabase, ArrayList cNames, ArrayList cTypes) throws IOException, ParserConfigurationException, SAXException; - String getTableName(String query); +public abstract class FileManagementInterface { + abstract void writeInFile(String tableName, HashMap tableColumns, ArrayList> tableData, String currentDatabase,ArrayList cNames, ArrayList cTypes); + abstract void readFile(String tableName, HashMap tableColumns, ArrayList> tableData, String currentDatabase, ArrayList cNames, ArrayList cTypes) throws IOException, ParserConfigurationException, SAXException; + String getTableName(String query){ + String tableName=""; + String[] parts=query.split(" "); + parts[0]=parts[0].toLowerCase(); + switch (parts[0]) + { + case "select":{ + int index=0; + for (String x:parts) { + x=x.toLowerCase(); + if(x.equals("from")){ + index++; + break; + } + index++; + } + tableName=parts[index]; + } + break; + case "insert": + case "alter": + case "delete":{ + tableName=parts[2]; + parts=tableName.split("\\(" ); + tableName=parts[0]; + } + break; + case "update":{ + tableName=parts[1]; + } + break; + } + return tableName; + } } diff --git a/src/eg/edu/alexu/csd/oop/cs71/db/SQLParser.java b/src/eg/edu/alexu/csd/oop/cs71/db/SQLParser.java index bf5d4bf..da4b665 100644 --- a/src/eg/edu/alexu/csd/oop/cs71/db/SQLParser.java +++ b/src/eg/edu/alexu/csd/oop/cs71/db/SQLParser.java @@ -319,12 +319,12 @@ public int alter(String query, ArrayList cNames, ArrayList cType } private void operationParser(String query, ArrayList colNames, ArrayList colTypes, ArrayList> table) { - query = query.replaceAll("\\s+|\\(+|\\)|\\,|(?i)(and\\s+(?='|\\d))|\\;", " "); + query = query.replaceAll("\\s+|\\(+|\\)|\\,|(?i)(and\\s+(?='|-?\\d))|\\;", " "); query = query.replaceAll("\\s*\\<\\>\\s*", " != "); query = query.replaceAll("\\s+(?=\\=)", ""); - Pattern P1 = Pattern.compile("\\A[\\s]*(\\w+)[\\s]*(<|>|>\\s*=|<\\s*=|!\\s*=|=)[\\s]*([']?\\w+[']?)[\\s]*\\z"); + Pattern P1 = Pattern.compile("\\A[\\s]*(\\w+)[\\s]*(<|>|>\\s*=|<\\s*=|!\\s*=|=)[\\s]*([']?-?\\w+[']?)[\\s]*\\z"); Matcher M1; - Pattern P2 = Pattern.compile("\\A[\\s]*(\\w+)[\\s]*((?i)between|in)([\\s]*([']?\\w+[']?)[\\s]*)+\\z"); + Pattern P2 = Pattern.compile("\\A[\\s]*(\\w+)[\\s]*((?i)between|in)([\\s]*([']?-?\\w+[']?)[\\s]*)+\\z"); Matcher M2; logicOperatorParser(query, colNames, colTypes, table); query = query.replaceAll("(?i)(not)\\s*", "");