From e0313e717508afb54bfceb807611864489344b70 Mon Sep 17 00:00:00 2001 From: Roland Haeder Date: Tue, 13 Oct 2015 15:07:18 +0200 Subject: [PATCH] =?utf8?q?Continued:=20-=20added=20POJO/POJI=20for=20addre?= =?utf8?q?ss=20book=20sharing=20-=20added=20equals()/hashCode()=20-=20upda?= =?utf8?q?ted=20jar(s)=20Signed-off-by:Roland=20H=C3=A4der=20?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- lib/jcontacts-business-core.jar | Bin 48157 -> 54266 bytes lib/jcontacts-core.jar | Bin 20682 -> 20850 bytes lib/jcountry-core.jar | Bin 5642 -> 6200 bytes lib/jphone-core.jar | Bin 19390 -> 22795 bytes lib/juser-core.jar | Bin 22244 -> 22244 bytes .../model/addressbook/Addressbook.java | 6 + .../model/addressbook/UserAddressbook.java | 28 ++++ .../addressbook/entry/AddressbookEntry.java | 5 + .../entry/UserAddressbookEntry.java | 37 +++++ .../addressbook/shared/AddressbookShare.java | 151 ++++++++++++++++++ .../shared/ShareableAddressbook.java | 91 +++++++++++ 11 files changed, 318 insertions(+) create mode 100644 src/org/mxchange/addressbook/model/addressbook/shared/AddressbookShare.java create mode 100644 src/org/mxchange/addressbook/model/addressbook/shared/ShareableAddressbook.java diff --git a/lib/jcontacts-business-core.jar b/lib/jcontacts-business-core.jar index 61f8e0faf43ac454ac2fb7dfc3cd569ea6b53492..f8199150d48ef526ec624f8f862b7cac07cde80c 100644 GIT binary patch literal 54266 zcmeHw33y$_mFBrmww@$E*^({U@@@<^Ua)1rEXKwl%Q6TgV{BuB0n1O)vn)rJjGhEG zWWf;jod7WeLRiA$u*4viKv+Ydvvhan>(0!iC)1g4x@V>{lk{XJlkT4Bgv@_xxmEYx zy6-+oW=Xg0PxrlhU)8C<_B!XUI(NglC1Wax%7~WkZ9R*uf8{iWTAMaEENNc9uKvRx z5N+^-EGgFioLYs32HbxoT#FKu1dn(gi0k;@M(*^=weclY(4Hs|=I z%PK1xdaWl7d$Junb93+vKdxB1yt1OPKbIZIbuL-6kHep`bXnWUrz~k-cKncMETc2GC)+=;JJ&l< zK+b|>Il0|?diwU|3YF?{$x?RavYnR=0uWkJ0X&P7CGF~K-_w`x=9Xg#3b*`Yk_Gkj zb@f>ixI>iBzQ60Pu|)j0JXyjT)n*!H8(P}Ylg;OU@ZoE3BI=2>C{4$vX+fG6dQ{Vu z8(70_Lq}PQHsaCh1q)laZTl@Z+8j-b(ouyRj=vIe^G>;EEEtX0gu(b9ktr-em2UX4M-7S9T39YaF3n*?>_O?) zs!|YDbzb|fT*tu5g=4`y06T(_vA`F@+gJB5)5xuV?4~v7$)&qN@?*~ zM&-PT%(w*-{8))e5?HdrQHZEV{e4GQ&DKDdW}!vl|I zIAovKo7>!n3lAd$*?u0OfNfx(M=KL28$Xk(LhU@JJF@wXEcde6j#L}vkDK@H;e<;X zT3Ud-Zx63OvOW0P?$1?K;i)P(N3IL~oLn<8Gvp+{JXO-7G-o=nixR^Mejku0myt|P z7m&D9^Rh?dRhs@3c|uZ=M+a(5UmAIbTrmmYD~gt+py~MonW_rH;(1Tif|>R_n(Qc= z=1xSP=J>&Hy%icPx7E^~TyNLFPHw3+9?f;cJ1f_lgF=(*6ulC{%kl$!--Y&BAUv9p zYFcH@Yn#?@Zr*&6DQ$l`_6u%@oU}#3mFpr#UtB8?ne|y>o zRq<~=ksB~3#Z}-4zF@s{x9V4gH2`y0e z)(`G(&-HJX1J1;jzK(3qmMrEw3_$APn1P+$C|oSG3NO-C@~U$n)pC)!evDThotU^( z&;zfI&r|(`_Mmd%(Xu2IVKGIlFiQKxY6Cq}wjXO1fLx628`#MU#L7)jkw4p--J^=- zU!peiF>5fBgUt<-iz?eAs*OEzA5m?TDi|KwJo;3tHWAHb468C&zG7r^YCCwI+Plo7 zo1^2L^1O44Fc(CeR#?}$Gwy~W<*`{Pc{V2vJLghy_MOy(MB99z(?OmWUMB zg-Upqhy{%$4@2cKGVDo#u&6Q>b|KK5iWFBsV@LSYXk|04vXVL-;a2D93_25XP|49G z*0_^ETR;q%nYH1}G+8OA%me|V5vi1{Qasy=rAo2c%9bd_Nr;BNf@=$MRgX^(pJNxj zLf#=!u&ub3iih>I9^W%E0G&r0aOZKO#g!wkM$x43S@AlhE}B^K3XORScPTOwb_ofS zWhf;9;b{|Xh71qAWs8z^4Z^T~Fn{p}G`8fKMK9CX#rXRM-zIeYN!GODJ2w7)^Lw<|>2bEH&1?fG;eeFkaP(RjKDC{nZ)@yAfA zl=F#RtniqE8KR1BA&8x=&p8X`Qre~>uSRGtn9@ayU!n?AtZe2W+7HXmHCDlt`rt}c z=kTbFwj*q?hK6Wd7|8VwAhJbe0i~Tfl#mVh^Z|`yK(h2Cpj!aw))+wCjREB{( z-~`e`yInvk!$2Mekgvx8k%NXuz0MLD9|rQc6G)%CM8=1KJPjZRV}QtE$U~QKwW0}O zAkR5~$ojnuWzz3%MH9lU=tTe;iUGu9U9c53(po%`spRo(0DU&vimJj;Uv)tB=yG&+ zJtSETy((O0Zvf((F%ac|>S1Eur)0INPE%dFs%qZ!ojd@&O4Zv}P3O@^4hQ4K=<+V^ zz6%5GdzR>G)u~f>ekEN+UR47|&d({)rz_Frixy*SdzmI0k#gu=Vu>pE$A@zIycoPn zRKb0Lz9^tvEv65iboV0x%u?6TwdzaIe*6Aydsn^-yEFftiKq!n4`Fg-t75%g;Q5xn zkTG{@nii+&xHK)n>cNmNA~@TXd=AXkPb|jA59lUdCK{1g;4m$V6-iBC?V{ETJOSV@eZsYL#6e!3#%Fcgg8-Ay`!DX5F6g)ReLH zlucJkk-IS0j%@_F3;JQjXCB@0c$5s?WL@oM%#m8-X(J!C3TRJ-_`1ns+eDXb#l`BbP({5f6yK12OJ(~>s} zzt6Vh&B6UqD*Rj({%Cc7jJlr(g^J}K3x$f8@w^`=MT>&-!`Kh1mu~_N{ySqh^Mk5> zQ&qv;9IsU%KM$tqp)vyPm!gOH{_AOaqyo8pl)1h~E9fzLoNvFux8LAzPw=-V%JJ<< zzC6X3r}=V_FW=a&m7OqZCN=vvzpjx*p|@Tm%t;QBW)J`%s8qUIFZBkGk{sVP0r|| zGLz`W5JMX#FJdNYza&t`!>47(?#K;vz{=>twvK;NOxxI|hO?Srx6-UyV2*cL=tK_! zB#Za;nX(>UIJAL}7b}Nxs%7y+?@=O28lBa_{3sD^{G%xA1Ty^iBnzoXMU8I^3^~y_ zd0%I#ZNP8F z+zDr4t*-*x%K_b&+pdsngtkFmBpePZF`0!gv{S*R6-T+p4+i&4yP_Bm%TAHRwbDqq zM$E5Av@yf#qvL+U8dxlEc|R zr-#dWv7~hyl~!8P8hMdf9Q#;EVuXpT6@q*BiB$=Y-NkT`{sbtJ68mflvyqq3rK4se zFQLH(c-PJX)oam(;@XaS_ZmNlZ+f~0`B-2#C-gWXeZ(J zWI+$|k5za$A5ZYZDJ<_)d`A`Fx)Q&pz%X*CdHBZsB0{Z(K3+m+c7S4BBWO`Jpf}~1 zOhzD79D;EarZ$`L{TxO%A5jqZTnjOiO08B{C4N0@%qbSX!4jY1W?+R4%iSoEi;_rj zYk>#}e{&fA1seVqOTG^uZA>L&mCI*X`b7|l#;1NAhfh_U7sF8Efvvj~*KNqR;p==N zvki}>HGLU)5KUl>r7Vaswt%21tH^OgrjhV@Awd(FQUVj1InZBBWOjkcl0be0#Jo7( zP!y5*fFe69Ky8i_)TVxt!IMh!WQ?Rd8PN%#;s_@GF);F%(w9JaUI$yyjj$ixjK+Bj z+UBjOirdhJZbxO`0Vd&YfnHLf8&v**5KPl9psqvf`z-R2q8`Z2(Ad(WehsryEC^E|c zdBh1s(o5V>0zd?bl>*zUfjj{qPsRYzJmcj~Ad0FoK)&e&a)sczB0v;XWq^DOKn}$K zk;90js#2lWKSb4%Gc!P5asZLt^hy-yRUoCLkN`g^gq%e>_1CT$D0dk!fem$Ov9YAWrK>orB^Y~1Nn~*AhLdMLOyPGx1!o`EBem>^fxhpcmfHwBDqaOrg95@!@|W;W|PBE z|Cs8N;RZ4#4CEgGz$T`u& zn(Qu>sXkO9Z}C`MwyNqR%~scK*EbcflDWx<8^vRD|Cx-Wi2fM@eus6-@3AEM5X+uF zScxxIBXSDQ@1`#cKD&eNQHh87?5UE^He=9IOH{c(xR=wtVg@QvBgK966~IW*0kM2w zKKp(ofE5h({RCaxuu$!_HY?nMs*(lD* z#PH3PV885Oaa1#Ni85Ts$nD1uK4;EbhWG8d&;&p{1~cif?ZMdWbBummSU;E&qLxvRdp7YAx`{iq3$VG4~Obh2FwIwWVs9A=K)$YD+$a}d4z zK%^;7*|Hdet`Vnj2KsTZXMUtAJLFIG!aShD1>pK|u^lzo51dgs;Y8DF#P|`|xm+!4 zO`hdawt^GFNr${3v`5F80*Y@T=DBW+i+RRqhv(($0$?Eqh>i0Sx{PBFMk~dBLK3)AjgLfC<_gSnR;}d&z#V2dXe18mU$N0pCUGd2q zcKIGUGKORidMJIBwltB+4q8Iq~MZSHJzYX!XA^!Ffe|w3)z0BWU=5Md?w^#VvtNiWN za(w$XUtZ(O>wNhRU*6!$n|yhTFK_eZ9lpHFm+x}A@3EBcrRn`NeUPR<5j~L)2`8OW zJ($g2{`;Y4u-!nmEjc4OdDlXubW!wN3919t=GvU^AMaB<^*D*9twT(Z7De3&x=$Za z#Z0O|>yCd+F@3j)BeK;xc`3LUx-Z167Bh;lkr0E>u=!C5E;y;zD8vCmo6oC>7VS^g z9-SI0qM~PI^mCO4mH{^B{IQV8szw5ffojXDtCs?k6vmyrYEUS--Ibu-$e(y7acsGW z-B$5Y?|LX#h`T!(Cyue&2d-7N151fD$u*d?lE7H4QWe#2*XF1wUe#^Y(j=qO$jg16obf5q!6JFyU&+T&RguaG3;P~JEh9>iMAr|%lDLo=8Ats5Vb^p% zv8CP-70ajwfgw0X#X3w&d!wcV2EZelnx*ju#!J&d{BiMcXlfBfrr2|%wlk``tpQpc z>Kn;$Wl0euYmrQ@W8jN0xOI-9x)>5yZ)|Fl^Bue9a;=B;fl^R9qo#1X_>|}O=?B=% zHhh&a1H z;z(=;?9X`_92&VO1G4Pg4D6rybvu6p{gnaf@<@g$o+3Ei*lDtWYAZ|trv5+rqo?e> zh&kPP;IXC&jnotSo!M+D&yUJOM@*9n-gc|tZA<8cJXpr%&7f&d=0_>evZq1`;sZ*| z!mhv{f}AFQT?vM7RR^fqdJb!y{^V0m9EE92!3O7Pjg*?=Dp9|3;w$hS0-Ip@1l!xe zJg%U1&jx#&QU^3yk_%`Hi)__EnYxv!GEuz&an8s6#+*20c|2G`By$1B*dk+GDD#IV z5rwl=!?`#B2Q5d1wK8_8M8VvV&bA9|o6Nr|RkXaQq$~$%N46y+8<*`I2iqYtF&$DQ z=h}@78{)zze|O=rB!8EH+|SWuk1ai?ibjvPn+8VUP_1Wo=*2}~GDc2hHxkmWIr z&+5T}!%P0+=-GJC!4nJ}j3-riQXP0Q5l z7$C0z$g43x?4Aad;Vc=~fx&9pF(A3K5E1eVePWLg-=PXOfK#sHBg=RNjI z=KwN24CJqzKyE`Ha{!qh2J&+N`A;!GKxT!3{F4*NeePZ}D-7iK z0PV+rJO(xxJzVq2#A-av0hmW5INa;yg+mSnG*(*aRT`&J*XlF zM%FoDAk_deF$Rd7*F8)bUsJM%)F{2ZDy*on?dJ$GijSQ%gVuaH8+%Cli9Dpph4sXLR->bZ8*UxZh z!N69iN94h+5EYVmc1!!;G*Dog6rPR+&*0M=yxv1i+2&x^5h`{h8RLL+_#X0xf4a*$ zd^KDmBV$V7(`J+}$Wc`q+@i)TdJ5+I@#fbSI6f@mxS96qXq-NRTQySJdLX743TiYi zJ1x}m@R^$e6xNrZpDeN89aiKC7GgfI#?2SGKOCm^(~}HECh7XfU=%X8uShhuTf)}* zLz*zRSD2qXI(ZnNEIA*Ux&3mvX~rbw4{#?qwnKyn27M%6`?{2SY8a2j z*ZVBHX_3~~PQUTj8>k~ZN#m9kvA|A_^xk6Zuj7pL1k>vpY89Nb!A| zOsKqFh)t+9P;sUS_wpV*`0-k`4u5=T2JVM(zZ`cnVeOig$G)IBTd^r)BZO+Pu*l8VRH$usa>z*#PlpUDX|NGa@ZA1x2pwE*R?DK_D;v?(43 zd#$l4o`v%_yaYruP?6(oibldlAwk;|r35xooeOIl8=+cZag#s}0X9$4t4Cu~RF*$Z ze-Tn49P1hbR-hC{;A$MOnFJN54#yxCprJ3q_T1B8j$MVrEu2ef(OZpkMx0Bwm$D~7 zJ~lERmgW|q+lZ&*XpFMxZQ@fS=sXI(DM#NaoGFD}&T`xWbTaP&l~Xx|je{&e0ek*8<3wVt~jF^_i7WE&b0+iYjqd)KRMV*qZHF3)L9MB^pcu2Qf%O@R4%28=%3RAqOXrJ6ws z&xLbB=5n-;HpvYrR>y z{`Fr@CE~x+le?DR7SuAVNxg$A)VtncA61W~>G3l5MwOx``2NW>J;k1-o@V>k(-rW* z`AxokhHtUo7`~|ZTi78Ld!;(Wmlyc*B4391@)BQO<_mTgAEZ}Vz_-)%TAE%@(|3wB zo6)nsexWV(*T2LdptH6{koBY7Z+1AWXA?CdwdtZ5`$%YuZnD#t*qsTmDGc9IHbF!7 z74z`U*~osqs9HWr3n|)WID8|ZWzzGD*>w0(SUx8E;5&WYQdHb%4LpAP3~q{c+OP_m z_6)+%MrzB(2k%4`IwQliTaMEak!{S^AIDp3{IY57YsVYP^jV*^A@h}EA9zQur$;{4 zr=1%06DbAVV5*;?-9o&*mAD8OXeNoM=)$u1_i#q{`s;G=U8dM??L4QiUB^VZ_^qZ*zt*$3j%rJ6QuCiB z_HbB(M`Px;w_T5DNrp|=WxAk8XxdL)dyQz%Hr_JvdXJoNNM?n-}ZtcxVUg z3)n4kguB*ZC*=dETBbi2j>t&O2TvoCMrNYsE#6v`J=vX_TykbIvkj%vU$IN%h$#q^ zon6Jj$u7pyY*%0~LY%#sk0)!`v8H-HoNNbj8|rPe!Rd!zT^dxaMmPc4`3ok2x0oJ= z6trPqXI4)}tmK8C+1U-wNQ)xb)nl<^PO`HU6tg&-rC2Epd#Y8D;W;L5TliEfTj4md zCwbY`vn~rg*t?FDYqUkoKkO$uDl&4Wyl9DB9ub{(B-_|;wbpj zFnc?LEl{7&U@Oxt%Hh~js#otr!i#h=bS5myD_FI=E2l4KQDZBW9NDYZ1Rf*n*xtx_!WhS-;cq1lJDlh zCW)|cKem-A6uvCLBg9&6#X5v~Ng^iX>Q3{)Kf}TimON+|?49k~p$JqGK^7#OOs*y`{*OoXPdh1kgQKQB$K=DIcKJbeImsa(EZLLmQKVt z@@j}@&OyARNf9X=TT)A3L$y3?6>+H#(l{iOKE+s;4MY(s2FPPhAo7(p9610)5h(`9 zQvmXG3=laE=vUT+fhdP$2FSBcAmZgTqM-zUD2HSQ$O{1SVhj-d;-k-D@4Reuc8Ms5 zWCqA9P9Xd;8yPtOL^vW#fwR(8^Bn+rBL;{ZvOKz)_B((mcVh;~J5C_-LF+k+><4Jc~krGkoO$?CVIDy;) z>eEpo>b!{o@=pNre`A11n%l#A>nlo@?@SD@zRKFp#N>@~CMItJ&crxD=}heR7+pUE zJNpM_CuyO_ucOlp?P4{W@~ON7?BfdzZBA@b=MoJww91*7DT!s4sB(W`F2|`Po;^yi zVV#*--fYgF4~sdR8QQPoS1eE-!4_=!B}gMR)IVDLL@5#fos6i(t~s^35aN$cgcGqe z!J*g*L34m@xq*>BR^#-wuOk*8U&TCP@zIU#h{flK#m8qN{@5)(iKh05Nhq+*p;C7W zwF`CFHj4sgf4sO`^ldT2(IYT*Nn+c7I??>c>4e{7= zz&hqqF(=jsXTIm3+FDbMbosA2dFI=RgASJsX7Ot6{=DAEAAZGpXfphO{hoazO;423 zldNH36UEW=beaxUz`yf1dCvs)Q9Q%m+UC-8eES@Kd!E0+bK6|sbK6`x#Lw_{uetOB ze}f~pxyq4SIlf_A#a!N2F_*Vh%%xZO0)K6D*eTA7v4d5yEr~2e%Y#ROiA9^CfR{~2aAWxN81!zI(9<{-;X2M z1`;)?3rPW2kt6ifR%=5%JU-Z_*&^FM2~TW+at}BIa`|JM8o(R&%7*b{yd7Y;+bKS3 z-)s|XaAwPfeIzeX9D*^?4AEin(>5c3KyYOC7K>4NYYTK{<+E*KAU)x^tpo#i30PbE z7wyC?(8YaMZh2ivV1wmsMh`2LIBn;`-{>!a}Q))e9nBm9I7Hg2v0e{OF$ zXowCqp<`G9p=V<@JYUU*VgO=~Z(>rgpL(= za2!j`FIWzQ);>UscK*w6Vs=U>-UV=72!u7pkIJETT?m>bH$s7mF`<}OJF{LhEd)3) ze!HD(PYYoQM2YeL#wX$IqK#E5nMDr=bZ;dHBM%IX6$tkqKSHe57}2&yLcl*Ud;)%_ zH3Zdjso4YQ2+8=uG9$$N3`HP^Q!nOxqyJJrc1`eLC&A?8M%bj#Z28L>UgTXn&e6*tR1%r>HVHrNT zmcgm7Eg7(Hr8XUwXz6LjeUeHQMPum-*reBm;fsgKVyU*8P+8nkphew8#DyGv)rnSF^N$O`%E zX^60rk2s3xr{_Q$8Wx_Tuz2=ZhbU{nw&G1(9qe*WY#V68k*1U&;Nzh*Gn8{Q6nPAh zbG*M;9RKTd?o+~twe=ocAs7DK_=d7 z(u_lQDQ-TNq;R=i8YnlkvZ$msnV%FlzXFolIar6x1QYo3P}&Y;*ie{0f!~G4lE7aA zdfFTSWwM=(E0VtE$Z-U|k#Loepb2~_fho@2;vku)&XGZu_s8K>j&mlR%3Y1-u^;7h z4NOWuDFKPBL5am?P0QsI1$c<>$juKH$vee+MAHhyfy}A?D~^C8C_l z86dxM0{ODLM3hrG1LS`L$ZukR$T`jv!=h|&cGW1Sat6phI)O-nKTu1&la)d~J0Eu?z zh*QR;gT39C4GQOu*m-$4j`Jp-{Rfmi>PWNiAyelx#IQxkkqB*P3p>Y@m~ihn4nJza zqdGjDI1rBPgzr}L7SI6}>{wof-@_RS=cZNoEUp!>pwmJ=Z5s(2$Il%WTmJ*YxApI` zT8jmCgjW7IX%YK=t==l88&ENZeICpF{+{5v5N9$*ZP8y!XQ^{^$Lhrp?#_cJx+Q@aORb=iFexm(kd? zzX0FiGw>K4VG&1IEF&DZ6*m2H1dwNOmLUbBm-}|(50)Ea{?A7M5j|tvG~az#)jl*c@>Ij2K(2!YcJ4ma2Ba&gb}WVi?G{Fc3aF z8Lc(EvPVS@99S9`2GRx~+hc&pmgb>Mo0Y8f$OOZm$e!`%X=_Txw|{U3$BTOH#5IS8 zzr&I}QDw3O-9o&p0(Op*giA@zWZ2G8DeW9AQZ~<{EK%itd6k0z;wmkH!Jf;QPtfq^ z`J!iWKii03(UmsgV5R<-|=V_kaA^Yd8hMf2$C6WTRSWVOyJ~iD{aYX6HPAJo9bh znj2pxGB&Y*o`#@S;u~q;Nl!^a&XFqwbXhsKVer~cW)Qgr0mE#7%*;`RIWtE zuH?#rfoUBmle`&UCtY{cYa^DiqXtJG3`4oveJz{6x65>hXQ+i(*8?MTW=9Tt3e-i||Dim4ed9VQXd&RFA;;r2LvJgu*!zO;!5)XH=#!e;NkL$P74=?PnwK z{}L^DYt9g(P;oCYjmn9rp;h*vR)p`D$`1AB8J3-(fx_YRs5Q_f?3V>jC9pP5SgS=c zo8g^FY09ya{2fa7#9KKtP#w<6@Lng6>Wh(Sl~93M>r<<5vf{}5iKcDEL9Q8CGR@5M z*)6`CqkQF0M-YBrsZmhpVaylX$8u1y7V2o&Le>nmO2nPZ0$AUaZpGPqzC+*SwZ7Ij zd2z2DjbOVO?(jwgOuncFe2>#Njf9m#rPBJQl)(C&-cKUkinFY1kRP75<`<=Jvg%PH zRIh2kN->%yqn8@ye5fXjo=Zr&d8orYz6yG83VIFB#!;%2^U3?-WZq1{_`0RZR;$QX zxL~AWDhnp6TXJl<<7XpOx=mKWl=|R|ZYlNDU=0nC(k%^;3!OluVj2OWbV~!|5&*e0 z28e81@Vz7SRF>6>vSQt`8prxiimH|@R;rd+1Z&4)s>2dpt@4<{bD^$6wOlT|`LO61 z)zakiC`(kiUtHy|BCwO666mO`Qu1pLq>9N#8&)kh;8*mW^M#JdUpAcUrD{sRlfXW~ zYf6Ok|COT|$bVJzs|Nno+O)Z0N%Q)3^&kEK4rZ*VOAz(DHC+!e$MU0Bniev&v`R-*p#uweX*`3rew%?_Y%}BB5yY61q{k|CL%_IE8KZw?5HV3t9M+ z^MX!cHk8YR6x8CPU;^*ows+;bfX{zt`h`OD`2L^IN=(3X5SN7Q)yCSvXk0wOx#(z;?cK%`!i&R z|AJZSZY(wxoga~=^k?r*Ec{wbovX+9KYB@GV%8X;5;TrR+{uOC=3$cC+B2NwlF|vk z+Q6jqQeR>^{t%@yrFk58mcs6DOj5tQsraM{rxA8EVAA-9I}_6gjEyQwk-aEl7hHI( z2=B8q$@U%`Ub4ld7v9Zb(%bv3#PsZeT9>BJRywm6Hm{rHw!A*9;T-Rf&_TB!47T z>+J9A+L++ zwyFDISL-icXY6nk^hXH#?FEA`3?exFEx=zCw72bGcUR|;qnmrXdJCnYlVN#$)A4Yu zJTy|;xpM2~ElrJWCF4%pXrXv2T#0*lc+=+Vn;P54!oqksuxal(3cq9XmcH#fHuZ1W zx^nHIu|jb;T-iP{Haap^7>C4lO^r>B8kn1h82~miHrSdRqDh80bGCS@P#O#?1YO|< zJzX3rjTegJ<^GBCP$?{zD@0zG9=X3z9x4tL#tRk1tf@lGSfNxrRYAu3bQuHTXkl#p zOjsJPAZKm5obb%(@W{EaQmJlCmvSmB47_IofY6F6;MtHa>GVkd=ty~pT22K)*Q5&? z9vK{QB)oL#{Hup%GDd&br%Tu?+f2J?Lz|1kg>w1zU;O@mL)2|-O_p7qW!Gfc>VPd6 z49E9U+fY$D&_)8bXYINkYTHrEjW&NUg?kFE6XQd}tvy5KaipC)GBj8!j8BY(0oxx7usaojXyYQ0LnluT6~kS7Aa)jI zDN1?%S~p=r*X`b&WNIX9E^^vFa%QwpIw$KfVArSDOVlkoW&Z&5xq$A9x*@eH;*to~ z{1~k60iz;@G0?U4jFbkE?EF}=6jYU*4(a5!Yh9=9J;Vi50MB-cNa@AL>6H7RMo)-x?ZeJra%$6^4iIEA$VC^#Kc5 z27h%JtY*&$uu{OFhtGPJ<(~~Kho@LqAk-|}&$FiJH-(?Wnt8anY##rdPfG~gZ($4h z=OX!hv3$P7khc`!t}x^+!|yBEavpC5TZuFSb`?)~l|AkMNBipUJw2Z>`rC#8DWzj~ zMrVA!(1<+TlV$fdu(OTG7!4!9HhwN(yHaO_D3h|@%sgg`g>tblfK*p_Qf(IxkDeQ)gzMURdVqXnloknv zVSMe6CX{A(KCvgVF6VK2%_K}?^P}>VN%PXY(u19s7?#=RfIPj7L~^Qt_%Atm25h!W zGn&V)ODppDXo@*TAuoz$4F`Tx)siGMHOM1V%{DBWoMbKNxhY@^Jw?+!faps-52DuF zsK8QNtsf3cgX5>Dr7j5ADo?z9VJXC}BOKtp62cqGX=0qwK0+ORP7iiu2Pe+-hhs;@ zfHSXWq*xd}UcfYl0Z87QF@9XDceex>&YZ}NU%q1`Sp3&^%{d81$sv6nXra%1HVK>>S9 zZxmYOF3DKc@1o%+b9M`+YcZ*q&jR*n{AR5KlOchRoMSZPrp{Pu3{#^d%~#ewXTCiQ zZx-7e-yAR2jfk(-4}Ee$g28?XM`y2Ud6(anXPvAoVAtwx(6Lf^Vid|o%=(A03g!#r z&a=gkuMSau2S>(NMj=+73&%H;j1T3pk6DywYuL4Uwu#~1R(4&U?WS*g=w2J!Tl4lT z&w5yIz&6!1Q=tHKX6!v3uXJ5ISjC$y<;eKh5EKOKj$!b{JZ5hfbelN!FP58A0d%~qJ_#9A$4y&+-)ZbQUILqvuORwlfh$HHo_%vzBg54*(*i}IIY*8vUf{;tQS72$7S z+q>BgBdHq^?xv9KWV;{-H5O0eW`7c>Si}&Sxy8-QtwstmGd4i92$_;mitR=$S&AJ- zwsw9{s+3}wT(0i-?xQZE~0z>czG2y2(fMON@LI*IXbf z1NIK~P8oTR2{G%I*#$uSZ~{cpj{?@m-sJ((-~#!G7f6Bi`+zjKK%NAUk0$^Toit!Y zZ;9kwAfNIA8Ss}#&IR&m0C_$Ei0JkK3%#wV(FO7w9w4HAPohi){jI3cZAG64px;aY zL}QEHiuSNua7Uza3g3p$wos|F6zWNR$?O%Q73aZ%HG4{jqx#+W}GsfV(1=c z6Y`6#=j;8}#hwSCkEFj_5jADPBC!Gt5i=hk{fDUqHtsz<5FtT`ZI*Cecg>hM{_iswF}~N87o$KM$*X^_%3i z$nXng_(e1#8*4U%_ z&%X5C=YHP882#N+%jhmEPgjl2xIf>B{63Opk2bK!Xj%7>9CkV%rOV@Vd4etWN{r3q z6ycJ_iT29}t9*l^4;(xX81)?-}X0H33S3;#us; zFJiMonk@SYVzwk=U_k57oyjPL89E>oBGFVer71C$m5VZfX|+#GvAiXqK_W(vQD8lx29>-cq;9p$@hpQfx;yL##?;w49ON+>EBjfgC=6TcF_5p5%Wq6p=~W_%JYg$J8SUMs$%Y;nDgBiP1M zUX9<^i|8Pa0Aojy-NeG z#d!y(0@2KI>llhmlRyz0bsV<^8`TPaMX@3?p(7`bB%rn?BPX#@TEcs|1jR-P3B*Rd z9kd9sQSSt$;R1=+C@tneFOYY!LIlJhe`X4uIK>v^&xfEBzhD5Vmsz1~isl-C8Yy~! zNH$6XdCUuB05pWig{7S5EL4VRARhyeCli2(4iK=DULcZd(m^_68RQ@d^-V% z7y$!z*4v8mg7nfr{=@@B)bBZz$$kD-lo$M*2J}Aw=zk^vqG8r&1 zCKu|Td7uXDef~0Qa>t?{0pgDnAd2BU08#B5i)On(e&PjkzaPkK7sy`&$loLY;WGz_ z!V~NPlnXUyizu9Pi8TwNP*>n4LsTvrUvun1_5p~flb!X0>>&utu!s3PM?~R=@Dx++ z1yJAOi>*pN@wv~Bt^!F&e>Wm(+6pIbt?dwmo3acX;f5^Rh+PV31aTCpom;Rc5P40Y z70h7PYCAH*5j>O#=O`_m%4M+2o{MBYSkp)4TEF(z@BYx-KX zK-$T1>s4N=`$s0q5%Dx%5l?&vapV-tuaG`Jt`-lxz_ME6VQtZeO-`$$ni7b#REm;} zX{$6AOL}J&rI99_z|)Ra6!nqu5jrAAoSk)JjuB!k3_;A!F@lIYx^$0BfW=a@p2lw7 zZjL0L7#bBe)Gby$beCZ29*&_VKx#-dQP72EEvS%`6@3;kks;TI_9%#=b$Q+MLuw>O zqictK{P-A5?$^YsvM3(4a($N!XTgo)Uh7trH!3A;@q2Sc9f&g%a*KFf?W0D84N)aZ zZ{Z9drH8Q#_jB^#m8SM^uo?G>(xcC2Y^>;$C_Vb5jTL<^l+PE*=Zi6L)BPn<-ctGe z3i*5)miqL3Id)w1xe}W$`do#L4SmA2kAITc6D{Y3fyz32++Fc zwXNj8WEI#H-b;GBL+o~6rkbon%0 zo~O$TS@szs13#N(zma91%d!`Flc(cvX$Q4_yHL32|6P0)&8DBj6hpt4sH()`RmEqJ zE*vH7vwn?ExJY7emO#^2c=0V))q$$x?9M53UdP!$9>mWT@<7!V`gR@LmS;Dyop~Z#@?c2z=b>@K&t7_Z zh`!-G2{drEZ_n~{s-gkzG)FT~(%CSGPD#MTefmQ4B^*bHIXwrXa%_ z8S4=!GSo&4NiNufBLBSHGSrmfk`7al+kr`(SyDyhN;*oxj)_bxffRHGT;GNadzdle zzXUV35xP;uN6h5sgJ`2Cj`~pKBxX!Ycz{b#%ov?8qJNF@h))1&i%#pIYGCv515j0;3EV;aa4ULb>@kwjz*h-Ahz zkWT{0Qwcysr=jyRz7mnlma$Q(hhX&^rbkbg`7!e=DVYwrLLCS+Ok zTJt3~SI}!3%z8sqE*hkBpwBKqL><^OT8=!z9_62p@f88lYahW=Ow}J{kIOH%n)m!& zd%xHUH8lOTA!^D>%L*Y}M`rr*?CH!y3O!8cU*vu|REamIm7q?#H8#>X%EX&em5GM1j%d8%>cmF$yQ`;%4mUgjYc_?5ONYxT|)3crJfbzfk)rv09JZUiCh_U*( zu_CHTcQgyjpbWVGCaedSa;_iI`66vD?vqnhIi2ovg!u$!Ji0-;FihRvjwnt?4GIoqLV zq$(mU1j20-L9T}&qhb%v;1RLeQ24&Me5b$o}O z!H(^2R8Oa=x4&{oxa$+vE_{e*SwZtjQ(~aO7&xu9^ag8*pe(;m}QHy zZ1Lq~N=k9Y7Z+GsSnCC`;(3cLQ!MMZIYvVeMA4)s$qF-ECF{2aSSk42jFZ(_RaS54 z9`v4)3~RAF#=k!K%HKSVPDFn+QdC=$a_a7sF8rOo@ho|QxR7NZZeWkl2>xgeGxK9~ zfn$kgaxBqIjwPDOu|zXDmS`r&63t|@*33SUWuI)s=TlkkR3gissaAKvzW7gH>C61( z-y^T8$(iN}lQwFY4i&~cg{V(Zht+IS9Xqh}qu7b09JW8Tt1BYNy6I10E4MHzfPrW= z&I@6xJJzVKZA%UBro5uALL+o6-wdS%&fhnxjMS=#nWZ8k+tNO(k^<|EHWrJ@t#_m! zFH%qz(jCrT-DA{O42OrsZDk|guI>maXl_fQ%%0)mO}jAn;C{s<;-Y6O(F*b$bweg% z^#8+f-cO$F$vzSWxlZ1cQB$k@0*we)BUt#!|38V)&bv3Ji8%(xH(Jyb)P7NuNp{$_c~}I~`iEsi^l%bGk{bNZ_fWK^4s;Rhs02P8E$kg>6q)eTfOi zw(z6XagxYM+6+QJL{@SNra4L6m=01;0;Wm^A`O_P$VuxW0n;o^dy+^{W|?JWM@Uj> z(Savb5{cSCI__i!^6LUkwD!Mx$DBYpTtQx3k(eK_f zvulsm>toqfgOg{xHnU`l+2Cd=Q3}CcVpOC%=q6d#Eitm?#z{OIL|*w+S*X#^cSud4 ztztkXFZFSeu~TYQOQiC!8hp*V+Q*G)s!CmLsNR~VaxzIhZCp-FN4vn?#Z+MdXug%C zlIb55IaAip9%d)=q_fPEMluf-*Eubh69Jq{8in4mZOs0fi(|@@_%u>#@;Bh^-U? z)<7qqKfZx3+Yx(5NX{-0ja*&C0PI!(ZnglRp5g#*5#lpk#U&(>p85)aK;nCibe97U z3ZUJP*+FJ28lwmNl(cxQWon$Agv>*hYYDwAo&~-TF5&P z$)jC9g4;s7+zMY8+EnitcRC;(hX=3?Og7ci5+=9=rCk;hNa=eQRD7ge7Vg1qAdz-i zi@DDWMA!@pAaU(7#TMG-`=P>ozyMMY)h8XlrfiBL^#fJjq4 z4df93c{BkCoh_si5%z~J5UE|(Kpyu35eA1bAX2-mfqVi$KA8YS^e6J{P4)xs7#zlc zNK-uxs}z|;lDx+XvR1qP4zU8?*Yj76M*nx7*xoeuo@JyEGlI7B{oM;AsWmkLsTvr zl5+52aX&=VVaOtVE}7iX=Lh)=KvW1>(P0jGm^*-=FSf>a%lm%X@(rAGroZioTJ6lQ zmSc{p7ycf|Cp>&V*!!%@yVer?5?tQ3iZ|fejqLKSRcRS7?^=Z;dNsJ{jqucVtrm6H zq@+s=oSHXD6?Qq5NV|DcCG8MjyQ;vkDEwXwa~JwtB3)C^Q4;!Hm1_!23~TsgajiWi zT-Y${m2ZFmq(6E|lHFTln@IDGmdb|EeJ`9dOT0iXB_7SP#~Rp2XwhApYkBf7|1@|& zVil!x`7C?BYF03K=Z~*A|CQGe-bDTu@lG+<#FXZvV!jzT^5-&Lo+=iZ(qU)K{as9g zr;O{{;+``m>93;2gg8B(D3+Qc`+gbzD6Dc%^-8hC!t45`z)&#T3{Wda`9_nDb4+lW z2Q>}%t>WP7RHZ(i7H<{HEChThVsevH@>yYZX6d;MJ8(R;0HW3)SJDKI$3rIGt17xrfR!W8B&@$rMp#-7begTJ%+O z3L<({jhSX;PaD(YUA`c_%dci@^3X1C$wNc7L(*+9cqgU}KW`%k^u6@$5IY>O-L-6& z+~Sb_<=bnKkx;S~cByeLu3As?M87S=zVXTvpp5uic*}H9q8l_EJk8Tnlog(nS9&6t z=q>&ZkrJRB`c$l0D8G6qHG0CmZ8uf-8j_;-VHazu?Q0H zgK{H5xk*70ig*f33Gc?|&5*q(giZOa06&A0X`>i>MT~Zl196l=B_ZK-DLDHqIA{P8 zI+1PsZOdisnIZE4z@lZyr#`SfR=J@8#U&jS`60&}hbu_Bor2vVGO-BZs&qQP5$b2n z*GHkIGumQ3#3}7^N$0_6A3^>w;-qUgQ%cm zD0fYzMyElvljl!(fsmtkkKc01*HLW2U_JvN&n5s7oh`r{a^LL%5_3BLf)~gzf3Gd& zVh@^m2A}+8(2}pyKwbopmlA-8o*c**+`1(ab1DA?FA#bkuBSv|F6CbZkS`_xQGDGP zoNL6ZCgxK9%U&Sj{kyReiMf=&1R!5a0HV%N-Q%sAm`nMudx6~RubP-k`ELTqYY9Na zs75a3eeaBjxs?Bo7sxp{*6~!0dB!_(V{f!}#@vD4)al52E`L zP53bX{1BhJi8#D~oMMLjFq~b8FSeHW?$gDGPJuL}zrBcB%aX-i_BiTclSKT_zIS$a zD%QU8Exi@}HQvFwm1gabf0cIOzjB%zi^*$=jU&Qhb4pvV3j3x?>|S;6m`-y9mG3jNjgf^=Ma??Q3BBX<^!(V>xz! zF1KY_Pa{5iv+Q7&9m>+axjKJDuxk9)gWvsM&%(7ZkSKmQf!3&WQ16%Kl)K`YGwI-H z4)SK7qA|{#!BI}7b7B-%mCGdk(HJL`=2}RUa~hl-s-Gwgy=Q{EstMjCS2ch#Di10} z{(e+WasJ3;0%Gdn7;9|`JD^L9JFA(6hf462jzp0=UPE}I{+C`N;)L_7f61@35wM~Q z7J5fbEUcw_GW(Rn zSnzhaDI5B)BYS?Rn0n2?$uZLxkUlUXk_Sr zHNHcWxI#r(O%Y(|Pq(f;0X1V50mS?L=*5;=#S-~K*@)Z1T74C?k6Qah*2CmjR=fg_ zA}9Gm(GqrY2}=7VB#;V5ISnO^Wx(ICsewe+>RQY#ULZm}B7hhwmYKr+A;lKDo(`-L zIt?K8{0svgBb%bkF@ixS8V4e+)in@00ue6}p&p3=k=E)O$Uy)(lmLX+B6h7?xSJZ1 zWtqEXFR_MKaWex?I;whB8lrMho^pst{zrwUWN}=A;_c-vi*~K;c#5VZbSd=3-nG^r zXJcmr#^{eU!jtP-&O&Eymd(zxIa$_>4r7ndZ{Z=|T1qz`&{Liq5+^zAR2VZVt)FLL zomPA7j=sZ09^1=QN zXAo(R(aMKEIe)_a8>U)2pf#Tw^K4FvOl%i9DT)I4*8o<%&9$;3wm)eGjjd@Z&c^mjv*RVG<3PmLX>ZANF7bv3YkG$!t+9fsIzWZ7-B&FIOhod$A>v-s&R zud09U#eZJ@{g-b*o1@aw4Z!P0qS8LYcPLQ#eT>%GWC29u7H?a&kI2Y%rra9LCOmy7 z(IWe3HE!$$+%>srL{(3*s7bw*UQd+eSs4N{ugO%{zoiocxU!jWP7rV5tz7 z6WbLuo1;q=r+%A?((5qEPT3IPfZUWf1Z&xLxgh}Sjzwz9swI|VZoLq&)@tGzMNwg1 znEdje*74jI;|X{}T!cA)aT&|`rSuDq7-6_h-|*gfEa~-rVI{`LtMGeONR|dF8c5Y{ z*bDHuJQ^+k#eu~2h@e;9(ej^`o@)6|Yfa?}kqi-N1QzTlMNV4&YY98~YE>=&g#=oa zD}Q_2a4MHh7@I(%<-Zn#qrV;?c%g`lY%#2I`A@OU0 zYarcTAmYUXqC|{+h+O__AY%FN2g2(T%l}q>OqygREdMo_l}6#_qCDlWW+xktI#drW z`^k`lKHH+@|6V*rgKFn*=cX@*ZwoRD>KYltTI0tZz55V8`j}WcLey_B7<^$6f#{DmuqF&nG)Q@Rnl}$ z`ybl=2ok7wR*C`Tu>40c{!Yd?bGCS@P#O#?M#T$Cji__6R8AQRD&bhCWO3vN(}neu zpX&iwdsW0pXHmpI%HC5|h!y_LDnX^Tre*$lx=h0lO(nT&l~`T`SHS`zr94CB#-fr` z>OJBgmB3)SRMQ}?V%bsy)snxQF4@!yRf2qtlFJL?-_r&2xyhCI(xvmS9s<`vf7eG6 z8GHG`-B=o@6s=l=wF_rmVn64m@E`4~zxOn>PxQCVO5rasFr=g)r^Jd0^nUAN&jWx@ zf45o*d5S1CeMc@XK{I$Mrc7FDy?>_hQ7RKn0-WjF-z5L)yt7=G1W-KK! z_to$^v7g_Vo|x#Q=J{WL4Y@Bu)~TGtV4qfiiLMU)iMg-i(24cJheb+a#uyA3DYbvpktkeW_3M9EAkWw1X>?zwTD)Zg7#eNvUva1SEtH2&>@ z)HJNIQD!N|7kfLGYuTccUGa2n$yS%1%fRaNe)fE7dgef_N;Bd%yxDVApgOr9e!iyU zOqHQGC08}4Q~JUeQd5d;V*KsU)g|dPPP|fG8nSKlU@NDRm|0I^mf`<4tQ>zpI(PQ} E0rQ2lL;wH) diff --git a/lib/jcontacts-core.jar b/lib/jcontacts-core.jar index 680b3d15b6eb6b3dff401aa9542f41578fb194ee..a135b3e153b7ed6f0b5f5d406f2306092bbb2e73 100644 GIT binary patch delta 2827 zcmaKudu&w46~@1_56|x1y9OISz^}Ez*o$A+_WFhK`Uzf}^{!uldE> zHa#4h9X?Xp`ec1>MOkfG`JtNH3)c$mYRN}F-Tm9II$21Sy5CRrx_^;cbpJ60lXyOq zb))q9FZgEaS0c%?US7=>>&k{EVly-E-hcf~zG(nqfewLAf$j0*w)YccAT4i|Ycw`9 z+BS7$m|*vB>XfzaIVz0baQmskL1;xA!2MQiV-JLOZfyvyc(~BOH!D9+_XFwjp3yvi z*gyv*x=}!@RI^$&NrIAHw8nswQVbradQeEI2BlHDL2GH98fK`8Or^4v%2p~zDW6ig zO64iFUa1XAGJqc_SYzJmx&+KfS}zb?V-K$Ue2E# z`%Ky|Z~K0beZa&&@jx|qOge~jCccmBf)1H9NHIC*&W!&mH<&;-6)s&88%0xQl$d?Ka(?2i8=o znIek@H2*2{{mc(&o=|M@1E~Fk zi~Y`{%ttgo$9!D#Uo$_!{3P>sI;Gix62J3lW^>y1a*0I?%!AIe%%0b*sMMktwCz-> z-+7MtdClX@zoGdZ<}Wh8sCh$~MVB;REb}{GX1=8P&&tZ3ukh$qJxa1H`krjDg3jyA z;+kD#_9MOW50>Bg2J@SmZz#9uEzL*E{m!2=e@FAzn7^m_XUu=e`~%IaD^8^T1{w4r zvgx-dqK{BZzr$Agy?ni*&v~1p`H4)b?4ZBMy_G%+%BLy|tTaB5fE!nEm3vkM{DhCH ziwM`a|1Ps??$wpN2J-Dn|Gc-EPdlk~HnNjL_fGV3-@qh+t@~$4kc(Yw;ob*ZGZ}h_ z^W>Sqc{Q~2EY6a-m%NIdU0D`honKt~kV~NYRkG`;=@IMr>7misq)har%7sAI{8!y@ zpwB=*b_kRR>@?uRE&~JD?ZF=G^xiBaYGjJF~2999ZfCopFml3se zRH-r59CIPhg>kiPLXD5Ru)&2%C8u1-ci{xfWSkV37MLN3ozZZ#dmt)%lLPU=s*6-- z8_Or8bRCPGidj$0j!jsdv%}M|*{SI*1RCPs2*KMw8ygyr#7^vp9iABG{R_;-(`rIw ze*&lEU~OQ-mjq6mcoI(uJZ)kQ&#;AwFJs=s0#2Fe#CG|^+Wz38i3&U`@SKS=IBRmj zecr@I6e#r-6NT`b*u)uu#L%|r)@^-E z+0>)RTMc1qm#c#7L`d(WLrw(O$&R4U)6V-*@1QWcH+uBC z-j&JdnatTU?*`^&Z)0eLW8Q4As}_M)7ur-NZ}spiuHA(YzatG57DL@g8AS}NRhC@b zy=YOGD|{GS;lt?lpb!0Sw&Dcd=~B6yf&l}&u}5HU{6S-os96S^&p2Y!)A{mdRaK&6 zVtA4>i#iFMV)D)A(~f-t6|%nNZ|?m9T;&hqkhEHBS_VzTa9Ci-RGDt#C^+R({+p0p zW0T{D4&}jyBkq zi;X6AJW`QPh5Z4WI|Mch)N>s|(;ardMF*yVjf0%aglzslSCpogL;eg^nh1^Bv}r{Q z4-jjpahi~Jep~HPET>E6UC2Buh@;s>n|?l z?;XB>h3|hp>K>YKzqBai-=kY{mCd7%FFv;AD{OoowJ$l*ovjTYFUJpUmln?iwBbTv zjr_RV)W(mF3m+L3MM;%kk|#$H+5ldk`?-kwa`LWjH@&6j1JS@KFxT0$hER{RIV C3LYE) delta 2744 zcmZ9Oe^6Xk70174+2!uOeb6L8C~OEnlE8xi3j_#-U4Fxo0Lv2c3-WVAC?NqtfwW0Y zrL>LCRB99NR7X3bk|t)xI!)SDtNo+uXlJxzomM;3I%B6A9cOgfv8~f-tlD_aCBY#( zv*&)#=bm%lefQoydq28JuP#zbtUJkV0bbzp#hwc(PRgZ=J(2JW&h;q(Qx{sJd9^84 z+w@3$cI0ST>zVqz%JRDMibJ)vWn+`GBh!=d@e5aqk|g(yT+{s1kw&klD$@>7y=l)= zi)r7aa0>TFE?rB_T;QiJ==H8pdPJdJp+ljQpoULQooN{#*FVW9OFZp*Dp?=#JxH4p z@Aw?r1VSrM%!RfU6OXh8Wnx+ukmLP`~LmzY(G zR(olU1rMcJ?5F!tMCle~&{~T!>27heq$68YK-4->Iil8!$`zF-DqmEAs12evirOTq zP*l;JNJnI`s1i||MU{#w6ICuMD5^qKrKl=JTNG7`tPxmap^0k6&9Z1K)rm1~K;Gvb zG4)~^#Dv6z#Wec#NxQO4(Kbcfz0_@?nR?_sdu6<+k4>Kp8ndXMb|@N9v{R>VD@pvv zzUrgu#P`;Il$>}b=W$BiW#dP*ThShy_R^qk$o-3Z$fkXIL*5T^_S^UbH^tnr=>VRz z@jPBobkL?lbXfP-r6s)i9m({Hjusu?P$1`xvY;pcAFabGT8}kUfK1+ChYHb1Mf!I| zN2pZ4QJkT>9miA2+f=2gI8#6A1gX~WH<>pu4>9kgX2T8?JDv_^ohEj%I7r)>hdq7F zVuqEJ1o{1B+><4aXOQ`j;R)sk4Zp#BnE6q|Lz{zi%<%cmj%R}Tq~WhHpEleobvzF+ zKW%ulG)NB_u9-i={87W-V*W+L*OfV*1?Eo}ez+`17Yx75{Hx5rX87NjKW%tDmxTP z6$UKiVyA^&*zLz2?Db<1Lt^$>9JpWMfENc94p}%1u0cmIY{8GCGRlag-YaTU%rP(W zy%>|UC?REF zHa>i!H$Js9eq?-v=cq89n5m6W@(gAPrFxMH<;{w0RN|Dv{Wc!JX@xU39>nK3*v45r zWaIOgwGly=POBRT&q?sZ3iCD|!J{_U;KyuiLZPU0Hj3cbDCT2;)JR9Py<^9rTho*N zw!|}a&$+B>-X7UfYmMIDu#qf1-;hQ>(@!-#-jT;!wH_(hiUL+ZFY3T`oD;fn4>LkN zd#m97FZ>D(3ZdLj;abN>X%oWS8|2;>^()rAJn2Rhn%p3o(7ZfSlJyx< z6+kAk0x0?T^rNfmyI>~Qi@k2riVJ{jjo_&*_r`h5~t3sQF zc639eYWM4d$+AHiocI|Gl-gg-iGWb6jmXuC^RkLi+Le{qf+b*|G6p z&)DRNk)u6hGkh?PV#LP12-+CMF@@bW#&Ar>+d{tM3MXugV?uwYE%cR|s>JoSXcGNF zS4O@(C)-nje3T&@9t2Q}a^5^QFJwRSN?ttqB}$!GB3sy#?aM&YO{|7np<1CvDnru^ z9-x-HT)fv_J}MirRT{XIc(tAoiO7uUNqKc7%t|(!u_4^5q_h`yVccDk=Z~ diff --git a/lib/jcountry-core.jar b/lib/jcountry-core.jar index 049ef5f9ea049cecb9bb874ec9b9c5518d6aec4c..7166776ede488c2c9e08be75ae1f7ff182548993 100644 GIT binary patch literal 6200 zcmeHLTXP&o6+W|)cBS=7UR`6!U~gAou1yE(P*^M3spQY zRns%wbI#Y_>F#q*PcL3+YK{}N68+ttyF|XLjhbn0dO0(io1aO4@-fk3UG#4d{Zr4z zI~x$^y9ak&bS^WWo0-lpkIl`@sfK=Cvz^fu&9ZgVcr0~xY`i_5F?=nVidraXDYW6^ zqhk-Z$Fr8EI$Cjba);&5jg7B8a&B~e{A_A)!BPulEtNH`ifO415Qp01?QxG-(1vCZ zGp&vE{u1p{Vr#olQjHC*foNY)^hUv~8jiKoK3qqw zoC|2R!(@8~_lORyD3tJkb47)^b|KE1#s&Zr9w5tf`;mkQ19f;nF1emvP1uh=(yr^<_~wD^`8MF`W!5cIE&3G)JjJ~qJ3YYf9*!u$)w0dl zzKL8|zo8YJ3qz|4wU$)76LMPad>RwV``eGSN zNrjT$+H(6*s7EyEW;(A~m=FE7x?a|z3Mmx9jg?NxW(A?9g$U0m#l*9f+Qc(Xhr}~M za8!Knpu^&sl=V(o?~?UyS?`hcURm#>`-I*R>KD%ef@cEnGxS+7Q0N%S2p!)YC%T63 zzVMSI5#MJZ@aZEk1*Z=9t>7=1fNZ(+1;F{CoMUd>HmR4*&ko;3~IQ4MEBEmt*+ zYx^s=o{f(x)K+k#2D@a^w08>0ZtIw%jA59L2(nm0eL{RYUEx4(JDO3@ z(zznm=ZTOHmo!5|c-D%70EAj?hwB^gjt24w=gT`4jpcJw)AP%@%F5iIELr;H5 z?~|&n7nr13;S8jf;VLx(1q4~{DFPlvc`tO zdupA8N2YEcPAxDgl&T@=_L^(7Ywwy>4~EeR-O!zj2oHlC$eP_5Iy|cz+I)3uU9*(usNqz zB$5AG28JJRRa8q`HWfO35IZk$aF5AxSLoCMh6cm(|3vR?AO5Ek{hmDD%!wVz0J9#N z`_UfR9!E6H>l=pZR4w?jwRdSBWSRK1vSL-TCr%th^CFhmt_?>r>!v4>MBPnCSoEJp zl5%!N_ZkfQz75xkvob{Rgpq98zL>YI9p;T&`4Btn<o}^5IzC+(t z=)r@ab=I~5{uq#T?FpVVWb6k9$i*sB&P8SpS)7w1IHZVa?(NcrGp!oIh77H>d?~eIL zCis6M8evP16i&3fAry zP_pvNkml{ksgb`>OVi!qdlVVL{Zp=td_+xiXlXu!`vYpZ3%MqNJpgo~5@txp+YLoLGDR!-^^?hpleSpnN zKCE~hD^7V@28KdcX+>iBjfw}2dNtIjFVdIlM0`fYgGRj$qu%fliPnikrE@79uR@3% z3KDrMl*rTcOc;?vK_YL1$Pe}*;<~Fs&xR671d04Gl*pIEi6nwV-T{#x?L)*30}8E$ z5@`<-`Ee+b=fa7!2Z{U)M1H;x5jW5%q=pjd2okv)N@P8pNJo&!dm!@5eTcZBOrZi5 zL)OUQAd!2aL^Qe{wnh#IiF^nmzukw38}<|=x{}12ga5HNceYL>A2?d#F!TW>pPM+! zQOFGo9U{tngxVi)*6>Fkbf@%#2-)G1J{A-8az#onovPQw}g)yuX207_nT{Qv*} literal 5642 zcmeHL&vP6{6@I;vcD3V`tY20l*|9fHh$Y+7+8B%zJ0`2u%51D((XIt{2+L@z>}7+0pEx3soE# z)%HwxfA96zuity!>dm_YgBsB=(fjYM-l5Qwra@XOR`Ls_^_ASG9}{hMpzi_t@^9w; z-UM9yrts@P*YfM7m14QFxVEyUTgF4~dJEg!aShvgDSLJC%7~V?LM{2GUfbnaw4w9G z#p@$l!Qr~c>kCVV0)J!iO7;5n1;g^VW9jC?&Xud#xeZ6JnLJytou=*R9#qedXd_xT z!_ZtX6(ZYdp2sX z&6Rg;$GeGEHx4^BcLX}W%_tKnF4Y-LbZK0*tp*fk0)+xI8P+5rLeXfT$R{_|rK;>X zhEz5hDD!cr!s--ED4YotuG%%-TsCxb)8P+|1M~$-j`Yn2a`_#{*6U%x*+B4U=XfAl zx_ZNUlOHk~4+J`G=R!DFj_>o@;*VQ~!(pORU2|WuZIkO3EO{=ZEnaduY>l>{Fo#yQ zTTYFy7$z1z)Aks#`i#ztsOb27$C0H|DkP(^z*9DM9`TyTXi7F2cCO4FSl4(<-!XZT z5u*ft@LL)kWC*(J07Q1wYwpHlTxsyMVX+}-BJF}AOGdAAB+---(>*)^Ng1fl97mdTf>lVroq%q(cUmw8YXFr zdQ%jSMd66T6@@2?R*LpDyuXp6gA^U6=q*^%mF80U@Lp*d7JHS^NWr#TPq(~n-E48# zY~T0huS)^|4ZEJGH{i#8@JPIs!zLH_(sFUVQmWj?BE;w~*k)@_xbdK+ z@4*W-HLt3Hi6u>LHN0KnG*i%IwM)wp~U>~p9mSGlO$$hMqkoh zqb5k&O|e(#Cc>aipoVlPMoNH3%Q7CfWR1ao3UMS$%(O*Kkz1;DxPP@Nvy0H9F?vb? zj;4v(wx}-COIQ{`pgKFrVyulekW#A1DMG(+1l1l&=i^~hsAN9T7H^8QUlkK&bf!H> zd=8lm>1n4BM%lI|!>#(0_UBu5I%z9;%diaZHbQ?+q?|#2g-)&-7GH1e?Qo~!ui%6< z=eCZdffZGagWj$IkDXgRUT9(^|7)8X0&cIVJG^2ux^NsqH|I-?Qp!M#oZKI&ygZwHCHA?gBEjFLo_PXZu0r zuzAz;nL-e9NVX0(m>cEdYOzqs*0L*G8*80pBe-SrWi)SWEf=@4OZT(2MMb<+M^7O` zx9H^zU8gS~Sc5alJ%-xuuXh{}_z=q5uvrdohWF6LkBI#m9|`&*%A{<(K(F9C z;{zy9OQ~<$yO7`=sl@n+DED3 z1vTF;OgLUg*MLN6f1rW;6N4Yo(4Qh~9*1;k9bFog=vC-obeC3@uD~K6QZhQJ{n$yZ z(RznSXi~}Oq~6A)z8NBt><~#RcV@Ifn=wREQ6k@pCGr|=#SuwGiF^k{zT1O{A0Uj% zu|$TWM7|$Oq!LeLI7;M)Ao6YxB7Wd8x))0%9VPOkSR&i;MAA_rKLL@S_8{ViHlr`c z649bWeilpQEAd3MD3SL;+pB}{c$cZSCpT`n;oxU39BPXInehDHU^dKS= z%~&20_=eJT4e^&i%%v}0`ZHyIMinYLO3X zRBwN9d^~)e*ele)KrFIR6n6|H5b2p4v}TT+jKB5S>Lr?-K3Y zarDz6uImCF>pgXdGs=;9M6d7Ks-C>_z5a^SDbBxoh|-H*V+30N2J^;GQPNXdmqE3y Tc_=BQhw*m-e)@?xN6^0k5R3xq diff --git a/lib/jphone-core.jar b/lib/jphone-core.jar index 5fc37624f0e952d722990706c34aa17b065d2bef..c2ea571cf165c20b792f0bffd69afb5d0a49ba30 100644 GIT binary patch literal 22795 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 L?(?;W`R@M!kYNsz literal 19390 zcmeHPTWnm%dH&CG$+Np!QWS5BY+Y8iE+j>ADcM#W-7Jb1nKCKTBqfWIYFM za}H;B4=-*SBP8~6&YAx*Gylx|-~Z3-{A(@I1W}CW&;M-ZCMkb$iqh=l(%A6y?Wy#q zzaW}-i@uAZSAW+3n=*>?s|PQ)=8Z)ZrIFdG*-SCNYE^5)cdbe_Un*WoogW!( zPmC3nJ7eWc_OX@1Jv{u<$i?==c*V-ptlaR8EiV7^$mq(&i^KV1&8ieLh2ck|=TrT2 zl}xr^rN&E@a;cK3f%QOpqCMf)P^k;5LR6}(rR$eyw@a*VW*=vYYgU7zTwP}77JX8F zTq-uAI9Z26&=oh z%azj8e9o#gQ0YV+R!=j9d@fTfZEM>jqd))86A>bQy;O(T*EJLQOd<2AVBHp7HIgl4 zs?}e7`Zs?M+85}sNj)a@n$%~|!8NNk&&Dub+9=j4TLzu!ADHnQOIAKgL$yrWE_WHE z)gbBF{xFmScMVE7VyANkbwT2j%+pL7y|9*^DHYeiJ>hWY65aj50?eetVIpgZ8xD1!b-R7tK?lYCPC5h*Xnwp$sM|l&d{W-};J-SE_;noxnpVdf&Ew9v)*4?a zLGAQ*oRXB`w?`&rW0Xsv78YNx#%L`@k4?%aaP`EbFPl^_XH-bGg-lSMzAov0|}Q6Vr0l zpgvK2GhOC2pjxwvSt~uAgNZz+d2rJzTA0wSoDh#fv1*O4*D#VAl*aU_y3B#b9A*$+HY1&z--8QqWdtln2 z!#Ue!3OqDuB48()E^01<9S@~8a)rOlg5!(%wPL2WQNj5A+4ds)Aza})F4~S~haJra z^;+&4Mq@(thI#_cHzM63-O?s!crfsmrj??E7FeK#&i+MM%x9OAbb;`8icTjfO}z%4 z^&F==#p*^G2n*B49F}jfqEBvSEiwNaG_(ZZW)E|G=B!k{nzGlXT!4@-uU3DZiU$8P&E47;6Ol`qQ6t_n(G2brLQm$^P zEvtr`H+JAu)#-pFEzun;hgL>pGso9rp|-V8V;FN*2 z#ytb~vJ<`sJC_kSml1A4T=(I608Z;+e0~AfM=TV5mX3ntSe1^`iD^pF$@}yiJq-*(|#}-$kHI4yLN-&Z5_A<}SkD*n$qW*I zOVQ=7)(@%eA8;jAY!gqG6%GlT!!?v4(f(ZK6?}(VMPoM4YxrdO^?9xco_(^ETh#>J zpmA{0ai5?`JYkK~_>@(CkIbLohN^5%QMT2s?iAg$iLaqFtJcO{Vg?&558U%aQLW8Y zt<5$$gI=X+jUthtB1Nqtx6t9T7CuEHK}D)iq*g}}X~YK1M%N-OK}9yTip=U;M6pk4 zLSKU-@6=I54h;i#JEt|Kn8ujCp=i^{nC9tqtug6%ep}Jc;R)lT1q=YaF=2*tyFoS8 zxJKhYuEYH@%d1U zsvg{V6KpZXyhSVa7eAby_~8$}`+bZ9e!U9P9n9BtX8u4-r`@E4Ne4_y!Y%w=ayEV5 z!_j(`m0rX?ESTCj%T9wez7R|#8VJF_01%yqO~m~+@STZ|GQY$Feq9M;102_M8e}T7 zDc9>jzsF5#Gs!e57I4J+wo}SRyx7$Cv~u^q;dmM1RW(Ab{)YN^Zt6DNFX9)kA)yqm z*FdWrN4ghB>}#3d?(^FNetT%rn=yJTfw)_I8bC`-| zOiwwp7-}2G4F`hAxY52uTAC*X)cC>WV9RO1JuAL#G8NGMP|l7Sxb-sV2 z&n8>3hj83p0&QX99e<)2pdAv~ZSyIdJjfa%#-Z=sZE=kbw~NC>Gp zcoB6o&@mVB{zd3s00H|yJ^rA>;PCqtl@OC-3Vmn^0y>HUAH{)RI)H|{=`P|71Wg1z zA`O>u#oHRBO8kv0!q~Y7zGe@Ui9+&KTe2n&!J;IHe1M`41$!qBA=xuHd&Op;qWV^e zVVQvpLAwROE?Pk#W5uN|Q@P zN>HR+M-gdJ2n`EV&z-46QQDTf%nvChBQsvJ)D&I`w^9j`;SMKM!MxPgwIc)`n=Ngn zWT-+aqQp$>2!YqR@1RnDpeUlYt~7lPRm^I-*^ZfbihM(>2!|Im-E7B9JVm|*MZR4} z5n;pt>k~9@^YVf9_y?4bVBJ&Zw4zMhZrm0`B^X_BWPv}I#LU59o#P1@sv;;LzWDLS zKYny^@?Sv0uPMBm&V%mm5ocAO!FCcaITsePJzIxd;0LL&K|Z^Q7Caf|roc@D;jl6Ym`wj%gJM2@P-P71a-Xh!JoJ55|q&*4T zp+QmG;M^8a)K}}EC~33UB87yb!^=&d*1@RnD7;jRI!(90!$3ZK#^$AVb4X}7i`=uL zh=Ngf1r2YyFmspCa2{hh0)V(6J{MhRxC9je4etOP$}fIscyj!&@5OQagkKXNZ8|Ng z`)A#qH_isY05DumUae$Zwep}?XC4ReO(p{6@FzH@+Ec3&TOUBdV$cfndn<}5T zozMrIiUko3z(ylP)8){yhc;iauvJUH-OSn9tE8!V9NHCj;jpclsqN%b(s_1UY}D>j z{1bbt6oVjp@AV4r=4L|l&_UyV}*f58K1rIqhQi3l9?Qag=sG z9-!nScvPPG}_ILgMXtIwev*h^p^x4beK-&E0i%T~ca{v^`5s zccf>If&jZgs}Ko-=Oh6qYdAquuk2|qd&Vg%Bi3A&6EN)5g598edJfEovhcr!s1XZM z^-deyg?Kk=P!St~c#4#@ipWIH zHbw00l&8oB6nR=l5owJPkur$D?Pj|if)%p+4ZD;+wD`i?N@pIBaUGc!VYA4ZRB7Jt zYX10_mycZrOygIm7wa1X_`M99t_R4{p)eMguV#poIn>LVQADt5X40_)7n;Zh2P|tNz;fyUG22-)VvXQS?IX(%U!x_Ww z2RhW_+v0mP7$)IRbotC(y0zPLNB&cp{_TS5wzA*>MLsYziZx;vHjBW8pDJ6b zSeBJ`O(89_U1^|3i}%vG)^5-VuAS4n9)VHQYFq<-o)Gq)8hJKj|)=1zx`Ye z_`)qF|5%|v3d7DtV+|RfcK8ZCu|8;P>eG|=1~$@_e_BNTv95<TVfd=fUnAE1(mXgkZ%<~UK6yD;0_~C=Jznro7T#e z8Aetx=1p9Qg>C-GyP9BNuSRiX+-v@IEQ=sj5#92M2cQfCL9 VGiQrwZDUrw_{aGgnx5dR{{@HY7RLYp diff --git a/lib/juser-core.jar b/lib/juser-core.jar index bf521fb34418443b4313045a38e41f3fc864b0b5..b5427c7ef70674cd0b86e5919c381741b38480b1 100644 GIT binary patch delta 389 zcmaE|mhs72MxFp~W)?061`Y;>po)n+noNNe6V0bH0ofN6K;$P)AURo<(HKMpG1`Kt ziHy!5Dv(KYk`ni1E+#GzPmIYDB4`Iz!sH61Hs4@+$q1qkv*fUWXhZG@CJ^1t8^Hpi zp9)%nX$7%fW)Oe9WEPl~mR%2~&nTQ=<_N0rbr1OS$YS#xl}jRw!ISeXpMuneSrvfw zp0GQ@0pj<$Zw1*g+11Yy=!wYUU<6_^2Zn;EsK9g(bvQ5^L>UC-gQ$f;RUk?>xC}&14bB8olR^qXoZ^sN e5cMde2=4UBF`?lgv8|yIAc{XM7DVNRl>q>?>wXh?G?}jXO*Eg*1Y}=O0Fj?Gf#hUaMq>~a#Apkm zCNesMs6ZyoNlM(4xtO>>JTWFqh@c%<36m?3+I)lQB_oJF%#yjue;Z(m)ADWQMn|-7(O}Q@+nAdm{kE- z?+Lpj93Xz5`&N)0lU@BRfu5M$;O7A19r7~(QD1<9KuX^q?D7(SUl8xGe=vxW2=D_@ z83CRUp3LO)0Y)Gub6_ZliV92zQHKMwL6kvIK8RWvR0X1BgUdkF)Zk1YH7TSJ#3>HR e1yPSeir`M491|K265ARY0iyWBVnI}1SQ!AL?3L~S diff --git a/src/org/mxchange/addressbook/model/addressbook/Addressbook.java b/src/org/mxchange/addressbook/model/addressbook/Addressbook.java index 9b03baa..fab8526 100644 --- a/src/org/mxchange/addressbook/model/addressbook/Addressbook.java +++ b/src/org/mxchange/addressbook/model/addressbook/Addressbook.java @@ -97,4 +97,10 @@ public interface Addressbook extends Serializable { * @param addressbookUser Addressbook's user (owner) */ public void setAddressbookUser (final User addressbookUser); + + @Override + public boolean equals (final Object object); + + @Override + public int hashCode (); } diff --git a/src/org/mxchange/addressbook/model/addressbook/UserAddressbook.java b/src/org/mxchange/addressbook/model/addressbook/UserAddressbook.java index 95496f1..2ddd1cb 100644 --- a/src/org/mxchange/addressbook/model/addressbook/UserAddressbook.java +++ b/src/org/mxchange/addressbook/model/addressbook/UserAddressbook.java @@ -17,6 +17,7 @@ package org.mxchange.addressbook.model.addressbook; import java.util.Calendar; +import java.util.Objects; import javax.persistence.Basic; import javax.persistence.CascadeType; import javax.persistence.Column; @@ -120,6 +121,25 @@ public class UserAddressbook implements Addressbook, Comparable { throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. } + @Override + public boolean equals (final Object object) { + if (object == null) { + return false; + } else if (getClass() != object.getClass()) { + return false; + } + + final Addressbook other = (Addressbook) object; + + if (!Objects.equals(this.getAddressbookName(), other.getAddressbookName())) { + return false; + } else if (!Objects.equals(this.getAddressbookUser(), other.getAddressbookUser())) { + return false; + } + + return true; + } + @Override public Calendar getAddressbookCreated () { return this.addressbookCreated; @@ -169,4 +189,12 @@ public class UserAddressbook implements Addressbook, Comparable { public void setAddressbookUser (final User addressbookUser) { this.addressbookUser = addressbookUser; } + + @Override + public int hashCode () { + int hash = 7; + hash = 59 * hash + Objects.hashCode(this.getAddressbookName()); + hash = 59 * hash + Objects.hashCode(this.getAddressbookUser()); + return hash; + } } diff --git a/src/org/mxchange/addressbook/model/addressbook/entry/AddressbookEntry.java b/src/org/mxchange/addressbook/model/addressbook/entry/AddressbookEntry.java index 930fbb3..fb257dc 100644 --- a/src/org/mxchange/addressbook/model/addressbook/entry/AddressbookEntry.java +++ b/src/org/mxchange/addressbook/model/addressbook/entry/AddressbookEntry.java @@ -129,4 +129,9 @@ public interface AddressbookEntry extends Serializable { */ public void setAddressbookId (final Addressbook addressbookId); + @Override + public boolean equals (final Object object); + + @Override + public int hashCode (); } diff --git a/src/org/mxchange/addressbook/model/addressbook/entry/UserAddressbookEntry.java b/src/org/mxchange/addressbook/model/addressbook/entry/UserAddressbookEntry.java index 4ad8484..968bbbb 100644 --- a/src/org/mxchange/addressbook/model/addressbook/entry/UserAddressbookEntry.java +++ b/src/org/mxchange/addressbook/model/addressbook/entry/UserAddressbookEntry.java @@ -17,6 +17,7 @@ package org.mxchange.addressbook.model.addressbook.entry; import java.util.Calendar; +import java.util.Objects; import javax.persistence.Basic; import javax.persistence.CascadeType; import javax.persistence.Column; @@ -115,6 +116,31 @@ public class UserAddressbookEntry implements AddressbookEntry, Comparable. + */ +package org.mxchange.addressbook.model.addressbook.shared; + +import java.util.Objects; +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.OneToOne; +import javax.persistence.Table; +import org.mxchange.addressbook.model.addressbook.Addressbook; +import org.mxchange.addressbook.model.addressbook.UserAddressbook; +import org.mxchange.jusercore.model.user.LoginUser; +import org.mxchange.jusercore.model.user.User; + +/** + * A POJO for sharing address books with other users + *

+ * @author Roland Haeder + */ +@Entity (name = "addressbook_shares") +@Table (name = "addressbook_shares") +public class AddressbookShare implements ShareableAddressbook, Comparable { + + /** + * Serial number + */ + private static final long serialVersionUID = 167_889_678_177_691_690L; + + /** + * Id number + */ + @Id + @GeneratedValue (strategy = GenerationType.IDENTITY) + @Column (name = "share_id", length = 20, nullable = false, updatable = false) + private Long shareId; + + /** + * Address book this share is for + */ + @JoinColumn (name = "share_addressbook_id", nullable = false, updatable = false) + @OneToOne (targetEntity = UserAddressbook.class, cascade = CascadeType.ALL, optional = false) + private Addressbook shareAddressbook; + + /** + * User who is giving the share (for his/her address book) + */ + @JoinColumn (name = "share_owner_id", nullable = false, updatable = false) + @OneToOne (targetEntity = LoginUser.class, cascade = CascadeType.ALL, optional = false) + private User shareUserOwner; + + /** + * User the address book is shared with + */ + @JoinColumn (name = "share_sharee_id", nullable = false, updatable = false) + @OneToOne (targetEntity = LoginUser.class, cascade = CascadeType.ALL, optional = false) + private User shareUserSharee; + + @Override + public int compareTo (final ShareableAddressbook share) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + @Override + public boolean equals (final Object object) { + if (object == null) { + return false; + } else if (getClass() != object.getClass()) { + return false; + } + + final ShareableAddressbook other = (ShareableAddressbook) object; + + if (!Objects.equals(this.getShareAddressbook(), other.getShareAddressbook())) { + return false; + } else if (!Objects.equals(this.getShareUserOwner(), other.getShareUserOwner())) { + return false; + } else if (!Objects.equals(this.getShareUserOwner(), other.getShareUserOwner())) { + return false; + } + + return Objects.equals(this.getShareUserSharee(), other.getShareUserSharee()); + } + + @Override + public Addressbook getShareAddressbook () { + return this.shareAddressbook; + } + + @Override + public void setShareAddressbook (final Addressbook shareAddressbook) { + this.shareAddressbook = shareAddressbook; + } + + @Override + public Long getShareId () { + return this.shareId; + } + + @Override + public void setShareId (final Long shareId) { + this.shareId = shareId; + } + + @Override + public User getShareUserOwner () { + return this.shareUserOwner; + } + + @Override + public void setShareUserOwner (final User shareUserOwner) { + this.shareUserOwner = shareUserOwner; + } + + @Override + public User getShareUserSharee () { + return this.shareUserSharee; + } + + @Override + public void setShareUserSharee (final User shareUserSharee) { + this.shareUserSharee = shareUserSharee; + } + + @Override + public int hashCode () { + int hash = 7; + hash = 19 * hash + Objects.hashCode(this.getShareAddressbook()); + hash = 19 * hash + Objects.hashCode(this.getShareUserOwner()); + hash = 19 * hash + Objects.hashCode(this.getShareUserSharee()); + return hash; + } +} diff --git a/src/org/mxchange/addressbook/model/addressbook/shared/ShareableAddressbook.java b/src/org/mxchange/addressbook/model/addressbook/shared/ShareableAddressbook.java new file mode 100644 index 0000000..43da044 --- /dev/null +++ b/src/org/mxchange/addressbook/model/addressbook/shared/ShareableAddressbook.java @@ -0,0 +1,91 @@ +/* + * Copyright (C) 2015 Roland Haeder + * + * 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 . + */ +package org.mxchange.addressbook.model.addressbook.shared; + +import java.io.Serializable; +import org.mxchange.addressbook.model.addressbook.Addressbook; +import org.mxchange.jusercore.model.user.User; + +/** + * A POJI for shared address books + *

+ * @author Roland Haeder + */ +public interface ShareableAddressbook extends Serializable { + + /** + * Getter for shared address book instance + *

+ * @return Shared address book instance + */ + public Addressbook getShareAddressbook (); + + /** + * Setter for shared address book instance + *

+ * @param shareAddressbook Shared address book instance + */ + public void setShareAddressbook (final Addressbook shareAddressbook); + + /** + * Getter for id number + *

+ * @return Id number + */ + public Long getShareId (); + + /** + * Setter for id number + *

+ * @param shareId Id number + */ + public void setShareId (final Long shareId); + + /** + * Getter for address book owner instance + *

+ * @return Address book owner instance + */ + public User getShareUserOwner (); + + /** + * Setter for address book owner instance + *

+ * @param shareUserOwner Address book owner instance + */ + public void setShareUserOwner (final User shareUserOwner); + + /** + * Getter for address book sharee instance + *

+ * @return Address book sharee instance + */ + public User getShareUserSharee (); + + /** + * Setter for address book sharee instance + *

+ * @param shareUserSharer Address book sharee instance + */ + public void setShareUserSharee (final User shareUserSharer); + + @Override + public boolean equals (final Object object); + + @Override + public int hashCode (); +} -- 2.39.5