/*
* Created on 29/09/2005
*
*
* Window - Preferences - Java - Code Style - Code Templates
*/
package br.com.centralit.citcorpore.mail;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import br.com.centralit.citcorpore.bean.ModeloEmailDTO;
import br.com.centralit.citcorpore.negocio.ModeloEmailService;
import br.com.centralit.citcorpore.util.Enumerados.TipoDate;
import br.com.citframework.dto.IDto;
import br.com.citframework.excecao.LogicException;
import br.com.citframework.service.ServiceLocator;
import br.com.citframework.util.Reflexao;
import br.com.citframework.util.UtilDatas;
import br.com.citframework.util.UtilStrings;
/**
* @author rogerio
*
*
* Window - Preferences - Java - Code Style - Code Templates
*/
public class MensagemEmail {
public String to;
public String cc;
public String cco;
public String from;
public String subject;
public String text;
public boolean confirmarLeituraMail;
public MensagemEmail(String to, String cc, String cco, String from, String subject, String text) {
this.setTo(to);
this.setCc(cc);
this.setCco(cco);
this.setFrom(from);
this.setSubject(subject);
this.setText(text);
this.setConfirmarLeituraMail(false);
}
public MensagemEmail(Integer idModelo, Map<String, String> map) throws Exception {
criar(idModelo, map);
}
public MensagemEmail(Integer idModelo, IDto[] bean) throws Exception {
Map<String, String> map = new HashMap<>();
if (bean != null && bean.length > 0) {
for (int x = 0; x < bean.length; x++) {
try {
List<?> lstGets = Reflexao.findGets(bean[x]);
for (int i = 0; i < lstGets.size(); i++) {
String propriedade = UtilStrings.convertePrimeiraLetra((String) lstGets.get(i), "L");
Object value = Reflexao.getPropertyValue(bean[x], propriedade);
if (value == null)
continue;
String id = UtilStrings.convertePrimeiraLetra(propriedade, "L");
if (String.class.isInstance(value))
map.put(id, (String) value);
else if (Integer.class.isInstance(value))
map.put(id, ((Integer) value).toString());
else if (java.sql.Date.class.isInstance(value))
map.put(id, UtilDatas.dateToSTR(((java.sql.Date) value)));
else if (java.sql.Timestamp.class.isInstance(value))
map.put(id, UtilDatas.convertDateToString(TipoDate.TIMESTAMP_DEFAULT, ((java.sql.Timestamp) value), null));
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
criar(idModelo, map);
}
public void criar(Integer idModelo, Map<String, String> map) throws Exception {
if (idModelo == null || idModelo.intValue() < 0)
return;
ModeloEmailService modeloEmailService = (ModeloEmailService) ServiceLocator.getInstance().getService(ModeloEmailService.class, null);
ModeloEmailDTO modeloEmailDto = new ModeloEmailDTO();
modeloEmailDto.setIdModeloEmail(idModelo);
modeloEmailDto = (ModeloEmailDTO) modeloEmailService.restore(modeloEmailDto);
if (modeloEmailDto == null)
throw new LogicException("Modelo de E-mail n�o parametrizado.");
String texto = modeloEmailDto.getTexto();
String titulo = modeloEmailDto.getTitulo();
try {
for (String key : map.keySet()) {
if (texto != null) {
texto = texto.replace(String.format("${%s}", key.toUpperCase()), map.get(key));
}
if (titulo != null) {
titulo = titulo.replace(String.format("${%s}", key.toUpperCase()), map.get(key));
}
}
} catch (Exception e) {
e.printStackTrace();
}
// remove poss�veis chaves que n�o encontraram valores no map
if (texto != null) {
texto = texto.replaceAll("\\$\\{[^}]*\\}", "");
}
this.setText(texto);
this.setSubject(titulo);
this.setConfirmarLeituraMail(false);
}
public void envia(String to, String cc, String from) throws Exception {
this.setTo(to);
this.setCc(cc);
this.setFrom(from);
new Thread(new ControleEmail(this)).start();
}
public String getTo() {
return to;
}
public void setTo(String to) {
this.to = to;
}
public String getCc() {
return cc;
}
public void setCc(String cc) {
this.cc = cc;
}
public String getCco() {
return cco;
}
public void setCco(String cco) {
this.cco = cco;
}
public String getFrom() {
return from;
}
public void setFrom(String from) {
this.from = from;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public boolean isConfirmarLeituraMail() {
return confirmarLeituraMail;
}
public void setConfirmarLeituraMail(boolean confirmarLeituraMail) {
this.confirmarLeituraMail = confirmarLeituraMail;
}
}