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=67923e80e0e9a618beace4a6502c9b56889e028a;hb=78ccdcc1d1c29760e4cf833f94df62e1c5aa733f;hp=d9ee272d67ce3fa135e52b9dbc6c2496f011e356;hpb=aa4854d69e5bf9a9cc96e447e71035adf67fd36d;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 d9ee272d..67923e80 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 @@ -9,9 +9,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,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; @@ -32,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,14 +49,14 @@ import com.datastax.driver.core.SimpleStatement; 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<>(); - + protected static final Map data = new TreeMap<>(); + protected 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() { + public static final Creator v2_0_17 = new Creator() { @Override public Future create(Row row) { return new Future(row.getUUID(0),row.getString(1),row.getString(2), @@ -66,7 +69,7 @@ public class Future implements CacheChange.Data, Comparable { } }; - public static Creator withConstruct = new Creator() { + public static final Creator withConstruct = new Creator() { @Override public String select() { return "select id,memo,target,start,expires,construct from authz.future"; @@ -89,30 +92,54 @@ public class Future implements CacheChange.Data, Comparable { fdd.start = start; fdd.expires = expires; fdd.construct = construct; - role = Approval.roleFromMemo(memo); + 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 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, Visitor visitor) { trans.info().log( "query: " + creator.select() ); ResultSet results; TimeTaken tt = trans.start("Load Futures", Env.REMOTE); @@ -122,24 +149,13 @@ 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(); @@ -165,7 +181,7 @@ public class Future implements CacheChange.Data, Comparable { } return rv; } - + /* (non-Javadoc) * @see org.onap.aaf.auth.helpers.CacheChange.Data#resetLocalData() */ @@ -191,7 +207,7 @@ public class Future implements CacheChange.Data, Comparable { public static void resetLocalData() { cache.resetLocalData(); } - + public static int sizeForDeletion() { return cache.cacheSize(); } @@ -200,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"); + } }