X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=auth%2Fauth-batch%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Faaf%2Fauth%2Factions%2FRoleModify.java;h=75937ef7fa8458d3a2d5293f36eb70d916297a6a;hb=7e966914050e66219689001ff4ab601a49eef0ac;hp=c72a9d8fc3b0e246a027a452972795bbe8677073;hpb=ceda6e8bc270202bcb24340b86617110289c902e;p=aaf%2Fauthz.git diff --git a/auth/auth-batch/src/main/java/org/onap/aaf/auth/actions/RoleModify.java b/auth/auth-batch/src/main/java/org/onap/aaf/auth/actions/RoleModify.java index c72a9d8f..75937ef7 100644 --- a/auth/auth-batch/src/main/java/org/onap/aaf/auth/actions/RoleModify.java +++ b/auth/auth-batch/src/main/java/org/onap/aaf/auth/actions/RoleModify.java @@ -37,116 +37,116 @@ import org.onap.aaf.misc.env.APIException; import com.datastax.driver.core.Cluster; public class RoleModify extends ActionDAO { - public RoleModify(AuthzTrans trans, Cluster cluster, boolean dryRun) throws APIException, IOException { - super(trans, cluster, dryRun); - } - - public RoleModify(AuthzTrans trans, ActionDAO adao) { - super(trans, adao); - } + public RoleModify(AuthzTrans trans, Cluster cluster, boolean dryRun) throws APIException, IOException { + super(trans, cluster, dryRun); + } + + public RoleModify(AuthzTrans trans, ActionDAO adao) { + super(trans, adao); + } - @Override - public Result exec(final AuthzTrans trans, final Role r,final RoleModify.Modify modify) { - Result> rr = q.roleDAO.read(trans, r.ns,r.name); - if(dryRun) { - if(rr.isOKhasData()) { - return Result.ok(rr.value.get(0)); - } else { - return Result.err(Result.ERR_NotFound, "Data not Found " + r.toString()); - } - } else { - Result rv = null; - if(rr.isOKhasData()) { - for(final Data d : rr.value) { - modify.change(d); - if(d.ns.equals(r.ns) && d.name.equals(r.name)) { - // update for fields - // In either case, adjust Roles - for(String p : d.perms) { - if(!r.perms.contains(p)) { - Result rpdd = PermDAO.Data.decode(trans, q, p); - if(rpdd.isOKhasData()) { - q.roleDAO.dao().addPerm(trans, d, rpdd.value); - } - } - } - for(String p : r.perms) { - if(!d.perms.contains(p)) { - Result rpdd = PermDAO.Data.decode(trans, q, p); - if(rpdd.isOKhasData()) { - q.roleDAO.dao().delPerm(trans, d, rpdd.value); - } - } - } - rv = Result.ok(d); - } else { - for(String p : d.perms) { - Perm perm = Perm.keys.get(p); - if(perm!=null) { - if(perm.roles.contains(r.encode())) { - modify.permModify().exec(trans, perm, new PermModify.Modify() { - @Override - public RoleModify roleModify() { - return RoleModify.this; - } - - @Override - public void change(PermDAO.Data pdd) { - pdd.roles.remove(r.encode()); - pdd.roles.add(d.encode()); - } - }); - } - } - } - Result> preexist = q.roleDAO.read(trans, d); - if(preexist.isOKhasData()) { - Data rdd = preexist.value.get(0); - for(String p : d.perms) { - Result perm = PermDAO.Data.decode(trans, q, p); - if(perm.isOKhasData()) { - q.roleDAO.dao().addPerm(trans,rdd, perm.value); - } - } - rv = Result.ok(rdd); - } else { - rv = q.roleDAO.create(trans, d); - } - if(rv.isOK()) { - trans.info().printf("Updating %s|%s to %s|%s", r.ns, r.name, d.ns, d.name); - RoleDAO.Data rmme = new RoleDAO.Data(); - rmme.ns=r.ns; - rmme.name=r.name; - q.roleDAO.delete(trans, rmme, false); - - } else { - trans.info().log(rv.errorString()); - } - } - } - } else { - rv = Result.err(rr); - } - if(rv==null) { - rv = Result.err(Status.ERR_General,"Never get to this code"); - } - return rv; - } - } - - public static interface Modify { - void change(RoleDAO.Data ur); - PermModify permModify(); - } - - public Result delete(AuthzTrans trans, Role r) { - if(dryRun) { - return Result.ok(); - } else { - RoleDAO.Data data = new RoleDAO.Data(); - data.ns=r.ns; - data.name = r.name; - return q.roleDAO.delete(trans,data,false); - } - } + @Override + public Result exec(final AuthzTrans trans, final Role r,final RoleModify.Modify modify) { + Result> rr = q.roleDAO.read(trans, r.ns,r.name); + if (dryRun) { + if (rr.isOKhasData()) { + return Result.ok(rr.value.get(0)); + } else { + return Result.err(Result.ERR_NotFound, "Data not Found " + r.toString()); + } + } else { + Result rv = null; + if (rr.isOKhasData()) { + for (final Data d : rr.value) { + modify.change(d); + if (d.ns.equals(r.ns) && d.name.equals(r.name)) { + // update for fields + // In either case, adjust Roles + for (String p : d.perms) { + if (!r.perms.contains(p)) { + Result rpdd = PermDAO.Data.decode(trans, q, p); + if (rpdd.isOKhasData()) { + q.roleDAO.dao().addPerm(trans, d, rpdd.value); + } + } + } + for (String p : r.perms) { + if (!d.perms.contains(p)) { + Result rpdd = PermDAO.Data.decode(trans, q, p); + if (rpdd.isOKhasData()) { + q.roleDAO.dao().delPerm(trans, d, rpdd.value); + } + } + } + rv = Result.ok(d); + } else { + for (String p : d.perms) { + Perm perm = Perm.keys.get(p); + if (perm!=null) { + if (perm.roles.contains(r.encode())) { + modify.permModify().exec(trans, perm, new PermModify.Modify() { + @Override + public RoleModify roleModify() { + return RoleModify.this; + } + + @Override + public void change(PermDAO.Data pdd) { + pdd.roles.remove(r.encode()); + pdd.roles.add(d.encode()); + } + }); + } + } + } + Result> preexist = q.roleDAO.read(trans, d); + if (preexist.isOKhasData()) { + Data rdd = preexist.value.get(0); + for (String p : d.perms) { + Result perm = PermDAO.Data.decode(trans, q, p); + if (perm.isOKhasData()) { + q.roleDAO.dao().addPerm(trans,rdd, perm.value); + } + } + rv = Result.ok(rdd); + } else { + rv = q.roleDAO.create(trans, d); + } + if (rv.isOK()) { + trans.info().printf("Updating %s|%s to %s|%s", r.ns, r.name, d.ns, d.name); + RoleDAO.Data rmme = new RoleDAO.Data(); + rmme.ns=r.ns; + rmme.name=r.name; + q.roleDAO.delete(trans, rmme, false); + + } else { + trans.info().log(rv.errorString()); + } + } + } + } else { + rv = Result.err(rr); + } + if (rv==null) { + rv = Result.err(Status.ERR_General,"Never get to this code"); + } + return rv; + } + } + + public static interface Modify { + void change(RoleDAO.Data ur); + PermModify permModify(); + } + + public Result delete(AuthzTrans trans, Role r) { + if (dryRun) { + return Result.ok(); + } else { + RoleDAO.Data data = new RoleDAO.Data(); + data.ns=r.ns; + data.name = r.name; + return q.roleDAO.delete(trans,data,false); + } + } } \ No newline at end of file