package br.com.centralit.citcorpore.ajaxForms;
import java.awt.Color;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.lang.reflect.Method;
import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;
import br.com.centralit.citajax.html.DocumentHTML;
import br.com.centralit.citajax.reflexao.CitAjaxReflexao;
import br.com.centralit.citcorpore.bean.InformacoesContratoConfigDTO;
import br.com.centralit.citcorpore.bean.RequisicaoQuestionarioDTO;
import br.com.centralit.citcorpore.bean.UsuarioDTO;
import br.com.centralit.citcorpore.bean.ValidacaoCertificadoDigitalDTO;
import br.com.centralit.citcorpore.negocio.ContratoQuestionariosService;
import br.com.centralit.citcorpore.negocio.InformacoesContratoConfigService;
import br.com.centralit.citcorpore.negocio.InformacoesContratoPerfSegService;
import br.com.centralit.citcorpore.negocio.RequisicaoQuestionarioService;
import br.com.centralit.citcorpore.util.CITCorporeUtil;
import br.com.centralit.citcorpore.util.CriptoUtils;
import br.com.centralit.citcorpore.util.Enumerados;
import br.com.centralit.citcorpore.util.Enumerados.TipoDate;
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.bean.ControleGEDExternoDTO;
import br.com.centralit.citged.negocio.ControleGEDService;
import br.com.centralit.citquestionario.bean.AplicacaoQuestionarioDTO;
import br.com.centralit.citquestionario.bean.ArquivoMultimidiaDTO;
import br.com.centralit.citquestionario.bean.GrupoQuestionarioDTO;
import br.com.centralit.citquestionario.bean.ItemSubQuestionarioDTO;
import br.com.centralit.citquestionario.bean.LinhaSpoolQuestionario;
import br.com.centralit.citquestionario.bean.QuestaoQuestionarioDTO;
import br.com.centralit.citquestionario.bean.QuestionarioDTO;
import br.com.centralit.citquestionario.bean.RespostaItemAuxiliarDTO;
import br.com.centralit.citquestionario.bean.RespostaItemQuestionarioAnexosDTO;
import br.com.centralit.citquestionario.bean.RespostaItemQuestionarioDTO;
import br.com.centralit.citquestionario.bean.RespostaItemQuestionarioOpcoesDTO;
import br.com.centralit.citquestionario.negocio.AplicacaoQuestionarioService;
import br.com.centralit.citquestionario.negocio.GrupoQuestionarioService;
import br.com.centralit.citquestionario.negocio.OpcaoRespostaQuestionarioService;
import br.com.centralit.citquestionario.negocio.QuestaoQuestionarioService;
import br.com.centralit.citquestionario.negocio.QuestionarioService;
import br.com.centralit.citquestionario.negocio.RespostaItemQuestionarioService;
import br.com.centralit.citquestionario.util.WebValuesQuestionario;
import br.com.citframework.excecao.ServiceException;
import br.com.citframework.service.ServiceLocator;
import br.com.citframework.util.Constantes;
import br.com.citframework.util.Html2Pdf;
import br.com.citframework.util.Reflexao;
import br.com.citframework.util.UtilDatas;
import br.com.citframework.util.UtilFormatacao;
import br.com.citframework.util.UtilHTML;
import br.com.citframework.util.UtilI18N;
import br.com.citframework.util.UtilStrings;
import br.com.citframework.util.UtilTratamentoArquivos;
import br.com.citframework.util.cripto.CITAssinadorDigital;
import com.lowagie.text.Font;
import com.lowagie.text.pdf.BaseFont;
import com.lowagie.text.pdf.PdfContentByte;
import com.lowagie.text.pdf.PdfReader;
import com.lowagie.text.pdf.PdfStamper;
@SuppressWarnings({"unused", "unchecked", "rawtypes"})
public class RequisicaoQuestionario extends SolicitacaoServicoQuestionario {
private static final Color COR_FUNDO = Color.WHITE;
private static final Color COR_TITULO = Color.BLACK;
@Override
public Class getBeanClass() {
return RequisicaoQuestionarioDTO.class;
}
@Override
public void load(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception {
request.getSession().setAttribute("HASH_CONTEUDO", null);
request.getSession().setAttribute("TABELA_ASS_DIGITAL", null);
request.getSession().setAttribute("KEY_ASS_DIGITAL", null);
request.getSession(true).setAttribute("dados_solicit_quest", null);
final Integer idEmpresa = 1;
final RequisicaoQuestionarioDTO requisicaoQuestionarioDTO = (RequisicaoQuestionarioDTO) document.getBean();
String continuarEdt = requisicaoQuestionarioDTO.getContinuarEdt();
if (continuarEdt == null) {
continuarEdt = "N";
}
if (requisicaoQuestionarioDTO.getAba() == null) {
requisicaoQuestionarioDTO.setAba("");
}
final Collection colValoresRequisicao = WebValuesQuestionario.getFormValues(request);
requisicaoQuestionarioDTO.setColValores(colValoresRequisicao);
final Collection colAnexos = new ArrayList();
List lst = (List) request.getSession(true).getAttribute("TEMP_LISTA_ARQ_MULTIMIDIA");
if (lst == null) {
lst = new ArrayList();
}
final Collection TEMP_LISTA_CERTIFICADO_DIGITAL = (Collection) request.getSession().getAttribute(
"TEMP_LISTA_CERTIFICADO_DIGITAL");
requisicaoQuestionarioDTO.setColCertificados(TEMP_LISTA_CERTIFICADO_DIGITAL);
final ControleGEDService controleGEDService = (ControleGEDService) ServiceLocator.getInstance().getService(
ControleGEDService.class, null);
for (final Iterator it = lst.iterator(); it.hasNext();) {
final ArquivoMultimidiaDTO arquivoMultimidia = (ArquivoMultimidiaDTO) it.next();
ControleGEDDTO controleGEDDTO = new ControleGEDDTO();
String GED_INTERNO = ParametroUtil.getValorParametroCitSmartHashMap(Enumerados.ParametroSistema.GedInterno,
"S");
if (GED_INTERNO == null) {
GED_INTERNO = "S";
}
String prontuarioGedInternoBancoDados = ParametroUtil.getValorParametroCitSmartHashMap(
Enumerados.ParametroSistema.GedInternoBD, "N");
if (!UtilStrings.isNotVazio(prontuarioGedInternoBancoDados)) {
prontuarioGedInternoBancoDados = "N";
}
String GED_DIRETORIO = ParametroUtil.getValorParametroCitSmartHashMap(
Enumerados.ParametroSistema.GedDiretorio, "");
if (GED_DIRETORIO == null || GED_DIRETORIO.trim().equalsIgnoreCase("")) {
GED_DIRETORIO = "";
}
if (GED_DIRETORIO.equalsIgnoreCase("")) {
GED_DIRETORIO = Constantes.getValue("DIRETORIO_GED");
}
if (GED_DIRETORIO == null || GED_DIRETORIO.equalsIgnoreCase("")) {
GED_DIRETORIO = "/ged";
}
String pasta = "";
if (GED_INTERNO.equalsIgnoreCase("S")) {
pasta = controleGEDService.getProximaPastaArmazenar();
File fileDir = new File(GED_DIRETORIO);
if (!fileDir.exists()) {
fileDir.mkdirs();
}
fileDir = new File(GED_DIRETORIO + "/" + idEmpresa);
if (!fileDir.exists()) {
fileDir.mkdirs();
}
fileDir = new File(GED_DIRETORIO + "/" + idEmpresa + "/" + pasta);
if (!fileDir.exists()) {
fileDir.mkdirs();
}
}
controleGEDDTO.setIdTabela(ControleGEDDTO.TABELA_RESPOSTAITEMQUESTIONARIOANEXOS);
controleGEDDTO.setId(new Integer(0));
controleGEDDTO.setDataHora(UtilDatas.getDataAtual());
controleGEDDTO.setDescricaoArquivo(arquivoMultimidia.getNomeArquivo());
controleGEDDTO.setExtensaoArquivo(br.com.centralit.citcorpore.util.Util.getFileExtension(arquivoMultimidia
.getNomeArquivo()));
controleGEDDTO.setPasta(pasta);
controleGEDDTO.setNomeArquivo(arquivoMultimidia.getNomeArquivo());
if (!arquivoMultimidia.getCaminhoArquivo().startsWith("IDCITGED=")) {
if (GED_INTERNO.equalsIgnoreCase("S") && "S".equalsIgnoreCase(prontuarioGedInternoBancoDados)) {
final java.util.Date now = new java.util.Date();
CriptoUtils.encryptFile(arquivoMultimidia.getCaminhoArquivo(), GED_DIRETORIO + "/" + idEmpresa
+ "/" + pasta + "/TMP_" + now.getTime() + ".ged",
this.getClass().getResourceAsStream(Constantes.getValue("CAMINHO_CHAVE_PUBLICA")));
controleGEDDTO.setPathArquivo(GED_DIRETORIO + "/" + idEmpresa + "/" + pasta + "/TMP_"
+ now.getTime() + ".ged");
}
controleGEDDTO = controleGEDService.create(controleGEDDTO);
if (GED_INTERNO.equalsIgnoreCase("S") && !"S".equalsIgnoreCase(prontuarioGedInternoBancoDados)) { // Se utiliza GED interno
if (controleGEDDTO != null) {
CriptoUtils.encryptFile(arquivoMultimidia.getCaminhoArquivo(), GED_DIRETORIO + "/" + idEmpresa
+ "/" + pasta + "/" + controleGEDDTO.getIdControleGED() + ".ged", this.getClass()
.getResourceAsStream(Constantes.getValue("CAMINHO_CHAVE_PUBLICA")));
if (requisicaoQuestionarioDTO.getColCertificados() != null
&& requisicaoQuestionarioDTO.getColCertificados().size() > 0) {
int ordem = 1;
final CITAssinadorDigital d = new CITAssinadorDigital();
d.inicializar();
for (final Iterator itCert = requisicaoQuestionarioDTO.getColCertificados().iterator(); itCert
.hasNext();) {
final ValidacaoCertificadoDigitalDTO validacaoCertificadoDigitalDTO = (ValidacaoCertificadoDigitalDTO) itCert
.next();
final InputStream inStream = new FileInputStream(
validacaoCertificadoDigitalDTO.getCaminhoCompleto());
final CertificateFactory cf = CertificateFactory.getInstance("X.509", "BC");
final X509Certificate cert = (X509Certificate) cf.generateCertificate(inStream);
d.assinar(validacaoCertificadoDigitalDTO.getInfoCertificadoDigital().getCpf(),
arquivoMultimidia.getCaminhoArquivo(), GED_DIRETORIO + "/" + idEmpresa + "/"
+ pasta + "/" + controleGEDDTO.getIdControleGED() + ".signed" + ordem,
cert, false);
ordem++;
}
}
}
} else if (!GED_INTERNO.equalsIgnoreCase("S")) { // Se utiliza GED externo
final String CLASSE_GED_EXTERNO = ParametroUtil.getValorParametroCitSmartHashMap(
Enumerados.ParametroSistema.GedExternoClasse, "");
final Class classe = Class.forName(CLASSE_GED_EXTERNO);
final Object objeto = classe.newInstance();
final Method mtd = CitAjaxReflexao.findMethod("create", objeto);
final ControleGEDExternoDTO controleGedExternoDto = new ControleGEDExternoDTO();
Reflexao.copyPropertyValues(controleGEDDTO, controleGedExternoDto);
final HashMap hshInfo = new HashMap();
final File file = new File(arquivoMultimidia.getCaminhoArquivo());
controleGedExternoDto.setConteudoDocumento(UtilTratamentoArquivos.getBytesFromFile(file));
byte[] conteudoAssinaturaDigital = null;
if (requisicaoQuestionarioDTO.getColCertificados() != null
&& requisicaoQuestionarioDTO.getColCertificados().size() > 0) {
int ordem = 1;
final CITAssinadorDigital d = new CITAssinadorDigital();
d.inicializar();
for (final Iterator itCert = requisicaoQuestionarioDTO.getColCertificados().iterator(); itCert
.hasNext();) {
final ValidacaoCertificadoDigitalDTO validacaoCertificadoDigitalDTO = (ValidacaoCertificadoDigitalDTO) itCert
.next();
final InputStream inStream = new FileInputStream(
validacaoCertificadoDigitalDTO.getCaminhoCompleto());
final CertificateFactory cf = CertificateFactory.getInstance("X.509", "BC");
final X509Certificate cert = (X509Certificate) cf.generateCertificate(inStream);
conteudoAssinaturaDigital = d.assinar(validacaoCertificadoDigitalDTO
.getInfoCertificadoDigital().getCpf(), arquivoMultimidia.getCaminhoArquivo(), cert,
false);
ordem++;
break; // Faz so a primeira.
}
}
controleGedExternoDto.setConteudoAssinaturaDigital(conteudoAssinaturaDigital);
mtd.invoke(objeto, new Object[] {controleGedExternoDto, hshInfo});
}
} else {
controleGEDDTO.setIdControleGED(new Integer(UtilStrings.apenasNumeros(arquivoMultimidia
.getCaminhoArquivo())));
}
final RespostaItemQuestionarioAnexosDTO respItemQuestAnexoDto = new RespostaItemQuestionarioAnexosDTO();
if (controleGEDDTO != null) {
respItemQuestAnexoDto.setCaminhoAnexo(controleGEDDTO.getIdControleGED().toString());
}
respItemQuestAnexoDto.setObservacao(arquivoMultimidia.getObservacao());
respItemQuestAnexoDto.setIdQuestaoQuestionario(arquivoMultimidia.getIdQuestaoQuest());
colAnexos.add(respItemQuestAnexoDto);
}
requisicaoQuestionarioDTO.setColAnexos(colAnexos);
createQuestionario(document, request, response, requisicaoQuestionarioDTO);
}
public void createQuestionario(DocumentHTML document, HttpServletRequest request, HttpServletResponse response,
RequisicaoQuestionarioDTO requisicaoQuestionarioDTO) throws ServiceException, Exception {
final UsuarioDTO usrDto = br.com.centralit.citcorpore.util.WebUtil.getUsuario(request);
final RequisicaoQuestionarioService requisicaoQuestionarioService = (RequisicaoQuestionarioService) ServiceLocator
.getInstance().getService(RequisicaoQuestionarioService.class, WebUtil.getUsuarioSistema(request));
requisicaoQuestionarioDTO.setIdResponsavel(usrDto.getIdEmpregado());
requisicaoQuestionarioService.atualizaInformacoesQuestionario(requisicaoQuestionarioDTO, request);
document.alert(UtilI18N.internacionaliza(request, "MSG05"));
document.executeScript("parent.abreQuestionario('" + requisicaoQuestionarioDTO.getIdQuestionario() + "')");
}
@Override
public void validate(DocumentHTML document, HttpServletRequest request, HttpServletResponse response)
throws Exception {
final RequisicaoQuestionarioDTO pesQuestBean = (RequisicaoQuestionarioDTO) document.getBean();
final InformacoesContratoConfigService prontuarioEletronicoConfigService = (InformacoesContratoConfigService) ServiceLocator
.getInstance().getService(InformacoesContratoConfigService.class, null);
final Collection col = prontuarioEletronicoConfigService.findByNome(pesQuestBean.getAba());
InformacoesContratoConfigDTO prontuarioEletronicoConfigDto = null;
if (col != null) {
for (final Iterator it = col.iterator(); it.hasNext();) {
prontuarioEletronicoConfigDto = (InformacoesContratoConfigDTO) it.next();
break;
}
}
if (prontuarioEletronicoConfigDto == null) {
document.executeScript("parent.finalizacao()");
return;
}
if (prontuarioEletronicoConfigDto.getValidacoes() != null
&& !prontuarioEletronicoConfigDto.getValidacoes().trim().equalsIgnoreCase("")) {
final String strAux = prontuarioEletronicoConfigDto.getValidacoes() + ",";
final String[] str = strAux.split(",");
prontuarioEletronicoConfigDto.setValidacoesAux(str);
}
document.executeScript("parent.finalizacao()");
return;
}
@Override
public Collection organizaSubQuestionariosPorIdItem(Collection colValores) {
final HashMap map = new HashMap();
final Collection colSubQuestionarios = new ArrayList();
if (colValores != null) {
for (final Iterator it = colValores.iterator(); it.hasNext();) {
final RespostaItemAuxiliarDTO respItem = (RespostaItemAuxiliarDTO) it.next();
if (respItem.getFieldName().length() < 9) {
continue;
}
if (respItem.getFieldName().startsWith("SUBQUESTIONARIO#")) {
final String[] str = respItem.getFieldName().split("#");
if (str != null) {
if (str.length > 2) {
int x = 0;
try {
x = Integer.parseInt(str[1]);
} catch (final Exception e) {}
if (x > 0) {
Collection col = null;
ItemSubQuestionarioDTO itemSubQuestionarioAuxDTO = null;
boolean bIncluir = false;
if (map.containsKey("ITEM" + x)) {
itemSubQuestionarioAuxDTO = (ItemSubQuestionarioDTO) map.get("ITEM" + x);
col = itemSubQuestionarioAuxDTO.getColSubQuestionario();
} else {
col = new ArrayList();
bIncluir = true;
}
respItem.setFieldName(str[2]);
col.add(respItem);
if (bIncluir) {
final ItemSubQuestionarioDTO itemSubQuestionarioDTO = new ItemSubQuestionarioDTO();
itemSubQuestionarioDTO.setIdItem(x);
itemSubQuestionarioDTO.setColSubQuestionario(col);
colSubQuestionarios.add(itemSubQuestionarioDTO);
map.put("ITEM" + x, itemSubQuestionarioDTO);
}
}
}
}
}
}
}
return colSubQuestionarios;
}
@Override
public void listarCertificados(DocumentHTML document, HttpServletRequest request, HttpServletResponse response)
throws Exception {
final UsuarioDTO usuario = WebUtil.getUsuario(request);
if (usuario == null) {
document.alert("Sess�o expirada! Favor efetuar logon novamente!");
return;
}
final RequisicaoQuestionarioDTO pesQuestBean = (RequisicaoQuestionarioDTO) document.getBean();
List lst = (List) request.getSession(true).getAttribute("TEMP_LISTA_CERTIFICADO_DIGITAL");
if (lst == null) {
lst = new ArrayList();
}
String strTable = "<table border='1' width='100%'>";
for (final Iterator it = lst.iterator(); it.hasNext();) {
final ValidacaoCertificadoDigitalDTO vCertDigDto = (ValidacaoCertificadoDigitalDTO) it.next();
if (vCertDigDto.getInfoCertificadoDigital() == null) {
strTable += "<tr>";
strTable += "<td>";
strTable += "</td>";
if (vCertDigDto.getFileName() == null || vCertDigDto.getFileName().equalsIgnoreCase("")) {
strTable += "<td>";
strTable += "<img src='" + Constantes.getValue("SERVER_ADDRESS")
+ Constantes.getValue("CONTEXTO_APLICACAO")
+ "/produtos/citsaude/imagens/iconesProntuario/9.jpg' border='0'/>";
strTable += "</td>";
} else {
strTable += "<td>";
strTable += "<b><font color='red'>" + vCertDigDto.getFileName() + "</font></b>";
strTable += "</td>";
}
strTable += "</tr>";
} else {
String strUso = "";
String strAdequado = "N�o";
String strAtencao = "";
if (vCertDigDto.getInfoCertificadoDigital().isKeyUsageDigitalSignature()) {
strUso += "Assinatura digital";
}
if (vCertDigDto.getInfoCertificadoDigital().isKeyUsageNonRepudiation()) {
if (!strUso.equalsIgnoreCase("")) {
strUso += ",";
}
strUso += "Non Repudiation";
}
if (vCertDigDto.getInfoCertificadoDigital().isKeyUsageKeyEncipherment()) {
if (!strUso.equalsIgnoreCase("")) {
strUso += ",";
}
strUso += "Key Encipherment";
}
if (vCertDigDto.getInfoCertificadoDigital().isKeyUsageDataEncipherment()) {
if (!strUso.equalsIgnoreCase("")) {
strUso += ",";
}
strUso += "Data Encipherment";
}
if (vCertDigDto.getInfoCertificadoDigital().isKeyUsageKeyAgreement()) {
if (!strUso.equalsIgnoreCase("")) {
strUso += ",";
}
strUso += "Key Agreement";
}
if (vCertDigDto.getInfoCertificadoDigital().isKeyUsageKeyCertSign()) {
if (!strUso.equalsIgnoreCase("")) {
strUso += ",";
}
strUso += "CertSign";
}
if (vCertDigDto.getInfoCertificadoDigital().isKeyUsageCRLSign()) {
if (!strUso.equalsIgnoreCase("")) {
strUso += ",";
}
strUso += "CRLSign";
}
if (vCertDigDto.getInfoCertificadoDigital().isKeyUsageEncipherOnly()) {
if (!strUso.equalsIgnoreCase("")) {
strUso += ",";
}
strUso += "Encipher Only";
}
if (vCertDigDto.getInfoCertificadoDigital().isKeyUsageDecipherOnly()) {
if (!strUso.equalsIgnoreCase("")) {
strUso += ",";
}
strUso += "Decipher Only";
}
if (vCertDigDto.getInfoCertificadoDigital().isKeyUsageDigitalSignature()
&& vCertDigDto.getInfoCertificadoDigital().isKeyUsageNonRepudiation()) {
if (UtilDatas.getDataAtual()
.compareTo(vCertDigDto.getInfoCertificadoDigital().getDataFimValidade()) <= 0) {
if (UtilDatas.getDataAtual().compareTo(
vCertDigDto.getInfoCertificadoDigital().getDataInicioValidade()) >= 0) {
strAdequado = "Sim";
} else {
strAtencao = "<font color='red'><b>Certificado ainda n�o entrou em validade!</font></b>";
}
} else {
strAtencao = "<font color='red'><b>Certificado vencido!</font></b>";
}
}
strTable += "<tr>";
strTable += "<td>";
strTable += "</td>";
if (vCertDigDto.getFileName() == null || vCertDigDto.getFileName().equalsIgnoreCase("")) {
if (strAdequado.equalsIgnoreCase("Sim")) {
strTable += "<td>";
strTable += "<img src='" + Constantes.getValue("SERVER_ADDRESS")
+ Constantes.getValue("CONTEXTO_APLICACAO")
+ "/produtos/citsaude/imagens/iconesProntuario/9.jpg' border='0'/>";
strTable += "</td>";
} else {
strTable += "<td>";
strTable += "<img src='" + Constantes.getValue("SERVER_ADDRESS")
+ Constantes.getValue("CONTEXTO_APLICACAO")
+ "/produtos/citsaude/imagens/iconesProntuario/pare.gif' border='0'/>";
strTable += "</td>";
}
} else {
strTable += "<td>";
strTable += "<b><font color='red'>" + vCertDigDto.getFileName() + "</font></b>";
strTable += "</td>";
}
strTable += "<td>";
strTable += "Certificado em nome de: <b>" + vCertDigDto.getInfoCertificadoDigital().getNomeTitular()
+ "</b> CPF: <b>" + vCertDigDto.getInfoCertificadoDigital().getCpf() + "</b><br>";
strTable += "Raiz: <b>" + vCertDigDto.getInfoCertificadoDigital().getRaiz() + "</b> Emissor: <b>"
+ vCertDigDto.getInfoCertificadoDigital().getNomeEmissor() + "</b><br>";
strTable += "<b>"
+ vCertDigDto.getInfoCertificadoDigital().getPais()
+ "</b> Tipo: <b>"
+ vCertDigDto.getInfoCertificadoDigital().getTipo()
+ "</b> Validade entre: <b>"
+ UtilDatas.convertDateToString(TipoDate.DATE_DEFAULT, vCertDigDto.getInfoCertificadoDigital()
.getDataInicioValidade(), WebUtil.getLanguage(request))
+ " a "
+ UtilDatas.convertDateToString(TipoDate.DATE_DEFAULT, vCertDigDto.getInfoCertificadoDigital()
.getDataFimValidade(), WebUtil.getLanguage(request)) + "</b><br>";
strTable += "Utiliza��es permitidas: <b>" + strUso + "</b><br>";
strTable += "Adequado para informa��es m�dicas: <b>" + strAdequado + "</b><br>";
strTable += strAtencao;
strTable += "</td>";
strTable += "</tr>";
}
}
strTable += "</table>";
document.getElementById(pesQuestBean.getDivAtualizarCertificado()).setInnerHTML(strTable);
}
public String geraDadosFormulario(Integer idEmpresa, RequisicaoQuestionarioDTO contQuestBean,
boolean geraCabecalho, boolean imprimeDemaisDados, boolean imprimeLogo) throws Exception {
final ContratoQuestionariosService contratoQuestionariosService = (ContratoQuestionariosService) ServiceLocator
.getInstance().getService(ContratoQuestionariosService.class, null);
final RequisicaoQuestionarioDTO contQuestPesqBean = (RequisicaoQuestionarioDTO) contratoQuestionariosService
.restore(contQuestBean);
final QuestionarioService questionarioService = (QuestionarioService) ServiceLocator.getInstance().getService(
QuestionarioService.class, null);
QuestionarioDTO questionario = new QuestionarioDTO();
questionario.setIdIdentificadorResposta(contQuestBean.getIdRequisicaoQuestionario());
questionario.setIdQuestionario(contQuestBean.getIdQuestionario());
questionario = (QuestionarioDTO) questionarioService.restore(questionario);
final GrupoQuestionarioService grupoQuestionarioService = (GrupoQuestionarioService) ServiceLocator
.getInstance().getService(GrupoQuestionarioService.class, null);
String strImprimir = "";
strImprimir += "<table width='100%' border='1px solid black' cellpadding='0' cellspacing='0'>";
if (questionario != null) {
final Collection colGrupos = questionario.getColGrupos();
for (final Iterator it = colGrupos.iterator(); it.hasNext();) {
final GrupoQuestionarioDTO grupoQuestDto = (GrupoQuestionarioDTO) it.next();
final Collection colRetorno = grupoQuestionarioService.geraImpressaoFormatadaHTML(
grupoQuestDto.getColQuestoes(), contQuestPesqBean.getDataQuestionario(),
contQuestPesqBean.getIdRequisicao(), contQuestPesqBean.getIdResponsavel());
if (colRetorno != null && colRetorno.size() > 0) {
final String strAux = "<tr><td colspan='20' bgcolor='#20b2aa'><b>"
+ grupoQuestDto.getNomeGrupoQuestionario() + "</b></td></tr>";
String strAux2 = "";
for (final Iterator itQuest = colRetorno.iterator(); itQuest.hasNext();) {
final LinhaSpoolQuestionario linha = (LinhaSpoolQuestionario) itQuest.next();
if (linha.isGenerateTR()) {
if (linha.getLinha() != null && !linha.getLinha().trim().equalsIgnoreCase("")) {
strAux2 += "<tr>" + linha.getLinha() + "\n</tr>";
}
} else {
strAux2 += linha.getLinha() + "\n";
}
}
if (!strAux2.trim().equalsIgnoreCase("")) {
strImprimir += strAux + strAux2;
}
}
}
}
strImprimir += "</table>";
return strImprimir;
}
public String geraDadosFormularioSemAssinatura(Integer idEmpresa, RequisicaoQuestionarioDTO contQuestBean,
boolean geraCabecalho, boolean imprimeDemaisDados, boolean imprimeLogo) throws Exception {
final ContratoQuestionariosService contratoQuestionariosService = (ContratoQuestionariosService) ServiceLocator
.getInstance().getService(ContratoQuestionariosService.class, null);
final RequisicaoQuestionarioDTO contQuestPesqBean = (RequisicaoQuestionarioDTO) contratoQuestionariosService
.restore(contQuestBean);
final QuestionarioService questionarioService = (QuestionarioService) ServiceLocator.getInstance().getService(
QuestionarioService.class, null);
QuestionarioDTO questionario = new QuestionarioDTO();
questionario.setIdIdentificadorResposta(contQuestBean.getIdRequisicaoQuestionario());
questionario.setIdQuestionario(contQuestBean.getIdQuestionario());
questionario = (QuestionarioDTO) questionarioService.restore(questionario);
final GrupoQuestionarioService grupoQuestionarioService = (GrupoQuestionarioService) ServiceLocator
.getInstance().getService(GrupoQuestionarioService.class, null);
String strImprimir = "";
strImprimir += "<table width='100%' border='1px solid black' cellpadding='0' cellspacing='0'>";
if (questionario != null) {
final Collection colGrupos = questionario.getColGrupos();
for (final Iterator it = colGrupos.iterator(); it.hasNext();) {
final GrupoQuestionarioDTO grupoQuestDto = (GrupoQuestionarioDTO) it.next();
final Collection colRetorno = grupoQuestionarioService.geraImpressaoFormatadaHTML(
grupoQuestDto.getColQuestoes(), contQuestPesqBean.getDataQuestionario(),
contQuestPesqBean.getIdRequisicao(), contQuestPesqBean.getIdResponsavel());
if (colRetorno != null && colRetorno.size() > 0) {
final String strAux = "<tr><td colspan='20' bgcolor='#20b2aa'><b>"
+ grupoQuestDto.getNomeGrupoQuestionario() + "</b></td></tr>";
String strAux2 = "";
for (final Iterator itQuest = colRetorno.iterator(); itQuest.hasNext();) {
final LinhaSpoolQuestionario linha = (LinhaSpoolQuestionario) itQuest.next();
if (linha.isGenerateTR()) {
if (linha.getLinha() != null && !linha.getLinha().trim().equalsIgnoreCase("")) {
strAux2 += "<tr>" + linha.getLinha() + "\n</tr>";
}
} else {
strAux2 += linha.getLinha() + "\n";
}
}
if (!strAux2.trim().equalsIgnoreCase("")) {
strImprimir += strAux + strAux2;
}
}
}
}
strImprimir += "</table>";
return strImprimir;
}
@Override
public String gerarHistoricoGeralPacienteHTML(DocumentHTML document, HttpServletRequest request,
HttpServletResponse response) throws Exception {
final UsuarioDTO usuario = WebUtil.getUsuario(request);
if (usuario == null) {
document.alert("Sess�o expirada! Favor efetuar logon novamente!");
return "";
}
final Integer idEmpresa = 1;
final String usuarioImpressao = usuario.getNomeUsuario();
final RequisicaoQuestionarioDTO pesQuestBean = (RequisicaoQuestionarioDTO) document.getBean();
final ContratoQuestionariosService contratoQuestionariosService = (ContratoQuestionariosService) ServiceLocator
.getInstance().getService(ContratoQuestionariosService.class, null);
final InformacoesContratoConfigService prontuarioEletronicoConfigService = (InformacoesContratoConfigService) ServiceLocator
.getInstance().getService(InformacoesContratoConfigService.class, null);
final InformacoesContratoPerfSegService prontuarioEletronicoPerfSegService = (InformacoesContratoPerfSegService) ServiceLocator
.getInstance().getService(InformacoesContratoPerfSegService.class, null);
final QuestionarioService questService = (QuestionarioService) ServiceLocator.getInstance().getService(
QuestionarioService.class, null);
Collection col = null;
if (pesQuestBean.getOrdemHistorico() != null && pesQuestBean.getOrdemHistorico().equalsIgnoreCase("D")) {
if (pesQuestBean.getAba() == null || pesQuestBean.getAba().trim().equalsIgnoreCase("")) {
col = contratoQuestionariosService.listByIdContratoOrderDecrescente(pesQuestBean.getIdRequisicao());
} else {
col = contratoQuestionariosService.listByIdContratoAndAba(pesQuestBean.getIdRequisicao(),
pesQuestBean.getAba());
}
} else {
if (pesQuestBean.getAba() == null || pesQuestBean.getAba().trim().equalsIgnoreCase("")) {
col = contratoQuestionariosService.listByIdContrato(pesQuestBean.getIdRequisicao());
} else {
col = contratoQuestionariosService.listByIdContratoAndAbaOrdemCrescente(pesQuestBean.getIdRequisicao(),
pesQuestBean.getAba());
}
}
String strImprimir = "";
boolean bPrimeiroItem = true;
if (col != null) {
for (final Iterator it = col.iterator(); it.hasNext();) {
final RequisicaoQuestionarioDTO contratoQuestionariosAux = (RequisicaoQuestionarioDTO) it.next();
Collection colItem = null;
try {
colItem = prontuarioEletronicoConfigService.findByNome(contratoQuestionariosAux.getAba());
} catch (final Exception e) {
e.printStackTrace();
colItem = null;
}
if (colItem != null && colItem.size() > 0) {
final InformacoesContratoConfigDTO prontuarioEletronicoConfigDTO = (InformacoesContratoConfigDTO) ((List) colItem)
.get(0);
final Collection colPerfisAssociados = prontuarioEletronicoPerfSegService
.findByIdProntuarioEletronicoConfig(prontuarioEletronicoConfigDTO
.getIdInformacoesContratoConfig());
if (isPerfilUsuarioLogadoInCollection(colPerfisAssociados, usuario)) { // Se tiver acesso a aquela ABA, ent�o gera
// historico.
String str = "";
if (bPrimeiroItem) {
String nomeQuestionario = contratoQuestionariosAux.getNomeQuestionario();
if (contratoQuestionariosAux.getNomeQuestionario() == null
|| contratoQuestionariosAux.getNomeQuestionario().trim().equalsIgnoreCase("")) {
QuestionarioDTO questDto = new QuestionarioDTO();
questDto.setIdQuestionario(contratoQuestionariosAux.getIdRequisicaoQuestionario());
questDto = (QuestionarioDTO) questService.restore(questDto);
if (questDto != null) {
nomeQuestionario = questDto.getNomeQuestionario();
}
}
}
if (contratoQuestionariosAux.getConteudoImpresso() != null
&& !contratoQuestionariosAux.getConteudoImpresso().trim().equalsIgnoreCase("")) {
str += contratoQuestionariosAux.getConteudoImpresso();
} else {
final String conteudoImp = geraDadosFormularioSemAssinatura(idEmpresa,
contratoQuestionariosAux, true, false, false);
// -- Se chegar � que nao havia sido gravado, entao grava.
try {
pesQuestBean.setConteudoImpresso(conteudoImp);
contratoQuestionariosService.updateConteudoImpresso(
contratoQuestionariosAux.getIdRequisicaoQuestionario(), conteudoImp);
} catch (final Exception e) {
e.printStackTrace();
}
str += conteudoImp;
}
str += "<br><br>";
bPrimeiroItem = false;
strImprimir += str;
}
}
}
}
return strImprimir;
}
@Override
public void gerarHistoricoGeralPaciente(DocumentHTML document, HttpServletRequest request,
HttpServletResponse response) throws Exception {
final UsuarioDTO usuario = WebUtil.getUsuario(request);
if (usuario == null) {
document.alert("Sess�o expirada! Favor efetuar logon novamente!");
return;
}
final String usuarioImpressao = usuario.getNomeUsuario();
String strImprimir = gerarHistoricoGeralPacienteHTML(document, request, response);
final String diretorioReceita = CITCorporeUtil.CAMINHO_REAL_APP + "/tempReceitas/" + usuario.getIdUsuario();
final String diretorioRelativoReceita = Constantes.getValue("DIRETORIO_TEMPORARIO_RECEITAS_RELATIVO") + "/"
+ usuario.getIdUsuario();
File f = new File(diretorioReceita);
if (!f.exists()) {
f.mkdirs();
}
final String arquivoForm = diretorioReceita + "/formulario.pdf";
final String arquivoFormRefact = diretorioReceita + "/formulario2.pdf";
final String arquivoRelativoForm = diretorioRelativoReceita + "/formulario.pdf";
final String arquivoRelativoFormRefact = diretorioRelativoReceita + "/formulario2.pdf";
f = new File(arquivoForm);
if (f.exists()) {
f.delete();
}
// UtilTratamentoArquivos.geraFileTxtFromString("c:\\log.txt", strImprimir);
final OutputStream os = new FileOutputStream(arquivoForm);
if (strImprimir == null || strImprimir.trim().equalsIgnoreCase("")) {
strImprimir = "<p> </p>"; // Este item eh para nao gerar erro no comando abaixo.
}
strImprimir = UtilHTML.encodeHTML(strImprimir);
Html2Pdf.convert(strImprimir, os);
os.close();
final PdfReader reader = new PdfReader(arquivoForm);
final PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(arquivoFormRefact));
PdfContentByte over;
final int total = reader.getNumberOfPages() + 1;
for (int i = 1; i < total; i++) {
over = stamper.getUnderContent(i);
over.beginText();
final BaseFont bf = BaseFont.createFont("Helvetica", BaseFont.WINANSI, false);
over.setFontAndSize(bf, 8);
over.setTextMatrix(30, 30);
over.showText("Pagina: "
+ i
+ " de "
+ (total - 1)
+ " prontu�rio impresso em: "
+ UtilDatas.convertDateToString(TipoDate.TIMESTAMP_WITH_SECONDS, UtilDatas.getDataHoraAtual(),
WebUtil.getLanguage(request)) + " por: " + usuarioImpressao);
over.endText();
// over.setRGBColorStroke(0xFF, 0x00, 0x00);
// over.setLineWidth(5f);
// over.ellipse(250, 450, 350, 550);
over.stroke();
}
stamper.close();
final File file = new File(arquivoFormRefact);
final byte[] buffer = UtilTratamentoArquivos.getBytesFromFile(file);
final ServletOutputStream outputStream = response.getOutputStream();
response.setContentLength(buffer.length);
response.setContentType("application/pdf");
response.setHeader("Content-Disposition", "attachment; filename=Historico.pdf");
outputStream.write(buffer);
outputStream.flush();
outputStream.close();
}
private boolean isPerfilUsuarioLogadoInCollection(Collection colPerfisAssociados, UsuarioDTO user) {
return true;
}
/*
* private boolean isPerfilUsuarioLogadoInCollection(Collection colPerfisAssociados, UsuarioDTO user){
* if (colPerfisAssociados != null){
* for(Iterator it = colPerfisAssociados.iterator(); it.hasNext();){
* InformacoesContratoPerfSegDTO prontuarioEletronicoPerfSegDTO = (InformacoesContratoPerfSegDTO) it.next();
* if (user.getColPerfis() != null){
* for(Iterator itPerfUser = user.getColPerfis().iterator(); itPerfUser.hasNext();){
* PessoasPerfilSegurancaDTO pessoasPerfilSegurancaDTO = (PessoasPerfilSegurancaDTO) itPerfUser.next();
* if (pessoasPerfilSegurancaDTO.getIdPerfilSeguranca().intValue() == prontuarioEletronicoPerfSegDTO.getIdPerfilSeguranca().intValue()){
* return true;
* }
* }
* }
* }
* }
* return false;
* }
*/
@Override
public void imprimir(DocumentHTML document, HttpServletRequest request, HttpServletResponse response)
throws Exception {
RequisicaoQuestionarioDTO pesQuestBean = (RequisicaoQuestionarioDTO) document.getBean();
final UsuarioDTO usuario = WebUtil.getUsuario(request);
if (usuario == null) {
document.alert("Sess�o expirada! Favor efetuar logon novamente!");
return;
}
final Integer idEmpresa = 1;
final String usuarioImpressao = usuario.getNomeUsuario();
/*
* if (usuario.getIdProfissional() != null){
* ProfissionalService profissionalService = (ProfissionalService)
* ServiceLocator.getInstance().getService(ProfissionalService.class, null);
* ProfissionalDTO profDto = new ProfissionalDTO();
* profDto.setIdProfissional(usuario.getIdProfissional());
* profDto.setIdEmpresa(idEmpresa);
* try{
* profDto = (ProfissionalDTO) profissionalService.restore(profDto);
* }catch (Exception e) {
* e.printStackTrace();
* profDto = null;
* }
* if (profDto != null){
* usuarioImpressao = usuarioImpressao + " - " + profDto.getNome();
* }
* }
*/
String strImprimir = "";
final ContratoQuestionariosService profissionalService = (ContratoQuestionariosService) ServiceLocator
.getInstance().getService(ContratoQuestionariosService.class, null);
try {
pesQuestBean = (RequisicaoQuestionarioDTO) profissionalService.restore(pesQuestBean);
strImprimir = geraDadosFormulario(idEmpresa, pesQuestBean, true, true, true);
} catch (final Exception e) {
e.printStackTrace();
strImprimir = "OCORREU PROBLEMA AO IMPRIMIR! FAVOR AVISAR AO ADMINISTRADOR DO SISTEMA\n<br>"
+ e.getMessage();
}
final String diretorioReceita = CITCorporeUtil.CAMINHO_REAL_APP + "/tempReceitas/" + usuario.getIdUsuario();
final String diretorioRelativoReceita = Constantes.getValue("DIRETORIO_TEMPORARIO_RECEITAS_RELATIVO") + "/"
+ usuario.getIdUsuario();
File f = new File(diretorioReceita);
if (!f.exists()) {
f.mkdirs();
}
final String arquivoForm = diretorioReceita + "/formulario.pdf";
final String arquivoFormRefact = diretorioReceita + "/formulario2.pdf";
final String arquivoRelativoForm = diretorioRelativoReceita + "/formulario.pdf";
final String arquivoRelativoFormRefact = diretorioRelativoReceita + "/formulario2.pdf";
f = new File(arquivoForm);
if (f.exists()) {
f.delete();
}
// UtilTratamentoArquivos.geraFileTxtFromString("c:\\log.txt", strImprimir);
final OutputStream os = new FileOutputStream(arquivoForm);
strImprimir = UtilHTML.encodeHTML(strImprimir);
Html2Pdf.convert(strImprimir, os);
os.close();
final PdfReader reader = new PdfReader(arquivoForm);
final PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(arquivoFormRefact));
PdfContentByte over;
final int total = reader.getNumberOfPages() + 1;
for (int i = 1; i < total; i++) {
over = stamper.getUnderContent(i);
over.beginText();
final BaseFont bf = BaseFont.createFont("Helvetica", BaseFont.WINANSI, false);
over.setFontAndSize(bf, 8);
over.setTextMatrix(30, 30);
over.showText("Pagina: "
+ i
+ " de "
+ (total - 1)
+ " impresso em: "
+ UtilDatas.convertDateToString(TipoDate.TIMESTAMP_WITH_SECONDS, UtilDatas.getDataHoraAtual(),
WebUtil.getLanguage(request)) + " por: " + usuarioImpressao);
over.endText();
// over.setRGBColorStroke(0xFF, 0x00, 0x00);
// over.setLineWidth(5f);
// over.ellipse(250, 450, 350, 550);
over.stroke();
}
stamper.close();
final File file = new File(arquivoFormRefact);
final byte[] buffer = UtilTratamentoArquivos.getBytesFromFile(file);
try {
final ServletOutputStream outputStream = response.getOutputStream();
response.setContentLength(buffer.length);
response.setContentType("application/pdf");
outputStream.write(buffer);
outputStream.flush();
outputStream.close();
} catch (final Exception e) {
e.printStackTrace();
document.alert("Ocorreu um erro ao realizar a impress�o! " + e.getMessage());
}
}
@Override
public void listarProdutosQuestionario(DocumentHTML document, HttpServletRequest request,
HttpServletResponse response) throws Exception {
final UsuarioDTO usuario = WebUtil.getUsuario(request);
if (usuario == null) {
document.alert("Sess�o expirada! Favor efetuar logon novamente!");
return;
}
final String strTable = "";
final RequisicaoQuestionarioDTO pesQuestBean = (RequisicaoQuestionarioDTO) document.getBean();
final AplicacaoQuestionarioService aplicacaoQuestionarioService = (AplicacaoQuestionarioService) ServiceLocator
.getInstance().getService(AplicacaoQuestionarioService.class, null);
final Collection col = aplicacaoQuestionarioService.listByIdQuestionarioAndAplicacao(
pesQuestBean.getIdQuestionario(), "O");
AplicacaoQuestionarioDTO aplicacaoQuestionarioDTO = null;
if (col != null) {
for (final Iterator it = col.iterator(); it.hasNext();) {
aplicacaoQuestionarioDTO = (AplicacaoQuestionarioDTO) it.next();
break;
}
}
if (aplicacaoQuestionarioDTO == null) {
document.getElementById("divSelecaoProdutos").setInnerHTML(strTable);
document.getElementById("divSelecaoProdutos").setVisible(false);
document.executeScript("document.getElementByid('divCertificados').style.height = '330px';");
return;
}
document.getElementById("divSelecaoProdutos").setInnerHTML(strTable);
}
@Override
public void visualizarHistoricoCampo(DocumentHTML document, HttpServletRequest request, HttpServletResponse response)
throws Exception {
final UsuarioDTO usuario = WebUtil.getUsuario(request);
if (usuario == null) {
document.alert("Sess�o expirada! Favor efetuar logon novamente!");
return;
}
final RequisicaoQuestionarioDTO contrQuestBean = (RequisicaoQuestionarioDTO) document.getBean();
String strTable = "<table width='100%' border='1'>";
strTable += "<tr><td><b>Data do Atendimento</b></td><td><b>Conte�do</b></td></tr>";
String strItem = "";
final QuestaoQuestionarioService questaoQuestionarioService = (QuestaoQuestionarioService) ServiceLocator
.getInstance().getService(QuestaoQuestionarioService.class, null);
final QuestionarioService questionarioService = (QuestionarioService) ServiceLocator.getInstance().getService(
QuestionarioService.class, null);
final RespostaItemQuestionarioService respostaItemQuestionarioService = (RespostaItemQuestionarioService) ServiceLocator
.getInstance().getService(RespostaItemQuestionarioService.class, null);
final Collection col = questaoQuestionarioService.listByIdQuestaoAndContrato(
contrQuestBean.getIdQuestaoVisHistorico(), contrQuestBean.getIdContratoVisHistorico());
if (col != null) {
for (final Iterator it = col.iterator(); it.hasNext();) {
final QuestaoQuestionarioDTO questaoDto = (QuestaoQuestionarioDTO) it.next();
RespostaItemQuestionarioDTO resposta = new RespostaItemQuestionarioDTO();
resposta.setIdRespostaItemQuestionario(questaoDto.getIdRespostaItemQuestionario());
resposta = (RespostaItemQuestionarioDTO) respostaItemQuestionarioService.restore(resposta);
strItem = "";
if (questaoDto.getTipoQuestao().equalsIgnoreCase("T")
|| questaoDto.getTipoQuestao().equalsIgnoreCase("A")) {
strItem += resposta.getRespostaTextual();
}
if (questaoDto.getTipoQuestao().equalsIgnoreCase("D")) {
if (resposta.getRespostaData() != null) {
strItem += UtilDatas.convertDateToString(TipoDate.DATE_DEFAULT, resposta.getRespostaData(),
WebUtil.getLanguage(request));
}
}
if (questaoDto.getTipoQuestao().equalsIgnoreCase("H")) {
if (resposta.getRespostaHora() != null) {
strItem += UtilDatas.formatHoraStr(resposta.getRespostaHora());
}
}
if (questaoDto.getTipoQuestao().equalsIgnoreCase("N")) {
if (resposta.getRespostaNumero() != null) {
strItem += UtilFormatacao.formatDouble(resposta.getRespostaNumero(), 0);
}
}
if (questaoDto.getTipoQuestao().equalsIgnoreCase("V")
|| questaoDto.getTipoQuestao().equalsIgnoreCase("%")) {
int qtdeDecimais = 0;
if (questaoDto.getDecimais() != null) {
qtdeDecimais = questaoDto.getDecimais().intValue();
}
if (resposta.getRespostaValor() != null) {
strItem += UtilFormatacao.formatDouble(resposta.getRespostaValor(), qtdeDecimais);
}
}
if (questaoDto.getTipoQuestao().equalsIgnoreCase("L")) {
strItem += resposta.getRespostaTextual();
}
if (questaoDto.getTipoQuestao().equalsIgnoreCase("R")
|| questaoDto.getTipoQuestao().equalsIgnoreCase("C")
|| questaoDto.getTipoQuestao().equalsIgnoreCase("X")) { // Radio, checkbox e combobox
final OpcaoRespostaQuestionarioService opcaoRespService = (OpcaoRespostaQuestionarioService) ServiceLocator
.getInstance().getService(OpcaoRespostaQuestionarioService.class, null);
final Collection colOpcoesResposta = opcaoRespService.listByIdQuestaoQuestionario(questaoDto
.getIdQuestaoQuestionario());
questaoDto.setColOpcoesResposta(colOpcoesResposta);
final Collection colAux = respostaItemQuestionarioService
.getRespostasOpcoesByIdRespostaItemQuestionario(questaoDto.getIdRespostaItemQuestionario());
for (final Iterator itOpcResp = colAux.iterator(); itOpcResp.hasNext();) {
final RespostaItemQuestionarioOpcoesDTO opcRespDto = (RespostaItemQuestionarioOpcoesDTO) itOpcResp
.next();
strItem += opcRespDto.getTitulo() + "";
}
}
if (strItem == null || strItem.equalsIgnoreCase("null")) {
strItem = "";
}
strTable += "<tr><td>"
+ UtilDatas.convertDateToString(TipoDate.DATE_DEFAULT, questaoDto.getDataRegistro(),
WebUtil.getLanguage(request)) + "</td><td>" + strItem + "</td></tr>";
}
}
strTable += "</table>";
document.getElementById("divHistoricoCampoVisualizacao").setInnerHTML(strTable);
}
@Override
public void visualizarGraficoHistoricoCampo(DocumentHTML document, HttpServletRequest request,
HttpServletResponse response) throws Exception {
final RequisicaoQuestionarioDTO contrQuestBean = (RequisicaoQuestionarioDTO) document.getBean();
JFreeChart chart;
final DefaultCategoryDataset dados = new DefaultCategoryDataset();
Double objDouble;
Double objDouble2;
Double objDouble3;
String cabQuestao = "";
final QuestaoQuestionarioService questaoQuestionarioService = (QuestaoQuestionarioService) ServiceLocator
.getInstance().getService(QuestaoQuestionarioService.class, null);
final QuestionarioService questionarioService = (QuestionarioService) ServiceLocator.getInstance().getService(
QuestionarioService.class, null);
final RespostaItemQuestionarioService respostaItemQuestionarioService = (RespostaItemQuestionarioService) ServiceLocator
.getInstance().getService(RespostaItemQuestionarioService.class, null);
final Collection col = questaoQuestionarioService.listByIdQuestaoAndContratoOrderDataASC(
contrQuestBean.getIdQuestaoVisHistorico(), contrQuestBean.getIdContratoVisHistorico());
if (col != null) {
for (final Iterator it = col.iterator(); it.hasNext();) {
final QuestaoQuestionarioDTO questaoDto = (QuestaoQuestionarioDTO) it.next();
RespostaItemQuestionarioDTO resposta = new RespostaItemQuestionarioDTO();
resposta.setIdRespostaItemQuestionario(questaoDto.getIdRespostaItemQuestionario());
resposta = (RespostaItemQuestionarioDTO) respostaItemQuestionarioService.restore(resposta);
if (resposta == null) {
continue;
}
try {
String m = questaoDto.getTituloQuestaoQuestionarioSemFmt();
if (m == null) {
m = "";
}
cabQuestao = UtilHTML.decodeHTML(m);
} catch (final Exception e) {
e.printStackTrace();
cabQuestao = "--";
}
if (cabQuestao.equalsIgnoreCase("")) {
cabQuestao = "--";
}
objDouble = null;
objDouble2 = null;
objDouble3 = null;
try {
if (questaoDto.getTipoQuestao().equalsIgnoreCase("N")) {
objDouble = resposta.getRespostaNumero();
if (objDouble == null) {
objDouble = new Double(0);
}
dados.addValue(objDouble.doubleValue(), "Valor", UtilDatas.convertDateToString(
TipoDate.DATE_DEFAULT, questaoDto.getDataRegistro(), WebUtil.getLanguage(request)));
}
if (questaoDto.getTipoQuestao().equalsIgnoreCase("V")) {
objDouble = resposta.getRespostaValor();
if (objDouble == null) {
objDouble = new Double(0);
}
dados.addValue(objDouble.doubleValue(), "Valor", UtilDatas.convertDateToString(
TipoDate.DATE_DEFAULT, questaoDto.getDataRegistro(), WebUtil.getLanguage(request)));
}
if (questaoDto.getTipoQuestao().equalsIgnoreCase("%")) {
objDouble = resposta.getRespostaPercentual();
if (objDouble == null) {
objDouble = new Double(0);
}
dados.addValue(objDouble.doubleValue(), "Valor", UtilDatas.convertDateToString(
TipoDate.DATE_DEFAULT, questaoDto.getDataRegistro(), WebUtil.getLanguage(request)));
}
if (questaoDto.getTipoQuestao().equalsIgnoreCase("*")) {
objDouble = resposta.getRespostaPercentual();
if (objDouble == null) {
objDouble = new Double(0);
}
dados.addValue(objDouble.doubleValue(), "%", UtilDatas.convertDateToString(
TipoDate.DATE_DEFAULT, questaoDto.getDataRegistro(), WebUtil.getLanguage(request)));
objDouble = resposta.getRespostaValor();
if (objDouble == null) {
objDouble = new Double(0);
}
dados.addValue(objDouble.doubleValue(), "Valor", UtilDatas.convertDateToString(
TipoDate.DATE_DEFAULT, questaoDto.getDataRegistro(), WebUtil.getLanguage(request)));
}
if (questaoDto.getTipoQuestao().equalsIgnoreCase("1")) {
objDouble = resposta.getRespostaNumero();
if (objDouble == null) {
objDouble = new Double(0);
}
dados.addValue(objDouble.doubleValue(), "Valor 1", UtilDatas.convertDateToString(
TipoDate.DATE_DEFAULT, questaoDto.getDataRegistro(), WebUtil.getLanguage(request)));
objDouble = resposta.getRespostaNumero2();
if (objDouble == null) {
objDouble = new Double(0);
}
dados.addValue(objDouble.doubleValue(), "Valor 2", UtilDatas.convertDateToString(
TipoDate.DATE_DEFAULT, questaoDto.getDataRegistro(), WebUtil.getLanguage(request)));
}
if (questaoDto.getTipoQuestao().equalsIgnoreCase("2")) {
objDouble = resposta.getRespostaValor();
if (objDouble == null) {
objDouble = new Double(0);
}
dados.addValue(objDouble.doubleValue(), "Valor 1", UtilDatas.convertDateToString(
TipoDate.DATE_DEFAULT, questaoDto.getDataRegistro(), WebUtil.getLanguage(request)));
objDouble = resposta.getRespostaValor2();
if (objDouble == null) {
objDouble = new Double(0);
}
dados.addValue(objDouble.doubleValue(), "Valor 2", UtilDatas.convertDateToString(
TipoDate.DATE_DEFAULT, questaoDto.getDataRegistro(), WebUtil.getLanguage(request)));
}
} catch (final Exception e) {
e.printStackTrace();
}
}
}
cabQuestao = cabQuestao.replaceAll("\n", "");
cabQuestao = cabQuestao.replaceAll("\r", "");
final boolean is3D = false;
if (is3D) {
chart = ChartFactory.createLineChart3D(cabQuestao, null, null, dados, PlotOrientation.VERTICAL, true, true,
false);
} else {
chart = ChartFactory.createLineChart(cabQuestao, null, null, dados, PlotOrientation.VERTICAL, true, true,
false);
}
// Setando o valor maximo para nunca passar de 100, ja q se trata de
// porcentagem
final CategoryPlot plot = chart.getCategoryPlot();
final NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
rangeAxis.setUpperMargin(0.09);
// Formatando cores de fundo, fonte do titulo, etc...
chart.setBackgroundPaint(COR_FUNDO); // Cor do fundo do grafico
chart.getTitle().setPaint(COR_TITULO); // Cor do titulo
chart.getTitle().setFont(new java.awt.Font("arial", Font.BOLD, 12)); // Fonte do
// titulo
chart.getPlot().setBackgroundPaint(new Color(204, 255, 204));// Cor de
// fundo da
// plot (area
// do grafico)
chart.setBorderVisible(false); // Visibilidade da borda do grafico
// Marcador de M�dia de Resolubilidade
// IntervalMarker target = new IntervalMarker(y - 0.3, y + 0.3);// A
// principio, a m�dia ser� o TOTAL-MF
/*
* target.setLabel(" Resolubilidade M�dia"); target.setLabelFont(new
* Font("arial", Font.BOLD, 12)); target.setLabelPaint(Color.RED);
* target.setLabelAnchor(RectangleAnchor.CENTER);
* target.setLabelTextAnchor(TextAnchor.BOTTOM_CENTER);
*/
// target.setPaint(Color.RED); // Cor da linha marcadora
// plot.addRangeMarker(target, Layer.FOREGROUND);
final String caminhoRelativo = "";
final String caminho = "";
/*
* try {
* File arquivo = new File(CITCorporeUtil.caminho_real_app + "/tempReceitas");
* if (!arquivo.exists()) {
* arquivo.mkdirs();
* }
* File arquivoVer = new File(CITCorporeUtil.caminho_real_app + "/tempReceitas/" + usuario.getIdUsuario());
* if (!arquivoVer.exists()) {
* arquivoVer.mkdirs();
* }
* String hora = UtilDatas.formatHoraFormatadaStr(UtilDatas.getHoraAtual());
* hora = UtilStrings.apenasNumeros(hora);
* caminho = CITCorporeUtil.caminho_real_app + "/tempReceitas/" + usuario.getIdUsuario() + "/visHistField_" +
* UtilStrings.generateNomeBusca(UtilStrings.removeCaracteresEspeciais(cabQuestao)) + hora + ".png";
* caminhoRelativo = Constantes.getValue("DIRETORIO_TEMPORARIO_RECEITAS_RELATIVO") + "/" + usuario.getIdUsuario() + "/visHistField_"
* + UtilStrings.generateNomeBusca(UtilStrings.removeCaracteresEspeciais(cabQuestao)) + hora + ".png";
* arquivo = new File(caminho);
* if (arquivo.exists()) {
* arquivo.delete();
* }
* ChartUtilities.saveChartAsPNG(arquivo, chart,
* 800,
* 450);
* } catch (Exception e) {
* e.printStackTrace();
* }
*/
document.getElementById("divHistoricoCampoVisualizacao").setInnerHTML("<img src=\"" + caminhoRelativo + "\"/>");
}
private boolean isInCollection(Integer idValor, Collection colVerificar) {
if (colVerificar == null) {
return false;
}
for (final Iterator it = colVerificar.iterator(); it.hasNext();) {
final RespostaItemQuestionarioOpcoesDTO respItemQuestDto = (RespostaItemQuestionarioOpcoesDTO) it.next();
if (respItemQuestDto.getIdOpcaoRespostaQuestionario().intValue() == idValor.intValue()) {
return true;
}
}
return false;
}
}