X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=auth%2Fauth-batch%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Faaf%2Fauth%2Fbatch%2Fupdate%2FApprovals.java;h=0df493436a9bf5eb36b8e50ddf491d39d636ead9;hb=889a9891f6df5bbb26a760cfb106be947e87aa5c;hp=03c812ae75004121b59d2c957e7e132c388a1f5f;hpb=a50007dcded86acc2dcd610810f8afac720a058a;p=aaf%2Fauthz.git diff --git a/auth/auth-batch/src/main/java/org/onap/aaf/auth/batch/update/Approvals.java b/auth/auth-batch/src/main/java/org/onap/aaf/auth/batch/update/Approvals.java index 03c812ae..0df49343 100644 --- a/auth/auth-batch/src/main/java/org/onap/aaf/auth/batch/update/Approvals.java +++ b/auth/auth-batch/src/main/java/org/onap/aaf/auth/batch/update/Approvals.java @@ -23,13 +23,12 @@ package org.onap.aaf.auth.batch.update; import java.io.File; import java.io.IOException; -import java.text.ParseException; import java.util.ArrayList; -import java.util.Date; import java.util.GregorianCalendar; import java.util.List; import java.util.Map; import java.util.Map.Entry; +import java.util.Set; import java.util.TreeMap; import org.onap.aaf.auth.batch.Batch; @@ -38,42 +37,34 @@ import org.onap.aaf.auth.batch.approvalsets.ApprovalSet; import org.onap.aaf.auth.batch.approvalsets.Pending; import org.onap.aaf.auth.batch.approvalsets.URApprovalSet; import org.onap.aaf.auth.batch.helpers.BatchDataView; -import org.onap.aaf.auth.batch.helpers.CQLBatch; -import org.onap.aaf.auth.batch.helpers.CQLBatchLoop; -import org.onap.aaf.auth.batch.helpers.LastNotified; import org.onap.aaf.auth.batch.helpers.NS; -import org.onap.aaf.auth.batch.helpers.Notification; -import org.onap.aaf.auth.batch.helpers.Notification.TYPE; import org.onap.aaf.auth.batch.helpers.Role; import org.onap.aaf.auth.batch.helpers.UserRole; -import org.onap.aaf.auth.batch.reports.Notify; -import org.onap.aaf.auth.batch.reports.bodies.NotifyPendingApprBody; import org.onap.aaf.auth.dao.cass.UserRoleDAO; import org.onap.aaf.auth.env.AuthzTrans; import org.onap.aaf.auth.layer.Result; import org.onap.aaf.auth.org.OrganizationException; -import org.onap.aaf.cadi.Access; import org.onap.aaf.cadi.CadiException; import org.onap.aaf.cadi.client.Holder; import org.onap.aaf.cadi.util.CSV; +import org.onap.aaf.cadi.util.CSV.Writer; import org.onap.aaf.misc.env.APIException; import org.onap.aaf.misc.env.TimeTaken; import org.onap.aaf.misc.env.Trans; import org.onap.aaf.misc.env.util.Chrono; public class Approvals extends Batch { - private final Access access; private final AuthzTrans noAvg; private BatchDataView dataview; private List csvList; - private GregorianCalendar now; - private final Notify notify; + private Writer napproveCW; + private static final GregorianCalendar now = new GregorianCalendar(); + private static final String sdate = Chrono.dateOnlyStamp(now); + private static final String CSV = ".csv"; + private static final String APPROVALS_NEW = "ApprovalsNew"; - public Approvals(AuthzTrans trans) throws APIException, IOException, OrganizationException { super(trans.env()); - notify = new Notify(trans); - access = env.access(); noAvg = env.newTransNoAvg(); noAvg.setUser(new BatchPrincipal("batch:Approvals")); session = cluster.connect(); @@ -82,8 +73,6 @@ public class Approvals extends Batch { Role.load(trans, session); UserRole.load(trans, session, UserRole.v2_0_11); - now = new GregorianCalendar(); - csvList = new ArrayList<>(); File f; if(args().length>0) { @@ -103,45 +92,21 @@ public class Approvals extends Batch { trans.error().printf("CSV File %s does not exist",f.getAbsolutePath()); } } + + + File file = new File(logDir(),APPROVALS_NEW + sdate +CSV); + CSV approveCSV = new CSV(env.access(),file); + napproveCW = approveCSV.writer(); + napproveCW.row("info",APPROVALS_NEW,sdate,1); + } @Override protected void run(AuthzTrans trans) { Map mpending = new TreeMap<>(); - Holder count = new Holder<>(0); - final CQLBatchLoop cbl = new CQLBatchLoop(new CQLBatch(noAvg.info(),session),100,dryRun); - for(CSV approveCSV : csvList) { - TimeTaken tt = trans.start("Load Analyzed Reminders",Trans.SUB,approveCSV.name()); - try { - approveCSV.visit(row -> { - switch(row.get(0)) { - case Pending.REMIND: - try { - String user = row.get(1); - Pending p = new Pending(row); - Pending mp = mpending.get(user); - if(mp==null) { - mpending.put(user, p); - } else { - mp.inc(p); // FYI, unlikely - } - count.set(count.get()+1); - } catch (ParseException e) { - trans.error().log(e); - } - break; - } - }); - } catch (IOException | CadiException e) { - e.printStackTrace(); - // .... but continue with next row - } finally { - tt.done(); - } - } - trans.info().printf("Processed %d Reminder Rows", count.get()); + Pending p = Pending.create(); - count.set(0); + Holder count = new Holder<>(0); for(CSV approveCSV : csvList) { TimeTaken tt = trans.start("Processing %s's UserRoles",Trans.SUB,approveCSV.name()); try { @@ -155,14 +120,20 @@ public class Approvals extends Batch { }); Result rw = uras.write(noAvg); if(rw.isOK()) { - Pending p = new Pending(); - Pending mp = mpending.get(urdd.user); - if(mp==null) { - mpending.put(urdd.user, p); + Set approvers = uras.approvers(); + if(approvers.isEmpty()) { + trans.error().printf("No Approvers found for %s-%s (probably no owner)",urdd.user,urdd.role); } else { - mp.inc(p); + for(String approver : approvers) { + Pending mp = mpending.get(approver); + if(mp==null) { + mpending.put(approver, Pending.create()); + } else { + mp.inc(p); // FYI, unlikely + } + } + count.set(count.get()+1); } - count.set(count.get()+1); } else { trans.error().log(rw.errorString()); } @@ -178,60 +149,25 @@ public class Approvals extends Batch { } trans.info().printf("Processed %d UserRoles", count.get()); - count.set(0); - NotifyPendingApprBody npab = new NotifyPendingApprBody(access); - - GregorianCalendar gc = new GregorianCalendar(); - gc.add(GregorianCalendar.DAY_OF_MONTH, 7); - Date oneWeek = gc.getTime(); - CSV.Saver rs = new CSV.Saver(); - - tt = trans.start("Obtain Last Notifications", Trans.SUB); - LastNotified lastN; - try { - lastN = new LastNotified(session); - lastN.add(mpending.keySet()); - } finally { - tt.done(); - } - - Pending p; - tt = trans.start("Notify for Pending", Trans.SUB); + tt = trans.start("Processing %s's UserRoles",Trans.SUB,approveCSV.name()); + int cnt = 0; try { - for(Entry es : mpending.entrySet()) { - p = es.getValue(); - Date dateLastNotified = lastN.lastNotified(es.getKey()); - if(p.newApprovals() || dateLastNotified==null || dateLastNotified.after(oneWeek) ) { - rs.row("appr", es.getKey(),p.qty(),batchEnv); - npab.store(rs.asList()); - if(notify.notify(noAvg, npab)>0) { - // Update - cbl.preLoop(); - update(cbl.inc(),es.getKey(),Notification.TYPE.OA); - } - } - } - } finally { - tt.done(); - } - trans.info().printf("Created %d Notifications", count.get()); - } + for(Entry es : mpending.entrySet()) { + p.row(napproveCW,es.getKey()); + ++cnt; + } + } finally { + tt.done(); + trans.info().printf("Processed %d Reminders", cnt); + } + } } - - private void update(StringBuilder sb, String user, TYPE oa) { - sb.append("UPDATE authz.notify SET last=dateof(now()) WHERE user='"); - sb.append(user); - sb.append("' AND type="); - sb.append(oa.idx()); - sb.append(';'); - - } @Override protected void _close(AuthzTrans trans) { - if(session!=null) { - session.close(); - session = null; - } + if(napproveCW!=null) { + napproveCW.flush(); + napproveCW.close(); + } } }