/**
*
*/
package br.com.centralit.citcorpore.ajaxForms;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import net.sf.jasperreports.engine.JRDataSource;
import net.sf.jasperreports.engine.JRExporterParameter;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import net.sf.jasperreports.engine.design.JasperDesign;
import net.sf.jasperreports.engine.export.JRCsvExporter;
import net.sf.jasperreports.engine.export.JRCsvExporterParameter;
import net.sf.jasperreports.engine.xml.JRXmlLoader;
import org.apache.commons.lang.StringUtils;
import br.com.centralit.citajax.html.AjaxFormAction;
import br.com.centralit.citajax.html.DocumentHTML;
import br.com.centralit.citajax.html.HTMLForm;
import br.com.centralit.citcorpore.bean.LinguaDTO;
import br.com.centralit.citcorpore.bean.ParametroCorporeDTO;
import br.com.centralit.citcorpore.bean.UsuarioDTO;
import br.com.centralit.citcorpore.negocio.LinguaService;
import br.com.centralit.citcorpore.negocio.ParametroCorporeService;
import br.com.centralit.citcorpore.util.CITCorporeUtil;
import br.com.centralit.citcorpore.util.ParametroUtil;
import br.com.centralit.citcorpore.util.UtilRelatorio;
import br.com.centralit.citcorpore.util.WebUtil;
import br.com.citframework.excecao.ServiceException;
import br.com.citframework.service.ServiceLocator;
import br.com.citframework.util.Constantes;
import br.com.citframework.util.UtilDatas;
import br.com.citframework.util.UtilI18N;
import br.com.citframework.util.UtilStrings;
/**
* @author valdoilo.damasceno
*
*/
public class ParametroCorpore extends AjaxFormAction {
private UsuarioDTO usuario;
private static final int TAMANHO_BUFFER = 32768;
@Override
public Class<ParametroCorporeDTO> getBeanClass() {
return ParametroCorporeDTO.class;
}
@Override
public void load(final DocumentHTML document, final HttpServletRequest request, final HttpServletResponse response) throws Exception {
System.out.println("CITSMART - Criando parametros novos... iniciando.");
this.getParametroCorporeService().criarParametrosNovos();
System.out.println("CITSMART - Criando parametros novos... pronto.");
final HttpSession session = request.getSession();
LinguaDTO linguaDTO = new LinguaDTO();
linguaDTO.setSigla((String) session.getAttribute("locale"));
if (linguaDTO.getSigla() == null) {
linguaDTO.setSigla(UtilI18N.PORTUGUESE_SIGLA);
} else if (linguaDTO.getSigla().equals("")) {
linguaDTO.setSigla(UtilI18N.PORTUGUESE_SIGLA);
}
final LinguaService linguaService = (LinguaService) ServiceLocator.getInstance().getService(LinguaService.class, null);
linguaDTO = linguaService.getIdLingua(linguaDTO);
document.getElementById("idLingua").setValue("" + linguaDTO.getIdLingua());
}
/**
* Restorna para tela inicial de ParametroCorpore.
*
* @param document
* @param request
* @param response
* @throws Exception
* @author VMD
*/
public void restore(final DocumentHTML document, final HttpServletRequest request, final HttpServletResponse response) throws Exception {
ParametroCorporeDTO parametroBean = (ParametroCorporeDTO) document.getBean();
parametroBean = (ParametroCorporeDTO) this.getParametroCorporeService().restore(parametroBean);
/*
* Se o par�metro for do tipo boolean, faz a convers�o para o valor correto
*/
if (parametroBean.getTipoDado() != null && parametroBean.getTipoDado().equalsIgnoreCase("Boolean")) {
parametroBean.setValor(Internacionalizar.internacionalizaOptionSN(request, "restore", parametroBean.getValor()));
}
if (parametroBean.getValor() != null && !StringUtils.isBlank(parametroBean.getValor())) {
// parametroBean.setValor(StringEscapeUtils.escapeJavaScript(parametroBean.getValor().trim()));
parametroBean.setValor(UtilStrings.decodeCaracteresEspeciais(parametroBean.getValor()).trim());
}
parametroBean.setNome(UtilI18N.internacionaliza(request, parametroBean.getNome()));
final HTMLForm form = document.getForm("form");
form.clear();
form.setValues(parametroBean);
document.getTextBoxById("idAux").setValue("" + parametroBean.getId());
final HttpSession session = request.getSession();
LinguaDTO linguaDTO = new LinguaDTO();
linguaDTO.setSigla((String) session.getAttribute("locale"));
if (linguaDTO.getSigla() == null || linguaDTO.getSigla().equals("")) {
linguaDTO.setSigla(UtilI18N.PORTUGUESE_SIGLA);
} else if (linguaDTO.getSigla().equals("")) {
linguaDTO.setSigla(UtilI18N.PORTUGUESE_SIGLA);
}
final LinguaService linguaService = (LinguaService) ServiceLocator.getInstance().getService(LinguaService.class, null);
linguaDTO = linguaService.getIdLingua(linguaDTO);
document.getElementById("idLingua").setValue("" + linguaDTO.getIdLingua());
if (parametroBean != null && parametroBean.getTipoDado() != null) {
if (parametroBean.getTipoDado().trim().equalsIgnoreCase("Senha")) {
document.executeScript("MudarCampovalorParaTipoSenha();");
} else {
document.executeScript("MudarCampovalorParaTipoTexto();");
}
if (parametroBean.getTipoDado() != null && parametroBean.getTipoDado().trim().equalsIgnoreCase("Texto")) {
document.executeScript(" limpaCaracteristica(); $('#valor').addClass('text'); removeAllEventos();");
} else if (parametroBean.getTipoDado() != null && parametroBean.getTipoDado().trim().equalsIgnoreCase("Boolean")) {
document.executeScript(" limpaCaracteristica(); $('#valor').addClass('text'); removeAllEventos();");
} else {
if (parametroBean.getTipoDado().trim().equalsIgnoreCase("Email")) {
document.executeScript("limpaCaracteristica(); $('#valor').addClass('text'); $('#valor').addClass('Valid[" + parametroBean.getTipoDado()
+ "]'); $('#valor').addClass('Description[citcorpore.comum.valor]'); DEFINEALLPAGES_generateConfiguracaoCampos();");
} else if (parametroBean.getTipoDado().trim().equalsIgnoreCase("Numero") || parametroBean.getTipoDado().trim().equalsIgnoreCase("Moeda")) {
document.executeScript(" limpaCaracteristica(); $('#valor').addClass('text'); $('#valor').addClass('Format[" + parametroBean.getTipoDado()
+ "]'); DEFINEALLPAGES_generateConfiguracaoCampos();");
} else if (parametroBean.getTipoDado().trim().equalsIgnoreCase("Telefone") || parametroBean.getTipoDado().trim().equalsIgnoreCase("CEP")) {
document.executeScript(" limpaCaracteristica(); mascara('" + parametroBean.getTipoDado()
+ "'); $('#valor').addClass('text'); $('#valor').addClass('Description[citcorpore.comum.valor]'); DEFINEALLPAGES_generateConfiguracaoCampos();");
} else {
document.executeScript(" limpaCaracteristica(); mascara('" + parametroBean.getTipoDado() + "'); $('#valor').addClass('text'); $('#valor').addClass('Valid["
+ parametroBean.getTipoDado() + "]'); $('#valor').addClass('Description[citcorpore.comum.valor]'); DEFINEALLPAGES_generateConfiguracaoCampos();");
}
}
}
}
/**
* Inclui novo Parametro do CITCorpore.
*
* @param document
* @param request
* @param response
* @throws Exception
* @author VMD
*/
public void save(final DocumentHTML document, final HttpServletRequest request, final HttpServletResponse response) throws Exception {
final ParametroCorporeDTO parametroBean = (ParametroCorporeDTO) document.getBean();
boolean gravado = false;
if (parametroBean.getValor() == null) {
parametroBean.setValor("");
}
/*
* Se o par�metro for do tipo boolean, faz a convers�o para o valor correto
*/
if (parametroBean.getTipoDado() != null && parametroBean.getTipoDado().equalsIgnoreCase("Boolean")) {
parametroBean.setValor(Internacionalizar.internacionalizaOptionSN(request, "save", parametroBean.getValor().trim()));
} else {
parametroBean.setValor(parametroBean.getValor().trim());
}
if (parametroBean.getId() != null && parametroBean.getId() != 34 && parametroBean.getId() != 35 && parametroBean.getId() != 43 && parametroBean.getId() != 37
&& parametroBean.getId() != 38 && parametroBean.getId() != 67 && parametroBean.getId() != 64 && parametroBean.getId() != 49 && parametroBean.getId() != 39
&& parametroBean.getId() != 45 && parametroBean.getId() != 102 && parametroBean.getId() != 68 && parametroBean.getId() != 121) {
if (parametroBean.getId() == null || parametroBean.getId() < 0) {
// parametroBean.setValor(StringUtils.replace(parametroBean.getValor(), "\\", "\\\\"));
this.getParametroCorporeService().create(parametroBean, request);
document.alert(UtilI18N.internacionaliza(request, "MSG05"));
} else {
// parametroBean.setValor(StringUtils.replace(parametroBean.getValor(), "\\", "\\\\"));
try {
// Setado nulo para n�o mexer no nome quando for salvo, fazendo um updadeNotNull.
parametroBean.setNome(null);
// O parametro com id 152 � a nota da pesquisa de satisfa��o automatica para que ela funcione corretamente � testado somente se for otimo bom regular ou ruim
// por isso valido o que o usuario digita no valor do parametro.
if (parametroBean.getId() != 152) {
this.getParametroCorporeService().updateNotNull(parametroBean);
gravado = true;
} else {
final String valor = parametroBean.getValor();
if (valor.equals("BOM") || valor.equals("OTIMO") || valor.equals("REGULAR") || valor.equals("RUIM")) {
this.getParametroCorporeService().updateNotNull(parametroBean);
gravado = true;
} else {
document.alert(UtilI18N.internacionaliza(request, "notaAvaliacaoAutomatica.nota"));
}
}
} catch (final Exception e) {
System.out.println("Problema ao atualizar Par�metro CITSMart.");
e.printStackTrace();
gravado = false;
}
ParametroUtil.atualizarHashMapParametroCitSmart(parametroBean.getId(), parametroBean.getValor());
if (gravado) {
document.alert(UtilI18N.internacionaliza(request, "MSG06"));
}
}
} else {
document.alert(UtilI18N.internacionaliza(request, "ldap.configurarParametro"));
}
}
/**
* Exclui Par�metro atribuindo sua dataFim.
*
* @param document
* @param request
* @param response
* @throws Exception
* @author VMD
*/
public void excluirParametroCorpore(final DocumentHTML document, final HttpServletRequest request, final HttpServletResponse response) throws Exception {
final ParametroCorporeDTO parametroCorporeBean = (ParametroCorporeDTO) document.getBean();
if (parametroCorporeBean.getId() != null && parametroCorporeBean.getId() != 0) {
parametroCorporeBean.setDataFim(UtilDatas.getDataAtual());
this.getParametroCorporeService().update(parametroCorporeBean);
final HTMLForm form = document.getForm("form");
form.clear();
document.alert(UtilI18N.internacionaliza(request, "MSG07"));
}
}
public void exportarParametroCsv(final DocumentHTML document, final HttpServletRequest request, final HttpServletResponse response) throws Exception {
final HttpSession session = request.getSession();
usuario = WebUtil.getUsuario(request);
if (usuario == null) {
document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.sessaoExpirada"));
document.executeScript("window.location = '" + Constantes.getValue("SERVER_ADDRESS") + request.getContextPath() + "'");
document.getJanelaPopupById("JANELA_AGUARDE_MENU").hide();
return;
}
Collection<ParametroCorporeDTO> listParametro = new ArrayList<ParametroCorporeDTO>();
listParametro = this.getParametroCorporeService().list();
final JRDataSource listaParametro = new JRBeanCollectionDataSource(listParametro);
final Date dt = new Date();
final String strCompl = "" + dt.getTime();
final String diretorioReceita = CITCorporeUtil.CAMINHO_REAL_APP + "/tempFiles";
final String diretorioRelativoOS = Constantes.getValue("SERVER_ADDRESS") + Constantes.getValue("CONTEXTO_APLICACAO") + "/tempFiles";
Map<String, Object> parametros = new HashMap<String, Object>();
parametros = UtilRelatorio.trataInternacionalizacaoLocale(session, parametros);
parametros.put("TITULO_RELATORIO1", "ID");
parametros.put("TITULO_RELATORIO2", "NOME");
parametros.put("TITULO_RELATORIO3", "VALOR");
final JasperDesign desenho = JRXmlLoader.load(CITCorporeUtil.CAMINHO_REAL_APP + Constantes.getValue("CAMINHO_RELATORIOS") + "ParametroCorporeCsv.jrxml");
final JasperReport relatorio = JasperCompileManager.compileReport(desenho);
final JasperPrint impressao = JasperFillManager.fillReport(relatorio, parametros, listaParametro);
final JRCsvExporter exporter = new JRCsvExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, impressao);
exporter.setParameter(JRCsvExporterParameter.FIELD_DELIMITER, ";");
exporter.setParameter(JRExporterParameter.CHARACTER_ENCODING, "ISO-8859-1");
exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, diretorioReceita + "/ParametroCorporeCsv" + strCompl + "_" + usuario.getIdUsuario() + ".csv");
exporter.exportReport();
int cont;
final byte[] dados = new byte[TAMANHO_BUFFER];
BufferedInputStream origem = null;
FileInputStream streamDeEntrada = null;
FileOutputStream destino = null;
ZipOutputStream saida = null;
ZipEntry entry = null;
destino = new FileOutputStream(new File(diretorioReceita + "/ParametroCorporeCsv" + strCompl + "_" + usuario.getIdUsuario() + ".zip"));
saida = new ZipOutputStream(new BufferedOutputStream(destino));
final File file = new File(diretorioReceita + "/ParametroCorporeCsv" + strCompl + "_" + usuario.getIdUsuario() + ".csv");
streamDeEntrada = new FileInputStream(file);
origem = new BufferedInputStream(streamDeEntrada, TAMANHO_BUFFER);
entry = new ZipEntry(file.getName());
saida.putNextEntry(entry);
while ((cont = origem.read(dados, 0, TAMANHO_BUFFER)) != -1) {
saida.write(dados, 0, cont);
}
origem.close();
saida.close();
document.executeScript("window.open('" + Constantes.getValue("SERVER_ADDRESS") + Constantes.getValue("CONTEXTO_APLICACAO") + "/printPDF/printPDF.jsp?url="
+ diretorioRelativoOS + "/ParametroCorporeCsv" + strCompl + "_" + usuario.getIdUsuario() + ".zip')");
document.getJanelaPopupById("JANELA_AGUARDE_MENU").hide();
}
private ParametroCorporeService parametroService;
/**
* Retorna Service de ParametroCorpore.
*
* @return
* @throws ServiceException
* @throws Exception
* @author VMD
*/
private ParametroCorporeService getParametroCorporeService() throws Exception {
if (parametroService == null) {
parametroService = (ParametroCorporeService) ServiceLocator.getInstance().getService(ParametroCorporeService.class, null);
}
return parametroService;
}
}