Sonar Fixes: Auth Batch Helpers
[aaf/authz.git] / auth / auth-batch / src / main / java / org / onap / aaf / auth / batch / helpers / Future.java
index d9ee272..67923e8 100644 (file)
@@ -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<Future> {
-    public static final Map<UUID,Future> data = new TreeMap<>();
-    public static final Map<String,List<Future>> byRole = new TreeMap<>();
-    
+    protected static final Map<UUID,Future> data = new TreeMap<>();
+    protected static final Map<String,List<Future>> byRole = new TreeMap<>();
+
     public final FutureDAO.Data fdd;
     public final String role; // derived
     private static final CacheChange<Future> cache = new CacheChange<>();
 
-    public static Creator<Future> v2_0_17 = new Creator<Future>() {
+    public static final Creator<Future> v2_0_17 = new Creator<Future>() {
         @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<Future> {
         }
     };
 
-    public static Creator<Future> withConstruct = new Creator<Future>() {
+    public static final Creator<Future> withConstruct = new Creator<Future>() {
         @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<Future> {
         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<Future> creator) {
+        load(trans,session,creator, f -> {
+            data.put(f.fdd.id,f);
+            if (f.role==null) {
+                return;
+            }
+            List<Future> lf = byRole.computeIfAbsent(f.role, k -> new ArrayList<>());
+            lf.add(f);
+        });
+    }
+
+
+    public static void load(Trans trans, Session session, Creator<Future> creator, Visitor<Future> 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<Future> {
         } 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<Future> 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<Future> {
         }
         return rv;
     }
-    
+
     /* (non-Javadoc)
      * @see org.onap.aaf.auth.helpers.CacheChange.Data#resetLocalData()
      */
@@ -191,7 +207,7 @@ public class Future implements CacheChange.Data, Comparable<Future> {
     public static void resetLocalData() {
         cache.resetLocalData();
     }
-    
+
     public static int sizeForDeletion() {
         return cache.cacheSize();
     }
@@ -200,5 +216,15 @@ public class Future implements CacheChange.Data, Comparable<Future> {
         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");
+    }
 
 }