package br.com.centralit.citcorpore.ajaxForms; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.PrintWriter; import java.util.ArrayList; import java.util.List; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import br.com.centralit.citajax.html.AjaxFormAction; import br.com.centralit.citajax.html.DocumentHTML; import br.com.centralit.citcorpore.bean.UsuarioDTO; import br.com.centralit.citcorpore.util.CriptoUtils; import br.com.centralit.citcorpore.util.Enumerados; import br.com.centralit.citcorpore.util.ParametroUtil; import br.com.centralit.citcorpore.util.WebUtil; import br.com.centralit.citged.bean.ControleGEDDTO; import br.com.centralit.citged.negocio.ControleGEDService; import br.com.citframework.service.ServiceLocator; import br.com.citframework.util.Constantes; import br.com.citframework.util.UtilStrings; public class RecuperaFromGed extends AjaxFormAction { @Override public Class getBeanClass() { return ControleGEDDTO.class; } @Override public void load(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { UsuarioDTO user = WebUtil.getUsuario(request); if (user == null) { document.alert("O usu�rio n�o est� logado! Favor logar no sistema!"); return; } ControleGEDDTO controleGEDDTO = (ControleGEDDTO) document.getBean(); if (controleGEDDTO.getIdControleGED() == null) { if (controleGEDDTO.getNomeArquivo() != null) { try { controleGEDDTO.setIdControleGED(new Integer(controleGEDDTO.getNomeArquivo())); } catch (Exception e) { } } } String PRONTUARIO_ABRIR_PDF_ANEXO = (String) request.getAttribute("PRONTUARIO_ABRIR_PDF_ANEXO"); if (PRONTUARIO_ABRIR_PDF_ANEXO == null) { PRONTUARIO_ABRIR_PDF_ANEXO = "1"; } String PRONTUARIO_GED_DIRETORIO = ParametroUtil.getValorParametroCitSmartHashMap(Enumerados.ParametroSistema.GedDiretorio, " "); if (PRONTUARIO_GED_DIRETORIO == null || PRONTUARIO_GED_DIRETORIO.trim().equalsIgnoreCase("")) { PRONTUARIO_GED_DIRETORIO = ""; } if (PRONTUARIO_GED_DIRETORIO.equalsIgnoreCase("")) { PRONTUARIO_GED_DIRETORIO = Constantes.getValue("DIRETORIO_GED"); } if (PRONTUARIO_GED_DIRETORIO == null || PRONTUARIO_GED_DIRETORIO.equalsIgnoreCase("")) { PRONTUARIO_GED_DIRETORIO = "/ged"; } boolean isGedInterno = false; String PRONTUARIO_GED_INTERNO = ParametroUtil.getValorParametroCitSmartHashMap(Enumerados.ParametroSistema.GedInterno, "S"); if (PRONTUARIO_GED_INTERNO == null || PRONTUARIO_GED_INTERNO.trim().equalsIgnoreCase("")) { PRONTUARIO_GED_INTERNO = "S"; } String gedInternoStr = PRONTUARIO_GED_INTERNO; if (gedInternoStr == null || "S".equalsIgnoreCase(gedInternoStr)) { isGedInterno = true; gedInternoStr = "S"; } Boolean isGedInternoBancoDados = false; String gedInternoBancoDadosStr = ParametroUtil.getValorParametroCitSmartHashMap(Enumerados.ParametroSistema.GedInternoBD, "N"); if (UtilStrings.isNotVazio(gedInternoBancoDadosStr) && "S".equalsIgnoreCase(gedInternoBancoDadosStr)) isGedInternoBancoDados = true; if (isGedInterno) { ControleGEDService controleGEDService = (ControleGEDService) ServiceLocator.getInstance().getService(ControleGEDService.class, null); controleGEDDTO = (ControleGEDDTO) controleGEDService.restore(controleGEDDTO); } FileInputStream fis = null; List filesDel = new ArrayList(); try { if (controleGEDDTO != null) { try { File fileDir = new File(System.getProperty("user.dir") + "tempFiles" + "/" + user.getIdEmpresa()); if (!fileDir.exists()) fileDir.mkdirs(); CriptoUtils.decryptFile(PRONTUARIO_GED_DIRETORIO + "/" + user.getIdEmpresa() + "/" + controleGEDDTO.getPasta() + "/" + controleGEDDTO.getIdControleGED() + ".ged", System.getProperty("user.dir") + "tempFiles" + "/" + user.getIdEmpresa() + "/" + controleGEDDTO.getIdControleGED() + ".decript", System.getProperties().get("user.dir") + Constantes.getValue("CAMINHO_CHAVE_PRIVADA")); if (PRONTUARIO_ABRIR_PDF_ANEXO.equalsIgnoreCase("2")) { if (controleGEDDTO.getExtensaoArquivo().trim().equalsIgnoreCase("PDF")) { CriptoUtils.decryptFile(PRONTUARIO_GED_DIRETORIO + "/" + user.getIdEmpresa() + "/" + controleGEDDTO.getPasta() + "/" + controleGEDDTO.getIdControleGED() + ".ged", System.getProperty("user.dir") + "tempFiles" + "/" + user.getIdEmpresa() + "/" + controleGEDDTO.getIdControleGED() + ".pdf", System.getProperties().get("user.dir") + Constantes.getValue("CAMINHO_CHAVE_PRIVADA")); } } fis = new FileInputStream(System.getProperty("user.dir") + "tempFiles" + "/" + user.getIdEmpresa() + "/" + controleGEDDTO.getIdControleGED() + ".decript"); if (isGedInternoBancoDados.booleanValue()) { filesDel.add(PRONTUARIO_GED_DIRETORIO + "/" + user.getIdEmpresa() + "/" + controleGEDDTO.getPasta() + "/" + controleGEDDTO.getIdControleGED() + ".ged"); } filesDel.add(System.getProperty("user.dir") + "tempFiles" + "/" + user.getIdEmpresa() + "/" + controleGEDDTO.getIdControleGED() + ".decript"); } catch (Exception e) { e.printStackTrace(); PrintWriter out = response.getWriter(); String msg = "PROBLEMAS AO ABRIR O DOCUMENTO DO GED! " + PRONTUARIO_GED_DIRETORIO + "/" + user.getIdEmpresa() + "/" + controleGEDDTO.getPasta() + "/" + controleGEDDTO.getIdControleGED() + ".ged"; msg += "\r\nErro: " + e.getMessage(); response.setHeader("Content-Disposition", "attachment; filename=ERRO_DOCUMENTO_GED.txt"); response.setContentType("application/x-msdownload"); response.setContentLength(msg.getBytes().length); out.write(msg); response.flushBuffer(); return; } if (controleGEDDTO.getExtensaoArquivo() == null) { controleGEDDTO.setExtensaoArquivo(""); } try { if (controleGEDDTO.getExtensaoArquivo().trim().equalsIgnoreCase("XLS")) { response.setContentType("application/vnd.ms-excel"); } else if (controleGEDDTO.getExtensaoArquivo().trim().equalsIgnoreCase("PPS") || controleGEDDTO.getExtensaoArquivo().trim().equalsIgnoreCase("PPT")) { response.setContentType("application/powerpoint"); } else if (controleGEDDTO.getExtensaoArquivo().trim().equalsIgnoreCase("DOC") || controleGEDDTO.getExtensaoArquivo().trim().equalsIgnoreCase("DOCX") || controleGEDDTO.getExtensaoArquivo().trim().equalsIgnoreCase("RTF")) { response.setContentType("application/msword"); } else if (controleGEDDTO.getExtensaoArquivo().trim().equalsIgnoreCase("PDF")) { if (!PRONTUARIO_ABRIR_PDF_ANEXO.equalsIgnoreCase("2")) { response.setContentType("application/pdf"); } } else if (controleGEDDTO.getExtensaoArquivo().trim().equalsIgnoreCase("TXT")) { response.setContentType("text/plain"); } else if (controleGEDDTO.getExtensaoArquivo().trim().equalsIgnoreCase("ZIP")) { response.setContentType("application/zip"); } else if (controleGEDDTO.getExtensaoArquivo().trim().equalsIgnoreCase("RTF")) { response.setContentType("application/rtf"); } else if (controleGEDDTO.getExtensaoArquivo().trim().equalsIgnoreCase("JPG") || controleGEDDTO.getExtensaoArquivo().trim().equalsIgnoreCase("JPEG") || controleGEDDTO.getExtensaoArquivo().trim().equalsIgnoreCase("JPE")) { response.setContentType("image/jpeg"); } else if (controleGEDDTO.getExtensaoArquivo().trim().equalsIgnoreCase("GIF")) { response.setContentType("image/gif"); } else if (controleGEDDTO.getExtensaoArquivo().trim().equalsIgnoreCase("PNG")) { response.setContentType("image/png"); } else if (controleGEDDTO.getExtensaoArquivo().trim().equalsIgnoreCase("HTM") || controleGEDDTO.getExtensaoArquivo().trim().equalsIgnoreCase("HTML")) { response.setContentType("text/html"); } else if (controleGEDDTO.getExtensaoArquivo().trim().equalsIgnoreCase("")) { response.setContentType("application/x-msdownload"); } } catch (Exception e) { } } if (fis != null && fis.available() > 0) { if (PRONTUARIO_ABRIR_PDF_ANEXO.equalsIgnoreCase("2") && controleGEDDTO.getExtensaoArquivo().trim().equalsIgnoreCase("PDF")) { String diretorioRelativoReceita = Constantes.getValue("SERVER_ADDRESS") + Constantes.getValue("CONTEXTO_APLICACAO") + "/tempFiles/" + user.getIdEmpresa() + "/" + controleGEDDTO.getIdControleGED() + ".pdf"; document.executeScript("window.open('" + Constantes.getValue("SERVER_ADDRESS") + Constantes.getValue("CONTEXTO_APLICACAO") + "/printPDF/printPDF.jsp?url=" + diretorioRelativoReceita + "')"); } else { response.setHeader("Content-Disposition", "attachment; filename=" + controleGEDDTO.getNomeArquivo()); ServletOutputStream outputStream = response.getOutputStream(); response.setContentLength(fis.available()); byte[] byteFile = null; while (fis.available() > 0) { if (fis.available() < 1024) byteFile = new byte[fis.available()]; else byteFile = new byte[1024]; fis.read(byteFile); outputStream.write(byteFile); outputStream.flush(); } response.flushBuffer(); } } } finally { if (fis != null) try { fis.close(); } catch (IOException ioe) { } } if (filesDel != null && !filesDel.isEmpty()) { File f = null; for (int i = 0; i < filesDel.size(); i++) { try { f = new File(filesDel.get(i).toString()); if (f.exists()) f.delete(); } catch (Exception e) { } } } } public void abrePDF(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { ControleGEDDTO controleGEDDTO = (ControleGEDDTO) document.getBean(); request.setAttribute("PRONTUARIO_ABRIR_PDF_ANEXO", "2"); load(document, request, response); } }