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
;
}
}