2 * ============LICENSE_START====================================================
4 * ===========================================================================
5 * Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
6 * ===========================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END====================================================
21 package org.onap.aaf.auth.batch.approvalsets;
23 import java.nio.ByteBuffer;
24 import java.security.NoSuchAlgorithmException;
25 import java.security.SecureRandom;
26 import java.util.ArrayList;
27 import java.util.GregorianCalendar;
28 import java.util.HashSet;
29 import java.util.List;
31 import java.util.UUID;
33 import org.onap.aaf.auth.dao.cass.ApprovalDAO;
34 import org.onap.aaf.auth.dao.cass.FutureDAO;
35 import org.onap.aaf.auth.env.AuthzTrans;
36 import org.onap.aaf.auth.layer.Result;
37 import org.onap.aaf.cadi.CadiException;
38 import org.onap.aaf.misc.env.util.Chrono;
40 public class ApprovalSet {
41 private DataView dataview;
42 protected FutureDAO.Data fdd;
43 protected List<ApprovalDAO.Data> ladd;
45 public ApprovalSet(final GregorianCalendar start, final String target, final DataView dv) throws CadiException {
47 fdd = new FutureDAO.Data();
49 fdd.id = newID(target);
50 } catch (NoSuchAlgorithmException e) {
51 throw new CadiException(e);
54 fdd.start = start.getTime();
55 ladd = new ArrayList<>();
58 protected UUID newID(String target) throws NoSuchAlgorithmException {
59 StringBuilder sb = new StringBuilder(new String(SecureRandom.getInstanceStrong().generateSeed(10)));
61 sb.append(System.currentTimeMillis());
62 return Chrono.dateToUUID(System.currentTimeMillis());
65 protected void setConstruct(final ByteBuffer bytes) {
66 fdd.construct = bytes;
69 protected void setMemo(final String memo) {
73 protected void setExpires(final GregorianCalendar expires) {
74 fdd.expires = expires.getTime();
77 public Result<Void> write(AuthzTrans trans) {
78 StringBuilder errs = null;
79 if(ladd == null || ladd.isEmpty()) {
80 errs = new StringBuilder("No Approvers for ");
81 errs .append(fdd.memo);
83 Result<FutureDAO.Data> rf = dataview.insert(trans, fdd);
85 errs = new StringBuilder();
86 errs.append(rf.errorString());
88 for(ApprovalDAO.Data add : ladd) {
89 Result<ApprovalDAO.Data> af = dataview.insert(trans, add);
92 errs = new StringBuilder();
96 errs.append(af.errorString());
101 return errs==null?Result.ok():Result.err(Result.ERR_Backend,errs.toString());
104 public boolean hasApprovals() {
105 return !ladd.isEmpty();
108 public Set<String> approvers() {
109 Set<String> rv = new HashSet<>();
110 for(ApprovalDAO.Data app : ladd) {
111 rv.add(app.approver);