Update Batch from Testing
[aaf/authz.git] / auth / auth-batch / src / main / java / org / onap / aaf / auth / batch / approvalsets / ApprovalSet.java
index b7176c2..45617f8 100644 (file)
 package org.onap.aaf.auth.batch.approvalsets;
 
 import java.nio.ByteBuffer;
-import java.security.NoSuchAlgorithmException;
-import java.security.SecureRandom;
 import java.util.ArrayList;
 import java.util.GregorianCalendar;
+import java.util.HashSet;
 import java.util.List;
-import java.util.UUID;
+import java.util.Set;
 
 import org.onap.aaf.auth.dao.cass.ApprovalDAO;
 import org.onap.aaf.auth.dao.cass.FutureDAO;
@@ -43,23 +42,12 @@ public class ApprovalSet {
        public ApprovalSet(final GregorianCalendar start, final String target, final DataView dv) throws CadiException {
                dataview = dv;
                fdd = new FutureDAO.Data();
-        try {
-                       fdd.id = newID(target);
-               } catch (NoSuchAlgorithmException e) {
-                       throw new CadiException(e);
-               } 
+               fdd.id = Chrono.dateToUUID(System.currentTimeMillis());
                fdd.target = target;
                fdd.start = start.getTime();
                ladd = new ArrayList<>();
        }
        
-       protected UUID newID(String target) throws NoSuchAlgorithmException {
-               StringBuilder sb = new StringBuilder(new String(SecureRandom.getInstanceStrong().generateSeed(10)));
-        sb.append(target);
-        sb.append(System.currentTimeMillis());
-        return Chrono.dateToUUID(System.currentTimeMillis());
-       }
-
        protected void setConstruct(final ByteBuffer bytes) {
                fdd.construct = bytes;
        }
@@ -74,23 +62,40 @@ public class ApprovalSet {
        
        public Result<Void> write(AuthzTrans trans) {
                StringBuilder errs = null;
-               Result<FutureDAO.Data> rf = dataview.insert(trans, fdd);
-               if(rf.notOK()) {
-                       errs = new StringBuilder();
-                       errs.append(rf.errorString());
+               if(ladd == null || ladd.isEmpty()) {
+                       errs = new StringBuilder("No Approvers for ");
+                       errs .append(fdd.memo);
                } else {
-                       for(ApprovalDAO.Data add : ladd) {
-                               Result<ApprovalDAO.Data> af = dataview.insert(trans, add);
-                               if(af.notOK()) {
-                                       if(errs==null) {
-                                               errs = new StringBuilder();
-                                       } else {
-                                               errs.append('\n');
+                       Result<FutureDAO.Data> rf = dataview.insert(trans, fdd);
+                       if(rf.notOK()) {
+                               errs = new StringBuilder();
+                               errs.append(rf.errorString());
+                       } else {
+                               for(ApprovalDAO.Data add : ladd) {
+                                       Result<ApprovalDAO.Data> af = dataview.insert(trans, add);
+                                       if(af.notOK()) {
+                                               if(errs==null) {
+                                                       errs = new StringBuilder();
+                                               } else {
+                                                       errs.append('\n');
+                                               }
+                                               errs.append(af.errorString());
                                        }
-                                       errs.append(af.errorString());
                                }
                        }
                }
                return errs==null?Result.ok():Result.err(Result.ERR_Backend,errs.toString());
        }
+
+       public boolean hasApprovals() {
+               return !ladd.isEmpty();
+       }
+       
+       public Set<String> approvers() {
+               Set<String> rv = new HashSet<>();
+               for(ApprovalDAO.Data app : ladd) {
+                       rv.add(app.approver);
+               }
+               return rv;
+       }
 }
\ No newline at end of file