Subversion Repositories bacoAlunos

Rev

Rev 1490 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1429 jmachado 1
package pt.estgp.estgweb.services.email;
2
 
3
import jomm.dao.impl.AbstractDao;
4
import org.apache.log4j.Logger;
1814 jmachado 5
import pt.estgp.estgweb.utils.Globals;
1429 jmachado 6
import pt.estgp.estgweb.domain.User;
7
import pt.estgp.estgweb.domain.dao.DaoFactory;
8
import pt.estgp.estgweb.services.authenticate.AuthenticateService;
9
import pt.estgp.estgweb.services.jobs.JobHandler;
10
import pt.estgp.estgweb.utils.Email;
11
import pt.estgp.estgweb.utils.EmailPersonalizedCertificated;
12
 
13
import java.io.Serializable;
14
import java.util.ArrayList;
15
import java.util.List;
16
 
17
/**
18
 * @author Jorge Machado
19
 * @date 11/Jul/2008
20
 * @see pt.estgp.estgweb.services.sms
21
 */
22
public class EMAILJobPersonalizedCertificated implements JobHandler, 1.5.0/docs/api/java/io/Serializable.html">Serializable
23
{
24
    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(EMAILJobPersonalizedCertificated.class);
25
 
26
    private EmailPersonalizedCertificated email;
27
 
28
 
29
 
30
 
31
    public EMAILJobPersonalizedCertificated(EmailPersonalizedCertificated email)
32
    {
33
        this.email = email;
34
    }
35
 
36
 
37
    private static final int pauseTime = 1000;
38
 
39
 
40
    public void runJob()
41
    {
42
        final EmailPersonalizedCertificated cloned = email.cloneEmailForJob();
43
 
44
 
45
        logger.info("Opening new Thread to send emails");
46
        new 1.5.0/docs/api/java/lang/Thread.html">Thread(
47
                new 1.5.0/docs/api/java/lang/Runnable.html">Runnable() {
48
                    @1.5.0/docs/api/java/lang/Override.html">Override
49
                    public void run() {
50
                        if(Globals.TEST_ENVIRONEMENT && !cloned.isSystemAssumingTestEmail())
51
                        {
52
                            1.5.0/docs/api/java/lang/String.html">String warn = "System in TEST Environement - will not send EMAIL";
53
                            logger.warn(warn);
54
                            return;
55
                        }
56
                        try
57
                        {
58
                            1.5.0/docs/api/java/lang/String.html">String URL_PREFIX = cloned.getUrlPatternWithoutCetificate();
59
                            if(URL_PREFIX.indexOf("?") <  0)
60
                                URL_PREFIX = URL_PREFIX + "?certificate=";
61
                            else
62
                                URL_PREFIX = URL_PREFIX + "&certificate=";
63
 
64
                            cloned.setRecipients(new ArrayList<String>());
65
 
1450 jmachado 66
                            SendEmailService sendEmailService = new SendEmailService();
67
 
1490 jmachado 68
                            int count = 0;
69
                            int size = cloned.getUserIds().size();
1429 jmachado 70
                            for(long userId: cloned.getUserIds())
71
                            {
1490 jmachado 72
                                count++;
73
                                logger.info("Users completed: " + count + "/" + size + " --> " + (100.0 * ((float)count) / ((float)size)) + "%");
1429 jmachado 74
 
75
                                try{
76
                                    AbstractDao.getCurrentSession().beginTransaction();
77
                                    AbstractDao.getCurrentSession().clear();
78
                                    User user = DaoFactory.getUserDaoImpl().load(userId);
79
                                    1.5.0/docs/api/java/lang/String.html">String certificate = new AuthenticateService().createCertificate(user);
80
                                    1.5.0/docs/api/java/lang/String.html">String emailStr = user.getEmail();
81
                                    1.5.0/docs/api/java/lang/String.html">String outEmail = user.getOutEmail();
82
                                    1.5.0/docs/api/java/lang/String.html">String preferrefEmail = user.getPreferrefEmail();
83
                                    1.5.0/docs/api/java/lang/String.html">String toEmail = null;
84
 
85
                                    if(preferrefEmail != null && Email.validEmail(preferrefEmail))
86
                                        toEmail = preferrefEmail;
87
                                    else if(emailStr != null && Email.validEmail(emailStr))
88
                                        toEmail = emailStr;
89
                                    else if(outEmail != null && Email.validEmail(outEmail))
90
                                        toEmail = outEmail;
91
                                    1.5.0/docs/api/java/lang/String.html">String nome = user.getName();
92
                                    AbstractDao.getCurrentSession().getTransaction().commit();
93
 
94
                                    if(toEmail != null)
95
                                    {
96
                                        List<String> ccEmails = new ArrayList<String>();
97
                                        if(emailStr != null && Email.validEmail(emailStr) && !toEmail.equals(emailStr))
98
                                            ccEmails.add(emailStr);
99
                                        if(outEmail != null && Email.validEmail(outEmail) && !toEmail.equals(outEmail))
100
                                            ccEmails.add(outEmail);
101
 
102
 
103
                                        cloned.setRecipientsCC(ccEmails);
104
                                        cloned.getRecipients().clear();
105
                                        cloned.getRecipients().add(toEmail);
106
 
107
                                        1.5.0/docs/api/java/lang/String.html">String finalUrl = URL_PREFIX + certificate;
108
 
1450 jmachado 109
                                        sendEmailService.sendEmail(cloned, finalUrl, nome);
1429 jmachado 110
 
111
                                        try {
112
                                            logger.info("Watting to send another email: sent to" + toEmail);
113
                                            //Thread.sleep(pauseTime);
114
                                            1.5.0/docs/api/java/lang/Thread.html">Thread.sleep(pauseTime);
115
                                        } catch (1.5.0/docs/api/java/lang/InterruptedException.html">InterruptedException e) {
116
                                            logger.error(e,e);
117
                                        }
118
                                    }
119
 
120
 
121
                                }catch(1.5.0/docs/api/java/lang/Throwable.html">Throwable e)
122
                                {
123
                                    logger.error(e,e);
124
                                }
125
 
126
                            }
127
 
128
                            logger.info("No more user ids to send email. exiting");
129
 
130
 
131
                        }
132
                        catch (1.5.0/docs/api/java/lang/Throwable.html">Throwable e)
133
                        {
134
                            logger.error("Sending EMAIL:" + e.toString(),e);
135
                        }
136
                    }
137
                }
138
        ).start();
139
    }
140
 
141
 
142
 
143
}