Subversion Repositories bacoAlunos

Rev

Rev 298 | Rev 363 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
29 jmachado 1
package pt.estgp.estgweb.services.email;
2
 
236 jmachado 3
import jomm.utils.TemplateUtils;
4
import org.apache.log4j.Logger;
5
import pt.estgp.estgweb.Globals;
358 jmachado 6
import pt.estgp.estgweb.web.utils.DatesUtils;
236 jmachado 7
import pt.estgp.estgweb.services.expceptions.ServiceException;
8
import pt.estgp.estgweb.domain.enums.LangEnum;
237 jmachado 9
import pt.estgp.estgweb.domain.CourseUnitAnnouncement;
10
import pt.estgp.estgweb.domain.User;
358 jmachado 11
import pt.estgp.estgweb.domain.CourseUnit;
12
import pt.estgp.estgweb.domain.CourseUnitSummary;
236 jmachado 13
import pt.estgp.estgweb.utils.Email;
14
import pt.utl.ist.berserk.logic.serviceManager.IService;
15
 
16
import javax.mail.MessagingException;
17
import javax.mail.Session;
18
import javax.mail.Message;
19
import javax.mail.Transport;
20
import javax.mail.internet.MimeMessage;
21
import javax.mail.internet.InternetAddress;
22
import java.util.ArrayList;
29 jmachado 23
import java.util.List;
236 jmachado 24
import java.util.Properties;
25
import java.text.MessageFormat;
29 jmachado 26
 
27
/**
28
 * @author Jorge Machado
29
 * @date 20/Mar/2008
30
 * @time 18:31:00
31
 * @see pt.estgp.estgweb.services.email
32
 */
236 jmachado 33
public class SendEmailService implements IService
29 jmachado 34
{
236 jmachado 35
    private static final 1.5.0/docs/api/java/util/logging/Logger.html">Logger logger = 1.5.0/docs/api/java/util/logging/Logger.html">Logger.getLogger(SendEmailService.class);
36
 
37
    private static final 1.5.0/docs/api/java/lang/String.html">String gradeUnitTemplate = Globals.TEMPLATE_EMAIL_PATH + "/" + Globals.EMAIL_GRADE_UNIT_TEMPLATE;
38
 
39
    public void sendEmail(Email email) throws ServiceException
29 jmachado 40
    {
236 jmachado 41
        try{
42
 
43
            // Set up properties for mail session
44
            1.5.0/docs/api/java/util/Properties.html">Properties props = 1.5.0/docs/api/java/lang/System.html">System.getProperties();
45
            props.put("mail.smtp.host", Globals.EMAIL_SERVER_HOST);
46
 
47
            // Get session
48
            Session session = Session.getDefaultInstance(props, null);
49
 
50
            // Create message
51
            MimeMessage message = new MimeMessage(session);
52
            // Set the recipients of the message
298 jmachado 53
            boolean valid = false;
54
            for (1.5.0/docs/api/java/lang/String.html">String recipient : email.getRecipients())
55
            {
56
                if(Email.validEmail(recipient))
57
                {
58
                    valid=true;
59
                    message.addRecipient(Message.RecipientType.TO,new InternetAddress(recipient));
60
                }
236 jmachado 61
            }
298 jmachado 62
            if(valid)
63
            {
64
                1.5.0/docs/api/java/lang/String.html">String content = TemplateUtils.getOrLoadTemplate(Globals.TEMPLATE_EMAIL_PATH + "/" + email.getEmailTemplateName());
65
                // Format the mail message
66
                1.5.0/docs/api/java/lang/String.html">String fullMessage = 1.5.0/docs/api/java/text/MessageFormat.html">MessageFormat.format(content, email.getArguments().toArray());
236 jmachado 67
 
298 jmachado 68
                message.setFrom(new InternetAddress(email.getFrom()));
69
                message.setSubject(email.getSubject());
70
                message.setText(fullMessage);
236 jmachado 71
 
298 jmachado 72
                Transport.send(message);
73
            }
236 jmachado 74
        }
75
        catch(MessagingException e)
76
        {
77
            logger.error(e,e);
78
            throw new ServiceException(e.toString());
79
        }
29 jmachado 80
    }
236 jmachado 81
 
82
    public Email getSendUrlToFriendEmail(1.5.0/docs/api/java/lang/String.html">String url, 1.5.0/docs/api/java/lang/String.html">String from, LangEnum langEnum, List<String> recipients)
83
    {
84
        List<String> arguments = new ArrayList<String>();
85
        arguments.add(from);
86
        arguments.add(url);
87
        1.5.0/docs/api/java/lang/String.html">String subjectTxt;
88
        1.5.0/docs/api/java/lang/String.html">String template;
89
 
90
        if(langEnum == LangEnum.PORTUGUESE)
91
        {
92
            template = Globals.EMAIL_SEND_URL_FRIEND_TEMPLATE_PT;
237 jmachado 93
            subjectTxt = Globals.EMAIL_SEND_URL_FRIEND_SUBJECT_PT;
236 jmachado 94
        }
95
        else
96
        {
97
            template = Globals.EMAIL_SEND_URL_FRIEND_TEMPLATE_EN;
237 jmachado 98
            subjectTxt = Globals.EMAIL_SEND_URL_FRIEND_SUBJECT_EN;
236 jmachado 99
        }
100
 
101
        1.5.0/docs/api/java/lang/String.html">String subject = java.text.1.5.0/docs/api/java/text/MessageFormat.html">MessageFormat.format(subjectTxt,new 1.5.0/docs/api/java/lang/String.html">String[]{from});
102
        return new Email(subject ,recipients, Globals.SYSTEM_EMAIL_BOX,template,arguments);
103
    }
104
 
105
    public boolean sendUrlToFriend(1.5.0/docs/api/java/lang/String.html">String url, 1.5.0/docs/api/java/lang/String.html">String from, LangEnum langEnum, List<String> recipients)
106
    {
107
        try
108
        {
109
            sendEmail(getSendUrlToFriendEmail(url,from,langEnum,recipients));
110
            return true;
111
        }
112
        catch (ServiceException e)
113
        {
114
            return false;
115
        }
116
    }
117
 
237 jmachado 118
    public boolean sendCourseUnitAnnouncement(CourseUnitAnnouncement announcement, LangEnum langEnum, 1.5.0/docs/api/java/lang/String.html">String from,  List<User> users)
119
    {
120
        try
121
        {
122
            sendEmail(getCourseUnitAnnouncementEmail(announcement,langEnum,from,users));
123
            return true;
124
        }
125
        catch (ServiceException e)
126
        {
127
            return false;
128
        }
129
    }
236 jmachado 130
 
237 jmachado 131
    public Email getCourseUnitAnnouncementEmail(CourseUnitAnnouncement announcement, LangEnum langEnum, 1.5.0/docs/api/java/lang/String.html">String from,  List<User> users)
132
    {
133
        List<String> arguments = new ArrayList<String>();
134
        arguments.add(announcement.getCourseUnit().getName());
135
        arguments.add(announcement.getTitle());
136
        arguments.add(announcement.getText());
137
        arguments.add(from);
138
 
139
        1.5.0/docs/api/java/lang/String.html">String subjectTxt;
140
        1.5.0/docs/api/java/lang/String.html">String template;
141
 
142
        if(langEnum == LangEnum.PORTUGUESE)
143
        {
144
            template = Globals.EMAIL_COURSEUNIT_ANNOUNCEMENT_TEMPLATE_PT;
145
            subjectTxt = Globals.EMAIL_COURSEUNIT_ANNOUNCEMENT_SUBJECT_PT;
146
        }
147
        else
148
        {
149
            template = Globals.EMAIL_COURSEUNIT_ANNOUNCEMENT_TEMPLATE_EN;
150
            subjectTxt = Globals.EMAIL_COURSEUNIT_ANNOUNCEMENT_SUBJECT_EN;
151
        }
152
 
153
        List<String> recipients = new ArrayList<String>();
154
        for(User u: users)
155
        {
298 jmachado 156
            if(Email.validEmail(u.getEmail()))
157
                recipients.add(u.getEmail());
237 jmachado 158
        }
159
 
160
        1.5.0/docs/api/java/lang/String.html">String subject = java.text.1.5.0/docs/api/java/text/MessageFormat.html">MessageFormat.format(subjectTxt,new 1.5.0/docs/api/java/lang/String.html">String[]{announcement.getCourseUnit().getNormalizedName(),announcement.getTitle()});
161
        return new Email(subject ,recipients, Globals.SYSTEM_EMAIL_BOX,template,arguments);
162
    }
163
 
164
 
236 jmachado 165
    public Email getNewGradesEmail(List<String[]> grades, LangEnum langEnum, 1.5.0/docs/api/java/lang/String.html">String studentEmail, 1.5.0/docs/api/java/lang/String.html">String studentName)
166
    {
167
        List<String> arguments = new ArrayList<String>();
168
 
169
        1.5.0/docs/api/java/lang/String.html">String subject;
170
        1.5.0/docs/api/java/lang/String.html">String template;
171
 
172
        if(langEnum == LangEnum.PORTUGUESE)
173
        {
174
            template = Globals.EMAIL_NEW_GRADES_TEMPLATE_PT;
237 jmachado 175
            subject = Globals.EMAIL_NEW_GRADES_SUBJECT_PT;
236 jmachado 176
        }
177
        else
178
        {
179
            template = Globals.EMAIL_NEW_GRADES_TEMPLATE_EN;
237 jmachado 180
            subject = Globals.EMAIL_NEW_GRADES_SUBJECT_EN;
236 jmachado 181
        }
182
 
183
        1.5.0/docs/api/java/lang/StringBuilder.html">StringBuilder gradesBuilder = new 1.5.0/docs/api/java/lang/StringBuilder.html">StringBuilder();
184
        for(1.5.0/docs/api/java/lang/String.html">String[] grade:  grades)
185
        {
186
            1.5.0/docs/api/java/lang/String.html">String gradeTxt = TemplateUtils.formatMessageTemplate(gradeUnitTemplate,grade);
187
            gradesBuilder.append(gradeTxt);
188
        }
189
 
190
        arguments.add(studentName);
191
        arguments.add(gradesBuilder.toString());
192
 
193
        List<String> recipients = new ArrayList<String>();
194
        recipients.add(studentEmail);
195
        return new Email(subject ,recipients, Globals.SYSTEM_EMAIL_BOX,template,arguments);
196
    }
197
 
358 jmachado 198
    public Email getSummaryEmail(List<String> emails, CourseUnitSummary cUS, CourseUnit c, LangEnum langEnum)
199
    {
200
        List<String> arguments = new ArrayList<String>();
201
 
202
        1.5.0/docs/api/java/lang/String.html">String data = DatesUtils.getStringFromDate(cUS.getDataAula());
203
        1.5.0/docs/api/java/lang/String.html">String subject;
204
        1.5.0/docs/api/java/lang/String.html">String template;
205
 
206
        if(langEnum == LangEnum.PORTUGUESE)
207
        {
208
            template = Globals.EMAIL_SUMMARY_TEMPLATE_PT;
209
            subject = Globals.EMAIL_SUMMARY_SUBJECT_PT;
210
        }
211
        else
212
        {
213
            template = Globals.EMAIL_SUMMARY_TEMPLATE_EN;
214
            subject = Globals.EMAIL_SUMMARY_SUBJECT_EN;
215
        }
216
        subject = TemplateUtils.formatMessageTemplate(subject,new 1.5.0/docs/api/java/lang/String.html">String[]{c.getName()});
217
 
218
        arguments.add(c.getName());
219
        arguments.add(""+cUS.getNumeroAula());
220
        arguments.add(data);
221
        arguments.add(cUS.getTitulo());
222
        arguments.add(cUS.getDescricao());
223
 
224
        List<String> recipients = new ArrayList<String>();
225
        for(1.5.0/docs/api/java/lang/String.html">String email:emails)
226
            recipients.add(email);
227
        return new Email(subject ,recipients, Globals.SYSTEM_EMAIL_BOX,template,arguments);
228
    }
229
 
236 jmachado 230
    public boolean sendNewGrades(List<String[]> grades, LangEnum langEnum, 1.5.0/docs/api/java/lang/String.html">String studentEmail, 1.5.0/docs/api/java/lang/String.html">String studentName)
231
    {
232
        try
233
        {
234
            sendEmail(getNewGradesEmail(grades,langEnum,studentEmail,studentName));
235
            return true;
236
        }
237
        catch (ServiceException e)
238
        {
239
            return false;
240
        }
241
 
242
    }
243
 
244
    public static void main(1.5.0/docs/api/java/lang/String.html">String [] args)
245
    {
246
        List<String[]> grades = new ArrayList<String[]>();
247
        grades.add(new 1.5.0/docs/api/java/lang/String.html">String[]{"Teste","3"});
248
        grades.add(new 1.5.0/docs/api/java/lang/String.html">String[]{"Teste2","4"});
249
        new SendEmailService().sendNewGrades(grades,LangEnum.PORTUGUESE,"jmachado@estgp.pt","jorge Machado");
250
    }
251
 
29 jmachado 252
}