Subversion Repositories bacoAlunos

Rev

Rev 419 | Rev 490 | 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;
363 jmachado 9
import pt.estgp.estgweb.domain.*;
236 jmachado 10
import pt.estgp.estgweb.utils.Email;
11
import pt.utl.ist.berserk.logic.serviceManager.IService;
12
 
13
import javax.mail.MessagingException;
14
import javax.mail.Session;
15
import javax.mail.Message;
16
import javax.mail.Transport;
17
import javax.mail.internet.MimeMessage;
18
import javax.mail.internet.InternetAddress;
19
import java.util.ArrayList;
29 jmachado 20
import java.util.List;
236 jmachado 21
import java.util.Properties;
440 jmachado 22
import java.util.Date;
236 jmachado 23
import java.text.MessageFormat;
29 jmachado 24
 
25
/**
26
 * @author Jorge Machado
27
 * @date 20/Mar/2008
28
 * @time 18:31:00
29
 * @see pt.estgp.estgweb.services.email
30
 */
236 jmachado 31
public class SendEmailService implements IService
29 jmachado 32
{
236 jmachado 33
    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);
34
 
35
    private static final 1.5.0/docs/api/java/lang/String.html">String gradeUnitTemplate = Globals.TEMPLATE_EMAIL_PATH + "/" + Globals.EMAIL_GRADE_UNIT_TEMPLATE;
36
 
37
    public void sendEmail(Email email) throws ServiceException
29 jmachado 38
    {
236 jmachado 39
        try{
40
 
41
            // Set up properties for mail session
42
            1.5.0/docs/api/java/util/Properties.html">Properties props = 1.5.0/docs/api/java/lang/System.html">System.getProperties();
43
            props.put("mail.smtp.host", Globals.EMAIL_SERVER_HOST);
44
 
45
            // Get session
46
            Session session = Session.getDefaultInstance(props, null);
47
 
48
            // Create message
49
            MimeMessage message = new MimeMessage(session);
50
            // Set the recipients of the message
298 jmachado 51
            boolean valid = false;
52
            for (1.5.0/docs/api/java/lang/String.html">String recipient : email.getRecipients())
53
            {
54
                if(Email.validEmail(recipient))
55
                {
56
                    valid=true;
419 jmachado 57
                    message.addRecipient(email.getType(),new InternetAddress(recipient));
298 jmachado 58
                }
236 jmachado 59
            }
298 jmachado 60
            if(valid)
61
            {
62
                1.5.0/docs/api/java/lang/String.html">String content = TemplateUtils.getOrLoadTemplate(Globals.TEMPLATE_EMAIL_PATH + "/" + email.getEmailTemplateName());
63
                // Format the mail message
64
                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 65
 
298 jmachado 66
                message.setFrom(new InternetAddress(email.getFrom()));
67
                message.setSubject(email.getSubject());
68
                message.setText(fullMessage);
236 jmachado 69
 
298 jmachado 70
                Transport.send(message);
71
            }
236 jmachado 72
        }
73
        catch(MessagingException e)
74
        {
75
            logger.error(e,e);
76
            throw new ServiceException(e.toString());
77
        }
29 jmachado 78
    }
236 jmachado 79
 
80
    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)
81
    {
82
        List<String> arguments = new ArrayList<String>();
83
        arguments.add(from);
84
        arguments.add(url);
85
        1.5.0/docs/api/java/lang/String.html">String subjectTxt;
86
        1.5.0/docs/api/java/lang/String.html">String template;
87
 
88
        if(langEnum == LangEnum.PORTUGUESE)
89
        {
90
            template = Globals.EMAIL_SEND_URL_FRIEND_TEMPLATE_PT;
237 jmachado 91
            subjectTxt = Globals.EMAIL_SEND_URL_FRIEND_SUBJECT_PT;
236 jmachado 92
        }
93
        else
94
        {
95
            template = Globals.EMAIL_SEND_URL_FRIEND_TEMPLATE_EN;
237 jmachado 96
            subjectTxt = Globals.EMAIL_SEND_URL_FRIEND_SUBJECT_EN;
236 jmachado 97
        }
98
 
99
        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});
100
        return new Email(subject ,recipients, Globals.SYSTEM_EMAIL_BOX,template,arguments);
101
    }
102
 
103
    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)
104
    {
105
        try
106
        {
107
            sendEmail(getSendUrlToFriendEmail(url,from,langEnum,recipients));
108
            return true;
109
        }
110
        catch (ServiceException e)
111
        {
112
            return false;
113
        }
114
    }
115
 
237 jmachado 116
    public boolean sendCourseUnitAnnouncement(CourseUnitAnnouncement announcement, LangEnum langEnum, 1.5.0/docs/api/java/lang/String.html">String from,  List<User> users)
117
    {
118
        try
119
        {
120
            sendEmail(getCourseUnitAnnouncementEmail(announcement,langEnum,from,users));
121
            return true;
122
        }
123
        catch (ServiceException e)
124
        {
125
            return false;
126
        }
127
    }
236 jmachado 128
 
237 jmachado 129
    public Email getCourseUnitAnnouncementEmail(CourseUnitAnnouncement announcement, LangEnum langEnum, 1.5.0/docs/api/java/lang/String.html">String from,  List<User> users)
130
    {
131
        List<String> arguments = new ArrayList<String>();
132
        arguments.add(announcement.getCourseUnit().getName());
133
        arguments.add(announcement.getTitle());
134
        arguments.add(announcement.getText());
135
        arguments.add(from);
136
 
137
        1.5.0/docs/api/java/lang/String.html">String subjectTxt;
138
        1.5.0/docs/api/java/lang/String.html">String template;
139
 
140
        if(langEnum == LangEnum.PORTUGUESE)
141
        {
142
            template = Globals.EMAIL_COURSEUNIT_ANNOUNCEMENT_TEMPLATE_PT;
143
            subjectTxt = Globals.EMAIL_COURSEUNIT_ANNOUNCEMENT_SUBJECT_PT;
144
        }
145
        else
146
        {
147
            template = Globals.EMAIL_COURSEUNIT_ANNOUNCEMENT_TEMPLATE_EN;
148
            subjectTxt = Globals.EMAIL_COURSEUNIT_ANNOUNCEMENT_SUBJECT_EN;
149
        }
150
 
151
        List<String> recipients = new ArrayList<String>();
152
        for(User u: users)
153
        {
298 jmachado 154
            if(Email.validEmail(u.getEmail()))
155
                recipients.add(u.getEmail());
419 jmachado 156
            if(Email.validEmail(u.getOutEmail()))
157
                recipients.add(u.getOutEmail());
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()});
419 jmachado 161
        1.5.0/docs/api/java/lang/String.html">String fromEmail = Globals.SYSTEM_EMAIL_BOX;
162
        if(announcement.getOwner() != null && Email.validEmail(announcement.getOwner().getEmail()))
163
            fromEmail = announcement.getOwner().getEmail();
164
        return new Email(subject ,recipients,fromEmail,template,arguments,Message.RecipientType.BCC);
237 jmachado 165
    }
166
 
363 jmachado 167
    public Email getCourseUnitBlogPostEmail(BlogPost post, LangEnum langEnum, 1.5.0/docs/api/java/lang/String.html">String from,  List<User> users)
168
    {
169
        List<String> arguments = new ArrayList<String>();
170
        arguments.add(((CourseUnitBlog)post.getBlog()).getCourseUnit().getName());
171
        arguments.add(post.getTitle());
172
        arguments.add(post.getText());
173
        arguments.add(from);
237 jmachado 174
 
363 jmachado 175
        1.5.0/docs/api/java/lang/String.html">String subjectTxt;
176
        1.5.0/docs/api/java/lang/String.html">String template;
177
 
178
        if(langEnum == LangEnum.PORTUGUESE)
179
        {
180
            template = Globals.EMAIL_COURSEUNIT_BLOGPOST_TEMPLATE_PT;
181
            subjectTxt = Globals.EMAIL_COURSEUNIT_BLOGPOST_SUBJECT_PT;
182
        }
183
        else
184
        {
185
            template = Globals.EMAIL_COURSEUNIT_BLOGPOST_TEMPLATE_EN;
186
            subjectTxt = Globals.EMAIL_COURSEUNIT_BLOGPOST_SUBJECT_EN;
187
        }
188
 
189
        List<String> recipients = new ArrayList<String>();
190
        for(User u: users)
191
        {
192
            if(Email.validEmail(u.getEmail()))
193
                recipients.add(u.getEmail());
419 jmachado 194
            if(Email.validEmail(u.getOutEmail()))
195
                recipients.add(u.getOutEmail());
363 jmachado 196
        }
197
 
198
        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[]{((CourseUnitBlog)post.getBlog()).getCourseUnit().getNormalizedName(),post.getTitle()});
419 jmachado 199
        1.5.0/docs/api/java/lang/String.html">String fromEmail = Globals.SYSTEM_EMAIL_BOX;
200
        if(post.getOwner() != null && Email.validEmail(post.getOwner().getEmail()))
201
            fromEmail = post.getOwner().getEmail();
202
        return new Email(subject ,recipients, fromEmail, template,arguments,Message.RecipientType.BCC);
363 jmachado 203
    }
204
 
440 jmachado 205
    public Email getCourseUnitWorkEmail(CourseUnitAssignement assignement, LangEnum langEnum, UserSession userSession,  List<User> users, boolean newWork)
419 jmachado 206
    {
207
        List<String> arguments = new ArrayList<String>();
208
        arguments.add(assignement.getCourseUnit().getName());
209
        arguments.add(assignement.getTitle());
210
        arguments.add(assignement.getDescription());
440 jmachado 211
 
419 jmachado 212
        if(userSession != null && userSession.getName() != null)
213
            arguments.add(userSession.getName());
214
        else
215
            arguments.add("unknown");
363 jmachado 216
 
440 jmachado 217
        arguments.add( DatesUtils.getStringFromDate(assignement.getDeliverDate()));
218
 
419 jmachado 219
        1.5.0/docs/api/java/lang/String.html">String subjectTxt;
220
        1.5.0/docs/api/java/lang/String.html">String template;
221
 
222
        if(langEnum == LangEnum.PORTUGUESE)
223
        {
440 jmachado 224
            if(newWork)
225
                template = Globals.EMAIL_COURSEUNIT_WORK_TEMPLATE_PT;
226
            else
227
                template = Globals.EMAIL_COURSEUNIT_WORK_CHANGE_TEMPLATE_PT;
419 jmachado 228
            subjectTxt = Globals.EMAIL_COURSEUNIT_WORK_SUBJECT_PT;
229
        }
230
        else
231
        {
440 jmachado 232
            if(newWork)
233
                template = Globals.EMAIL_COURSEUNIT_WORK_TEMPLATE_EN;
234
            else
235
                template = Globals.EMAIL_COURSEUNIT_WORK_CHANGE_TEMPLATE_EN;
419 jmachado 236
            subjectTxt = Globals.EMAIL_COURSEUNIT_WORK_SUBJECT_EN;
237
        }
238
 
239
        List<String> recipients = new ArrayList<String>();
240
        for(User u: users)
241
        {
242
            if(Email.validEmail(u.getEmail()))
243
                recipients.add(u.getEmail());
244
            if(Email.validEmail(u.getOutEmail()))
245
                recipients.add(u.getOutEmail());
246
        }
247
 
248
        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[]{assignement.getCourseUnit().getNormalizedName(),assignement.getTitle()});
249
 
250
        1.5.0/docs/api/java/lang/String.html">String fromEmail = Globals.SYSTEM_EMAIL_BOX;
251
        if(userSession!= null && userSession.getUser() != null && Email.validEmail(userSession.getUser().getEmail()))
252
            fromEmail = userSession.getUser().getEmail();
253
        return new Email(subject ,recipients,fromEmail,template,arguments,Message.RecipientType.BCC);
254
    }
255
 
256
 
257
 
236 jmachado 258
    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)
259
    {
260
        List<String> arguments = new ArrayList<String>();
261
 
262
        1.5.0/docs/api/java/lang/String.html">String subject;
263
        1.5.0/docs/api/java/lang/String.html">String template;
264
 
265
        if(langEnum == LangEnum.PORTUGUESE)
266
        {
267
            template = Globals.EMAIL_NEW_GRADES_TEMPLATE_PT;
237 jmachado 268
            subject = Globals.EMAIL_NEW_GRADES_SUBJECT_PT;
236 jmachado 269
        }
270
        else
271
        {
272
            template = Globals.EMAIL_NEW_GRADES_TEMPLATE_EN;
237 jmachado 273
            subject = Globals.EMAIL_NEW_GRADES_SUBJECT_EN;
236 jmachado 274
        }
275
 
276
        1.5.0/docs/api/java/lang/StringBuilder.html">StringBuilder gradesBuilder = new 1.5.0/docs/api/java/lang/StringBuilder.html">StringBuilder();
277
        for(1.5.0/docs/api/java/lang/String.html">String[] grade:  grades)
278
        {
279
            1.5.0/docs/api/java/lang/String.html">String gradeTxt = TemplateUtils.formatMessageTemplate(gradeUnitTemplate,grade);
280
            gradesBuilder.append(gradeTxt);
281
        }
282
 
283
        arguments.add(studentName);
284
        arguments.add(gradesBuilder.toString());
285
 
286
        List<String> recipients = new ArrayList<String>();
287
        recipients.add(studentEmail);
288
        return new Email(subject ,recipients, Globals.SYSTEM_EMAIL_BOX,template,arguments);
289
    }
290
 
358 jmachado 291
    public Email getSummaryEmail(List<String> emails, CourseUnitSummary cUS, CourseUnit c, LangEnum langEnum)
292
    {
293
        List<String> arguments = new ArrayList<String>();
294
 
295
        1.5.0/docs/api/java/lang/String.html">String data = DatesUtils.getStringFromDate(cUS.getDataAula());
296
        1.5.0/docs/api/java/lang/String.html">String subject;
297
        1.5.0/docs/api/java/lang/String.html">String template;
298
 
299
        if(langEnum == LangEnum.PORTUGUESE)
300
        {
301
            template = Globals.EMAIL_SUMMARY_TEMPLATE_PT;
302
            subject = Globals.EMAIL_SUMMARY_SUBJECT_PT;
303
        }
304
        else
305
        {
306
            template = Globals.EMAIL_SUMMARY_TEMPLATE_EN;
307
            subject = Globals.EMAIL_SUMMARY_SUBJECT_EN;
308
        }
309
        subject = TemplateUtils.formatMessageTemplate(subject,new 1.5.0/docs/api/java/lang/String.html">String[]{c.getName()});
310
 
311
        arguments.add(c.getName());
312
        arguments.add(""+cUS.getNumeroAula());
313
        arguments.add(data);
314
        arguments.add(cUS.getTitulo());
315
        arguments.add(cUS.getDescricao());
316
 
317
        List<String> recipients = new ArrayList<String>();
318
        for(1.5.0/docs/api/java/lang/String.html">String email:emails)
319
            recipients.add(email);
320
        return new Email(subject ,recipients, Globals.SYSTEM_EMAIL_BOX,template,arguments);
321
    }
322
 
236 jmachado 323
    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)
324
    {
325
        try
326
        {
327
            sendEmail(getNewGradesEmail(grades,langEnum,studentEmail,studentName));
328
            return true;
329
        }
330
        catch (ServiceException e)
331
        {
332
            return false;
333
        }
334
 
335
    }
336
 
337
    public static void main(1.5.0/docs/api/java/lang/String.html">String [] args)
338
    {
440 jmachado 339
        1.5.0/docs/api/java/lang/System.html">System.out.println( DatesUtils.getStringFromDate(new 5+0%2Fdocs%2Fapi+Date">Date()));
340
//        List<String[]> grades = new ArrayList<String[]>();
341
//        grades.add(new String[]{"Teste","3"});
342
//        grades.add(new String[]{"Teste2","4"});
343
//        new SendEmailService().sendNewGrades(grades,LangEnum.PORTUGUESE,"jmachado@estgp.pt","jorge Machado");
236 jmachado 344
    }
345
 
29 jmachado 346
}