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;
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;
}
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