X-Git-Url: https://gerrit.onap.org/r/gitweb?p=aaf%2Fauthz.git;a=blobdiff_plain;f=auth%2Fauth-batch%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Faaf%2Fauth%2Fbatch%2Fupdate%2FApprovals.java;h=12f0068b665f0d016b6d4e152dada03324d8e4de;hp=36fd6274aeae6cfea6a12478727f8edb7a69cfc5;hb=deb396a3d53a84b2eb5a46d40122b4902d72c601;hpb=2b5103e038a7727734097a671d331db9aaab77ba 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 36fd6274..12f0068b 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 @@ -7,9 +7,9 @@ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -23,11 +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.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; @@ -39,13 +40,15 @@ import org.onap.aaf.auth.batch.helpers.BatchDataView; import org.onap.aaf.auth.batch.helpers.NS; import org.onap.aaf.auth.batch.helpers.Role; import org.onap.aaf.auth.batch.helpers.UserRole; +import org.onap.aaf.auth.batch.reports.Analyze; 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.CadiException; -import org.onap.aaf.cadi.client.Holder; +import org.onap.aaf.cadi.util.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; @@ -53,13 +56,18 @@ import org.onap.aaf.misc.env.util.Chrono; public class Approvals extends Batch { private final AuthzTrans noAvg; - private BatchDataView dataview; - private List csvList; - private GregorianCalendar now; + private BatchDataView dataview; + private List csvList; + private Writer napproveCW; + private final GregorianCalendar now; + private final String sdate; + private static final String CSV = ".csv"; + private static final String APPROVALS_NEW = "ApprovalsNew"; public Approvals(AuthzTrans trans) throws APIException, IOException, OrganizationException { super(trans.env()); - + now = new GregorianCalendar(); + sdate = Chrono.dateOnlyStamp(now); noAvg = env.newTransNoAvg(); noAvg.setUser(new BatchPrincipal("batch:Approvals")); session = cluster.connect(); @@ -68,118 +76,101 @@ 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) { - for(int i=0;i mpending = new TreeMap<>(); - Holder count = new Holder<>(0); - 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 { - Pending p = new Pending(row); - Pending mp = mpending.get(row.get(1)); - if(mp==null) { - mpending.put(row.get(1), 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()); + Map mpending = new TreeMap<>(); + Pending p = Pending.create(); - count.set(0); - for(CSV approveCSV : csvList) { - TimeTaken tt = trans.start("Processing %s's UserRoles",Trans.SUB,approveCSV.name()); - try { - approveCSV.visit(row -> { - switch(row.get(0)) { - case UserRole.APPROVE_UR: - UserRoleDAO.Data urdd = UserRole.row(row); - // Create an Approval - ApprovalSet uras = new URApprovalSet(noAvg, now, dataview, () -> { - return urdd; - }); - 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); - } else { - mp.inc(p); - } - count.set(count.get()+1); - } else { - trans.error().log(rw.errorString()); - } - break; - } - }); - dataview.flush(); - } catch (IOException | CadiException e) { - e.printStackTrace(); - // .... but continue with next row - } finally { - tt.done(); - } + Holder count = new Holder<>(0); + for(CSV neeedApproveCSV : csvList) { + TimeTaken tt = trans.start("Processing %s's UserRoles",Trans.SUB,neeedApproveCSV.name()); + try { + neeedApproveCSV.visit(row -> { + switch(row.get(0)) { + case UserRole.APPROVE_UR: + UserRoleDAO.Data urdd = UserRole.row(row); + // Create an Approval + ApprovalSet uras = new URApprovalSet(noAvg, now, dataview, () -> { + return urdd; + }); + Result rw = uras.write(noAvg); + if(rw.isOK()) { + Set approvers = uras.approvers(); + if(approvers.isEmpty()) { + trans.error().printf("No Approvers found for %s-%s (probably no owner)",urdd.user,urdd.role); + } else { + 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); + } + } else { + trans.error().log(rw.errorString()); + } + break; + } + }); + dataview.flush(); + } catch (IOException | CadiException e) { + e.printStackTrace(); + // .... but continue with next row + } finally { + tt.done(); + } trans.info().printf("Processed %d UserRoles", count.get()); - count.set(0); - tt = trans.start("Notify for Pending", Trans.SUB); - try { - - } finally { - tt.done(); - } - trans.info().printf("Created %d Notifications", count.get()); - } + tt = trans.start("Writing Approvals to %s",Trans.SUB,neeedApproveCSV.name()); + int cnt = 0; + try { + for(Entry es : mpending.entrySet()) { + p.row(napproveCW,es.getKey()); + ++cnt; + } + } finally { + tt.done(); + trans.info().printf("Processed %d Reminders", cnt); + } + } } - + @Override protected void _close(AuthzTrans trans) { - if(session!=null) { - session.close(); - session = null; - } + if(napproveCW!=null) { + napproveCW.flush(); + napproveCW.close(); + } } }