Commit d36f7d05 by renato.aragao

atualizacao da clace envio EMAIL

parent bdb064f6
package br.mp.mprj.portal.portlet.gestaomensagens.email;
import java.awt.geom.GeneralPath;
import java.io.File;
import com.liferay.portal.kernel.log.LogFactoryUtil;
import br.mp.mprj.portal.portlet.gestaomensagens.workflow.StatusWorkflowEnum;
import br.mp.mprj.portal.portlet.gestaomensagens.enums.EstiloTemplateEnum;
import com.liferay.portal.kernel.util.StringBundler;
import javax.mail.internet.InternetAddress;
import com.liferay.portal.service.UserLocalServiceUtil;
import com.liferay.portal.model.User;
import java.io.UnsupportedEncodingException;
import java.util.List;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.portlet.PortletRequest;
import javax.mail.Address;
import br.mp.mprj.portal.portlet.gestaomensagens.enums.EstiloTemplateEnum;
import com.liferay.portal.kernel.exception.SystemException;
import com.liferay.portal.kernel.exception.PortalException;
import java.io.File;
import java.util.Iterator;
import java.util.List;
import com.liferay.mail.service.MailServiceUtil;
import com.liferay.mail.model.FileAttachment;
import com.liferay.portlet.documentlibrary.service.DLFileEntryLocalServiceUtil;
import br.mp.mprj.portal.portlet.gestaomensagens.service.model.AnexoMensagem;
import br.mp.mprj.portal.portlet.gestaomensagens.service.model.Mensagem;
import br.mp.mprj.portal.portlet.gestaomensagens.service.model.Template;
import com.liferay.portal.kernel.mail.MailMessage;
import br.mp.mprj.portal.portlet.gestaomensagens.service.service.TemplateLocalServiceUtil;
import br.mp.mprj.portal.portlet.gestaomensagens.util.Constantes;
import br.mp.mprj.portal.portlet.gestaomensagens.util.EmailUtil;
import br.mp.mprj.portal.portlet.gestaomensagens.util.GerarLink;
import br.mp.mprj.portal.portlet.gestaomensagens.util.GerarListaDecisao;
import br.mp.mprj.portal.portlet.gestaomensagens.workflow.StatusWorkflowEnum;
import com.liferay.mail.model.FileAttachment;
import com.liferay.mail.service.MailServiceUtil;
import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.exception.SystemException;
import br.mp.mprj.portal.portlet.gestaomensagens.service.model.Template;
import br.mp.mprj.portal.portlet.gestaomensagens.service.model.Mensagem;
import com.liferay.portal.kernel.log.Log;
import com.liferay.portal.kernel.log.LogFactoryUtil;
import com.liferay.portal.kernel.mail.MailMessage;
import com.liferay.portal.kernel.util.PropsKeys;
import com.liferay.portal.kernel.util.PropsUtil;
import com.liferay.portal.kernel.util.StringBundler;
import com.liferay.portal.kernel.util.StringUtil;
import com.liferay.portal.model.Company;
import com.liferay.portal.model.Group;
import com.liferay.portal.model.User;
import com.liferay.portal.security.permission.PermissionChecker;
import com.liferay.portal.security.permission.PermissionCheckerFactoryUtil;
import com.liferay.portal.security.permission.PermissionThreadLocal;
import com.liferay.portal.service.CompanyLocalServiceUtil;
import com.liferay.portal.service.GroupLocalServiceUtil;
import com.liferay.portal.service.UserLocalServiceUtil;
import com.liferay.portal.util.PortalUtil;
import com.liferay.portlet.documentlibrary.service.DLFileEntryLocalServiceUtil;
import com.liferay.portlet.documentlibrary.util.DLUtil;
import com.liferay.util.ContentUtil;
/**
* Classe principal para envio de Email.
* Serve de base para outras funcionalidades.
* @author HenriqueSimoes
*
*/
public abstract class EnvioEmailMensagem {
private static final Log _log = LogFactoryUtil.getLog(EnvioEmailMensagem.class);
public abstract class EnvioEmailMensagem
{
private static final Log _log;
protected final Mensagem mensagem;
private Template template;
public EnvioEmailMensagem(Mensagem mensagem) {
public EnvioEmailMensagem(final Mensagem mensagem) {
this.mensagem = mensagem;
try {
//_log.error(">>>"+mensagem.getTemplateId()+"<<<");
if (mensagem.getTemplateId() > 0){
if (mensagem.getTemplateId() > 0L) {
this.template = TemplateLocalServiceUtil.getTemplate(mensagem.getTemplateId());
_log.info("Erro linha 67");
_log.error(this.template.getTemplateId());
}
}
catch (Exception ex) {
_log.error("Problemas ao inicializar envio de Email", ex);
EnvioEmailMensagem._log.error((Object)"Problemas ao inicializar envio de Email", (Throwable)ex);
}
}
/**
* Metodo responsavel pelo envio de emais do sistema
* @param tipoEnvio - 0 (Outros Envios) , 1 (Email Teste) , 2 (Email Job)
*/
public void enviarEmail(int tipoEnvio)
throws PortalException, SystemException, AddressException, UnsupportedEncodingException {
// Company company = CompanyLocalServiceUtil.getCompanyByMx(PropsUtil.get(PropsKeys.COMPANY_DEFAULT_WEB_ID));//
// long groupId = company.getGroup().getGroupId();
// Group currentGroup = GroupLocalServiceUtil.getGroup(groupId);
setPermissionCheckerMensagem();
Group currentGroup = GroupLocalServiceUtil.getGroup(mensagem.getGroupId());
String rodapeEndereco = null;
String rodapeTexto = null;
String token = "";
String url_wso2 = "";
String url_comunicacao = "";
String url = "";
//instanciar o objeto de email
MailMessage mail = new MailMessage();
public void enviarEmail(final int tipoEnvio) throws PortalException, SystemException, AddressException, UnsupportedEncodingException {
final MailMessage mail = new MailMessage();
mail.setHTMLFormat(true);
mail.setFrom(getRemetente());
List<AnexoMensagem> anexos = getAnexos(mensagem.getMensagemId());
if (anexos != null && anexos.size() > 0){
for (AnexoMensagem anexo : anexos){
File file = DLFileEntryLocalServiceUtil.getFile( anexo.getUserId(), anexo.getAnexoFileEntryId(), anexo.getVersao(), false);
FileAttachment fileAttachment = new FileAttachment(file,
anexo.getFileName());
mail.setFrom(this.getRemetente());
final List<AnexoMensagem> anexos = this.getAnexos(this.mensagem.getMensagemId());
if (anexos != null && anexos.size() > 0) {
for (final AnexoMensagem anexo : anexos) {
final File file = DLFileEntryLocalServiceUtil.getFile(anexo.getUserId(), anexo.getAnexoFileEntryId(), anexo.getVersao(), false);
final FileAttachment fileAttachment = new FileAttachment(file, anexo.getFileName());
mail.getFileAttachments().add(fileAttachment);
}
}
String body = getHtmlCompleto();
rodapeEndereco = currentGroup.getExpandoBridge().getAttribute("RODAPE_ENDERECO").toString();
rodapeTexto = currentGroup.getExpandoBridge().getAttribute("RODAPE_TEXTO").toString();
url = currentGroup.getExpandoBridge().getAttribute("HOST_NAME_ID").toString();
token = currentGroup.getExpandoBridge().getAttribute("WSO2_TOKEN").toString();
url_wso2 = currentGroup.getExpandoBridge().getAttribute("WSO2_API_LISTAR_DECISOES").toString();
url_comunicacao = url.replace("cadastro/-/gestao/descadastrar", "home/-/acao/destaque-");
/*---------------*/
String address = "gppv.liferay@mprj.mp.br";
InternetAddress[] iAdressArray;
String templateComunicacao = Constantes.INDISPONIVEL;
if(body.contains("[$comunicacao$]")){
try {
templateComunicacao = GerarListaDecisao.Listar(token, url_wso2, url_comunicacao);
} catch (Exception e) {
templateComunicacao = Constantes.INDISPONIVEL;
}
//TODO alteração fluxo destinatário
body = StringUtil.replace(body, new String[] {"[$comunicacao$]"},new String[] {templateComunicacao});
//caso indisponível o e-mail será direcionado para gppv.liferay@mprj.mp.br
if(templateComunicacao.equals(Constantes.INDISPONIVEL)){
iAdressArray = InternetAddress.parse(address);
}else if(templateComunicacao.equals(Constantes.NULO)){ // caso NULO, nenhum a lista de destinatário será vazia
iAdressArray = InternetAddress.parse("");
}else{
iAdressArray = getDestinatarios();
}
}else{
iAdressArray = getDestinatarios();
}
/*-----------------*/
//mail.setBCC(getDestinatarios());
mail.setBCC(iAdressArray);
body = StringUtil.replace(body, new String[] {"[$URL$]","[$RODAPE_ENDERECO$]","[$RODAPE_TEXTO$]"},new String[] {url,rodapeEndereco,rodapeTexto});
mail.setSubject(getAssuntoEmail(tipoEnvio));
mail.setBody(body);
mail.setBCC(this.getDestinatarios());
mail.setSubject(this.getAssuntoEmail(tipoEnvio));
mail.setBody(this.getHtmlCompleto());
MailServiceUtil.sendEmail(mail);
}
protected User getUserCriador()
throws PortalException, SystemException {
return UserLocalServiceUtil.getUser(mensagem.getUserIdCriador());
protected User getUserCriador() throws PortalException, SystemException {
return UserLocalServiceUtil.getUser(this.mensagem.getUserIdCriador());
}
protected abstract InternetAddress getRemetente()
throws PortalException, SystemException, AddressException, UnsupportedEncodingException;
protected abstract InternetAddress getRemetente() throws PortalException, SystemException, AddressException, UnsupportedEncodingException;
protected abstract InternetAddress[] getDestinatarios()
throws PortalException, SystemException, AddressException, UnsupportedEncodingException;
protected abstract InternetAddress[] getDestinatarios() throws PortalException, SystemException, AddressException, UnsupportedEncodingException;
protected abstract List<AnexoMensagem> getAnexos(long mensagemId) throws SystemException;
protected abstract List<AnexoMensagem> getAnexos(final long p0) throws SystemException;
/**
* Retorna HTML de acordo com o estilo do template.
* @return String
*/
protected String getHtmlCompleto() {
StringBundler sbHTML = new StringBundler();
_log.info("Erro linha 187");
_log.error(this.template.getTemplateId());
final StringBundler sbHTML = new StringBundler();
if (this.template != null) {
_log.info("Erro linha 186");
_log.error(this.template.getTemplateId());
if (this.template.getEstilo() == EstiloTemplateEnum.CABECALHO_RODAPE.getEstiloId()) {
sbHTML.append(this.template.getCabecalho());
sbHTML.append(this.mensagem.getConteudo());
sbHTML.append(this.template.getRodape());
}
else {
sbHTML.append(template.getCorpo());
//sbHTML.append(this.mensagem.getConteudo());
//_log.error(this.template.getCorpo());
sbHTML.append(this.mensagem.getConteudo());
}
}
else {
sbHTML.append(this.mensagem.getConteudo());
}
return sbHTML.toString();
}
protected String getAssuntoEmail(int tipoEnvio ) {
StringBuilder assunto = new StringBuilder();
if (tipoEnvio != 2){
protected String getAssuntoEmail(final int tipoEnvio) {
final StringBuilder assunto = new StringBuilder();
if (tipoEnvio != 2) {
if (tipoEnvio == 1) {
assunto.append("TESTE - ");
} else {
if (mensagem.getStatusWorkflow() == StatusWorkflowEnum.PENDENTE_APROVACAO.getStatus()) {
}
else {
if (this.mensagem.getStatusWorkflow() == StatusWorkflowEnum.PENDENTE_APROVACAO.getStatus()) {
assunto.append("PENDENTE DE APROVAÇÃO - ");
} else if (mensagem.getStatusWorkflow() == StatusWorkflowEnum.APROVADO.getStatus()) {
}
else if (this.mensagem.getStatusWorkflow() == StatusWorkflowEnum.APROVADO.getStatus()) {
assunto.append("APROVADA - ");
} else if (mensagem.getStatusWorkflow() == StatusWorkflowEnum.REPROVADO.getStatus()) {
}
else if (this.mensagem.getStatusWorkflow() == StatusWorkflowEnum.REPROVADO.getStatus()) {
assunto.append("PENDENTE DE RETIFICAÇÃO - ");
}
assunto.append(mensagem.getCodigoMensagem() + " - ");
assunto.append(this.mensagem.getCodigoMensagem() + " - ");
}
}
assunto.append(mensagem.getAssunto());
assunto.append(this.mensagem.getAssunto());
return assunto.toString();
}
/**
* Metodo responsavel por inicializar o Permission checker
* @param userId: userId do usuário criador da mensagem
*/
private void setPermissionCheckerMensagem(){
User userCriador;
try {
userCriador = UserLocalServiceUtil.getUser(mensagem.getUserIdCriador());
PermissionChecker permissionChecker;
permissionChecker = PermissionCheckerFactoryUtil.create(userCriador);
PermissionThreadLocal.setPermissionChecker(permissionChecker);
} catch (PortalException | SystemException e) {
_log.error("Ocorreu uma falha ao recuperar o usuario criador da mensagem: [ " + mensagem.getMensagemId()
+ " ] - userId [ " + mensagem.getUserIdCriador() + " ].", e);
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
_log.error("Ocorreu uma falha ao inicializar o permissionChecker durante o envio da mensagem: [ " + mensagem.getMensagemId()
+ " ]." , e);
static {
_log = LogFactoryUtil.getLog((Class)EnvioEmailMensagem.class);
}
}
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment