diff options
Diffstat (limited to 'auth/auth-batch')
-rw-r--r-- | auth/auth-batch/pom.xml | 2 | ||||
-rw-r--r-- | auth/auth-batch/src/main/java/org/onap/aaf/auth/batch/reports/ApprovedRpt.java | 183 |
2 files changed, 184 insertions, 1 deletions
diff --git a/auth/auth-batch/pom.xml b/auth/auth-batch/pom.xml index 09ce6182..304a23f7 100644 --- a/auth/auth-batch/pom.xml +++ b/auth/auth-batch/pom.xml @@ -25,7 +25,7 @@ <parent> <groupId>org.onap.aaf.authz</groupId> <artifactId>authparent</artifactId> - <version>2.1.14-SNAPSHOT</version> + <version>2.1.15-SNAPSHOT</version> <relativePath>../pom.xml</relativePath> </parent> diff --git a/auth/auth-batch/src/main/java/org/onap/aaf/auth/batch/reports/ApprovedRpt.java b/auth/auth-batch/src/main/java/org/onap/aaf/auth/batch/reports/ApprovedRpt.java new file mode 100644 index 00000000..7b6e09f5 --- /dev/null +++ b/auth/auth-batch/src/main/java/org/onap/aaf/auth/batch/reports/ApprovedRpt.java @@ -0,0 +1,183 @@ +/** + * ============LICENSE_START==================================================== + * org.onap.aaf + * =========================================================================== + * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved. + * =========================================================================== + * 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. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END==================================================== + * + */ + +package org.onap.aaf.auth.batch.reports; + +import java.io.File; +import java.io.IOException; +import java.util.Date; +import java.util.GregorianCalendar; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.TreeMap; +import java.util.UUID; + +import org.onap.aaf.auth.batch.Batch; +import org.onap.aaf.auth.env.AuthzTrans; +import org.onap.aaf.auth.org.OrganizationException; +import org.onap.aaf.cadi.routing.GreatCircle; +import org.onap.aaf.cadi.util.CSV; +import org.onap.aaf.cadi.util.CSV.Visitor; +import org.onap.aaf.cadi.util.CSV.Writer; +import org.onap.aaf.misc.env.APIException; +import org.onap.aaf.misc.env.Env; +import org.onap.aaf.misc.env.TimeTaken; +import org.onap.aaf.misc.env.util.Chrono; +import org.onap.aaf.misc.env.util.Split; + +import com.datastax.driver.core.ResultSet; +import com.datastax.driver.core.Row; +import com.datastax.driver.core.SimpleStatement; +import com.datastax.driver.core.Statement; + + +public class ApprovedRpt extends Batch { + + private static final String APPR_RPT = "ApprovedRpt"; + private static final String CSV = ".csv"; + private static final String INFO = "info"; + private Date now; + private Writer approvedW; + private CSV historyR; + private static String yr_mon; + + public ApprovedRpt(AuthzTrans trans) throws APIException, IOException, OrganizationException { + super(trans.env()); + trans.info().log("Starting Connection Process"); + + TimeTaken tt0 = trans.start("Cassandra Initialization", Env.SUB); + try { +// TimeTaken tt = trans.start("Connect to Cluster", Env.REMOTE); +// try { +// session = cluster.connect(); +// } finally { +// tt.done(); +// } + + now = new Date(); + String sdate = Chrono.dateOnlyStamp(now); + File file = new File(logDir(),APPR_RPT + sdate +CSV); + CSV csv = new CSV(env.access(),file); + approvedW = csv.writer(false); + + historyR = new CSV(env.access(),args()[1]).setDelimiter('|'); + + yr_mon = args()[0]; + } finally { + tt0.done(); + } + } + + @Override + protected void run(AuthzTrans trans) { + try { + Map<String,Boolean> checked = new TreeMap<String, Boolean>(); + + final AuthzTrans transNoAvg = trans.env().newTransNoAvg(); +// ResultSet results; +// Statement stmt = new SimpleStatement( "select dateof(id), approver, status, user, type, memo from authz.approved;" ); +// results = session.execute(stmt); +// Iterator<Row> iter = results.iterator(); +// Row row; + /* + * while (iter.hasNext()) { + ++totalLoaded; + row = iter.next(); + d = row.getTimestamp(0); + if(d.after(begin)) { + approvedW.row("aprvd", + Chrono.dateOnlyStamp(d), + row.getString(1), + row.getString(2), + row.getString(3), + row.getString(4), + row.getString(5) + ); + } + } + + */ + int totalLoaded = 0; + Date d; + GregorianCalendar gc = new GregorianCalendar(); + gc.add(GregorianCalendar.MONTH, -2); + Date begin = gc.getTime(); + approvedW.comment("date, approver, status, user, role, memo"); + + historyR.visit(row -> { + String s = row.get(7); + if(s.equals(yr_mon)) { + String target = row.get(5); + if("user_role".equals(target)) { + String action = row.get(1); + switch(action) { + case "create": + write("created",row); + break; + case "update": + write("approved",row); + break; + case "delete": + write("denied",row); + break; + } + } + } + }); + + } catch (Exception e) { + trans.info().log(e); + } + } + + private void write(String a_or_d, List<String> row) { + String[] target = Split.splitTrim('|', row.get(4)); + + if(target.length>1) { + UUID id = UUID.fromString(row.get(0)); + Date date = Chrono.uuidToDate(id); + String status; + String memo; + String approver = row.get(6); + if("batch:JobChange".equals(approver)) { + status = "reduced"; + memo = "existing role membership reduced to invoke reapproval"; + } else { + status = a_or_d; + memo = row.get(2); + } + if(!approver.equals(target[0])) { + approvedW.row( + Chrono.niceDateStamp(date), + approver, + status, + target[0], + target[1], + memo + ); + } + } + + + } + +} |