Subversion Repositories bacoAlunos

Rev

Rev 29 | Rev 237 | 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;
6
import pt.estgp.estgweb.services.expceptions.ServiceException;
7
import pt.estgp.estgweb.domain.enums.LangEnum;
8
import pt.estgp.estgweb.utils.Email;
9
import pt.utl.ist.berserk.logic.serviceManager.IService;
10
 
11
import javax.mail.MessagingException;
12
import javax.mail.Session;
13
import javax.mail.Message;
14
import javax.mail.Transport;
15
import javax.mail.internet.MimeMessage;
16
import javax.mail.internet.InternetAddress;
17
import java.util.ArrayList;
29 jmachado 18
import java.util.List;
236 jmachado 19
import java.util.Properties;
20
import java.text.MessageFormat;
29 jmachado 21
 
22
/**
23
 * @author Jorge Machado
24
 * @date 20/Mar/2008
25
 * @time 18:31:00
26
 * @see pt.estgp.estgweb.services.email
27
 */
236 jmachado 28
public class SendEmailService implements IService
29 jmachado 29
{
236 jmachado 30
    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);
31
 
32
    private static final 1.5.0/docs/api/java/lang/String.html">String gradeUnitTemplate = Globals.TEMPLATE_EMAIL_PATH + "/" + Globals.EMAIL_GRADE_UNIT_TEMPLATE;
33
 
34
    public void sendEmail(Email email) throws ServiceException
29 jmachado 35
    {
236 jmachado 36
        try{
37
 
38
            // Set up properties for mail session
39
            1.5.0/docs/api/java/util/Properties.html">Properties props = 1.5.0/docs/api/java/lang/System.html">System.getProperties();
40
            props.put("mail.smtp.host", Globals.EMAIL_SERVER_HOST);
41
 
42
            // Get session
43
            Session session = Session.getDefaultInstance(props, null);
44
 
45
            // Create message
46
            MimeMessage message = new MimeMessage(session);
47
            // Set the recipients of the message
48
            for (1.5.0/docs/api/java/lang/String.html">String recipient : email.getRecipients()) {
49
                message.addRecipient(Message.RecipientType.TO,
50
                        new InternetAddress(recipient));
51
            }
52
            1.5.0/docs/api/java/lang/String.html">String content = TemplateUtils.getOrLoadTemplate(Globals.TEMPLATE_EMAIL_PATH + "/" + email.getEmailTemplateName());
53
            // Format the mail message
54
            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());
55
 
56
            message.setFrom(new InternetAddress(email.getFrom()));
57
            message.setSubject(email.getSubject());
58
            message.setText(fullMessage);
59
 
60
            Transport.send(message);
61
        }
62
        catch(MessagingException e)
63
        {
64
            logger.error(e,e);
65
            throw new ServiceException(e.toString());
66
        }
29 jmachado 67
    }
236 jmachado 68
 
69
    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)
70
    {
71
        List<String> arguments = new ArrayList<String>();
72
        arguments.add(from);
73
        arguments.add(url);
74
        1.5.0/docs/api/java/lang/String.html">String subjectTxt;
75
        1.5.0/docs/api/java/lang/String.html">String template;
76
 
77
        if(langEnum == LangEnum.PORTUGUESE)
78
        {
79
            template = Globals.EMAIL_SEND_URL_FRIEND_TEMPLATE_PT;
80
            subjectTxt = Globals.EMAIL_SEND_URL_FRIEND_PT;
81
        }
82
        else
83
        {
84
            template = Globals.EMAIL_SEND_URL_FRIEND_TEMPLATE_EN;
85
            subjectTxt = Globals.EMAIL_SEND_URL_FRIEND_EN;
86
        }
87
 
88
        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});
89
        return new Email(subject ,recipients, Globals.SYSTEM_EMAIL_BOX,template,arguments);
90
    }
91
 
92
    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)
93
    {
94
        try
95
        {
96
            sendEmail(getSendUrlToFriendEmail(url,from,langEnum,recipients));
97
            return true;
98
        }
99
        catch (ServiceException e)
100
        {
101
            return false;
102
        }
103
    }
104
 
105
 
106
    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)
107
    {
108
        List<String> arguments = new ArrayList<String>();
109
 
110
        1.5.0/docs/api/java/lang/String.html">String subject;
111
        1.5.0/docs/api/java/lang/String.html">String template;
112
 
113
        if(langEnum == LangEnum.PORTUGUESE)
114
        {
115
            template = Globals.EMAIL_NEW_GRADES_TEMPLATE_PT;
116
            subject = Globals.EMAIL_NEW_GRADES_PT;
117
        }
118
        else
119
        {
120
            template = Globals.EMAIL_NEW_GRADES_TEMPLATE_EN;
121
            subject = Globals.EMAIL_NEW_GRADES_EN;
122
        }
123
 
124
        1.5.0/docs/api/java/lang/StringBuilder.html">StringBuilder gradesBuilder = new 1.5.0/docs/api/java/lang/StringBuilder.html">StringBuilder();
125
        for(1.5.0/docs/api/java/lang/String.html">String[] grade:  grades)
126
        {
127
            1.5.0/docs/api/java/lang/String.html">String gradeTxt = TemplateUtils.formatMessageTemplate(gradeUnitTemplate,grade);
128
            gradesBuilder.append(gradeTxt);
129
        }
130
 
131
        arguments.add(studentName);
132
        arguments.add(gradesBuilder.toString());
133
 
134
        List<String> recipients = new ArrayList<String>();
135
        recipients.add(studentEmail);
136
        return new Email(subject ,recipients, Globals.SYSTEM_EMAIL_BOX,template,arguments);
137
    }
138
 
139
    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)
140
    {
141
        try
142
        {
143
            sendEmail(getNewGradesEmail(grades,langEnum,studentEmail,studentName));
144
            return true;
145
        }
146
        catch (ServiceException e)
147
        {
148
            return false;
149
        }
150
 
151
    }
152
 
153
    public static void main(1.5.0/docs/api/java/lang/String.html">String [] args)
154
    {
155
        List<String[]> grades = new ArrayList<String[]>();
156
        grades.add(new 1.5.0/docs/api/java/lang/String.html">String[]{"Teste","3"});
157
        grades.add(new 1.5.0/docs/api/java/lang/String.html">String[]{"Teste2","4"});
158
        new SendEmailService().sendNewGrades(grades,LangEnum.PORTUGUESE,"jmachado@estgp.pt","jorge Machado");
159
    }
160
 
29 jmachado 161
}