Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
P
portlet-gestao-mensagens-internet
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
bianca.passos
portlet-gestao-mensagens-internet
Commits
d36f7d05
Commit
d36f7d05
authored
Aug 10, 2020
by
renato.aragao
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
atualizacao da clace envio EMAIL
parent
bdb064f6
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
111 additions
and
264 deletions
+111
-264
EnvioEmailMensagem.java
...tal/portlet/gestaomensagens/email/EnvioEmailMensagem.java
+111
-264
No files found.
src/main/java/br/mp/mprj/portal/portlet/gestaomensagens/email/EnvioEmailMensagem.java
View file @
d36f7d05
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
);
protected
final
Mensagem
mensagem
;
private
Template
template
;
public
EnvioEmailMensagem
(
Mensagem
mensagem
)
{
this
.
mensagem
=
mensagem
;
try
{
//_log.error(">>>"+mensagem.getTemplateId()+"<<<");
if
(
mensagem
.
getTemplateId
()
>
0
){
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
);
}
}
/**
* 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
();
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
.
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
);
MailServiceUtil
.
sendEmail
(
mail
);
}
protected
User
getUserCriador
()
throws
PortalException
,
SystemException
{
return
UserLocalServiceUtil
.
getUser
(
mensagem
.
getUserIdCriador
());
}
protected
abstract
InternetAddress
getRemetente
()
throws
PortalException
,
SystemException
,
AddressException
,
UnsupportedEncodingException
;
protected
abstract
InternetAddress
[]
getDestinatarios
()
throws
PortalException
,
SystemException
,
AddressException
,
UnsupportedEncodingException
;
protected
abstract
List
<
AnexoMensagem
>
getAnexos
(
long
mensagemId
)
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
());
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());
}
}
else
{
sbHTML
.
append
(
this
.
mensagem
.
getConteudo
());
}
return
sbHTML
.
toString
();
}
protected
String
getAssuntoEmail
(
int
tipoEnvio
)
{
StringBuilder
assunto
=
new
StringBuilder
();
if
(
tipoEnvio
!=
2
){
if
(
tipoEnvio
==
1
)
{
assunto
.
append
(
"TESTE - "
);
}
else
{
if
(
mensagem
.
getStatusWorkflow
()
==
StatusWorkflowEnum
.
PENDENTE_APROVACAO
.
getStatus
())
{
assunto
.
append
(
"PENDENTE DE APROVAÇÃO - "
);
}
else
if
(
mensagem
.
getStatusWorkflow
()
==
StatusWorkflowEnum
.
APROVADO
.
getStatus
())
{
assunto
.
append
(
"APROVADA - "
);
}
else
if
(
mensagem
.
getStatusWorkflow
()
==
StatusWorkflowEnum
.
REPROVADO
.
getStatus
())
{
assunto
.
append
(
"PENDENTE DE RETIFICAÇÃO - "
);
}
assunto
.
append
(
mensagem
.
getCodigoMensagem
()
+
" - "
);
}
}
assunto
.
append
(
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
);
}
}
}
public
abstract
class
EnvioEmailMensagem
{
private
static
final
Log
_log
;
protected
final
Mensagem
mensagem
;
private
Template
template
;
public
EnvioEmailMensagem
(
final
Mensagem
mensagem
)
{
this
.
mensagem
=
mensagem
;
try
{
if
(
mensagem
.
getTemplateId
()
>
0L
)
{
this
.
template
=
TemplateLocalServiceUtil
.
getTemplate
(
mensagem
.
getTemplateId
());
}
}
catch
(
Exception
ex
)
{
EnvioEmailMensagem
.
_log
.
error
((
Object
)
"Problemas ao inicializar envio de Email"
,
(
Throwable
)
ex
);
}
}
public
void
enviarEmail
(
final
int
tipoEnvio
)
throws
PortalException
,
SystemException
,
AddressException
,
UnsupportedEncodingException
{
final
MailMessage
mail
=
new
MailMessage
();
mail
.
setHTMLFormat
(
true
);
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
);
}
}
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
(
this
.
mensagem
.
getUserIdCriador
());
}
protected
abstract
InternetAddress
getRemetente
()
throws
PortalException
,
SystemException
,
AddressException
,
UnsupportedEncodingException
;
protected
abstract
InternetAddress
[]
getDestinatarios
()
throws
PortalException
,
SystemException
,
AddressException
,
UnsupportedEncodingException
;
protected
abstract
List
<
AnexoMensagem
>
getAnexos
(
final
long
p0
)
throws
SystemException
;
protected
String
getHtmlCompleto
()
{
final
StringBundler
sbHTML
=
new
StringBundler
();
if
(
this
.
template
!=
null
)
{
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
(
this
.
mensagem
.
getConteudo
());
}
}
else
{
sbHTML
.
append
(
this
.
mensagem
.
getConteudo
());
}
return
sbHTML
.
toString
();
}
protected
String
getAssuntoEmail
(
final
int
tipoEnvio
)
{
final
StringBuilder
assunto
=
new
StringBuilder
();
if
(
tipoEnvio
!=
2
)
{
if
(
tipoEnvio
==
1
)
{
assunto
.
append
(
"TESTE - "
);
}
else
{
if
(
this
.
mensagem
.
getStatusWorkflow
()
==
StatusWorkflowEnum
.
PENDENTE_APROVACAO
.
getStatus
())
{
assunto
.
append
(
"PENDENTE DE APROVAÇÃO - "
);
}
else
if
(
this
.
mensagem
.
getStatusWorkflow
()
==
StatusWorkflowEnum
.
APROVADO
.
getStatus
())
{
assunto
.
append
(
"APROVADA - "
);
}
else
if
(
this
.
mensagem
.
getStatusWorkflow
()
==
StatusWorkflowEnum
.
REPROVADO
.
getStatus
())
{
assunto
.
append
(
"PENDENTE DE RETIFICAÇÃO - "
);
}
assunto
.
append
(
this
.
mensagem
.
getCodigoMensagem
()
+
" - "
);
}
}
assunto
.
append
(
this
.
mensagem
.
getAssunto
());
return
assunto
.
toString
();
}
static
{
_log
=
LogFactoryUtil
.
getLog
((
Class
)
EnvioEmailMensagem
.
class
);
}
}
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment