Upgrade to latest oparent
[aaf/authz.git] / authz-batch / src / main / java / com / att / authz / actions / Email.java
1 /*******************************************************************************
2  * Copyright (c) 2016 AT&T Intellectual Property. All rights reserved.
3  *******************************************************************************/
4 package com.att.authz.actions;
5
6 import java.util.ArrayList;
7 import java.util.Collection;
8 import java.util.List;
9
10 import com.att.authz.env.AuthzTrans;
11 import com.att.authz.layer.Result;
12 import com.att.authz.org.Organization;
13
14 public class Email implements Action<Organization,Void>{
15         protected final List<String> toList;
16         protected final List<String> ccList;
17         private final String[] defaultCC;
18         protected String subject;
19         private String preamble;
20         private Message msg;
21         private String sig;
22         protected String lineIndent="  ";
23
24         
25         public Email(String ... defaultCC) {
26                 toList = new ArrayList<String>();
27                 this.defaultCC = defaultCC;
28                 ccList = new ArrayList<String>();
29                 clear();
30         }
31         
32         public Email clear() {
33                 toList.clear();
34                 ccList.clear();
35                 for(String s: defaultCC) {
36                         ccList.add(s);
37                 }
38                 return this;
39         }
40         
41
42         public void indent(String indent) {
43                 lineIndent = indent;
44         }
45         
46         public void preamble(String format, Object ... args) {
47                 preamble = String.format(format, args);
48         }
49
50         public Email addTo(Collection<String> users) {
51                 toList.addAll(users);
52                 return this;
53         }
54
55         public Email addTo(String email) {
56                 toList.add(email);
57                 return this;
58         }
59         
60         
61         public Email subject(String format, Object ... args) {
62                 subject = String.format(format, args);
63                 return this;
64         }
65         
66         
67         public Email signature(String format, Object ... args) {
68                 sig = String.format(format, args);
69                 return this;
70         }
71         
72         public void msg(Message msg) {
73                 this.msg = msg;
74         }
75         
76         @Override
77         public Result<Void> exec(AuthzTrans trans, Organization org) {
78                 StringBuilder sb = new StringBuilder();
79                 if(preamble!=null) {
80                         sb.append(lineIndent);
81                         sb.append(preamble);
82                         sb.append("\n\n");
83                 }
84                 
85                 if(msg!=null) {
86                         msg.msg(sb,lineIndent);
87                         sb.append("\n");
88                 }
89
90                 if(sig!=null) {
91                         sb.append(sig);
92                         sb.append("\n");
93                 }
94
95                 return exec(trans,org,sb);
96         }
97
98         protected Result<Void> exec(AuthzTrans trans, Organization org, StringBuilder sb) {
99                 try {
100                         /* int status = */
101                         org.sendEmail(trans,
102                                 toList, 
103                                 ccList, 
104                                 subject, 
105                                 sb.toString(), 
106                                 false);
107                 } catch (Exception e) {
108                         return Result.err(Result.ERR_ActionNotCompleted,e.getMessage());
109                 }
110                 return Result.ok();
111
112         }
113 }