1 /*******************************************************************************
2 * Copyright (c) 2016 AT&T Intellectual Property. All rights reserved.
3 *******************************************************************************/
4 package com.att.authz.reports;
6 import java.io.IOException;
9 import java.util.TreeMap;
11 import com.att.authz.Batch;
12 import com.att.authz.actions.Email;
13 import com.att.authz.actions.Message;
14 import com.att.authz.env.AuthzTrans;
15 import com.att.authz.helpers.Approver;
16 import com.att.authz.helpers.Notification;
17 import com.att.authz.layer.Result;
18 import com.att.authz.org.Organization;
19 import com.att.authz.org.Organization.Identity;
20 import com.att.authz.org.OrganizationException;
21 import com.att.authz.org.OrganizationFactory;
22 import com.att.dao.CassAccess;
23 import com.att.dao.aaf.cass.ApprovalDAO;
24 import com.att.dao.aaf.cass.ApprovalDAO.Data;
25 import org.onap.aaf.inno.env.APIException;
27 public class ApprNotify extends Batch {
28 private final ApprovalDAO apprDAO;
29 private Result<List<Data>> rladd;
32 public ApprNotify(AuthzTrans trans) throws APIException, IOException {
34 apprDAO = new ApprovalDAO(trans, cluster, CassAccess.KEYSPACE);
35 session = apprDAO.getSession(trans);
36 rladd = apprDAO.readByStatus(trans,"pending");
38 email = new Email();//EmailPrint();
42 email.subject("AAF Approval Notification (ENV: %s)",batchEnv);
43 email.preamble("AAF is the AT&T System for Fine-Grained Authorizations. "
44 + "You are being asked to Approve in the %s environment before AAF Actions can be taken. \n\n"
45 + " Please follow this link:\n\n\t%s/approve"
46 ,batchEnv,env.getProperty(GUI_URL));
48 Notification.load(trans, session, Notification.v2_0_14);
52 protected void run(AuthzTrans trans) {
55 trans.warn().log("No Pending Approvals to Process");
57 Organization org=null;
58 //Map<String,Organization> users = new HashMap<String,Organization>();
59 Map<String,Approver> users = new TreeMap<String,Approver>();
61 for(Data data : rladd.value) {
62 // We've already seen this approver. Simply add the new request to him.
64 Approver approver = users.get(data.approver);
66 org = OrganizationFactory.obtain(trans.env(), data.approver);
67 approver = new Approver(data.approver, org);
68 users.put(data.approver, approver);
70 approver.addRequest(data.user);
71 } catch (OrganizationException e) {
77 Message msg = new Message();
78 for(Approver approver : users.values()) {
80 Notification n = Notification.addApproval(trans, org.getIdentity(trans, approver.name));
83 if(n.update(trans, session, isDryRun())) {
84 Identity user = n.org.getIdentity(trans, approver.name);
86 email.addTo(user.email());
88 email.exec(trans, n.org);
90 } catch (OrganizationException e) {
96 trans.error().log('[',rladd.status,']',rladd.details);
101 protected void _close(AuthzTrans trans) {
102 apprDAO.close(trans);