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%2FFuture.java;h=4bbab9d3e8e7198968d3c964c76359ac3bf74be5;hb=1296352d8eafee57f982a4342ad79ada4aa56d28;hp=ac4a13239396370ebe56b1ff4035b44d6e101233;hpb=343481da5dac494c0b063f0b5b0ddb865fa1f214;p=aaf%2Fauthz.git diff --git a/auth/auth-batch/src/main/java/org/onap/aaf/auth/batch/helpers/Future.java b/auth/auth-batch/src/main/java/org/onap/aaf/auth/batch/helpers/Future.java index ac4a1323..4bbab9d3 100644 --- a/auth/auth-batch/src/main/java/org/onap/aaf/auth/batch/helpers/Future.java +++ b/auth/auth-batch/src/main/java/org/onap/aaf/auth/batch/helpers/Future.java @@ -3,13 +3,15 @@ * org.onap.aaf * =========================================================================== * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved. + * + * Modifications Copyright (C) 2018 IBM. * =========================================================================== * 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. @@ -21,6 +23,7 @@ package org.onap.aaf.auth.batch.helpers; +import java.io.IOException; import java.nio.ByteBuffer; import java.util.ArrayList; import java.util.Date; @@ -30,8 +33,10 @@ import java.util.TreeMap; import java.util.UUID; import org.onap.aaf.auth.dao.cass.FutureDAO; +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.cadi.util.CSV; import org.onap.aaf.misc.env.Env; import org.onap.aaf.misc.env.TimeTaken; import org.onap.aaf.misc.env.Trans; @@ -46,45 +51,95 @@ import com.datastax.driver.core.Statement; public class Future implements CacheChange.Data, Comparable { public static final Map data = new TreeMap<>(); public static final Map> byRole = new TreeMap<>(); - + public final FutureDAO.Data fdd; public final String role; // derived private static final CacheChange cache = new CacheChange<>(); - - + + public static Creator v2_0_17 = new Creator() { + @Override + public Future create(Row row) { + return new Future(row.getUUID(0),row.getString(1),row.getString(2), + row.getTimestamp(3),row.getTimestamp(4), null); + } + + @Override + public String select() { + return "select id,memo,target,start,expires from authz.future"; + } + }; + + public static Creator withConstruct = new Creator() { + @Override + public String select() { + return "select id,memo,target,start,expires,construct from authz.future"; + } + + @Override + public Future create(Row row) { + return new Future(row.getUUID(0),row.getString(1),row.getString(2), + row.getTimestamp(3),row.getTimestamp(4), row.getBytes(5)); + } + + }; + + + public Future(UUID id, String memo, String target, Date start, Date expires, ByteBuffer construct) { + fdd = new FutureDAO.Data(); + fdd.id = id; + fdd.memo = memo; + fdd.target = target; + fdd.start = start; + fdd.expires = expires; + fdd.construct = construct; + String role = null; + if ("user_role".equals(target)) { + UserRoleDAO.Data urdd = new UserRoleDAO.Data(); + try { + urdd.reconstitute(construct); + fdd.target_key = urdd.user + '|' + urdd.role; + fdd.target_date = urdd.expires; + role = urdd.role; + } catch (IOException e) { + e.printStackTrace(System.err); + } + } + this.role = role; + } + public final UUID id() { return fdd.id; } - + public final String memo() { return fdd.memo; } - + public final String target() { return fdd.target; } - + public final Date start() { return fdd.start; } - + public final Date expires() { return fdd.expires; } - - public Future(UUID id, String memo, String target, Date start, Date expires, ByteBuffer construct) { - fdd = new FutureDAO.Data(); - fdd.id = id; - fdd.memo = memo; - fdd.target = target; - fdd.start = start; - fdd.expires = expires; - fdd.construct = construct; - role = Approval.roleFromMemo(memo); + public static void load(Trans trans, Session session, Creator creator) { + load(trans,session,creator, f -> { + data.put(f.fdd.id,f); + if (f.role==null) { + return; + } + List lf = byRole.computeIfAbsent(f.role, k -> new ArrayList<>()); + lf.add(f); + }); } - public static void load(Trans trans, Session session, Creator creator) { + + public static void load(Trans trans, Session session, Creator creator, Visitor visitor) { trans.info().log( "query: " + creator.select() ); ResultSet results; TimeTaken tt = trans.start("Load Futures", Env.REMOTE); @@ -94,57 +149,19 @@ public class Future implements CacheChange.Data, Comparable { } finally { tt.done(); } - + int count = 0; tt = trans.start("Process Futures", Env.SUB); try { for (Row row : results.all()) { ++count; - Future f = creator.create(row); - data.put(f.fdd.id,f); - if (f.role==null) { - continue; - } - List lf = byRole.get(f.role); - if (lf==null) { - lf = new ArrayList<>(); - byRole.put(f.role,lf); - } - lf.add(f); - + visitor.visit(creator.create(row)); } } finally { tt.done(); trans.info().log("Found",count,"Futures"); } } - - public static Creator v2_0_17 = new Creator() { - @Override - public Future create(Row row) { - return new Future(row.getUUID(0),row.getString(1),row.getString(2), - row.getTimestamp(3),row.getTimestamp(4), null); - } - - @Override - public String select() { - return "select id,memo,target,start,expires from authz.future"; - } - }; - - public static Creator withConstruct = new Creator() { - @Override - public String select() { - return "select id,memo,target,start,expires,construct from authz.future"; - } - - @Override - public Future create(Row row) { - return new Future(row.getUUID(0),row.getString(1),row.getString(2), - row.getTimestamp(3),row.getTimestamp(4), row.getBytes(5)); - } - - }; public Result delayedDelete(AuthzTrans trans, FutureDAO fd, boolean dryRun, String text) { Result rv; @@ -164,7 +181,7 @@ public class Future implements CacheChange.Data, Comparable { } return rv; } - + /* (non-Javadoc) * @see org.onap.aaf.auth.helpers.CacheChange.Data#resetLocalData() */ @@ -190,7 +207,7 @@ public class Future implements CacheChange.Data, Comparable { public static void resetLocalData() { cache.resetLocalData(); } - + public static int sizeForDeletion() { return cache.cacheSize(); } @@ -199,5 +216,15 @@ public class Future implements CacheChange.Data, Comparable { return cache.contains(f); } + public static void row(CSV.Writer cw, Future f) { + cw.row("future",f.fdd.id,f.fdd.target,f.fdd.expires,f.role,f.fdd.memo); + } + + + public static void deleteByIDBatch(StringBuilder sb, String id) { + sb.append("DELETE from authz.future where id="); + sb.append(id); + sb.append(";\n"); + } }