Subversion Repositories bacoAlunos

Rev

Rev 1427 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

package pt.estgp.estgweb.utils;

import org.apache.log4j.Logger;
import pt.estgp.estgweb.Globals;
import pt.estgp.estgweb.services.email.SendEmailService;

import javax.mail.Message;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * @author Jorge Machado
 * @date 20/Mar/2008
 * @time 18:32:21
 * @see pt.estgp.estgweb.utils
 */

public class Email implements 1.5.0/docs/api/java/io/Serializable.html">Serializable
{


    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(Email.class);

    protected boolean systemAssumingTestEmail = false;
    protected boolean isHtml = false;
    protected 1.5.0/docs/api/java/lang/String.html">String subject;
    protected List<String> recipients;
    protected List<String> recipientsCC = null;
    protected Message.RecipientType type = Message.RecipientType.TO;
    protected 1.5.0/docs/api/java/lang/String.html">String from;
    protected 1.5.0/docs/api/java/lang/String.html">String emailTemplateName;
    protected List<String> arguments;
    protected 1.5.0/docs/api/java/lang/String.html">String fromName = null;





    public Email cloneEmailForJob(){
        Email email = new Email(subject,recipients,from,emailTemplateName,arguments,type);
        return cloneEmailForJob(email);
    }
    public Email cloneEmailForJob(Email email){

        email.systemAssumingTestEmail = this.systemAssumingTestEmail;
        email.isHtml = this.isHtml;
        email.subject = this.subject;
        email.recipients = this.recipients;
        email.type = this.type;
        email.from = this.from;
        email.emailTemplateName = this.emailTemplateName;
        email.arguments = this.arguments;
        email.fromName = this.fromName;
        return email;
    }


    public boolean isHtml() {
        return isHtml;
    }

    public void setHtml(boolean html) {
        isHtml = html;
    }

    public Email() {
    }

    public Email(1.5.0/docs/api/java/lang/String.html">String subject, List<String> recipients, 1.5.0/docs/api/java/lang/String.html">String from, 1.5.0/docs/api/java/lang/String.html">String mailTemplateName, List<String> arguments)
    {
        this.subject = subject;
        this.recipients = filterRecipients(recipients, arguments, mailTemplateName);;
        this.from = from;
        this.emailTemplateName = mailTemplateName;
        this.arguments = arguments;
    }

    public Email(1.5.0/docs/api/java/lang/String.html">String subject, List<String> recipients, 1.5.0/docs/api/java/lang/String.html">String from, 1.5.0/docs/api/java/lang/String.html">String mailTemplateName, List<String> arguments, Message.RecipientType type)
    {
        this.type = type;
        this.subject = subject;
        this.recipients = filterRecipients(recipients, arguments, mailTemplateName);
        this.from = from;
        this.emailTemplateName = mailTemplateName;
        this.arguments = arguments;


    }

    protected List<String> filterRecipients(List<String> recipients,List<String> arguments,1.5.0/docs/api/java/lang/String.html">String template)
    {
        if(Globals.TEST_ENVIRONEMENT)
        {
            systemAssumingTestEmail = true;
            logger.info("SISTEMA EM MODO DE TESTES, iria enviar email para os seguintes recipientes:");
            1.5.0/docs/api/java/lang/System.html">System.out.println(recipients);
            logger.info("Mensagem que ia ser enviada:");
            logger.info(SendEmailService.getEmailTextMessage(template, arguments));
            logger.info("SISTEMA EM MODO DE TESTES: Vai enviar apenas para o mail de testes");
            recipients = new ArrayList<String>();
            recipients.add(Globals.ADMIN_EMAIL);
        }
        return recipients;
    }
    protected List<String> filterRecipients(List<String> recipients)
    {
        if(Globals.TEST_ENVIRONEMENT)
        {
            systemAssumingTestEmail = true;
            logger.info("SISTEMA EM MODO DE TESTES, iria enviar email para os seguintes recipientes:");
            1.5.0/docs/api/java/lang/System.html">System.out.println(recipients);
            logger.info("Nao se sabe a Mensagem que ia ser enviada");
            logger.info("SISTEMA EM MODO DE TESTES: Vai enviar apenas para o mail de testes");
            recipients = new ArrayList<String>();
            recipients.add(Globals.ADMIN_EMAIL);
        }
        return recipients;
    }

    public boolean isSystemAssumingTestEmail() {
        return systemAssumingTestEmail;
    }

    public 1.5.0/docs/api/java/lang/String.html">String getFromName() {
        return fromName;
    }

    public void setFromName(1.5.0/docs/api/java/lang/String.html">String fromName) {
        this.fromName = fromName;
    }

    public 1.5.0/docs/api/java/lang/String.html">String getSubject()
    {
        return subject;
    }

    public List<String> getRecipients()
    {
        return recipients;
    }

    public void setRecipients(List<String> recipients)
    {
        systemAssumingTestEmail = true;//ja nao estao sobre
        this.recipients = filterRecipients(recipients);

    }

    public 1.5.0/docs/api/java/lang/String.html">String getFrom()
    {
        return from;
    }

    public 1.5.0/docs/api/java/lang/String.html">String getEmailTemplateName()
    {
        return emailTemplateName;
    }

    public List<String> getArguments()
    {
        return arguments;
    }

    public static boolean validEmail(1.5.0/docs/api/java/lang/String.html">String email)
    {
        if(email == null)
            return false;
        1.5.0/docs/api/java/util/regex/Pattern.html">Pattern p = 1.5.0/docs/api/java/util/regex/Pattern.html">Pattern.compile(".+@.+\\.[a-z]+");
        //Match the given string with the pattern
        1.5.0/docs/api/java/util/regex/Matcher.html">Matcher m = p.matcher(email);
        //check whether match is found
        return m.matches();
    }

    public static void main( 1.5.0/docs/api/java/lang/String.html">String[] args )
    {
        1.5.0/docs/api/java/lang/System.html">System.out.println(validEmail(""));
        1.5.0/docs/api/java/lang/System.html">System.out.println(validEmail("d.@"));
        1.5.0/docs/api/java/lang/System.html">System.out.println(validEmail("asd@."));
        1.5.0/docs/api/java/lang/System.html">System.out.println(validEmail("a.sd@.p"));
        1.5.0/docs/api/java/lang/System.html">System.out.println(validEmail("@t.pt"));
        1.5.0/docs/api/java/lang/System.html">System.out.println(validEmail("e@.e"));
        1.5.0/docs/api/java/lang/System.html">System.out.println(validEmail("e@"));
        1.5.0/docs/api/java/lang/System.html">System.out.println(validEmail("e@e.pt"));
        1.5.0/docs/api/java/lang/System.html">System.out.println(validEmail("jmachado@estgp.pt"));
    }


    public Message.RecipientType getType()
    {
        return type;
    }

    public void setType(Message.RecipientType type)
    {
        //TODO WHEN BACK TO BCC REMOVE this
        this.type = Message.RecipientType.TO;
        //this.type = type;
    }


    public List<String> getRecipientsCC() {
        return recipientsCC;
    }

    public void setRecipientsCC(List<String> recipientsCC) {
        this.recipientsCC = recipientsCC;
    }
}