Approval Batch, prep better JUnit
[aaf/authz.git] / auth / auth-batch / src / main / java / org / onap / aaf / auth / batch / helpers / Future.java
index ac4a132..13f8193 100644 (file)
@@ -3,6 +3,8 @@
  * 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.
@@ -32,6 +34,7 @@ import java.util.UUID;
 import org.onap.aaf.auth.dao.cass.FutureDAO;
 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;
@@ -50,7 +53,45 @@ public class Future implements CacheChange.Data, Comparable<Future> {
     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>() {
+        @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<Future> withConstruct = new Creator<Future>() {
+        @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;
+        role = Approval.roleFromMemo(memo);
+    }
     
     public final UUID id() {
         return fdd.id;
@@ -71,20 +112,27 @@ public class Future implements CacheChange.Data, Comparable<Future> {
     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<Future> creator) {
+       load(trans,session,creator, new Visitor<Future>() {
+                       @Override
+                       public void visit(Future f) {
+                           data.put(f.fdd.id,f);
+                           if (f.role==null) {
+                               return;
+                           }
+                           List<Future> lf = byRole.get(f.role);
+                           if (lf==null) {
+                               lf = new ArrayList<>();
+                               byRole.put(f.role,lf);
+                           }
+                           lf.add(f);
+                       }
+               });
     }
 
-    public static void load(Trans trans, Session session, Creator<Future> creator) {
+
+    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);
@@ -99,52 +147,14 @@ public class Future implements CacheChange.Data, Comparable<Future> {
         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);
-
+                   ++count;
+               visitor.visit(creator.create(row));
             }
         } finally {
             tt.done();
             trans.info().log("Found",count,"Futures");
         }
     }
-    
-    public static 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),
-                    row.getTimestamp(3),row.getTimestamp(4), null);
-        }
-
-        @Override
-        public String select() {
-            return "select id,memo,target,start,expires from authz.future";
-        }
-    };
-
-    public static Creator<Future> withConstruct = new Creator<Future>() {
-        @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<Void> delayedDelete(AuthzTrans trans, FutureDAO fd, boolean dryRun, String text) {
         Result<Void> rv;
@@ -198,6 +208,16 @@ public class Future implements CacheChange.Data, Comparable<Future> {
     public static boolean pendingDelete(Future f) {
         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");
+       }
 
 }