X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=auth%2Fauth-batch%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Faaf%2Fauth%2Fbatch%2Fhelpers%2FApproval.java;h=8aee4f8a98f798ed4484e2b2f10e146d8f34d687;hb=6feb44b8f354d039e74084a3fcd0ad218f4a5c45;hp=fb3aefbeeded4ad832da751f3b542b28c6414bdc;hpb=adfe545fbfb2bf2279ed51137f8c86ca2fb35203;p=aaf%2Fauthz.git diff --git a/auth/auth-batch/src/main/java/org/onap/aaf/auth/batch/helpers/Approval.java b/auth/auth-batch/src/main/java/org/onap/aaf/auth/batch/helpers/Approval.java index fb3aefbe..8aee4f8a 100644 --- a/auth/auth-batch/src/main/java/org/onap/aaf/auth/batch/helpers/Approval.java +++ b/auth/auth-batch/src/main/java/org/onap/aaf/auth/batch/helpers/Approval.java @@ -23,14 +23,16 @@ package org.onap.aaf.auth.batch.helpers; import java.util.ArrayList; import java.util.Date; +import java.util.LinkedList; import java.util.List; +import java.util.Set; import java.util.TreeMap; import java.util.UUID; import org.onap.aaf.auth.dao.cass.ApprovalDAO; import org.onap.aaf.auth.env.AuthzTrans; import org.onap.aaf.auth.layer.Result; -import org.onap.aaf.misc.env.Env; +import org.onap.aaf.cadi.util.CSV; import org.onap.aaf.misc.env.TimeTaken; import org.onap.aaf.misc.env.Trans; @@ -41,25 +43,27 @@ import com.datastax.driver.core.SimpleStatement; import com.datastax.driver.core.Statement; public class Approval implements CacheChange.Data { - public static final String RE_APPROVAL_IN_ROLE = "Re-Approval in Role '"; - public static final String RE_VALIDATE_ADMIN = "Re-Validate as Administrator for AAF Namespace '"; - public static final String RE_VALIDATE_OWNER = "Re-Validate Ownership for AAF Namespace '"; + public static final String ADD_USER_TO_ROLE = "Add User ["; + public static final String RE_APPROVAL_IN_ROLE = "Extend access of User ["; + public static final String RE_VALIDATE_ADMIN = "Revalidate as Admin of AAF Namespace ["; + public static final String RE_VALIDATE_OWNER = "Revalidate as Owner of AAF Namespace ["; public static TreeMap> byApprover = new TreeMap<>(); public static TreeMap> byUser = new TreeMap<>(); public static TreeMap> byTicket = new TreeMap<>(); + public static List list = new LinkedList<>(); private final static CacheChange cache = new CacheChange<>(); public final ApprovalDAO.Data add; private String role; - public Approval(UUID id, UUID ticket, String approver, Date last_notified, + public Approval(UUID id, UUID ticket, String approver,// Date last_notified, String user, String memo, String operation, String status, String type, long updated) { add = new ApprovalDAO.Data(); add.id = id; add.ticket = ticket; add.approver = approver; - add.last_notified = last_notified; +// add.last_notified = last_notified; add.user = user; add.memo = memo; add.operation = operation; @@ -73,79 +77,78 @@ public class Approval implements CacheChange.Data { if (memo==null) { return null; } - int first = memo.indexOf('\''); + int first = memo.indexOf('['); if (first>=0) { - int second = memo.indexOf('\'', ++first); + int second = memo.indexOf(']', ++first); if (second>=0) { String role = memo.substring(first, second); if (memo.startsWith(RE_VALIDATE_ADMIN)) { return role + ".admin"; } else if (memo.startsWith(RE_VALIDATE_OWNER)) { return role + ".owner"; - } else if (memo.startsWith(RE_APPROVAL_IN_ROLE)) { - return role; + } else { + first = memo.indexOf('[',second); + if(first>=0) { + second = memo.indexOf(']', ++first); + if(second>=0) { + if(memo.startsWith(RE_APPROVAL_IN_ROLE) || + memo.startsWith(ADD_USER_TO_ROLE)) { + return memo.substring(first, second); + } + } + } } } } return null; } - public static void load(Trans trans, Session session, Creator creator ) { - trans.info().log( "query: " + creator.select() ); - TimeTaken tt = trans.start("Load Notify", Env.REMOTE); - - ResultSet results; - try { - Statement stmt = new SimpleStatement(creator.select()); - results = session.execute(stmt); + public static int load(Trans trans, Session session, Creator creator, Visitor visitor) { + int count = 0; + try { + count+=call(trans,session,creator.query(null), creator, visitor); } finally { - tt.done(); + trans.info().log("Found",count,"Approval Records"); + } + return count; + } + + public static int load(Trans trans, Session session, Creator creator ) { + int count = 0; + try { + count+=call(trans,session,creator.query(null), creator, FullLoad); + } finally { + trans.info().log("Found",count,"Approval Records"); } - int count = 0; - tt = trans.start("Process Notify", Env.SUB); + return count; + } + + public static int loadUsers(Trans trans, Session session, Set users, Visitor visitor) { + int total = 0; + for(String user : users) { + total+=call(trans,session,String.format("%s WHERE user='%s';",v2_0_17.select(), user),v2_0_17,visitor); + } + return total; + } + + public static void row(CSV.RowSetter crs, Approval app) { + crs.row("approval",app.add.id,app.add.ticket,app.add.user,app.role,app.add.memo); + } + private static int call(Trans trans, Session session, String query, Creator creator, Visitor visitor) { + TimeTaken tt = trans.start("DB Query", Trans.REMOTE); + ResultSet results; try { - List ln; - for (Row row : results.all()) { - ++count; - try { - Approval app = creator.create(row); - String person = app.getApprover(); - if (person!=null) { - ln = byApprover.get(person); - if (ln==null) { - ln = new ArrayList<>(); - byApprover.put(app.getApprover(), ln); - } - ln.add(app); - } - - - person = app.getUser(); - if (person!=null) { - ln = byUser.get(person); - if (ln==null) { - ln = new ArrayList<>(); - byUser.put(app.getUser(), ln); - } - ln.add(app); - } - UUID ticket = app.getTicket(); - if (ticket!=null) { - ln = byTicket.get(ticket); - if (ln==null) { - ln = new ArrayList<>(); - byTicket.put(app.getTicket(), ln); - } - ln.add(app); - } - } finally { - tt.done(); - } - } + Statement stmt = new SimpleStatement( query ); + results = session.execute(stmt); + int count = 0; + for (Row row : results.all()) { + ++count; + visitor.visit(creator.create(row)); + } + return count; } finally { tt.done(); - trans.info().log("Found",count,"Approval Records"); } } @@ -169,41 +172,77 @@ public class Approval implements CacheChange.Data { } } - public void update(AuthzTrans trans, ApprovalDAO apprDAO, boolean dryRun) { - if (dryRun) { - trans.info().printf("Would update Approval %s, %s, last_notified %s",add.id,add.status,add.last_notified); - } else { - trans.info().printf("Update Approval %s, %s, last_notified %s",add.id,add.status,add.last_notified); - apprDAO.update(trans, add); - } + public static void clear() { + byApprover.clear(); + byUser.clear(); + byTicket.clear(); + list.clear(); + cache.resetLocalData(); } public static Creator v2_0_17 = new Creator() { @Override public Approval create(Row row) { - return new Approval(row.getUUID(0), row.getUUID(1), row.getString(2), row.getTimestamp(3), - row.getString(4),row.getString(5),row.getString(6),row.getString(7),row.getString(8) - ,row.getLong(9)/1000); + return new Approval(row.getUUID(0), row.getUUID(1), row.getString(2), + row.getString(3),row.getString(4),row.getString(5),row.getString(6),row.getString(7), + row.getLong(8)/1000); } @Override public String select() { - return "select id,ticket,approver,last_notified,user,memo,operation,status,type,WRITETIME(status) from authz.approval"; + return "select id,ticket,approver,user,memo,operation,status,type,WRITETIME(status) from authz.approval"; } }; + + public static Visitor FullLoad = new Visitor() { + @Override + public void visit(Approval app) { + List ln; + list.add(app); + + String person = app.getApprover(); + if (person!=null) { + ln = byApprover.get(person); + if (ln==null) { + ln = new ArrayList<>(); + byApprover.put(app.getApprover(), ln); + } + ln.add(app); + } + + person = app.getUser(); + if (person!=null) { + ln = byUser.get(person); + if (ln==null) { + ln = new ArrayList<>(); + byUser.put(app.getUser(), ln); + } + ln.add(app); + } + UUID ticket = app.getTicket(); + if (ticket!=null) { + ln = byTicket.get(ticket); + if (ln==null) { + ln = new ArrayList<>(); + byTicket.put(app.getTicket(), ln); + } + ln.add(app); + } + } + }; - /** - * @return the lastNotified - */ - public Date getLast_notified() { - return add.last_notified; - } - /** - * @param lastNotified the lastNotified to set - */ - public void setLastNotified(Date last_notified) { - add.last_notified = last_notified; - } +// /** +// * @return the lastNotified +// */ +// public Date getLast_notified() { +// return add.last_notified; +// } +// /** +// * @param lastNotified the lastNotified to set +// */ +// public void setLastNotified(Date last_notified) { +// add.last_notified = last_notified; +// } /** * @return the status */ @@ -306,4 +345,10 @@ public class Approval implements CacheChange.Data { return cache.contains(a); } + public static void deleteByIDBatch(StringBuilder sb, String id) { + sb.append("DELETE from authz.approval where id="); + sb.append(id); + sb.append(";\n"); + } + }