Subversion Repositories bacoAlunos

Rev

Rev 236 | Rev 298 | 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;
237 jmachado 8
import pt.estgp.estgweb.domain.CourseUnitAnnouncement;
9
import pt.estgp.estgweb.domain.User;
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;
22
import java.text.MessageFormat;
29 jmachado 23
 
24
/**
25
 * @author Jorge Machado
26
 * @date 20/Mar/2008
27
 * @time 18:31:00
28
 * @see pt.estgp.estgweb.services.email
29
 */
236 jmachado 30
public class SendEmailService implements IService
29 jmachado 31
{
236 jmachado 32
    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);
33
 
34
    private static final 1.5.0/docs/api/java/lang/String.html">String gradeUnitTemplate = Globals.TEMPLATE_EMAIL_PATH + "/" + Globals.EMAIL_GRADE_UNIT_TEMPLATE;
35
 
36
    public void sendEmail(Email email) throws ServiceException
29 jmachado 37
    {
236 jmachado 38
        try{
39
 
40
            // Set up properties for mail session
41
            1.5.0/docs/api/java/util/Properties.html">Properties props = 1.5.0/docs/api/java/lang/System.html">System.getProperties();
42
            props.put("mail.smtp.host", Globals.EMAIL_SERVER_HOST);
43
 
44
            // Get session
45
            Session session = Session.getDefaultInstance(props, null);
46
 
47
            // Create message
48
            MimeMessage message = new MimeMessage(session);
49
            // Set the recipients of the message
50
            for (1.5.0/docs/api/java/lang/String.html">String recipient : email.getRecipients()) {
51
                message.addRecipient(Message.RecipientType.TO,
52
                        new InternetAddress(recipient));
53
            }
54
            1.5.0/docs/api/java/lang/String.html">String content = TemplateUtils.getOrLoadTemplate(Globals.TEMPLATE_EMAIL_PATH + "/" + email.getEmailTemplateName());
55
            // Format the mail message
56
            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());
57
 
58
            message.setFrom(new InternetAddress(email.getFrom()));
59
            message.setSubject(email.getSubject());
60
            message.setText(fullMessage);
61
 
62
            Transport.send(message);
63
        }
64
        catch(MessagingException e)
65
        {
66
            logger.error(e,e);
67
            throw new ServiceException(e.toString());
68
        }
29 jmachado 69
    }
236 jmachado 70
 
71
    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)
72
    {
73
        List<String> arguments = new ArrayList<String>();
74
        arguments.add(from);
75
        arguments.add(url);
76
        1.5.0/docs/api/java/lang/String.html">String subjectTxt;
77
        1.5.0/docs/api/java/lang/String.html">String template;
78
 
79
        if(langEnum == LangEnum.PORTUGUESE)
80
        {
81
            template = Globals.EMAIL_SEND_URL_FRIEND_TEMPLATE_PT;
237 jmachado 82
            subjectTxt = Globals.EMAIL_SEND_URL_FRIEND_SUBJECT_PT;
236 jmachado 83
        }
84
        else
85
        {
86
            template = Globals.EMAIL_SEND_URL_FRIEND_TEMPLATE_EN;
237 jmachado 87
            subjectTxt = Globals.EMAIL_SEND_URL_FRIEND_SUBJECT_EN;
236 jmachado 88
        }
89
 
90
        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});
91
        return new Email(subject ,recipients, Globals.SYSTEM_EMAIL_BOX,template,arguments);
92
    }
93
 
94
    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)
95
    {
96
        try
97
        {
98
            sendEmail(getSendUrlToFriendEmail(url,from,langEnum,recipients));
99
            return true;
100
        }
101
        catch (ServiceException e)
102
        {
103
            return false;
104
        }
105
    }
106
 
237 jmachado 107
    public boolean sendCourseUnitAnnouncement(CourseUnitAnnouncement announcement, LangEnum langEnum, 1.5.0/docs/api/java/lang/String.html">String from,  List<User> users)
108
    {
109
        try
110
        {
111
            sendEmail(getCourseUnitAnnouncementEmail(announcement,langEnum,from,users));
112
            return true;
113
        }
114
        catch (ServiceException e)
115
        {
116
            return false;
117
        }
118
    }
236 jmachado 119
 
237 jmachado 120
    public Email getCourseUnitAnnouncementEmail(CourseUnitAnnouncement announcement, LangEnum langEnum, 1.5.0/docs/api/java/lang/String.html">String from,  List<User> users)
121
    {
122
        List<String> arguments = new ArrayList<String>();
123
        arguments.add(announcement.getCourseUnit().getName());
124
        arguments.add(announcement.getTitle());
125
        arguments.add(announcement.getText());
126
        arguments.add(from);
127
 
128
        1.5.0/docs/api/java/lang/String.html">String subjectTxt;
129
        1.5.0/docs/api/java/lang/String.html">String template;
130
 
131
        if(langEnum == LangEnum.PORTUGUESE)
132
        {
133
            template = Globals.EMAIL_COURSEUNIT_ANNOUNCEMENT_TEMPLATE_PT;
134
            subjectTxt = Globals.EMAIL_COURSEUNIT_ANNOUNCEMENT_SUBJECT_PT;
135
        }
136
        else
137
        {
138
            template = Globals.EMAIL_COURSEUNIT_ANNOUNCEMENT_TEMPLATE_EN;
139
            subjectTxt = Globals.EMAIL_COURSEUNIT_ANNOUNCEMENT_SUBJECT_EN;
140
        }
141
 
142
        List<String> recipients = new ArrayList<String>();
143
        for(User u: users)
144
        {
145
            recipients.add(u.getEmail());      
146
        }
147
 
148
        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()});
149
        return new Email(subject ,recipients, Globals.SYSTEM_EMAIL_BOX,template,arguments);
150
    }
151
 
152
 
236 jmachado 153
    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)
154
    {
155
        List<String> arguments = new ArrayList<String>();
156
 
157
        1.5.0/docs/api/java/lang/String.html">String subject;
158
        1.5.0/docs/api/java/lang/String.html">String template;
159
 
160
        if(langEnum == LangEnum.PORTUGUESE)
161
        {
162
            template = Globals.EMAIL_NEW_GRADES_TEMPLATE_PT;
237 jmachado 163
            subject = Globals.EMAIL_NEW_GRADES_SUBJECT_PT;
236 jmachado 164
        }
165
        else
166
        {
167
            template = Globals.EMAIL_NEW_GRADES_TEMPLATE_EN;
237 jmachado 168
            subject = Globals.EMAIL_NEW_GRADES_SUBJECT_EN;
236 jmachado 169
        }
170
 
171
        1.5.0/docs/api/java/lang/StringBuilder.html">StringBuilder gradesBuilder = new 1.5.0/docs/api/java/lang/StringBuilder.html">StringBuilder();
172
        for(1.5.0/docs/api/java/lang/String.html">String[] grade:  grades)
173
        {
174
            1.5.0/docs/api/java/lang/String.html">String gradeTxt = TemplateUtils.formatMessageTemplate(gradeUnitTemplate,grade);
175
            gradesBuilder.append(gradeTxt);
176
        }
177
 
178
        arguments.add(studentName);
179
        arguments.add(gradesBuilder.toString());
180
 
181
        List<String> recipients = new ArrayList<String>();
182
        recipients.add(studentEmail);
183
        return new Email(subject ,recipients, Globals.SYSTEM_EMAIL_BOX,template,arguments);
184
    }
185
 
186
    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)
187
    {
188
        try
189
        {
190
            sendEmail(getNewGradesEmail(grades,langEnum,studentEmail,studentName));
191
            return true;
192
        }
193
        catch (ServiceException e)
194
        {
195
            return false;
196
        }
197
 
198
    }
199
 
200
    public static void main(1.5.0/docs/api/java/lang/String.html">String [] args)
201
    {
202
        List<String[]> grades = new ArrayList<String[]>();
203
        grades.add(new 1.5.0/docs/api/java/lang/String.html">String[]{"Teste","3"});
204
        grades.add(new 1.5.0/docs/api/java/lang/String.html">String[]{"Teste2","4"});
205
        new SendEmailService().sendNewGrades(grades,LangEnum.PORTUGUESE,"jmachado@estgp.pt","jorge Machado");
206
    }
207
 
29 jmachado 208
}