From 8a4972082457edc5afaa93d9bb7e2ddb4b94bf81 Mon Sep 17 00:00:00 2001 From: Gopi Katwala Date: Wed, 17 Jul 2019 10:01:58 -0400 Subject: [PATCH] Code cleanup Added function get_remaining_qty --- AstuteSystem/ProjectPlan.xlsx | Bin 20734 -> 0 bytes AstuteSystem/hours.txt | 10 - AstuteSystem/sql/astute.sql | 25 +- AstuteSystem/sql/astute_old.sql | 586 ------------------ .../src/main/java/com/astute/dao/DAO.java | 18 +- .../src/main/java/com/astute/dao/SqlDAO.java | 62 -- AstuteSystem/src/main/resources/db.config | 6 +- .../src/main/webapp/doc/user-guide.jsp | 105 ---- 8 files changed, 36 insertions(+), 776 deletions(-) delete mode 100644 AstuteSystem/ProjectPlan.xlsx delete mode 100644 AstuteSystem/hours.txt delete mode 100644 AstuteSystem/sql/astute_old.sql delete mode 100644 AstuteSystem/src/main/webapp/doc/user-guide.jsp diff --git a/AstuteSystem/ProjectPlan.xlsx b/AstuteSystem/ProjectPlan.xlsx deleted file mode 100644 index 94fc4f5c10036538ef00d988df0d0836848c48c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20734 zcmeHvWmH|uvM%lr9D=*MJ3)iH1PBn^-Q9v)Sh%~pyGxMZ5Zv9}?XmZf9J2R$F@pZH6A zhHl&JNMT5}!fiW+NaMWM4V_(?FzJcEbdKXu%cJy~QOeJZQP2p1jdDkS!xDK+%wwYB zRaE@;WO<{ozY5LcP|%Cm-AOAowJ2{>zq%z$TK+Rs_tK>-x9DrgxLRqD{~)`S=QsN< zeO=asj2(EPcuW)uKUN^tvakUrJy!@Kwg5rPO{vvWhKbl>0C6=#iA4`{U7LUA(%i8r z+D(5uu^MP^w8Uiw)-@f5Oj{s}8@!InF$57}$R^z4Q%HP|`_2teH^B(_4J;U2S+a3HDMuIS!%{mLKRxuU5~;!G$HB@cn+m z>vfirP-IkY;yS0&fcSeG2S_S1+c;61lC>Tr$LXu->%@-|E)i*ScfM5H&*LVN_zFJ~NO}{cA_MP~*`Tb}WT{?24#J(9*m^Ewm@J9Sd zTpX-F!QbZLCs$gLgK>tO@c!I`-;jwDr+tC!URbhr9A|>V2db7uq?8)rWGB9vS9tR) zov=5_4EtO^JIe29afmaspK zBmlSCi|=K2{oPTSpvIp-cB{y9A#@`a`un6q!aNvlu&O>zE z=mYF_myP0FLWH>$dXtk!zKu=3ujU+nw6kSAkw;cSvxiQDUato6SIep%VD2(~b-iTZ zKtS(a-*~mG|Fo$RC26Y#2DsLDvtEeyvQJ3)CgB_+$@-ssbZF;GS}(Ku?Mp=Bc*M1k z;T}%1w;C^gN(LV3dL+1$;N!D4b0`7a!S(!A-iONwN_?Xl&A)0Me^2_8F_yUy zP5%-qPV2`?TjEjeoJGwt5||uYcCMWR7Fb-o9HU#7ncQvuSe`CIq#^d~JkXE@^eWZ+ z9vx>aB`Jz|!kleZ%q9x3z}#(V@IeOx2ok%5Hd+x2x0;Z4h%#NnnJMD3Vk|;7K^UjY zj2I=J)@3S-SyA1&K;sGGjcagw(uQ#rjAO7&U%CN|D^VRp5zT=MH9`^|`x+FL8GN;A z(Wn?P!zC&Vg!3?&vx1w`1%H$MVo|Y2>{QZ?Ac%_{l|?LoP$$;j&)Khdc<{2aqZ{I8 z!6KRxkfMx`u%$S*x6w~tTSI#E65&gPPN%s@5OS!r78mb5-^@OS|ewODT# z@@@2Vpo8ly_v*@;jMKDS(|ux+A}qfY9A^>o;4#DkDm?xkF4mLDbIUSqn$G- zWt>R#0VXZ!yyC5W)AOen8LT4uBm82vA;9~3wy=}a;AX$|5VaH@SxfJ`EUo(zzh$#$ z(7!WFFG~z5t5>rOh5!P>{AHGQ#s&uVcJzPVSpM*NF|m@7>kM$;PpFTaf^5_4KDa2y zjE@k31;(mWm)nUgv1OSwi935dIL!Mq!4b#8TIgRqEJPfQq(xQ{xQ&SxFy-;mXMjnR zA=PI8M zuw5d*3!Qz=uIce-GtAv>=-LS$H9-*)3esd~nPN@Q*s>{Ps#^ zFv6?!Q6Sv;k>GmY?_CgshxNF2-J;hRaHRW!=DaH<*Aik*Q!6E&OhgKk+K>EpZtYFxS0{i*TjRto9SkY^GY`1Z+fXm0ojugaT{gK&> z#Z_<3C&eBdlQjqZgyv!5TBwa|uE zu_qHL;3)}8zhg~K4lhEcNh&K_&K|5OqeEW1584ERj%cjvtmI0}T>!`XZaf1u7Y9v% z%!stc>8Vp%u%e)&5%~;BmPZ>N)8j|o@&B#wMCqYH>3V%4_}beN|HVlE(Lw(*)jzxE zuaTXm-3*ArC;pFqvu-5ZfpQ_F+7g5_WKTdMS_@g%62|qUcMrR>Uj-w&^_Celz0@$S zLjCoKU`s7O5c;zSC(*d4^3|1ReBy!k6#t4|)<4!fEO`?g8n3?2X{a(SXs&}kVAW@x zU~^TXC|aa1WpJgSmne0;wjgWlC|%9IRSvqCs)!2#yTwqGAv5ziKD~L8qtE+<^07qh zeDv!8Dc}odmKblp^3l*&U4es-*9lJdIM87SKbGvA{{!diE`0o+Qs|rH8 z7*IuSK%a%2-J*Z`!wD&}6E!IBfa>1QLoCF9yFq<&tHv?t*xIrl-C|3A;3>p5M2Mo9 zY69`!)Wa~YICYz+Z5OEI*k442rsesjGfCH$1S%sV5&ZqzCp6efe|eH8%x=$~xylIW z!f$-rbK=1+3ob%fk zzAQ1$evzYd?^g{tU8k9OAb{mr{202phW}Yc|xx4%NZbeuTEHtc&My1KenS^YP@}qwVBLI-BgBr^i07*13_>)|vHU`RMWYjrixi zt%P#?kmT#;XKRLp>zjikyZRs2c8_8a-5VQ@(Ffhz3w&OD@!}D8mL87xva$>Dim4Xu zcVbOX_qSIIL-fhr&%L>~ElU=o{GmBZBc65_3-LSMHcu`)`_EC~Gs#>|XP^@&^~oD+ z_Rc&vpPM`>V_50$L)(UGT0CZ(VB8nDzdxRpxuq}7nltQP$JdJlK35O7r}y08uAGhr zcB^`=)dw~ocWiNNHM?&}o|G)b&wSo$Uedg=5~??Rp{{DO((Lk#miN>)s_#X9+L(3e z$Ddho-0{L|d*NO2bm3}#Vz4277_`Fk+<&aGp>=w%=!Sm5RW zzjx+jA@E{S(`h`}z^~VM8{j@7Yt(%8zBzTce)6v3#p->ua^fIPHdWw*`c{9{vNK2G zF!N0U{xDNnRYSRQ+*t{Gifq*Y3t^~ROBUWu?KD7rtVUwJ?WcG^>zzJR+Q^EPWc#6Y zrL(Jt7QIzu;0f*xi;Xl-YsphIU9(N%iWXr#3*YrJWOIiuF{-{Y(u{sR0eOA6R{Z3E z#mlrsgtSAvE43k3-!8kZs2@XL3mP+=o;lh^T=6(F7AvENs=Z?4%3RjDZRE8(^{DK^ z@XU1PqOO&_{^mXn_PQOa#=?otN|v%nUa!`ru#Yj~b5DSJ^3g&#Sdeuus8RPOZumVd?QwX4F%)Yy2F)=G=B zKKayO^6?>t%E==!*W#l)*wl;&cb3D?TEy`PicpixE5>Ujd}YA>&{_mpjUcYh0U>7O<`PC2WB=))iF&Tr&mqcxu0U4Y8*zh znA_Xv(0SAuHTerDc=ppw9M*uUu4)^s+jaQOjrnd}*P?QiT|R2u@=&$3(ZNK`!~yn`Am)3m|6}p4{FMp7E5Pp zGhjhY8r%ElT_HH1ni)&?mic(Oe`8>wTL zO<|Ca+eG^^Nhgm($3x%Uw#iz4L?RxC;omd!nHjavq`4F;No%hMtFQvABJf7Ipy0UL zj)W@D<`G}Ig8O)+Q44b!Y!#1zgV=P_wE~KQ;@!_?fy22zd-oC z-57Q*56+(01n38yl=t+4_;b+$;ju&c0^#I!Pf-3EmGoo=+Y~#6r~j<5Ha8n5X_Y`{ z0w(SUl^8Ok!Y^8bfPg-t`}LlfVXNc7=L#EmYz+A1TKLfKyHv{K6eGc} zbkkI3igy8`4~ndFJ!;tPo0dKGjOGP6jB7&p3H;SLz%@Z_r%E^vH}Z>3y?V|L@33~7 zwOX=w!+IQ`KnJm-jcdr7q7>Wn^*)r4tR+i`Uu?_$NVdHjYE@Lh8=ar#JyFIRr5LtQ zZE1>{R6@`tg{GFp;tJH=ZBcUJ@l?5KQFVDlZfQIU(O|coA2jn}tz;rA;W0VJ32D4g z*g6AKU%JrRItxABt{d`PEHHsBzpC|zMMh6!aY5+abjdu`;qmD zg|?#f^S6rgoVjX_?s9zVZfB^{W0&%CXBG>~=Jmqxlselp72UJ@>A{58m-Z%KB61S= z4g%GEC=lUwUxmo*$YHdmSmrNY?uZN)41-`KPyxt&nb2oLJ+V^;(aS>27Jv(iB|%MK zfrmeE$GuR2F_bC5Z;Or z_*RU!2K?i#I{%|s#0IgyniuR_KEU7d0rHj);5U3!dB5R9?X7vyycHk)t@!^@EYu}_ zXUygIo%NH(V%Zr=CNVd81BGCgC_*Ye#3C1?j43tGIK?}g5A+B0cP9rM@kbYh)kFB9 zqlUK0$Dcf%Co^{1`0=$K$=T5G+3Y!*M>UJQTy61tW1AzJ-d`@t-#K%n9N<6Vld|C- z*FOIJtgjj*qQB=g4l9lFUkCime-8LR4Mk*gpe{wSym-&XarG3Ee2B?W_7R*6jS^*E zVm1p&07F}alPhmOF+<^R$dlAj>?qyPOLu$XIJ-V@Q|2nKF@aS%`OK8uj8Mw#NV7jV z@^r>~huk2ukbA{Qt0wJq3~8}c{;=Y;&{nzK$g4Qd*&$cYeY5BgAHGvNm#AXGt%srB z?PdE@$pkWec)*MvUOF;MUfDJD&izQ)M827~JFn5-Z_6cWJi&k-t+Y8UC(~fQ^LD|` z#)MQOc1ch*clcsxOR}#BR*nbFVB7;rVWzNZxL$EM>9P=P=|n%#5TN1y=~6k0wZy=M z9h9pazo3-!Qt(~E^@1KSjPrbIz&7`dk2&&s^Rg#3@}-r)iu%UV-bB8av3PX^UZzZ0 z_r*)kEHk91-xv;s2JmW($xpO$mMnutJL0OZSkLsXYbRs=`S%Pf242AhbK2o{IWG4K zj$YOE{Kht1PGe^3!x<1`SLT)LCGV+yK%Tjjful`;Ii*&5FG@KacT(N( zM|`JE8xhF9<(50-E0m#Kfm9S)*Ie(}9Syx<5>gJ&FoBAepD z6I0^S5nU>a_H!}4T^*BE?WnFmE~E1L^}OpR|qfl0Rt3*Ks3mLbk2 zTaLm)MsDV!6#{L~JRz52&vl6bW4Y@KxwE9}La%*xRp zH0}=o$H+ebXyqV?u-CKUdXTd=*FNZiL7aC{o^#yVxfl=N>%$7+4Sx88iC#Tu`E%<( z836OdlCpk}^VImErUoGkRL3x8?^6beFfk@R8m9_o?sy1^p?-mFQhZYq2E+SCml{kB z3IWItpMEw`!ZSK%-?PdGIZRqbrXew1-2f(XHOj2kDS89l(A;_BM9CJMj|_Z{=rGv^ zgX6}DqWTne00W``qkCo6N)H8#njf*s(gW0xIK?XJsC^`4h7_iNJEUzacaBFh#XrXS1ope(K&K!bT@VWyXoCfF099IH;M?&iaW_q%fJrzbozf zB8gOtcj;Sc9vHmWdpU#iB)cW)n&p)@Tv(uypVQb-2NaUmK9exI+Ny`)nMg=S{s|HT z`TPKGMg=u&-yNcu#i%42p8-o&^Xrk|EuTwGt3i{q-M7+ zhVH*YuKNs{ITON$u2po%aBPeY4P8_0mS%uhmj%QqNT)hno-PG#u`_1jT)8%6S02Na zIOy+w|Fq*c`G8~;NU{WvcD1j**V}B+B;i;tv^6UCaFjg3y*X})W-+13qvY8OxplMS z^>VOBJluxAyv}hF4AYyoT)1@^sGUGhA-0PnOgbOI9P^;(5PmGR-Sz$eVmV9&EeuPBx2Wq z!WxI>_4z5OCotD}eZ5Q7k2}#J(NY-ZtiE1ae-cTS=3edbMNH)``Icl%(!IY{I8VWK z=td~b^2LsZCy&Ap^81&w7fc?+_&dk^<)zTj)a0%0gsr-f^P~M@*C*=><;~UNn;|UJ zcSgut;}?o?o|nSZs5h>&AFHH`Bf9|YE?`;53Xg$GLzs7BB$$Mlsu|>I-2$`M8!j1q zS6)!eao-aLb^w%;$Iap_D(**A_A2fNRE8zayHsHcXUZm~*;-DdWaRRhT^A?-0rsKw zubX+)m3*a@!%ncQj<5Fzm+)4U8`p(a)t3t_$n+VG$9$|Ck%v<3%3TQz7TrQi_H`R* z2#4Y{f`qu$Jmb-N_I-HgY}T!V9s0>mjB${kRY#JvJlL(dv`Nz%F}>8e?u`4OXS%5M z@u(*)^y=)BxHT*714^Qybn068t`Rm`sF!3HEfmI97Z+I>GqfWiP5u$asTklMlYI0r zO~rOvs5Qtpug~e1UF65u9$#Ow0NW7}SfEfpl#6QBTe2Kqa&%s(371(x1Dyl+P%R1- zD1NWik&Gm%Wc+1A!B*Se2q$&0%62MVXt4&2{c1r#D1$hGkO46PY8wh2iUy1g1kxw8 zLui#43h^uL*qO8x58bJB5jRR8OwBg*SmyWK92;E)-{?B&p{h7ZD0?twFbEKoPMl5< zAO8-~RRU`yXDD|tVBZRGF1p}>Rd71-D>)>3pFF2dZgVAxo)z`1u41Fl28Cq7C}5Mw zi)s5_>S{kR3;%B{96b}QY|x-X^zT zSeQX1gK$hzt}(P)CI%boha*p!zg){-$z5#y)*ivDlvKCZimR#25+N_jZAc53g#JNp ztud-l5A~uu61_cnbvrrUPpa=ho2AP|8vEr{KA{EWbH0fK359(Y4n`PQWDVXjf2mo7+ z{|KfD`Xp>lgn$$u^s$E=84-FR=OAKHv+>JL`FvQE9bAGy*yb@g&5*ImCo`;rqJj`9 z@oc2=;2#k=dzug?QbZSA`#m`(0=A(+(mjOh$Y(*f!XQLC$@ZEt)Yq_|X)tc{jY3S7 zXOo`053}M}$W#QvgT+`vCW3ziVSb#LH3b-InaLytvFpl%BnJugkgg-01%nB9vF#;M z%*tbQoHL7O)_U zLqvxZ86-U>>LK#HY`^0HYcuIYfB7%jpDN_5xf&_X< zn8>RLbdf3}b4;LRqzB`?7uI9C4!}NipNZrBsndeb+1jhdwK?%l2#(=XMHQ@CfZPUg zhQe$tN%`z3(Z5v3jTqJf@5F8Gc8?n`fy*qJCdQWT69|S)CBH&cSg=%(RIstIJrOez z1X6T=O22QANDtXMqD`=~usacORE2cYaewR``0?tXXAaSOltjctRv9+y}e^4Cd+2(8jBbR+S>J`~jNGBmY=M_roY^G7xb%i>uuKK2(` zS*^3^(0E3)wINeiJ0xvSW7t?EvIkwK+(+?HY)0sqRYc78W+3s>UtaeP{B^+4iGkQA^EzPYBlu%~=AWAj?2Qd9 z4Cw#-{&TEws5Tsm&5qiRanBED=k&gHu~~D6hiI1ZcrV0U_nQ zQlQAmjTf}yjhXlW3g3De2~AS7hd)j}JWE`XaFH}HOLx&-U&k9-Ccd;(wboB2yxPHqC=+wCirI^HkTP1?R6zM;cq2yH&fDhNSDgs+BK*{&HJ22HS z-{@c_165n2dq(m|ORoOXOiozbwjqGdzt+^LaUM;-Yc~RA8O~3j6+k&E{|&zQP(e}Z z6A}BCde|`&ACNbQ0*UzgKrfu^7*th5Cl6Ps`TyPRK%ad=MVafcaB<7zBF&ACPt(3yz2SL9{do_PZP^j=C0bKJ|gO z@U)xFHQ}E%l0+nyi&la!>V-LCI&rNQB@LaPTBk`ZMPD=qHwTYJnH|$flmOlAFlVT) zE6jyg7;M9bAP47hbWSL?R|q8ZO!m9txHt|Umhct`vpys3fX=kRiLX8(hVBw zG9dUme?GiyQQlo(HqGm9=mxdK!1-X83Lh5 zl#`!0hI`~3w=k~|j$9SvVm)+S*OMVp1Nf$CQVe;}y}<}>WlLCMD?Wz3Z$+rVJWt(h z?Qk$NH`hgB?0hq(qJ3B&rdvIq-KQ}f=AoU&aaE!(vABm4CDi>R%2z30fDHgeW~Z#PjFp-J&Y)C=F6iK00jewvE&Yyo)fSg1bC#z*+UFhGKIm8uunDg4L*&T zt8v<5hc%$Y?x%~go!0d2%R`ajq!wSf!H8Mng?iuB^_75WVvD=aAlb?JZklXMCMx{$$AM@op) zm69_vS%zLtpaV5p`dI0M%!PAg_@s6r;4?G@*mY+OtoOp01Xa%hRe?5o2W zCK!A%)@Zng;~v!dni2!2m}DDu8?kMf_ru>InTZgQH~5f|DUS7UTi(^0Le*0dvzXnX z>|%D$I72iNPibIeDKs)>vJIj=cfT`JC$UMu5~h5b48G5rVwv@GQSST6LB;t|2{)^ zys zc-N(haU7o0R$_RB`DshJ19q5N+jk*!j@*O_LJIH69EV9bY_ZLnZ>(O9K{GKm<^siA(HRCk;C&+ z!fky3I?8O@d=o-q**I(>taZ&(b=KH$E+?R)Q^@=&M9Ap93rMTN$Tm^U zjQ!DN5MsO!hbTDP44PwCC&kGcXu^ff8^XpA3#i97@IOCpR^EfL2~3ymM6O^vgYGtc-vj1IP_&VVD|T$Q%jRA3>0IbLxrPQ3;-BL5b(*x>6r zN6Nw%R)_V{1X{ElCv+N~-SRlt9N%{0#-6;49EP&~Q9Tg^8T+5;8#?EmoCA>bBIWSf zzFU-fZv2jf(?s3WLP+z{w#SrRNMLr{^OqlE?KG-_E=835uz<-TQ>)8(jUx9zA3f@#Sz3L&b# zdU@;Zoa21Z!T7fBUpHwtcgfap%mgY6I4|eRD~%~y>p(XlY|5Wvt?}s=w1$mC=SJ8rcNF9%-FhfM1;Tsr7@Q*WowNodcmUo0@m; zom&l?i>2F0L`txUhNa6#?C_#hMweI=JWNzP3czeV72ZCDS+ z@rb>2ynV1W7r*!vc9^^O(<>C~^Af&2!L02H?g_Dlf5LuQrdk=147?zTv{Gd12OvNZ z>$2fT!V`)*+~DP4C*vSuPu;U0}f`-p^W>s)Z1#_v+P<;5GmN zoK-^0oLAV`+8zB8mtet6bK5vKA!{%cZd!Yh4=}1?!{N8mM|Hu#ckK{Ax`{4Nw#-rK z==5gb4%NQ6g03fL@@pitv8U6b+ZZ=rKeqquxk9^8;l&L&JaFCsbSl*q_?LESs;_N>E@1g^BJv5{@x>oSYr!_fu&deO zu`-8KCx*Swlx9i`oVfD2AnCG-yQ)I_c&TPnT*= z=g;y%KdkdgkcRfvzwXcNUyPy?3U_It#3^HByK$ulHlZZ>L;i#YmDX!DMAG))em4T! zCqynhW%|5(dV0`kIH9DppilIO*J;Icu8B+!F%Vr|G)>e$O;o1Uo@KX2Z$OKF(V+gL z+I}o0K@#?i?@G3g)P!P63yOL9p>^69#|$>x8e`5ey%>7BPjaN}JNAegjc{Sm`V@K= zdm+?b>8hTFRTB$3VMOI_DFs5+nN%qC0Xp>%WtFR%VG)l zQ$W48tM5|O{jOT~lj0(Kh+&JdS$ZC2FvNrfOx2lqL!L2L;B$F|w1{Rd*ehz}d){2h z?rZA{u;@)5gSAjqtPIp-^mhpX;38q{As*cFI;g@BMg+?b2?YWryJyMqpJ5D^lsJK5 zP#6UFu#w16fxOcJpiTp?lPl@Om0Qi$#Rxb~^Xn`UY0>Ve`%;6nXuvkn*mY8iGWa)X zN!saM*LfiS4XLYn>*$geUxZ5l=gkL=Gzl|??D0fUO$TJs+u+65Isd~HNCVq?$f_9= zL%#efCTJ0bu9YHty%XC#D~Wk=q}P)~U>}@^YK-ls>94oP-|- zuc_WQ@=uziU(B7-j#(KfX(Zg+>qowO8S2Nfy5f&qXJooO$@;Y95-}2wdU3J#x{F2@ zqxyc^>SKLg>)j{+np(Di-9$G}VMs_HO&RY!B=BMPACoOTBYdmx^fPx$2kS6#6zzRN z`*Y@_!gTSCkg5s4+UD6=;nu4LbVQ4R^f;wPB%1c3iuK$tH*f=yj1O^TxfSF{6X;d) zaT@upzV1*5ho;jTKx4u}K}63B8pcA3(3Gwjg;<3#4xv2mJ1WP|BKk)OpmOnxY zjyE^ICnfqJ24*l=-GEcaEjd-+o-NdMN&9h$bK+}2z2w^LcgQ`<#)Pru7l72nLJE?Z zl7MiBu1z++AC87KZoz37)-@jVT9yt0@a5^~$_pkv+&QSTkWiy*1v<}T$ihW?D+>Wdr=<;IKhG!ALzv4O8WUY;v}v*2 zv7Q?dadNXJStFEaIMMsT@3fTn^fToOEa1PC|XF{siASqKCB(ZEnXr51yTXeYNYSI<;5 z%*@1a%H>hxhQ5@6ICE)M`uN?gP)e&7&{|%bXgXt5=E~x*T*?}zskb>fF2cmd4qnNQ zQ%q%b<#_U9ciilmws|cHKhabA8t}l$6Qay zSjWWjkCC5!%z~vK!)rPf`4Mi`V!26GDR)5)%w*F=qnme-Avm<4$XHG5Q&xaJNdh(r zAI?MlQ}o?=KGk@=xxIWb*yI2zabcCKVu6J(|4ebVU6?)flxR#X0Qxx=iyk8o@8ny;^bMSAW+rb}UM^;$n;WPS(?65;GgT{UWg25|f>=;R+J; z-E!wGUf(+g&#z}FVd*-LARDTf?VY!{eM_Vb?Y%+m=@?#rTX$UOpUT=^>+S~(5D@u4 z>dyMLZ?iYBRWz`-|D%(m|LuQ9I$aaXLls_G5CKFFHymGMkXU?NEEFtp0^!UH(6Dcx z;l_n2SUV}kgOHy6KB+I&%Q?5Ta(6Hb`VtTZEFB&%(lMV5A0E;r zHwXihrmO}5@WqXxh(tm{Mr5ie0WnW<%v#vjS$sPfEQ@=+k_;zmNNuWLf{9 z@`b@-l`KKlyWKK8+sga-<}?=IqBd?Ce4+q%%P!%t94R3Cc^9;WnINn|Dc` z=z=54&shn-(ygF93nSzgtKRe39}YX-Pcv$^pb=`d>PMzFe&kG%LMc~1+}m)E9w`PR zwZuzugGJqg{E#?5dx@<+>!issVg=d-yIhU5JQKFU`TF(qo3!m6owlHNEw!AuadR)e z-$2WV)2BXJcn(=nSec*uso*A_Tj|%>4 z^JV{G8e05n0yeK3?h#*e{q(K$Qm%h%MjfD_Pb z1mENEMH-5L4=VB`*sinRfW(`tsU|Dc)tE^7#I7&1Ev6ji(;TyJ75Vu9fEM2Ah+4#G zc)p#P>M-V0GSr{=w$BwWE?245U*|FA!QXN63$54hA7C_wXZi%8BNM}>+iDTANfH7I zGk%(gR*~nzRsIzF?u?j8Q|jZu@EwaM#3gPCii7YLB&67oWz%n?s`rJJ)_3oAV&i!c zu>#;Ey-_kQrdhP|v*(*&@Zt9X?`T~riL3=5PSH@KSaC+)!PIdC75x&4BV@6&xNkQZ z&6yUp;o<}6@wAw5QKS#?eQZ02;^e#5w#)m*wI93o2Lpugo5^&Pyae6F(SXP(3%-b5 zuhlqWE%>Wnf}?&$cZ2|if{qVz3q_d7Tig#yN2Jf|;qC6=UR@;RA!5KfXRaN<%6~$2 z>?!MF)T&{mdKh-?PLaOdYt@{2c@%ni5-W^$IxLoBpHCOZ%+~(do)c(@{}XG?K{H;w zvDp5rFB?ypom9WuypnzDK+(iAP_NnW$4s}+k=^eUX4tC_HAGJg0nzJ6}EjiT>)z+)bkSwx zzTn2Ds7MI<)O{JR;o%=jB$ImY%qHPy17f}^K7pJETjMB$5=N^bByF*YI}s{rV7mV} zUQ&^F7+nUGZ^P5a$}w1&-2fioN|1#Ms0J=b2IH@Fb?SlN)H}bwR0a|t?jRlc7ZOi zIrw#T%9!AP+SfAuqp$U{MxDm>5~qYn01@;Wmys&UQt7O&A5F+cyO!bECE}E}U6KhtT zk6freU#&4Gm!0di71CUIKXM?Xhm|ZUqC26B8eh= z#-w?^X$J_P*wgrXaY{j~vQIFfM39#YH$pFv;ik9cpRJu&@_eVCr4c~kUATl6)l#yd z@EyIO(MwM|=l{^pe&&M6!B5`^4JFRVDR?9$5=wrGCkyERfTg}YT^WwLDni;%`|Z8l z(xr?V5r|h7!_UsS3Y{hyIc7w15?#PIsjr`6zL1h(iHHkTS4bPR^dqvqj|1qCXwZq4 zkdSp%Z6=Xb;-pZ*aP~SP&x$IWObRm)HXRuEd~mSa)|Y}0jx*$dFUvBM$y_EX3+{oi zl2Z12LL3h!-9j4@0G=Uq=^dYf?V*$vVki{n?ln}m3BrsJu}3A(bT@?4)EciwU_9+b zHCWuvS)X;F5h<^a@qMz2r86Ow$G;S8NdRZC*k+k-%PH3Btz3ks4&PGvffV?8LR;R9 z#z-U_DGf}rI{=i^_cBCKPzJ1vNk4-^2647i`C^+uX51nSb7sm0+f*OLmIF1TcQe-a z3s`V;bPZgcUI?&5CI-a2ppal%aSb2&m{*9PPV<*QOyjm5PJR8iS=&884~TH!Qwy8Ge+DL?FSiD;$0W5s}~ z3>!oJm}OSLIc)5&?$;ED(>oQY+QLzT?w!U~QJnyxLi!q;fW!MdIq_~*KvUj}fdYE> zGz_8xqZi?aa|v83cydfqOLBmxPihRRp~AF-ouUAyS+S`?OMRJ0x4avPC^EkU1CebS zvFmorSmtmLI-|*rH7y!*NOnd_;kJGMfOHW6Vlyj`Ob53ZPj30*qi|gsYYfX~SX?br2y6;u=iiHPlj#u&I%@xD4g%;7vkFtK((V&f z!gT_z7TjfYi~;g&f}7S|;DW!!ef^naXZ-F;qIU@TTz{vOx4skP7CnQFc9k*&jJV61 zLt6N2eIEf{sGj^F{;Ed6_K?5*^wLz^i~#pQk1>{B$R4A)F?%%r;tf^tEHR0<*!LKg zRfm3-r3ocxyl>+;2p@@AZKPRdw6;-v$OcGyvVAZn`y;l_piQYIP3X?xMySe;JHo10 zd6|5@MAXj&R{MG#iJ+ZtW=}`Fn<|k?oCE9}a1D7tNgOlcff4LU^{baL$wzkK``@8z zw#t}e!}k(P0Bf4Do{wn-Vksz5vE}H-(-3Vru*}zm4%f|&2Rv+NFh+cm&!ReQDS^%D z3R&}VeEJTBla8<=CLYy}+*Y`N$JOZK^*EMQ*b1vnbI{;1z7S4Zji=W?E+Ux_!M)s? zms5RiyjSCv{vysbC0}i*zNHZ!9Zmn)tLgBvMuU%1t#jG4@ic#dt@(aj!>iGBu_ulA zq21=Z`<)|>``zNU_R+(~t$UAQJ0mABwv^?c?jLsyJTwqmEDu{?ot_$9mW#2q;M^+- zZ!|n7jfz#``iJdcnH`IU6g8DCOGcUnMu6#y*u&zxay_UyU6e`HCMa% zllz2yc_pzNiEp+hH*5VWvi*AChKvQL-DUae#F1Cs!D?@=kG4-xtr&@xJG}eP9yLGHyZ@}*J zT+;c9YD-;P$xHG>x(09i;nwrvbnAjDi*?jU{mDZ&oTJK28T*UldSzRBYg5}nE-AnE z{F3_F*pFk#$l3f6@pR9JAJ-`42qT9@E?N6+b9)FoX9rr)v90MIEX)_d`RL}Y58sC& zlan7_mR)xJj~BVEhPfC{PnGLK*a3b~D@vLU=O6Bf6(bH)+Fh>-7sB#Y(aRdv=FzOm zl)lSqFD^VcI|LRjm>KZ|vma^|A2!=)j%J~kxt+TOo)jHD*zeJ|2}YE9eHm@EpXqW- zDfeoxe@g12_WIFs({U{B#Tj?Jw16@1TzYvp&un%1=sNn5x2rGR66@uQ$4r;fOWXNC zp;4P#@3qe{?!mTUc(*M6!@+)GXO)#p{iEVW7jSW}QEa65|Mk=H0u1u<8Up@DZw?GX z`x*%T`_sVwHHiAx{cp|&laqW4@b)O8e-Zw1?|Gez{l~#XzZ1Sap5;FY_g>F0`0t0c z{EqYcVI04ZgkE!xe>X(iP`qBF?r%~4HpBgQ zz~3{(e*yZw?iu>8fWPv^e+T?M;rbWg*Vky*TfjfX{WJagca-0=IDVlx;QTGhpE(`B zqx`-j`WK27;oqYCDc0{Ozi*TJg_7~Q)B07S-#1PD4)FUz?=Jv+#y`{wH;vz<*HxYqt73`R~(;UjTf<{}YM+oMgyJg1>qWARy$|&*H1U MgL^$)00`*+0ALlrBLDyZ diff --git a/AstuteSystem/hours.txt b/AstuteSystem/hours.txt deleted file mode 100644 index dd34ec0..0000000 --- a/AstuteSystem/hours.txt +++ /dev/null @@ -1,10 +0,0 @@ -Date-Desc-hours-Who -1. 1/22/18=Kick off meating-1 hr-Gopi-Akash -2. 1/24/18-Design meeting-1.5 hrs-Gopi -3. 1/25/18-DB Design-2 hrs-Gopi -4. 1/26/18-DB Design-3 hrs-Gopi -5. 1/27/18-DB Design meeting-1 hr-Gopi -6. 1/28/18-Web sevices design- 1hr - Gopi-Akash -7. 1/28/18-Web services development - 2 hrs - Gopi -8. 2/2/18-Web services development - 6 hrs - Gopi -9. 2/3/18-Web services development - 2 hrs - Gopi diff --git a/AstuteSystem/sql/astute.sql b/AstuteSystem/sql/astute.sql index fb27a69..61202fd 100644 --- a/AstuteSystem/sql/astute.sql +++ b/AstuteSystem/sql/astute.sql @@ -746,6 +746,27 @@ Commit; END// DELIMITER ; +CREATE FUNCTION astute.`get_remaining_qty_fun`(po_no_in varchar(40), inv_num_in varchar(40), item_no_in int) RETURNS double +BEGIN +DECLARE rem_qty double; +DECLARE po_no varchar(40); +if inv_num_in <> null or inv_num_in <> '' THEN + SELECT po_num INTO po_no FROM invoice where inv_no = inv_num_in; +else + set po_no = po_no_in; +end if; + +select po_detail.qty - ifnull(sum(invoice_detail.qty),0) into rem_qty from invoice_detail, invoice, po_detail +where invoice_detail.inv_num in (select inv_no from invoice where invoice.PO_num = po_no) +and invoice_detail.po_line_item_num = item_no_in +and po_detail.PO_num = po_no +and invoice.PO_num = po_detail.PO_num +and invoice.inv_no = invoice_detail.inv_num +and (invoice.inv_status = 2) +and invoice_detail.po_line_item_num = po_detail.line_item_no; + +return rem_qty; +END; -- Dumping structure for procedure astute.update_all_remaining_quantities DELIMITER // DROP PROCEDURE IF EXISTS astute.update_all_remaining_quantities; @@ -837,4 +858,6 @@ INSERT INTO `user` (`user_id`, `username`, `password`, `first_name`, `middle_nam /*!40014 SET FOREIGN_KEY_CHECKS=IF(@OLD_FOREIGN_KEY_CHECKS IS NULL, 1, @OLD_FOREIGN_KEY_CHECKS) */; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; --- GRANT ALL PRIVILEGES ON *.* TO 'astute_user'@'localhost' IDENTIFIED BY 'password'; +-- create and GRANT ALL PRIVILEGES ON *.* TO 'astute_user'@'localhost' IDENTIFIED BY 'password'; +CREATE USER 'astute_user'@'localhost' IDENTIFIED BY 'password'; +GRANT ALL PRIVILEGES ON * . * TO 'astute_user'@'localhost'; diff --git a/AstuteSystem/sql/astute_old.sql b/AstuteSystem/sql/astute_old.sql deleted file mode 100644 index f8af852..0000000 --- a/AstuteSystem/sql/astute_old.sql +++ /dev/null @@ -1,586 +0,0 @@ --- -------------------------------------------------------- --- Host: 127.0.0.1 --- Server version: 5.7.12-log - MySQL Community Server (GPL) --- Server OS: Win64 --- HeidiSQL Version: 9.4.0.5125 --- -------------------------------------------------------- - -/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; -/*!40101 SET NAMES utf8 */; -/*!50503 SET NAMES utf8mb4 */; -/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; -/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; - - --- Dumping database structure for astute -DROP DATABASE IF EXISTS `astute`; -CREATE DATABASE IF NOT EXISTS `astute` /*!40100 DEFAULT CHARACTER SET utf8 */; -USE `astute`; - --- Dumping structure for table astute.change_order -CREATE TABLE IF NOT EXISTS `change_order` ( - `PO_num` varchar(20) NOT NULL, - `change_order_num` int(20) NOT NULL, - `change_order_date` date DEFAULT NULL, - `change_order_amt` double NOT NULL, - `description` varchar(500) DEFAULT NULL, - PRIMARY KEY (`PO_num`,`change_order_num`), - CONSTRAINT `fk_PO_CO_POnum` FOREIGN KEY (`PO_num`) REFERENCES `po` (`PO_num`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - --- Dumping data for table astute.change_order: ~0 rows (approximately) -/*!40000 ALTER TABLE `change_order` DISABLE KEYS */; -/*!40000 ALTER TABLE `change_order` ENABLE KEYS */; - --- Dumping structure for function astute.create_customer_fun -DELIMITER // -CREATE DEFINER=`root`@`localhost` FUNCTION `create_customer_fun`(customerid varchar(20), customerName varchar(100), billToDept varchar(100), add1In varchar(100), add2In varchar(100), cityIn varchar(50), stateIn varchar(20), zipIn int(5), zipLast4In int(4), emailIn varchar(50), phoneIn varchar(20), faxIn varchar(20)) RETURNS varchar(20) CHARSET utf8 -BEGIN -DECLARE last_inserted_id varchar(20); -INSERT INTO customer (customer_id, customer_name, bill_to_dept, add1, add2, city, state ,zip, zip_last_4, email, phone, fax) -VALUES (customerid, customerName, billToDept, add1In, add2In, cityIn, stateIn, zipIn, ziplast4In, emailIn, phoneIn, faxIn); -SELECT LAST_INSERT_ID() into last_inserted_id; -return last_inserted_id; -END// -DELIMITER ; - --- Dumping structure for procedure astute.create_invoice -DELIMITER // -CREATE DEFINER=`root`@`localhost` PROCEDURE `create_invoice`(invNo varchar(20),invDate date,PONo varchar(20),paymentStatus int,billAmt double,specialNotes varchar(500), certClause Varchar(500), invoiceStatus int) -BEGIN -INSERT INTO invoice (inv_no,inv_date,PO_num,pmt_status,bill_amt,special_notes,certification,inv_status) -VALUES (invNo, invDate, PONo, paymentStatus, billAmt, specialNotes, certClause, invoiceStatus); -END// -DELIMITER ; - --- Dumping structure for procedure astute.create_invoice_detail -DELIMITER // -CREATE DEFINER=`root`@`localhost` PROCEDURE `create_invoice_detail`(invoiceNum varchar(20), lineItemNum int, POLineItemNum varchar(20), serviceTypeId int, description varchar(500), qty_in double, fee_in double, fee_type_id_in int) -BEGIN -INSERT INTO INVOICE_DETAIL (inv_num, line_item_num, PO_line_item_num, service_type_id, description, qty, fee, fee_type_id) -VALUES (invoiceNum, lineItemNum, POLineItemNum, serviceTypeId, description, qty_in, fee_in, fee_type_id_in); -END// -DELIMITER ; - --- Dumping structure for procedure astute.create_po -DELIMITER // -CREATE DEFINER=`root`@`localhost` PROCEDURE `create_po`(PONum varchar(40), contractNum varchar(20), PODate date, contractAmt double(10,2), customerid varchar(20), astute_project_num_in varchar(20), title_in varchar(200)) -BEGIN -DECLARE next_po_id int(11); -SELECT count(*) + 1 INTO next_po_id FROM PO WHERE customer_id = customerid; -INSERT INTO PO (po_id, PO_num, contract_num, PO_date, contract_amt, customer_id,astute_project_num, title ) -VALUES (next_po_id, PONum, contractNum, PODate, contractAmt, customerId,astute_project_num_in, title_in); -END// -DELIMITER ; - --- Dumping structure for procedure astute.create_po_detail -DELIMITER // -CREATE DEFINER=`root`@`localhost` PROCEDURE `create_po_detail`(PONum varchar(40), lineItemNo int, servicedesc varchar(500), feetypeid int(11), quantity double, fee_in double, servicetypeid int(1), remaining_qty double) -BEGIN -INSERT INTO PO_DETAIL (PO_num,line_item_no,service_desc,fee_type_id,qty,fee,service_type_id, remaining_qty) -VALUES (POnum,lineitemno,servicedesc,feetypeid,quantity,fee_in, servicetypeid, remaining_qty); -END// -DELIMITER ; - --- Dumping structure for table astute.customer -CREATE TABLE IF NOT EXISTS `customer` ( - `customer_id` varchar(10) NOT NULL, - `customer_name` varchar(100) DEFAULT NULL, - `bill_to_dept` varchar(50) DEFAULT NULL, - `add1` varchar(50) DEFAULT NULL, - `add2` varchar(50) DEFAULT NULL, - `city` varchar(50) DEFAULT NULL, - `state` varchar(2) DEFAULT NULL, - `zip` int(5) DEFAULT NULL, - `zip_last_4` int(4) DEFAULT NULL, - `email` varchar(50) DEFAULT NULL, - `phone` varchar(20) DEFAULT NULL, - `fax` varchar(20) DEFAULT NULL, - PRIMARY KEY (`customer_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - --- Dumping data for table astute.customer: ~0 rows (approximately) -/*!40000 ALTER TABLE `customer` DISABLE KEYS */; -INSERT INTO `customer` (`customer_id`, `customer_name`, `bill_to_dept`, `add1`, `add2`, `city`, `state`, `zip`, `zip_last_4`, `email`, `phone`, `fax`) VALUES - ('VDOT', 'Virginia Depart of Transportation', 'Billing Department', '13134 Saturn Drive', 'Unit 100', 'McLean', 'VA', 22043, 0, 'Billing@vdot.gov', '(703) 122-1234', '(703) 122-1212'); -/*!40000 ALTER TABLE `customer` ENABLE KEYS */; - --- Dumping structure for function astute.delete_invoice -DELIMITER // -CREATE DEFINER=`root`@`localhost` FUNCTION `delete_invoice`(inv_no_in varchar(20)) RETURNS varchar(40) CHARSET utf8 -BEGIN - - DECLARE inv_status_in int; - - SELECT inv_status - INTO inv_status_in - FROM invoice - WHERE inv_no = inv_no_in; - - IF inv_status_in <> 1 THEN - RETURN 'ERROR - ONLY DRAFT INVOICE CAN BE DELETED'; - END IF; - - UPDATE INVOICE_DETAIL SET QTY = 0 WHERE inv_num = inv_no_in; - CALL update_all_remaining_quantities(inv_no_in); - DELETE FROM INVOICE WHERE inv_no = inv_no_in; - - RETURN 'SUCCESS'; - -END// -DELIMITER ; - --- Dumping structure for function astute.duplicate_invoice -DELIMITER // -CREATE DEFINER=`root`@`localhost` FUNCTION `duplicate_invoice`(inv_no_in varchar(20)) RETURNS varchar(20) CHARSET utf8 -BEGIN - DECLARE generated_inv_number varchar(20); - DECLARE po_num_in varchar(20); - - SELECT po_num - INTO po_num_in - FROM invoice - WHERE inv_no = inv_no_in; - - SELECT generate_inv_number(po_num_in) - INTO generated_inv_number; - - INSERT INTO invoice - (inv_no,inv_date,PO_num,change_order_num,bill_amt,special_notes,certification,inv_status,pmt_status) - (SELECT generated_inv_number, CURDATE(), PO_num, change_order_num, bill_amt, special_notes, certification, inv_status, pmt_status - FROM invoice - WHERE inv_no = inv_no_in); - - INSERT INTO invoice_detail - (inv_num,line_item_num,PO_line_item_num,service_type_id,description,qty,fee,fee_type_id) - (SELECT generated_inv_number, line_item_num, PO_line_item_num, service_type_id, description, 0, fee, fee_type_id - FROM invoice_detail - WHERE inv_num = inv_no_in); - - return generated_inv_number; - -END// -DELIMITER ; - --- Dumping structure for table astute.fee_type -CREATE TABLE IF NOT EXISTS `fee_type` ( - `fee_type_id` int(11) NOT NULL, - `fee_type_desc` varchar(40) NOT NULL, - PRIMARY KEY (`fee_type_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - --- Dumping data for table astute.fee_type: ~2 rows (approximately) -/*!40000 ALTER TABLE `fee_type` DISABLE KEYS */; -INSERT INTO `fee_type` (`fee_type_id`, `fee_type_desc`) VALUES - (1, 'Fixed fee'), - (2, 'Hourly'); -/*!40000 ALTER TABLE `fee_type` ENABLE KEYS */; - --- Dumping structure for function astute.generate_final_inv_number -DELIMITER // -CREATE DEFINER=`root`@`localhost` FUNCTION `generate_final_inv_number`(po_num_in varchar(20)) RETURNS varchar(40) CHARSET utf8 -BEGIN - DECLARE customer_id_in int; - DECLARE customer_code varchar(4); - DECLARE po_count int; - DECLARE inv_count int; - DECLARE inv_number varchar(40); - - SELECT customer_id - INTO customer_id_in - FROM po - WHERE po.po_num = po_num_in; - - SELECT substr(customer.customer_id, 1, 3) - INTO customer_code - FROM customer - WHERE customer_id = customer_id_in; - - SELECT po_id - INTO po_count - FROM po - WHERE PO_num = po_num_in; - - SELECT inv_seq+1 - INTO inv_count - FROM po - WHERE po.PO_num = po_num_in; - - SELECT concat(customer_code, '-',LPAD(po_count, 2, '0'), '_', date_format(now(),'%m%d'),'_',inv_count) INTO inv_number; - RETURN inv_number; - -END// -DELIMITER ; - --- Dumping structure for function astute.generate_inv_number -DELIMITER // -CREATE DEFINER=`root`@`localhost` FUNCTION `generate_inv_number`(po_num_in varchar(20)) RETURNS varchar(40) CHARSET utf8 -BEGIN - DECLARE customer_id_in varchar(20); - DECLARE customer_code varchar(4); - DECLARE po_count int; - DECLARE inv_count int; - DECLARE inv_number varchar(40); - - SELECT customer_id - INTO customer_id_in - FROM po - WHERE po.po_num = po_num_in; - - SELECT substr(customer.customer_id, 1, 3) - INTO customer_code - FROM customer - WHERE customer_id = customer_id_in; - - SELECT po_id - INTO po_count - FROM po - WHERE PO_num = po_num_in; - - SELECT inv_seq + 1 - INTO inv_count - FROM PO - WHERE PO.PO_num = po_num_in; - - SELECT concat(customer_code, '-',LPAD(po_count, 2, '0'), '_DRAFT_',FLOOR(RAND()*(999))) INTO inv_number; - RETURN inv_number; - -END// -DELIMITER ; - --- Dumping structure for function astute.get_payment_type -DELIMITER // -CREATE DEFINER=`root`@`localhost` FUNCTION `get_payment_type`(pmt_type int) RETURNS varchar(20) CHARSET utf8 -BEGIN - declare payment_type VARCHAR(20); - SELECT payment_type_name INTO payment_type FROM payment_type WHERE payment_type_id = pmt_type; - return payment_type; -END// -DELIMITER ; - --- Dumping structure for function astute.get_previously_billed_amt -DELIMITER // -CREATE DEFINER=`root`@`localhost` FUNCTION `get_previously_billed_amt`(po_no varchar(20)) RETURNS double(10,2) -BEGIN - declare billed_amt double(10,2); - SELECT sum(bill_amt) INTO billed_amt FROM invoice WHERE invoice.PO_num = po_no; - return billed_amt; -END// -DELIMITER ; - --- Dumping structure for table astute.invoice -CREATE TABLE IF NOT EXISTS `invoice` ( - `inv_no` varchar(20) NOT NULL, - `inv_date` date NOT NULL, - `PO_num` varchar(40) NOT NULL, - `bill_amt` double NOT NULL, - `special_notes` varchar(500) DEFAULT NULL, - `certification` varchar(500) DEFAULT 'Certified that the above items and rates are in accordance with the contractual agreement as verified by the undersigned.', - `inv_status` int(2) DEFAULT '1', - `pmt_status` int(11) NOT NULL DEFAULT '1', - PRIMARY KEY (`inv_no`), - KEY `fk_InvMaster_POnum` (`PO_num`), - CONSTRAINT `fk_InvMaster_POnum` FOREIGN KEY (`PO_num`) REFERENCES `po` (`PO_num`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - --- Dumping data for table astute.invoice: ~2 rows (approximately) -/*!40000 ALTER TABLE `invoice` DISABLE KEYS */; -INSERT INTO `invoice` (`inv_no`, `inv_date`, `PO_num`, `bill_amt`, `special_notes`, `certification`, `inv_status`, `pmt_status`) VALUES - ('VDO-01_0927_1', '2018-09-23', 'VDOT-54321', 5000, 'First invoice', 'Certified that the above items and rates are in accordance with the contractual agreement as verified by the undersigned', 2, 0), - ('VDO-02_DRAFT_392', '2018-09-23', 'ABC-123', 500, 'First Invoice', 'Certified that the above items and rates are in accordance with the contractual agreement as verified by the undersigned', 1, 0); -/*!40000 ALTER TABLE `invoice` ENABLE KEYS */; - --- Dumping structure for table astute.invoice_detail -CREATE TABLE IF NOT EXISTS `invoice_detail` ( - `inv_num` varchar(20) NOT NULL, - `line_item_num` int(11) NOT NULL, - `PO_line_item_num` int(11) DEFAULT NULL, - `service_type_id` int(11) DEFAULT NULL, - `description` varchar(500) DEFAULT NULL, - `qty` double DEFAULT NULL, - `fee` double DEFAULT NULL, - `fee_type_id` int(11) DEFAULT NULL, - PRIMARY KEY (`inv_num`,`line_item_num`), - KEY `fk_InvDetail_FeeType` (`fee_type_id`), - CONSTRAINT `fk_InvDetail_FeeType` FOREIGN KEY (`fee_type_id`) REFERENCES `fee_type` (`fee_type_id`) ON DELETE CASCADE ON UPDATE CASCADE, - CONSTRAINT `fk_InvDetail_InvNum` FOREIGN KEY (`inv_num`) REFERENCES `invoice` (`inv_no`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - --- Dumping data for table astute.invoice_detail: ~4 rows (approximately) -/*!40000 ALTER TABLE `invoice_detail` DISABLE KEYS */; -INSERT INTO `invoice_detail` (`inv_num`, `line_item_num`, `PO_line_item_num`, `service_type_id`, `description`, `qty`, `fee`, `fee_type_id`) VALUES - ('VDO-01_0927_1', 1, 1, 1, 'Study existing designs', 0, 1000, 1), - ('VDO-01_0927_1', 2, 4, 3, 'Peer Review', 50, 100, 2), - ('VDO-02_DRAFT_392', 1, 1, 2, 'Design', 0, 5000, 1), - ('VDO-02_DRAFT_392', 2, -1, 1, 'Out of Pocket Expenses', 50, 10, 1); -/*!40000 ALTER TABLE `invoice_detail` ENABLE KEYS */; - --- Dumping structure for table astute.invoice_notes -CREATE TABLE IF NOT EXISTS `invoice_notes` ( - `inv_no` varchar(20) NOT NULL, - `inv_note` varchar(500) NOT NULL, - PRIMARY KEY (`inv_no`), - CONSTRAINT `fk_inv_notes_inv_no` FOREIGN KEY (`inv_no`) REFERENCES `invoice` (`inv_no`) ON DELETE CASCADE ON UPDATE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - --- Dumping data for table astute.invoice_notes: ~0 rows (approximately) -/*!40000 ALTER TABLE `invoice_notes` DISABLE KEYS */; -/*!40000 ALTER TABLE `invoice_notes` ENABLE KEYS */; - --- Dumping structure for table astute.invoice_payment -CREATE TABLE IF NOT EXISTS `invoice_payment` ( - `inv_no` varchar(20) NOT NULL, - `invoice_payment_type` int(11) NOT NULL, - `invoice_amount` double NOT NULL, - `payment_date` date NOT NULL, - `invoice_payment_id` int(11) NOT NULL AUTO_INCREMENT, - `description` varchar(50) DEFAULT NULL, - PRIMARY KEY (`invoice_payment_id`), - KEY `fk_inv_pmt_inv_no` (`inv_no`), - KEY `fk_pinv_pmt_type` (`invoice_payment_type`), - CONSTRAINT `fk_inv_pmt_inv_no` FOREIGN KEY (`inv_no`) REFERENCES `invoice` (`inv_no`) ON DELETE CASCADE ON UPDATE CASCADE, - CONSTRAINT `fk_pinv_pmt_type` FOREIGN KEY (`invoice_payment_type`) REFERENCES `payment_type` (`payment_type_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - --- Dumping data for table astute.invoice_payment: ~6 rows (approximately) -/*!40000 ALTER TABLE `invoice_payment` DISABLE KEYS */; -INSERT INTO `invoice_payment` (`inv_no`, `invoice_payment_type`, `invoice_amount`, `payment_date`, `invoice_payment_id`, `description`) VALUES - ('VDO-01_0927_1', 2, 900, '2018-09-29', 1, 'VDO-01_0927_1 FIrst Payment'), - ('VDO-01_0927_1', 2, 980, '2018-09-27', 2, NULL), - ('VDO-01_0927_1', 2, 1000, '2018-09-27', 3, NULL), - ('VDO-01_0927_1', 2, 1000, '2018-09-27', 4, NULL), - ('VDO-01_0927_1', 2, 1000, '2018-09-27', 5, NULL), - ('VDO-01_0927_1', 2, 200, '2018-09-28', 12, NULL); -/*!40000 ALTER TABLE `invoice_payment` ENABLE KEYS */; - --- Dumping structure for table astute.invoice_status -CREATE TABLE IF NOT EXISTS `invoice_status` ( - `inv_status_id` int(11) NOT NULL, - `inv_status_desc` varchar(20) NOT NULL, - PRIMARY KEY (`inv_status_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - --- Dumping data for table astute.invoice_status: ~3 rows (approximately) -/*!40000 ALTER TABLE `invoice_status` DISABLE KEYS */; -INSERT INTO `invoice_status` (`inv_status_id`, `inv_status_desc`) VALUES - (1, 'Draft'), - (2, 'Submitted'), - (3, 'Void'); -/*!40000 ALTER TABLE `invoice_status` ENABLE KEYS */; - --- Dumping structure for table astute.payment_status -CREATE TABLE IF NOT EXISTS `payment_status` ( - `payment_status_id` int(11) NOT NULL, - `payment_status_desc` varchar(20) NOT NULL, - PRIMARY KEY (`payment_status_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - --- Dumping data for table astute.payment_status: ~3 rows (approximately) -/*!40000 ALTER TABLE `payment_status` DISABLE KEYS */; -INSERT INTO `payment_status` (`payment_status_id`, `payment_status_desc`) VALUES - (1, 'Outstanding'), - (2, 'Partially paid'), - (3, 'Paid'); -/*!40000 ALTER TABLE `payment_status` ENABLE KEYS */; - --- Dumping structure for table astute.payment_type -CREATE TABLE IF NOT EXISTS `payment_type` ( - `payment_type_id` int(11) NOT NULL, - `payment_type_name` varchar(20) NOT NULL, - PRIMARY KEY (`payment_type_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - --- Dumping data for table astute.payment_type: ~3 rows (approximately) -/*!40000 ALTER TABLE `payment_type` DISABLE KEYS */; -INSERT INTO `payment_type` (`payment_type_id`, `payment_type_name`) VALUES - (1, 'Credit Card'), - (2, 'Check'), - (3, 'ACH'); -/*!40000 ALTER TABLE `payment_type` ENABLE KEYS */; - --- Dumping structure for table astute.po -CREATE TABLE IF NOT EXISTS `po` ( - `PO_num` varchar(40) NOT NULL COMMENT 'Alpha numeric, auto generated in frontend', - `contract_num` varchar(20) DEFAULT NULL, - `PO_date` date DEFAULT NULL, - `contract_amt` double(10,2) DEFAULT NULL, - `customer_id` varchar(11) NOT NULL, - `astute_project_num` varchar(20) NOT NULL, - `po_id` int(11) NOT NULL, - `title` varchar(200) DEFAULT NULL, - `inv_seq` int(3) NOT NULL DEFAULT '0', - PRIMARY KEY (`PO_num`), - KEY `ind_pomaster_contractno` (`contract_num`), - KEY `ind_pomaster_podate` (`PO_date`), - KEY `po_customer_id` (`customer_id`), - CONSTRAINT `po_customer_id_fk` FOREIGN KEY (`customer_id`) REFERENCES `customer` (`customer_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - --- Dumping data for table astute.po: ~2 rows (approximately) -/*!40000 ALTER TABLE `po` DISABLE KEYS */; -INSERT INTO `po` (`PO_num`, `contract_num`, `PO_date`, `contract_amt`, `customer_id`, `astute_project_num`, `po_id`, `title`, `inv_seq`) VALUES - ('ABC-123', 'ABC-123', '2018-09-23', 5000.00, 'VDOT', 'ABC-123', 2, 'ABC-123', 0), - ('VDOT-54321', 'VDOT-54321', '2018-09-22', 10000.00, 'VDOT', 'VDOTProj', 1, 'Supervisor', 1); -/*!40000 ALTER TABLE `po` ENABLE KEYS */; - --- Dumping structure for table astute.po_detail -CREATE TABLE IF NOT EXISTS `po_detail` ( - `PO_num` varchar(40) NOT NULL, - `line_item_no` int(11) NOT NULL, - `service_desc` varchar(500) DEFAULT NULL, - `fee_type_id` int(11) DEFAULT '1' COMMENT '1-fixed fee, 2-hourly', - `qty` double DEFAULT NULL, - `service_type_id` int(1) DEFAULT '1' COMMENT '1-studies, 2-supplemental service, 3-out of pocket, 4-reimbursement, 5-', - `fee` double DEFAULT NULL, - `remaining_qty` double DEFAULT NULL, - PRIMARY KEY (`PO_num`,`line_item_no`), - KEY `fk_PODetail_ServType` (`service_type_id`), - CONSTRAINT `fk_PODetail_POnum` FOREIGN KEY (`PO_num`) REFERENCES `po` (`PO_num`), - CONSTRAINT `fk_PODetail_ServType` FOREIGN KEY (`service_type_id`) REFERENCES `service_type` (`service_type_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - --- Dumping data for table astute.po_detail: ~5 rows (approximately) -/*!40000 ALTER TABLE `po_detail` DISABLE KEYS */; -INSERT INTO `po_detail` (`PO_num`, `line_item_no`, `service_desc`, `fee_type_id`, `qty`, `service_type_id`, `fee`, `remaining_qty`) VALUES - ('ABC-123', 1, 'Design', 1, 1, 2, 5000, 1), - ('VDOT-54321', 1, 'Study existing designs', 1, 1, 1, 1000, 1), - ('VDOT-54321', 2, 'Modify design', 1, 1, 2, 2000, 1), - ('VDOT-54321', 3, 'Cost estimation', 1, 1, 4, 1000, 1), - ('VDOT-54321', 4, 'Peer Review', 2, 100, 3, 100, 50); -/*!40000 ALTER TABLE `po_detail` ENABLE KEYS */; - --- Dumping structure for table astute.service_type -CREATE TABLE IF NOT EXISTS `service_type` ( - `service_type_id` int(11) NOT NULL, - `desc` varchar(40) NOT NULL, - PRIMARY KEY (`service_type_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - --- Dumping data for table astute.service_type: ~5 rows (approximately) -/*!40000 ALTER TABLE `service_type` DISABLE KEYS */; -INSERT INTO `service_type` (`service_type_id`, `desc`) VALUES - (1, 'Study'), - (2, 'Design'), - (3, 'Peer Review'), - (4, 'Cost Estimation'), - (5, 'Forensic Investigation'), - (6, 'Out-of-pocket Expense'); -/*!40000 ALTER TABLE `service_type` ENABLE KEYS */; - --- Dumping structure for table astute.session -CREATE TABLE IF NOT EXISTS `session` ( - `session_id` varchar(200) NOT NULL, - `user_id` int(11) NOT NULL, - `session_start_date` date DEFAULT NULL, - `session_end_date` date DEFAULT NULL, - PRIMARY KEY (`session_id`), - KEY `fk_session_user_id` (`user_id`), - CONSTRAINT `fk_session_user_id` FOREIGN KEY (`user_id`) REFERENCES `user` (`user_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - --- Dumping data for table astute.session: ~10 rows (approximately) -/*!40000 ALTER TABLE `session` DISABLE KEYS */; -INSERT INTO `session` (`session_id`, `user_id`, `session_start_date`, `session_end_date`) VALUES - ('058cdb87447645da9ec265e566af834c', 1, NULL, NULL), - ('4f48b60481ab4729a26b809c077fc7c0', 1, NULL, NULL), - ('66ed2bccbaf34b1e96b2b81393996cf9', 1, NULL, NULL), - ('8f8991185a174b87adb7d0b1b40c1475', 1, NULL, NULL), - ('92cd1d01085c4ead892a1c7c137631dd', 1, NULL, NULL), - ('abeefc05fe8e48e5bac7ffab65c85ca6', 1, NULL, NULL), - ('b356aab1dbe84d4f9eea9c1cd965c9a4', 1, NULL, NULL), - ('d6387d93d84341fc91a0c4a5cbf266db', 1, NULL, NULL), - ('dcb4b261f925464bb69ff685c1c6134d', 1, NULL, NULL), - ('fea623a6ff3148899214750707f4f52e', 1, NULL, NULL); -/*!40000 ALTER TABLE `session` ENABLE KEYS */; - --- Dumping structure for procedure astute.submit_invoice -DELIMITER // -CREATE DEFINER=`root`@`localhost` PROCEDURE `submit_invoice`(invNo varchar(20)) -BEGIN -DECLARE po_no varchar(20); -UPDATE INVOICE SET INV_STATUS = 2 WHERE INV_NO = invNo; -SELECT PO_NUM INTO po_no FROM INVOICE WHERE INV_NO = invNo; - UPDATE INVOICE SET INV_NO = generate_final_inv_number(po_no), INV_STATUS = 2 WHERE INV_NO = invNo; -UPDATE PO SET INV_SEQ = INV_SEQ + 1 WHERE PO_NUM = po_no; -Commit; -END// -DELIMITER ; - --- Dumping structure for procedure astute.update_all_remaining_quantities -DELIMITER // -CREATE DEFINER=`root`@`localhost` PROCEDURE `update_all_remaining_quantities`(invNo varchar(20)) -BEGIN - -DECLARE po_line_item_no int; -DECLARE remaining_qty double; -DECLARE finished INTEGER DEFAULT 0; -DECLARE p_finished INTEGER DEFAULT 0; -DECLARE done boolean DEFAULT FALSE; - -DECLARE po_line_items CURSOR FOR select distinct po_line_item_num from invoice_detail where inv_num = invNo; -DECLARE CONTINUE HANDLER FOR NOT FOUND SET p_finished = 1; - OPEN po_line_items; - po_loop: LOOP - FETCH po_line_items INTO po_line_item_no; - IF p_finished = 1 THEN - LEAVE po_loop; - END IF; - BEGIN - SET remaining_qty = update_remaining_qty_fun('',invNo,po_line_item_no); - END; - END LOOP po_loop; - CLOSE po_line_items; -END// -DELIMITER ; - --- Dumping structure for function astute.update_remaining_qty_fun -DELIMITER // -CREATE DEFINER=`root`@`localhost` FUNCTION `update_remaining_qty_fun`(po_no_in varchar(40), inv_num_in varchar(40), item_no_in int) RETURNS double -BEGIN -DECLARE rem_qty double; -DECLARE po_no varchar(40); -if inv_num_in <> null or inv_num_in <> '' THEN - SELECT po_num INTO po_no FROM invoice where inv_no = inv_num_in; -else - set po_no = po_no_in; -end if; - -select po_detail.qty - ifnull(sum(invoice_detail.qty),0) into rem_qty from invoice_detail, invoice, po_detail -where invoice_detail.inv_num in (select inv_no from invoice where invoice.PO_num = po_no) -and invoice_detail.po_line_item_num = item_no_in -and po_detail.PO_num = po_no -and invoice.PO_num = po_detail.PO_num -and invoice.inv_no = invoice_detail.inv_num -and invoice.inv_status <> 3 -and invoice_detail.po_line_item_num = po_detail.line_item_no; - -update po_detail set remaining_qty = rem_qty where PO_num = po_no and line_item_no = item_no_in; -return rem_qty; -END// -DELIMITER ; - --- Dumping structure for table astute.user -CREATE TABLE IF NOT EXISTS `user` ( - `user_id` int(5) NOT NULL, - `username` varchar(20) DEFAULT NULL, - `password` varchar(20) DEFAULT NULL, - `first_name` varchar(20) DEFAULT NULL, - `middle_name` varchar(20) DEFAULT NULL, - `last_name` varchar(20) DEFAULT NULL, - `role` varchar(20) DEFAULT NULL, - `email` varchar(40) DEFAULT NULL, - `office_phone_ext` int(3) DEFAULT NULL, - `cell_phone` bigint(20) DEFAULT NULL, - PRIMARY KEY (`user_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; - --- Dumping data for table astute.user: ~2 rows (approximately) -/*!40000 ALTER TABLE `user` DISABLE KEYS */; -INSERT INTO `user` (`user_id`, `username`, `password`, `first_name`, `middle_name`, `last_name`, `role`, `email`, `office_phone_ext`, `cell_phone`) VALUES - (1, 'sparikh', 'sparikh', 'Saurin', NULL, 'Parikh', 'Owner', 'sparikh@Astuteng.com', 2024002004, 3014616485), - (2, 'humarethiya', 'humarethiya', 'Haresh', NULL, 'Umaretiya', 'Owner', 'Humaretiya@astuteng.com', 2024002004, 0); -/*!40000 ALTER TABLE `user` ENABLE KEYS */; - -/*!40101 SET SQL_MODE=IFNULL(@OLD_SQL_MODE, '') */; -/*!40014 SET FOREIGN_KEY_CHECKS=IF(@OLD_FOREIGN_KEY_CHECKS IS NULL, 1, @OLD_FOREIGN_KEY_CHECKS) */; -/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; diff --git a/AstuteSystem/src/main/java/com/astute/dao/DAO.java b/AstuteSystem/src/main/java/com/astute/dao/DAO.java index 4cb06b3..249e405 100644 --- a/AstuteSystem/src/main/java/com/astute/dao/DAO.java +++ b/AstuteSystem/src/main/java/com/astute/dao/DAO.java @@ -36,7 +36,7 @@ public abstract class DAO { } /** - * This method is called from the StartupServlet, with the properties being read from pm.conf + * This method is called from the StartupServlet, with the properties being read from db.conf * * @param * @throws AstuteException @@ -60,15 +60,15 @@ public abstract class DAO { host = "localhost"; port = 3306; schema = "astute"; - username = "root"; + username = "astute_user"; password = "password"; - System.out.println("============================================="); - System.out.println("host is " + host); - System.out.println("port is " + port); - System.out.println("schema is " + schema); - System.out.println("username is " + username); - System.out.println("password is " + password); - System.out.println("============================================="); +// System.out.println("============================================="); +// System.out.println("host is " + host); +// System.out.println("port is " + port); +// System.out.println("schema is " + schema); +// System.out.println("username is " + username); +// System.out.println("password is " + password); +// System.out.println("============================================="); dao = new SqlDAO(); // } catch (IOException e) { // e.printStackTrace(); diff --git a/AstuteSystem/src/main/java/com/astute/dao/SqlDAO.java b/AstuteSystem/src/main/java/com/astute/dao/SqlDAO.java index 39d9aff..57292fa 100644 --- a/AstuteSystem/src/main/java/com/astute/dao/SqlDAO.java +++ b/AstuteSystem/src/main/java/com/astute/dao/SqlDAO.java @@ -1429,66 +1429,4 @@ public class SqlDAO extends DAO { } } - private String generatePasswordHash(String password) throws InvalidKeySpecException, NoSuchAlgorithmException { - int iterations = 100; - char[] chars = password.toCharArray(); - SecureRandom sr = SecureRandom.getInstance("SHA1PRNG"); - byte[] salt = new byte[16]; - sr.nextBytes(salt); - - PBEKeySpec spec = new PBEKeySpec(chars, salt, iterations, 64 * 8); - SecretKeyFactory skf = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1"); - byte[] hash = skf.generateSecret(spec).getEncoded(); - return iterations /*+ PM_FIELD_DELIM*/ + toHex(salt) + /*PM_FIELD_DELIM +*/ toHex(hash); - } - - private boolean checkPasswordHash(String stored, String toCheck) throws NoSuchAlgorithmException, InvalidKeySpecException{ - String part0 = stored.substring(0, 3); - String part1 = stored.substring(3, 35); - String part2 = stored.substring(35); - //String[] parts = stored.split(PM_FIELD_DELIM); - int iterations = Integer.parseInt(part0); - byte[] salt = fromHex(part1); - byte[] hash = fromHex(part2); - - PBEKeySpec spec = new PBEKeySpec(toCheck.toCharArray(), salt, iterations, hash.length * 8); - SecretKeyFactory skf = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1"); - byte[] testHash = skf.generateSecret(spec).getEncoded(); - - String x = toHex(testHash); - - int diff = hash.length ^ testHash.length; - for(int i = 0; i < hash.length && i < testHash.length; i++) - { - diff |= hash[i] ^ testHash[i]; - if(hash[i] != testHash[i]){ - int cx = 0; - } - } - return diff == 0; - } - - private static byte[] fromHex(String hex) throws NoSuchAlgorithmException - { - byte[] bytes = new byte[hex.length() / 2]; - for(int i = 0; i 0) - { - return String.format("%0" +paddingLength + "d", 0) + hex; - }else{ - return hex; - } - } - } diff --git a/AstuteSystem/src/main/resources/db.config b/AstuteSystem/src/main/resources/db.config index dfdfd8a..b9591c6 100644 --- a/AstuteSystem/src/main/resources/db.config +++ b/AstuteSystem/src/main/resources/db.config @@ -1,6 +1,6 @@ database=sql host=localhost port=3306 -username=root -password=password -schema=astute +username= +password= +schema= diff --git a/AstuteSystem/src/main/webapp/doc/user-guide.jsp b/AstuteSystem/src/main/webapp/doc/user-guide.jsp deleted file mode 100644 index 2592a79..0000000 --- a/AstuteSystem/src/main/webapp/doc/user-guide.jsp +++ /dev/null @@ -1,105 +0,0 @@ - - - - PM User Guide - - - - -
-

Policy Machine Overview

-

Click here for the Policy Machine User Guide

-
- -
-

Policy Machine Entities

-

Nodes

-
-
Policy Class
-
-
A Policy Class node is the base node for any policy. For example, the Role Based Access Control policy will have a Policy Class node called RBAC in which the policy is contained.
-
-
Object Attribute
-
-
An Object Attribure node is a container that can hold other Object Attrbibutes or objects, and are often the target of the policies that are defined by the Policy Class they are assigned to. - For example, in a Multiple Layer Security (MLS) Policy Class, there may be an Object Attribute labeled "Top Secret". The nodes (Object Attributes or Objects) that are then assigned to this Object - Attribute might be subjected to the policies defined by the MLS policy class on "Top Secret".
-
-
Object
-
-
An Object is a representation of data, whether the data is on a file system or in a schema.
-
-
User Attribute
-
-
A User Attribute node is a collection of one or many users.
-
-
User
-
-
A User node is a representation of a User of the Policy Machine.
-
-
Operation Set
-
-
An Operation Set node is a collection of Operations. This set is then used to connect a User Attribute to an Object Attribute, creating an association relationship in which the users that belong to the - User Attribute are granted the rights in the Operation set on the Object Attribute. For example, if there is an Object Attribute called "Medical Records" and a User Attribute called "Doctors" and we want to give - doctors the permission to read and write, we would create the association: "Doctor" ---> Operation Set{read, write} ---> "Medical Records".
-
-
- -

Deny Constraints

-

While Policies can be defined on tables and columns, there is still a need to restrict access at the record field level. For example, consider a table called "Employee Record" with the columns: Name, Phone Number, Salary and a User Bob. - The Name and Phone Number fields may be public information available to everyone, however, the Salary field is private data and Bob can only read his own salary, no one elses. We can use a deny constraint to deny - Bob the ability to read the column "Salary" instersected with the complement of his own Record. This would lead to Bob only being able to read the Salary field of his own record.

-

Assignments

-

Assignments are fundamental to the Policy Machine because they are how Policies are created and enforced.

-

Operations

-

Brief explanation of different kinds (class) of Operations. Describe resource vs admin

-

Policy Scripts

- Policy Scripts are another means of defining policies in the Policy Machine. For example, we can write a script that when a User is created, an Object Attribute called User Home is also created. We can then grant the new User the permissions - read and write on that Object Attribute. This is just one example of using Policy Scripts. An in-depth documentation with example scripts is available here. -
-
-

Examples

-

Examples and use cases of Policy Machine calls

-
-
-

Policy Machine API

-
- - -