package br.com.centralit.citcorpore.ajaxForms;
import java.awt.Color;
import java.awt.Font;
import java.io.File;
import java.sql.Date;
import java.sql.Timestamp;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collection;
import java.util.Iterator;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang.StringEscapeUtils;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PiePlot;
import org.jfree.data.general.DefaultPieDataset;
import br.com.centralit.citajax.html.AjaxFormAction;
import br.com.centralit.citajax.html.DocumentHTML;
import br.com.centralit.citajax.html.HTMLSelect;
import br.com.centralit.citcorpore.bean.AcordoNivelServicoDTO;
import br.com.centralit.citcorpore.bean.CalendarioDTO;
import br.com.centralit.citcorpore.bean.CentreonLogDTO;
import br.com.centralit.citcorpore.bean.ExecucaoAtividadePeriodicaDTO;
import br.com.centralit.citcorpore.bean.GrupoRecursosDTO;
import br.com.centralit.citcorpore.bean.JornadaTrabalhoDTO;
import br.com.centralit.citcorpore.bean.NagiosConexaoDTO;
import br.com.centralit.citcorpore.bean.NagiosNDOStateHistoryDTO;
import br.com.centralit.citcorpore.bean.ProgramacaoAtividadeDTO;
import br.com.centralit.citcorpore.bean.RecursoAvaliacaoDTO;
import br.com.centralit.citcorpore.bean.RecursoDTO;
import br.com.centralit.citcorpore.bean.RequisicaoMudancaItemConfiguracaoDTO;
import br.com.centralit.citcorpore.bean.UsuarioDTO;
import br.com.centralit.citcorpore.negocio.CalendarioService;
import br.com.centralit.citcorpore.negocio.CentreonLogService;
import br.com.centralit.citcorpore.negocio.ExecucaoAtividadePeriodicaService;
import br.com.centralit.citcorpore.negocio.GrupoRecursosService;
import br.com.centralit.citcorpore.negocio.JornadaTrabalhoService;
import br.com.centralit.citcorpore.negocio.NagiosConexaoService;
import br.com.centralit.citcorpore.negocio.NagiosNDOStateHistoryService;
import br.com.centralit.citcorpore.negocio.ProgramacaoAtividadeService;
import br.com.centralit.citcorpore.negocio.RecursoService;
import br.com.centralit.citcorpore.negocio.RequisicaoMudancaItemConfiguracaoService;
import br.com.centralit.citcorpore.util.CITCorporeUtil;
import br.com.centralit.citcorpore.util.Enumerados.TipoDate;
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.UtilFormatacao;
import br.com.citframework.util.UtilI18N;
import br.com.citframework.util.UtilStrings;
@SuppressWarnings({"rawtypes","unchecked"})
public class RecursoAvaliacao extends AjaxFormAction {
public void load(DocumentHTML document, HttpServletRequest request,
HttpServletResponse response) throws Exception {
GrupoRecursosService grupoRecursosService = (GrupoRecursosService) ServiceLocator.getInstance().getService(GrupoRecursosService.class, null);
Collection colGrupos = grupoRecursosService.list();
HTMLSelect idGrupoRecurso = document.getSelectById("idGrupoRecurso");
idGrupoRecurso.removeAllOptions();
idGrupoRecurso.addOption("", UtilI18N.internacionaliza(request, "citcorpore.comum.todos") );
if (colGrupos != null) {
for (Iterator it = colGrupos.iterator(); it.hasNext();) {
GrupoRecursosDTO grupoRecursosDTO = (GrupoRecursosDTO) it.next();
if (grupoRecursosDTO.getDeleted() == null
|| grupoRecursosDTO.getDeleted().equalsIgnoreCase("n")) {
idGrupoRecurso.addOption("" + grupoRecursosDTO.getIdGrupoRecurso(),StringEscapeUtils.escapeJavaScript(grupoRecursosDTO.getNomeGrupoRecurso()));
}
}
}
}
public void geraInformacoes(DocumentHTML document, HttpServletRequest request,
HttpServletResponse response) throws Exception {
UsuarioDTO usuarioDto = WebUtil.getUsuario(request);
if (usuarioDto == null){
document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.sessaoExpirada"));
document.executeScript("window.location = '" + Constantes.getValue("SERVER_ADDRESS") + request.getContextPath() + "'");
return;
}
RecursoAvaliacaoDTO recursoAvaliacaoDTO = (RecursoAvaliacaoDTO)document.getBean();
if (recursoAvaliacaoDTO.getDataInicio() == null){
document.alert("Informe a data inicial!");
return;
}
if (recursoAvaliacaoDTO.getDataFim() == null){
document.alert("Informe a data final!");
return;
}
RecursoService recursoService = (RecursoService) ServiceLocator.getInstance().getService(RecursoService.class, null);
Collection colRecursos = null;
if (recursoAvaliacaoDTO.getIdGrupoRecurso() != null){
colRecursos = recursoService.findByIdGrupoRecurso(recursoAvaliacaoDTO.getIdGrupoRecurso());
}else{
colRecursos = recursoService.list();
}
String table = "<table border='1'>";
if (colRecursos != null && colRecursos.size() > 0){
table += "<tr>";
table += "<td colspan='4'>";
table += "<b>" + UtilI18N.internacionaliza(request, "recurso.avaliacao") + "</b>";
table += "</td>";
table += "</tr>";
for (Iterator it = colRecursos.iterator(); it.hasNext();){
RecursoDTO recursoDTO = (RecursoDTO)it.next();
if (UtilStrings.nullToVazio(recursoDTO.getTipoAtualizacao()).equalsIgnoreCase(RecursoDTO.NAGIOS_CENTREON)){
table += geraAvaliacaoNagiosCentreon(document, request, response, recursoDTO, recursoAvaliacaoDTO.getDataInicio(), recursoAvaliacaoDTO.getDataFim(), usuarioDto, null);
}else if (UtilStrings.nullToVazio(recursoDTO.getTipoAtualizacao()).equalsIgnoreCase(RecursoDTO.NAGIOS_NATIVE)){
table += geraAvaliacaoNagiosNDOUtils(document, request, response, recursoDTO, recursoAvaliacaoDTO.getDataInicio(), recursoAvaliacaoDTO.getDataFim(), usuarioDto, null);
}
}
}else{
document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.resultado"));
}
table += "</table>";
document.getElementById("divInfo").setInnerHTML(table);
}
public String geraAvaliacaoNagiosNDOUtils(DocumentHTML document, HttpServletRequest request,
HttpServletResponse response, RecursoDTO recursoDTO, Date dataInicio, Date dataFim, UsuarioDTO usuarioDto, AcordoNivelServicoDTO acordoNivelServicoDTO) throws ServiceException, Exception{
NagiosConexaoService nagiosConexaoService = (NagiosConexaoService) ServiceLocator.getInstance().getService(NagiosConexaoService.class, null);
CalendarioService calendarioService = (CalendarioService) ServiceLocator.getInstance().getService(CalendarioService.class, null);
NagiosNDOStateHistoryService nagiosNDOStateHistoryService = (NagiosNDOStateHistoryService) ServiceLocator.getInstance().getService(NagiosNDOStateHistoryService.class, null);
RequisicaoMudancaItemConfiguracaoService requisicaoMudancaItemConfiguracaoService = (RequisicaoMudancaItemConfiguracaoService)ServiceLocator.getInstance().getService(RequisicaoMudancaItemConfiguracaoService.class, null);
ExecucaoAtividadePeriodicaService execucaoAtividadePeriodicaService = (ExecucaoAtividadePeriodicaService)ServiceLocator.getInstance().getService(ExecucaoAtividadePeriodicaService.class, null);
ProgramacaoAtividadeService programacaoAtividadeService = (ProgramacaoAtividadeService)ServiceLocator.getInstance().getService(ProgramacaoAtividadeService.class, null);
NagiosConexaoDTO nagiosConexaoDTO = new NagiosConexaoDTO();
if (recursoDTO.getIdNagiosConexao() == null){
document.alert("N�o h� configura��o de conex�o ao Nagios para o recursos: " + recursoDTO.getNomeRecurso());
}
nagiosConexaoDTO.setIdNagiosConexao(recursoDTO.getIdNagiosConexao());
if (recursoDTO.getIdNagiosConexao() != null){
nagiosConexaoDTO = (NagiosConexaoDTO) nagiosConexaoService.restore(nagiosConexaoDTO);
}
if (nagiosConexaoDTO == null){
document.alert("N�o h� configura��o correta de conex�o ao Nagios para o recursos: " + recursoDTO.getNomeRecurso());
}
Collection colMudancasIC = null;
Collection colBlackoutsTotais = new ArrayList();
if (recursoDTO.getIdItemConfiguracao() != null){
colMudancasIC = requisicaoMudancaItemConfiguracaoService.findByIdItemConfiguracao(recursoDTO.getIdItemConfiguracao());
if (colMudancasIC != null){
for (Iterator it = colMudancasIC.iterator(); it.hasNext();){
RequisicaoMudancaItemConfiguracaoDTO requisicaoMudancaItemConfiguracaoDTO = (RequisicaoMudancaItemConfiguracaoDTO)it.next();
Collection colBlackoutMud = execucaoAtividadePeriodicaService.findBlackoutByIdMudancaAndPeriodo(requisicaoMudancaItemConfiguracaoDTO.getIdRequisicaoMudanca(), dataInicio, dataFim);
if (colBlackoutMud != null){
colBlackoutsTotais.addAll(colBlackoutMud);
}
}
}
}
double qtdeHorasTotais = 0;
if (recursoDTO.getIdCalendario() != null){
CalendarioDTO calendarioDTO = new CalendarioDTO();
calendarioDTO.setIdCalendario(recursoDTO.getIdCalendario());
calendarioDTO = (CalendarioDTO) calendarioService.restore(calendarioDTO);
Date d = dataInicio;
while(d.compareTo(dataFim) <= 0){
System.out.println("Verificando---> " + UtilDatas.convertDateToString(TipoDate.DATE_DEFAULT, d, WebUtil.getLanguage(request)));
String diaSemana = UtilDatas.getDiaSemana(new java.util.Date(d.getTime()));
if (diaSemana.equalsIgnoreCase("dom")){
qtdeHorasTotais = qtdeHorasTotais + getQuantidadeHoras(calendarioDTO.getIdJornadaDom());
}
if (diaSemana.equalsIgnoreCase("seg")){
qtdeHorasTotais = qtdeHorasTotais + getQuantidadeHoras(calendarioDTO.getIdJornadaSeg());
}
if (diaSemana.equalsIgnoreCase("ter")){
qtdeHorasTotais = qtdeHorasTotais + getQuantidadeHoras(calendarioDTO.getIdJornadaTer());
}
if (diaSemana.equalsIgnoreCase("qua")){
qtdeHorasTotais = qtdeHorasTotais + getQuantidadeHoras(calendarioDTO.getIdJornadaQua());
}
if (diaSemana.equalsIgnoreCase("qui")){
qtdeHorasTotais = qtdeHorasTotais + getQuantidadeHoras(calendarioDTO.getIdJornadaQui());
}
if (diaSemana.equalsIgnoreCase("sex")){
qtdeHorasTotais = qtdeHorasTotais + getQuantidadeHoras(calendarioDTO.getIdJornadaSex());
}
if (diaSemana.equalsIgnoreCase("sab")){
qtdeHorasTotais = qtdeHorasTotais + getQuantidadeHoras(calendarioDTO.getIdJornadaSab());
}
d = new Date(UtilDatas.alteraData(d, 1, Calendar.DAY_OF_MONTH).getTime());
}
}
System.out.println(recursoDTO.getNomeRecurso() + " --> Quantidade Total de Horas ---> " + qtdeHorasTotais);
String table = "";
table += "<tr>";
table += "<td colspan='4'>";
table += " ";
table += "</td>";
table += "</tr>";
table += "<tr>";
table += "<td colspan='4' style='background-color: lightgrey; font-size:14px;'>";
table += "Recurso: <b>" + recursoDTO.getNomeRecurso() + "</b>";
table += "</td>";
table += "</tr>";
Timestamp tsFinal = null;
Timestamp tsInicio = null;
if (recursoDTO.getHoraFimFunc() != null && !recursoDTO.getHoraFimFunc().trim().equalsIgnoreCase("")){
tsFinal = UtilDatas.strToTimestamp("00/00/0000 " + recursoDTO.getHoraFimFunc() + ":00");
}
if (recursoDTO.getHoraInicioFunc() != null && !recursoDTO.getHoraInicioFunc().trim().equalsIgnoreCase("")){
tsInicio = UtilDatas.strToTimestamp("00/00/0000 " + recursoDTO.getHoraInicioFunc() + ":00");
}
long timeAtividadeMill = 0;
if (tsFinal != null && tsInicio != null){
timeAtividadeMill = tsFinal.getTime() - tsInicio.getTime();
String tempoFmt = converte(timeAtividadeMill);
table += "<tr>";
table += "<td colspan='4'>";
table += "<b>Tempo de Maior Atividade: " + recursoDTO.getHoraInicioFunc() + " a " + recursoDTO.getHoraFimFunc() + " (" + tempoFmt + "/dia)</b>";
table += "</td>";
table += "</tr>";
}
table += "<tr>";
table += "<td colspan='4'>";
table += "<b>Volume de Horas do Per�odo: " + UtilFormatacao.formatDouble(qtdeHorasTotais,2) + "</b>";
table += "</td>";
table += "</tr>";
Collection colLogs = null;
if (nagiosConexaoDTO != null && nagiosConexaoDTO.getNomeJNDI() != null && !nagiosConexaoDTO.getNomeJNDI().trim().equalsIgnoreCase("")){
nagiosNDOStateHistoryService.setJndiName(nagiosConexaoDTO.getNomeJNDI());
if (recursoDTO.getServiceName() == null || recursoDTO.getServiceName().trim().equalsIgnoreCase("")){
colLogs = nagiosNDOStateHistoryService.findByHostServiceStatusAndServiceNull(nagiosConexaoDTO.getNomeJNDI(), recursoDTO.getHostName(), null, dataInicio, dataFim);
}else{
colLogs = nagiosNDOStateHistoryService.findByHostServiceStatus(nagiosConexaoDTO.getNomeJNDI(), recursoDTO.getHostName(), recursoDTO.getServiceName(), null, dataInicio, dataFim);
}
}
table += "<tr>";
table += "<td colspan='4'>";
table += "<b>Quedas</b>";
table += "</td>";
table += "</tr>";
table += "<tr>";
table += "<td style='border:1px solid black'>";
table += "<b>Alerta</b>";
table += "</td>";
table += "<td style='border:1px solid black'>";
table += "<b>Tempo de parada</b>";
table += "</td>";
table += "<td style='border:1px solid black'>";
table += "<b>Inicio</b>";
table += "</td>";
table += "<td style='border:1px solid black'>";
table += "<b>Fim</b>";
table += "</td>";
table += "</tr>";
java.sql.Timestamp horaQueda = null;
boolean quedas = false;
long tempoTotalQueda = 0;
if (colLogs != null && colLogs.size() > 0){
for (Iterator itLog = colLogs.iterator(); itLog.hasNext();){
NagiosNDOStateHistoryDTO log = (NagiosNDOStateHistoryDTO) itLog.next();
if ("DOWN".equalsIgnoreCase(log.getStatus().trim())){
if (horaQueda == null){
horaQueda = new java.sql.Timestamp(log.getState_time().getTime());
quedas = true;
}
}
if ("UP".equalsIgnoreCase(log.getStatus().trim())){
java.sql.Timestamp horaRetorno = new java.sql.Timestamp(log.getState_time().getTime());
if (horaQueda != null){
long tempoDeQueda = UtilDatas.calculaDiferencaTempoEmMilisegundos(horaRetorno, horaQueda);
String tempoPronto = converte(tempoDeQueda);
table += "<tr>";
table += "<td style='border:1px solid black'>";
table += " ";
table += "</td>";
table += "<td style='border:1px solid black'>";
table += "" + tempoPronto + "";
table += "</td>";
table += "<td style='border:1px solid black'>";
table += "" + UtilDatas.convertDateToString(TipoDate.DATE_DEFAULT, horaQueda, WebUtil.getLanguage(request)) + " " + UtilDatas.formatHoraFormatadaHHMMSSStr(horaQueda) + "";
table += "</td>";
table += "<td style='border:1px solid black'>";
table += "" + UtilDatas.convertDateToString(TipoDate.DATE_DEFAULT, horaRetorno, WebUtil.getLanguage(request)) + " " + UtilDatas.formatHoraFormatadaHHMMSSStr(horaRetorno) + "";
table += "</td>";
table += "</tr>";
horaQueda = null;
tempoTotalQueda = tempoTotalQueda + tempoDeQueda;
}
}
}
}
if (horaQueda != null){
java.sql.Timestamp horaRetorno = UtilDatas.getDataHoraAtual();
if (horaQueda != null){
long tempoTotalDeQueda = UtilDatas.calculaDiferencaTempoEmMilisegundos(horaRetorno, horaQueda);
String tempoPronto = converte(tempoTotalDeQueda);
table += "<tr>";
table += "<td style='border:1px solid black'>";
table += "<img src='" + br.com.citframework.util.Constantes.getValue("SERVER_ADDRESS") +
br.com.citframework.util.Constantes.getValue("CONTEXTO_APLICACAO") + "/imagens/b.gif' border='0'/>";
table += "</td>";
table += "<td style='border:1px solid black'>";
table += "" + tempoPronto + "";
table += "</td>";
table += "<td style='border:1px solid black'>";
table += "" + UtilDatas.convertDateToString(TipoDate.DATE_DEFAULT, horaQueda, WebUtil.getLanguage(request)) + " " + UtilDatas.formatHoraFormatadaHHMMSSStr(horaQueda) + "";
table += "</td>";
table += "<td style='border:1px solid black'>";
table += "" + UtilDatas.convertDateToString(TipoDate.DATE_DEFAULT, horaRetorno, WebUtil.getLanguage(request)) + " " + UtilDatas.formatHoraFormatadaHHMMSSStr(horaRetorno) + "";
table += "</td>";
table += "</tr>";
horaQueda = null;
}
}
long totalHorasBlackoutMudancas = 0;
long totalHorasBlackoutMudancasMilli = 0;
if (colBlackoutsTotais.size() > 0){
table += "<tr>";
table += "<td colspan='4' style='border:1px solid black'>";
table += "<b>Mudan�as planejadas (blackouts)</b>";
table += "</td>";
table += "</tr>";
table += "<tr>";
table += "<td colspan='4' style='border:1px solid black'>";
for (Iterator it = colBlackoutsTotais.iterator(); it.hasNext();){
ExecucaoAtividadePeriodicaDTO execucaoAtividadePeriodicaDTO = (ExecucaoAtividadePeriodicaDTO)it.next();
ProgramacaoAtividadeDTO programacaoAtividadeDTO = new ProgramacaoAtividadeDTO();
programacaoAtividadeDTO.setIdProgramacaoAtividade(execucaoAtividadePeriodicaDTO.getIdProgramacaoAtividade());
programacaoAtividadeDTO = (ProgramacaoAtividadeDTO) programacaoAtividadeService.restore(programacaoAtividadeDTO);
if (programacaoAtividadeDTO != null){
table += UtilDatas.convertDateToString(TipoDate.DATE_DEFAULT, execucaoAtividadePeriodicaDTO.getDataExecucao(), WebUtil.getLanguage(request)) + " - " + execucaoAtividadePeriodicaDTO.getHoraExecucao() + " - Tempo: " + programacaoAtividadeDTO.getDuracaoEstimada() + " min.<br>";
if (programacaoAtividadeDTO.getDuracaoEstimada() != null){
totalHorasBlackoutMudancas = totalHorasBlackoutMudancas + programacaoAtividadeDTO.getDuracaoEstimada().intValue();
}
}
}
table += "<br><br>";
table += "</td>";
table += "</tr>";
}
double tempoDisponibilidade = 0;
boolean comparaComANS = false;
if (!quedas){
table += "<tr>";
table += "<td colspan='4' style='border:1px solid black'>";
table += "<b>N�o h� informa��o de queda.</b>";
table += "</td>";
table += "</tr>";
}else{
table += "<tr>";
table += "<td style='border:1px solid black'>";
table += "<b>Tempo Total de Parada:</b>";
table += "</td>";
String tempoPronto = converte(tempoTotalQueda);
table += "<td colspan='3' style='border:1px solid black'>";
table += tempoPronto;
table += "</td>";
table += "</tr>";
table += "<tr>";
table += "<td style='border:1px solid black'>";
table += "<b>Tempo Total de Blackout (por mudan�as):</b>";
table += "</td>";
table += "<td colspan='3' style='border:1px solid black'>";
totalHorasBlackoutMudancasMilli = totalHorasBlackoutMudancas * 60 * 1000;
String tempoProntoAux = converte(totalHorasBlackoutMudancasMilli);
table += tempoProntoAux;
//table += UtilFormatacao.formatDouble(totalHorasBlackoutMudancas,2) + " min";
table += "</td>";
table += "</tr>";
table += "<tr>";
table += "<td style='border:1px solid black'>";
table += "<b>Tempo Total de Parada Ajustado:</b>";
table += "</td>";
String tempoProntoAjustado = converte(tempoTotalQueda - totalHorasBlackoutMudancasMilli);
table += "<td colspan='3' style='border:1px solid black'>";
table += tempoProntoAjustado;
table += "</td>";
table += "<tr>";
table += "<td style='border:1px solid black'>";
table += "<b>Tempo de Disponibilidade:</b>";
table += "</td>";
String timeStr = converte(tempoTotalQueda - totalHorasBlackoutMudancasMilli);
double h = 0;
try{
String[] hh = timeStr.split(":");
//h = Integer.parseInt(timeStr.substring(0, 2));
h = Integer.parseInt(hh[0]);
}catch(Exception e){
System.out.println("Problema de conversao de hora (hh): " + timeStr);
}
double m = 0;
try{
String[] hh = timeStr.split(":");
//m = Integer.parseInt(timeStr.substring(3, 5));
m = Integer.parseInt(hh[1]);
}catch(Exception e){
System.out.println("Problema de conversao de hora (mm): " + timeStr);
}
double convert = h + (m / 60);
tempoDisponibilidade = (100 - (convert / qtdeHorasTotais) * 100);
tempoPronto = UtilFormatacao.formatDouble(tempoDisponibilidade,2) + "%";
table += "<td colspan='3' style='border:1px solid black'>";
table += tempoPronto;
table += "</td>";
table += "</tr>";
if (acordoNivelServicoDTO != null){
if (acordoNivelServicoDTO.getDisponibilidade() != null){
table += "<tr>";
table += "<td style='border:1px solid black'>";
table += "<b>Acordo de N�vel de Servi�o:</b>";
table += "</td>";
table += "<td colspan='3' style='border:1px solid black'>";
table += UtilFormatacao.formatDouble(acordoNivelServicoDTO.getDisponibilidade(),2) + "%";;
table += "</td>";
table += "</tr>";
comparaComANS = true;
}
}
}
/*
if (colLogs != null && colLogs.size() > 0){
for (Iterator itLog = colLogs.iterator(); itLog.hasNext();){
CentreonLogDTO log = (CentreonLogDTO) itLog.next();
java.util.Date data = transformCTime(log.getCtime());
table += "<tr>";
table += "<td style='border:1px solid black'>";
table += "" + log.getCtime() + "";
table += "</td>";
table += "<td style='border:1px solid black'>";
table += "" + UtilDatas.dateToSTR(data) + "";
table += "</td>";
table += "<td style='border:1px solid black'>";
table += "" + UtilDatas.formatHoraFormatadaHHMMSSStr(data) + "";
table += "</td>";
table += "<td style='border:1px solid black'>";
table += "" + log.getHost_name() + "";
table += "</td>";
table += "<td style='border:1px solid black'>";
table += "" + log.getService_description() + "";
table += "</td>";
table += "<td style='border:1px solid black'>";
table += "" + log.getOutput() + "";
table += "</td>";
table += "<td style='border:1px solid black'>";
table += "" + log.getStatus() + "";
table += "</td>";
table += "</tr>";
}
}
*/
if (tempoDisponibilidade > 0){
double tempoIndisp = (100 - tempoDisponibilidade);
DefaultPieDataset datasetPie = new DefaultPieDataset();
datasetPie.setValue(UtilI18N.internacionaliza(request, "recurso.disponivel") + " (" + UtilFormatacao.formatDouble(tempoDisponibilidade,2) + "%)", new Double(tempoDisponibilidade));
datasetPie.setValue(UtilI18N.internacionaliza(request, "recurso.indisponivel") + " (" + UtilFormatacao.formatDouble(tempoIndisp,2) + "%)", new Double(tempoIndisp));
JFreeChart chartX = ChartFactory.createPieChart(
UtilI18N.internacionaliza(request, "recurso.disponibilidade"), // chart title
datasetPie, // data
true, // include legend
false,
false
);
PiePlot plotPie = (PiePlot) chartX.getPlot();
plotPie.setLabelFont(new Font("SansSerif", Font.PLAIN, 9));
plotPie.setNoDataMessage(UtilI18N.internacionaliza(request,"sla.avaliacao.naohadados"));
plotPie.setCircular(false);
plotPie.setLabelGap(0.02);
plotPie.setSectionPaint(UtilI18N.internacionaliza(request, "recurso.disponivel") + " (" + UtilFormatacao.formatDouble(tempoDisponibilidade,2) + "%)", Color.green);
plotPie.setSectionPaint(UtilI18N.internacionaliza(request, "recurso.indisponivel") + " (" + UtilFormatacao.formatDouble(tempoIndisp,2) + "%)", Color.red);
File fileDir = new File(CITCorporeUtil.CAMINHO_REAL_APP + "/tempFiles/" + usuarioDto.getIdUsuario());
if (!fileDir.exists()){
fileDir.mkdirs();
}
String nomeImgAval2 = CITCorporeUtil.CAMINHO_REAL_APP + "/tempFiles/" + usuarioDto.getIdUsuario() + "/avalDispRecs_" + recursoDTO.getIdRecurso() + ".png";
String nomeImgAvalRel2 = br.com.citframework.util.Constantes.getValue("SERVER_ADDRESS") + br.com.citframework.util.Constantes.getValue("CONTEXTO_APLICACAO") + "/tempFiles/" + usuarioDto.getIdUsuario() + "/avalDispRecs_" + recursoDTO.getIdRecurso() + ".png";
File arquivo2 = new File(nomeImgAval2);
if (arquivo2.exists()) {
arquivo2.delete();
}
ChartUtilities.saveChartAsPNG(arquivo2, chartX, 400, 300);
String qtdeStr = "4";
if (comparaComANS){
qtdeStr = "2";
}
table += "<tr>";
table += "<td colspan='" + qtdeStr + "' style='border:1px solid black'>";
table += "<img src='" + nomeImgAvalRel2 + "' border='0'/>";
table += "</td>";
if (comparaComANS){
table += "<td colspan='" + qtdeStr + "' style='border:1px solid black; vertical-align:middle'>";
table += "<table width='100%'>";
table += "<tr>";
table += "<td style='font-size:14px; border:1px solid black'>";
table += "% Disponibilidade:";
table += "</td>";
if (tempoDisponibilidade >= acordoNivelServicoDTO.getDisponibilidade()){
table += "<td style='font-size:14px; border:1px solid black; color:blue'>";
}else{
table += "<td style='font-size:14px; border:1px solid black; color:red'>";
}
table += "<b>" + UtilFormatacao.formatDouble(tempoDisponibilidade,2) + "%</b>";
table += "</td>";
table += "<td style='font-size:14px; border:1px solid black'>";
if (tempoDisponibilidade >= acordoNivelServicoDTO.getDisponibilidade()){
table += "<img src='" + br.com.citframework.util.Constantes.getValue("SERVER_ADDRESS") + br.com.citframework.util.Constantes.getValue("CONTEXTO_APLICACAO") + "/imagens/tickg.png' border='0'/>";
}else{
table += "<img src='" + br.com.citframework.util.Constantes.getValue("SERVER_ADDRESS") + br.com.citframework.util.Constantes.getValue("CONTEXTO_APLICACAO") + "/imagens/exclamation02.gif' border='0'/>";
}
table += "</td>";
table += "</tr>";
table += "<tr>";
table += "<td style='font-size:14px; border:1px solid black'>";
table += "Acordo:";
table += "</td>";
table += "<td style='font-size:14px; border:1px solid black'>";
table += UtilFormatacao.formatDouble(acordoNivelServicoDTO.getDisponibilidade(),2) + "%";
table += "</td>";
table += "</tr>";
table += "</table>";
table += "</td>";
}
table += "</tr>";
}
return table;
}
public String geraAvaliacaoNagiosCentreon(DocumentHTML document, HttpServletRequest request,
HttpServletResponse response, RecursoDTO recursoDTO, Date dataInicio, Date dataFim, UsuarioDTO usuarioDto, AcordoNivelServicoDTO acordoNivelServicoDTO) throws ServiceException, Exception{
NagiosConexaoService nagiosConexaoService = (NagiosConexaoService) ServiceLocator.getInstance().getService(NagiosConexaoService.class, null);
CalendarioService calendarioService = (CalendarioService) ServiceLocator.getInstance().getService(CalendarioService.class, null);
CentreonLogService centreonLogService = (CentreonLogService) ServiceLocator.getInstance().getService(CentreonLogService.class, null);
RequisicaoMudancaItemConfiguracaoService requisicaoMudancaItemConfiguracaoService = (RequisicaoMudancaItemConfiguracaoService)ServiceLocator.getInstance().getService(RequisicaoMudancaItemConfiguracaoService.class, null);
ExecucaoAtividadePeriodicaService execucaoAtividadePeriodicaService = (ExecucaoAtividadePeriodicaService)ServiceLocator.getInstance().getService(ExecucaoAtividadePeriodicaService.class, null);
ProgramacaoAtividadeService programacaoAtividadeService = (ProgramacaoAtividadeService)ServiceLocator.getInstance().getService(ProgramacaoAtividadeService.class, null);
NagiosConexaoDTO nagiosConexaoDTO = new NagiosConexaoDTO();
if (recursoDTO.getIdNagiosConexao() == null){
document.alert("N�o h� configura��o de conex�o ao Nagios para o recursos: " + recursoDTO.getNomeRecurso());
}
nagiosConexaoDTO.setIdNagiosConexao(recursoDTO.getIdNagiosConexao());
if (recursoDTO.getIdNagiosConexao() != null){
nagiosConexaoDTO = (NagiosConexaoDTO) nagiosConexaoService.restore(nagiosConexaoDTO);
}
if (nagiosConexaoDTO == null){
document.alert("N�o h� configura��o correta de conex�o ao Nagios para o recursos: " + recursoDTO.getNomeRecurso());
}
Collection colMudancasIC = null;
Collection colBlackoutsTotais = new ArrayList();
if (recursoDTO.getIdItemConfiguracao() != null){
colMudancasIC = requisicaoMudancaItemConfiguracaoService.findByIdItemConfiguracao(recursoDTO.getIdItemConfiguracao());
if (colMudancasIC != null){
for (Iterator it = colMudancasIC.iterator(); it.hasNext();){
RequisicaoMudancaItemConfiguracaoDTO requisicaoMudancaItemConfiguracaoDTO = (RequisicaoMudancaItemConfiguracaoDTO)it.next();
Collection colBlackoutMud = execucaoAtividadePeriodicaService.findBlackoutByIdMudancaAndPeriodo(requisicaoMudancaItemConfiguracaoDTO.getIdRequisicaoMudanca(), dataInicio, dataFim);
if (colBlackoutMud != null){
colBlackoutsTotais.addAll(colBlackoutMud);
}
}
}
}
double qtdeHorasTotais = 0;
if (recursoDTO.getIdCalendario() != null){
CalendarioDTO calendarioDTO = new CalendarioDTO();
calendarioDTO.setIdCalendario(recursoDTO.getIdCalendario());
calendarioDTO = (CalendarioDTO) calendarioService.restore(calendarioDTO);
Date d = dataInicio;
while(d.compareTo(dataFim) <= 0){
System.out.println("Verificando---> " + UtilDatas.convertDateToString(TipoDate.DATE_DEFAULT, d, WebUtil.getLanguage(request)));
String diaSemana = UtilDatas.getDiaSemana(new java.util.Date(d.getTime()));
if (diaSemana.equalsIgnoreCase("dom")){
qtdeHorasTotais = qtdeHorasTotais + getQuantidadeHoras(calendarioDTO.getIdJornadaDom());
}
if (diaSemana.equalsIgnoreCase("seg")){
qtdeHorasTotais = qtdeHorasTotais + getQuantidadeHoras(calendarioDTO.getIdJornadaSeg());
}
if (diaSemana.equalsIgnoreCase("ter")){
qtdeHorasTotais = qtdeHorasTotais + getQuantidadeHoras(calendarioDTO.getIdJornadaTer());
}
if (diaSemana.equalsIgnoreCase("qua")){
qtdeHorasTotais = qtdeHorasTotais + getQuantidadeHoras(calendarioDTO.getIdJornadaQua());
}
if (diaSemana.equalsIgnoreCase("qui")){
qtdeHorasTotais = qtdeHorasTotais + getQuantidadeHoras(calendarioDTO.getIdJornadaQui());
}
if (diaSemana.equalsIgnoreCase("sex")){
qtdeHorasTotais = qtdeHorasTotais + getQuantidadeHoras(calendarioDTO.getIdJornadaSex());
}
if (diaSemana.equalsIgnoreCase("sab")){
qtdeHorasTotais = qtdeHorasTotais + getQuantidadeHoras(calendarioDTO.getIdJornadaSab());
}
d = new Date(UtilDatas.alteraData(d, 1, Calendar.DAY_OF_MONTH).getTime());
}
}
System.out.println(recursoDTO.getNomeRecurso() + " --> Quantidade Total de Horas ---> " + qtdeHorasTotais);
String table = "";
table += "<tr>";
table += "<td colspan='4'>";
table += " ";
table += "</td>";
table += "</tr>";
table += "<tr>";
table += "<td colspan='4' style='background-color: lightgrey; font-size:14px;'>";
table += "Recurso: <b>" + recursoDTO.getNomeRecurso() + "</b>";
table += "</td>";
table += "</tr>";
Timestamp tsFinal = null;
Timestamp tsInicio = null;
if (recursoDTO.getHoraFimFunc() != null && !recursoDTO.getHoraFimFunc().trim().equalsIgnoreCase("")){
tsFinal = UtilDatas.strToTimestamp("00/00/0000 " + recursoDTO.getHoraFimFunc() + ":00");
}
if (recursoDTO.getHoraInicioFunc() != null && !recursoDTO.getHoraInicioFunc().trim().equalsIgnoreCase("")){
tsInicio = UtilDatas.strToTimestamp("00/00/0000 " + recursoDTO.getHoraInicioFunc() + ":00");
}
long timeAtividadeMill = 0;
if (tsFinal != null && tsInicio != null){
timeAtividadeMill = tsFinal.getTime() - tsInicio.getTime();
String tempoFmt = converte(timeAtividadeMill);
table += "<tr>";
table += "<td colspan='4'>";
table += "<b>Tempo de Maior Atividade: " + recursoDTO.getHoraInicioFunc() + " a " + recursoDTO.getHoraFimFunc() + " (" + tempoFmt + "/dia)</b>";
table += "</td>";
table += "</tr>";
}
table += "<tr>";
table += "<td colspan='4'>";
table += "<b>Volume de Horas do Per�odo: " + UtilFormatacao.formatDouble(qtdeHorasTotais,2) + "</b>";
table += "</td>";
table += "</tr>";
Collection colLogs = null;
if (nagiosConexaoDTO != null && nagiosConexaoDTO.getNomeJNDI() != null && !nagiosConexaoDTO.getNomeJNDI().trim().equalsIgnoreCase("")){
centreonLogService.setJndiName(nagiosConexaoDTO.getNomeJNDI());
if (recursoDTO.getServiceName() == null || recursoDTO.getServiceName().trim().equalsIgnoreCase("")){
colLogs = centreonLogService.findByHostServiceStatusAndServiceNull(nagiosConexaoDTO.getNomeJNDI(), recursoDTO.getHostName(), null, dataInicio, dataFim);
}else{
colLogs = centreonLogService.findByHostServiceStatus(nagiosConexaoDTO.getNomeJNDI(), recursoDTO.getHostName(), recursoDTO.getServiceName(), null, dataInicio, dataFim);
}
}
table += "<tr>";
table += "<td colspan='4'>";
table += "<b>Quedas</b>";
table += "</td>";
table += "</tr>";
table += "<tr>";
table += "<td style='border:1px solid black'>";
table += "<b>Alerta</b>";
table += "</td>";
table += "<td style='border:1px solid black'>";
table += "<b>Tempo de parada</b>";
table += "</td>";
table += "<td style='border:1px solid black'>";
table += "<b>Inicio</b>";
table += "</td>";
table += "<td style='border:1px solid black'>";
table += "<b>Fim</b>";
table += "</td>";
table += "</tr>";
java.sql.Timestamp horaQueda = null;
boolean quedas = false;
long tempoTotalQueda = 0;
if (colLogs != null && colLogs.size() > 0){
for (Iterator itLog = colLogs.iterator(); itLog.hasNext();){
CentreonLogDTO log = (CentreonLogDTO) itLog.next();
if ("DOWN".equalsIgnoreCase(log.getStatus().trim())){
if (horaQueda == null){
horaQueda = new java.sql.Timestamp(transformCTime(log.getCtime()).getTime());
quedas = true;
}
}
if ("UP".equalsIgnoreCase(log.getStatus().trim())){
java.sql.Timestamp horaRetorno = new java.sql.Timestamp(transformCTime(log.getCtime()).getTime());
if (horaQueda != null){
long tempoDeQueda = UtilDatas.calculaDiferencaTempoEmMilisegundos(horaRetorno, horaQueda);
String tempoPronto = converte(tempoDeQueda);
table += "<tr>";
table += "<td style='border:1px solid black'>";
table += " ";
table += "</td>";
table += "<td style='border:1px solid black'>";
table += "" + tempoPronto + "";
table += "</td>";
table += "<td style='border:1px solid black'>";
table += "" + UtilDatas.convertDateToString(TipoDate.DATE_DEFAULT, horaQueda, WebUtil.getLanguage(request)) + " " + UtilDatas.formatHoraFormatadaHHMMSSStr(horaQueda) + "";
table += "</td>";
table += "<td style='border:1px solid black'>";
table += "" + UtilDatas.convertDateToString(TipoDate.DATE_DEFAULT, horaRetorno, WebUtil.getLanguage(request)) + " " + UtilDatas.formatHoraFormatadaHHMMSSStr(horaRetorno) + "";
table += "</td>";
table += "</tr>";
horaQueda = null;
tempoTotalQueda = tempoTotalQueda + tempoDeQueda;
}
}
}
}
if (horaQueda != null){
java.sql.Timestamp horaRetorno = UtilDatas.getDataHoraAtual();
if (horaQueda != null){
long tempoTotalDeQueda = UtilDatas.calculaDiferencaTempoEmMilisegundos(horaRetorno, horaQueda);
String tempoPronto = converte(tempoTotalDeQueda);
table += "<tr>";
table += "<td style='border:1px solid black'>";
table += "<img src='" + br.com.citframework.util.Constantes.getValue("SERVER_ADDRESS") +
br.com.citframework.util.Constantes.getValue("CONTEXTO_APLICACAO") + "/imagens/b.gif' border='0'/>";
table += "</td>";
table += "<td style='border:1px solid black'>";
table += "" + tempoPronto + "";
table += "</td>";
table += "<td style='border:1px solid black'>";
table += "" + UtilDatas.convertDateToString(TipoDate.DATE_DEFAULT, horaQueda, WebUtil.getLanguage(request)) + " " + UtilDatas.formatHoraFormatadaHHMMSSStr(horaQueda) + "";
table += "</td>";
table += "<td style='border:1px solid black'>";
table += "" + UtilDatas.convertDateToString(TipoDate.DATE_DEFAULT, horaRetorno, WebUtil.getLanguage(request)) + " " + UtilDatas.formatHoraFormatadaHHMMSSStr(horaRetorno) + "";
table += "</td>";
table += "</tr>";
horaQueda = null;
}
}
long totalHorasBlackoutMudancas = 0;
long totalHorasBlackoutMudancasMilli = 0;
if (colBlackoutsTotais.size() > 0){
table += "<tr>";
table += "<td colspan='4' style='border:1px solid black'>";
table += "<b>Mudan�as planejadas (blackouts)</b>";
table += "</td>";
table += "</tr>";
table += "<tr>";
table += "<td colspan='4' style='border:1px solid black'>";
for (Iterator it = colBlackoutsTotais.iterator(); it.hasNext();){
ExecucaoAtividadePeriodicaDTO execucaoAtividadePeriodicaDTO = (ExecucaoAtividadePeriodicaDTO)it.next();
ProgramacaoAtividadeDTO programacaoAtividadeDTO = new ProgramacaoAtividadeDTO();
programacaoAtividadeDTO.setIdProgramacaoAtividade(execucaoAtividadePeriodicaDTO.getIdProgramacaoAtividade());
programacaoAtividadeDTO = (ProgramacaoAtividadeDTO) programacaoAtividadeService.restore(programacaoAtividadeDTO);
if (programacaoAtividadeDTO != null){
table += UtilDatas.convertDateToString(TipoDate.DATE_DEFAULT, execucaoAtividadePeriodicaDTO.getDataExecucao(), WebUtil.getLanguage(request)) + " - " + execucaoAtividadePeriodicaDTO.getHoraExecucao() + " - Tempo: " + programacaoAtividadeDTO.getDuracaoEstimada() + " min.<br>";
if (programacaoAtividadeDTO.getDuracaoEstimada() != null){
totalHorasBlackoutMudancas = totalHorasBlackoutMudancas + programacaoAtividadeDTO.getDuracaoEstimada().intValue();
}
}
}
table += "<br><br>";
table += "</td>";
table += "</tr>";
}
double tempoDisponibilidade = 0;
boolean comparaComANS = false;
if (!quedas){
table += "<tr>";
table += "<td colspan='4' style='border:1px solid black'>";
table += "<b>N�o h� informa��o de queda.</b>";
table += "</td>";
table += "</tr>";
}else{
table += "<tr>";
table += "<td style='border:1px solid black'>";
table += "<b>Tempo Total de Parada:</b>";
table += "</td>";
String tempoPronto = converte(tempoTotalQueda);
table += "<td colspan='3' style='border:1px solid black'>";
table += tempoPronto;
table += "</td>";
table += "</tr>";
table += "<tr>";
table += "<td style='border:1px solid black'>";
table += "<b>Tempo Total de Blackout (por mudan�as):</b>";
table += "</td>";
table += "<td colspan='3' style='border:1px solid black'>";
totalHorasBlackoutMudancasMilli = totalHorasBlackoutMudancas * 60 * 1000;
String tempoProntoAux = converte(totalHorasBlackoutMudancasMilli);
table += tempoProntoAux;
//table += UtilFormatacao.formatDouble(totalHorasBlackoutMudancas,2) + " min";
table += "</td>";
table += "</tr>";
table += "<tr>";
table += "<td style='border:1px solid black'>";
table += "<b>Tempo Total de Parada Ajustado:</b>";
table += "</td>";
String tempoProntoAjustado = converte(tempoTotalQueda - totalHorasBlackoutMudancasMilli);
table += "<td colspan='3' style='border:1px solid black'>";
table += tempoProntoAjustado;
table += "</td>";
table += "<tr>";
table += "<td style='border:1px solid black'>";
table += "<b>Tempo de Disponibilidade:</b>";
table += "</td>";
String timeStr = converte(tempoTotalQueda - totalHorasBlackoutMudancasMilli);
double h = 0;
try{
String[] hh = timeStr.split(":");
//h = Integer.parseInt(timeStr.substring(0, 2));
h = Integer.parseInt(hh[0]);
}catch(Exception e){
System.out.println("Problema de conversao de hora (hh): " + timeStr);
}
double m = 0;
try{
String[] hh = timeStr.split(":");
//m = Integer.parseInt(timeStr.substring(3, 5));
m = Integer.parseInt(hh[1]);
}catch(Exception e){
System.out.println("Problema de conversao de hora (mm): " + timeStr);
}
double convert = h + (m / 60);
tempoDisponibilidade = (100 - (convert / qtdeHorasTotais) * 100);
tempoPronto = UtilFormatacao.formatDouble(tempoDisponibilidade,2) + "%";
table += "<td colspan='3' style='border:1px solid black'>";
table += tempoPronto;
table += "</td>";
table += "</tr>";
if (acordoNivelServicoDTO != null){
if (acordoNivelServicoDTO.getDisponibilidade() != null){
table += "<tr>";
table += "<td style='border:1px solid black'>";
table += "<b>Acordo de N�vel de Servi�o:</b>";
table += "</td>";
table += "<td colspan='3' style='border:1px solid black'>";
table += UtilFormatacao.formatDouble(acordoNivelServicoDTO.getDisponibilidade(),2) + "%";;
table += "</td>";
table += "</tr>";
comparaComANS = true;
}
}
}
/*
if (colLogs != null && colLogs.size() > 0){
for (Iterator itLog = colLogs.iterator(); itLog.hasNext();){
CentreonLogDTO log = (CentreonLogDTO) itLog.next();
java.util.Date data = transformCTime(log.getCtime());
table += "<tr>";
table += "<td style='border:1px solid black'>";
table += "" + log.getCtime() + "";
table += "</td>";
table += "<td style='border:1px solid black'>";
table += "" + UtilDatas.dateToSTR(data) + "";
table += "</td>";
table += "<td style='border:1px solid black'>";
table += "" + UtilDatas.formatHoraFormatadaHHMMSSStr(data) + "";
table += "</td>";
table += "<td style='border:1px solid black'>";
table += "" + log.getHost_name() + "";
table += "</td>";
table += "<td style='border:1px solid black'>";
table += "" + log.getService_description() + "";
table += "</td>";
table += "<td style='border:1px solid black'>";
table += "" + log.getOutput() + "";
table += "</td>";
table += "<td style='border:1px solid black'>";
table += "" + log.getStatus() + "";
table += "</td>";
table += "</tr>";
}
}
*/
if (tempoDisponibilidade > 0){
double tempoIndisp = (100 - tempoDisponibilidade);
DefaultPieDataset datasetPie = new DefaultPieDataset();
datasetPie.setValue(UtilI18N.internacionaliza(request, "recurso.disponivel") + " (" + UtilFormatacao.formatDouble(tempoDisponibilidade,2) + "%)", new Double(tempoDisponibilidade));
datasetPie.setValue(UtilI18N.internacionaliza(request, "recurso.indisponivel") + " (" + UtilFormatacao.formatDouble(tempoIndisp,2) + "%)", new Double(tempoIndisp));
JFreeChart chartX = ChartFactory.createPieChart(
UtilI18N.internacionaliza(request, "recurso.disponibilidade"), // chart title
datasetPie, // data
true, // include legend
false,
false
);
PiePlot plotPie = (PiePlot) chartX.getPlot();
plotPie.setLabelFont(new Font("SansSerif", Font.PLAIN, 9));
plotPie.setNoDataMessage(UtilI18N.internacionaliza(request,"sla.avaliacao.naohadados"));
plotPie.setCircular(false);
plotPie.setLabelGap(0.02);
plotPie.setSectionPaint(UtilI18N.internacionaliza(request, "recurso.disponivel") + " (" + UtilFormatacao.formatDouble(tempoDisponibilidade,2) + "%)", Color.green);
plotPie.setSectionPaint(UtilI18N.internacionaliza(request, "recurso.indisponivel") + " (" + UtilFormatacao.formatDouble(tempoIndisp,2) + "%)", Color.red);
File fileDir = new File(CITCorporeUtil.CAMINHO_REAL_APP + "/tempFiles/" + usuarioDto.getIdUsuario());
if (!fileDir.exists()){
fileDir.mkdirs();
}
String nomeImgAval2 = CITCorporeUtil.CAMINHO_REAL_APP + "/tempFiles/" + usuarioDto.getIdUsuario() + "/avalDispRecs_" + recursoDTO.getIdRecurso() + ".png";
String nomeImgAvalRel2 = br.com.citframework.util.Constantes.getValue("SERVER_ADDRESS") + br.com.citframework.util.Constantes.getValue("CONTEXTO_APLICACAO") + "/tempFiles/" + usuarioDto.getIdUsuario() + "/avalDispRecs_" + recursoDTO.getIdRecurso() + ".png";
File arquivo2 = new File(nomeImgAval2);
if (arquivo2.exists()) {
arquivo2.delete();
}
ChartUtilities.saveChartAsPNG(arquivo2, chartX, 400, 300);
String qtdeStr = "4";
if (comparaComANS){
qtdeStr = "2";
}
table += "<tr>";
table += "<td colspan='" + qtdeStr + "' style='border:1px solid black'>";
table += "<img src='" + nomeImgAvalRel2 + "' border='0'/>";
table += "</td>";
if (comparaComANS){
table += "<td colspan='" + qtdeStr + "' style='border:1px solid black; vertical-align:middle'>";
table += "<table width='100%'>";
table += "<tr>";
table += "<td style='font-size:14px; border:1px solid black'>";
table += "% Disponibilidade:";
table += "</td>";
if (tempoDisponibilidade >= acordoNivelServicoDTO.getDisponibilidade()){
table += "<td style='font-size:14px; border:1px solid black; color:blue'>";
}else{
table += "<td style='font-size:14px; border:1px solid black; color:red'>";
}
table += "<b>" + UtilFormatacao.formatDouble(tempoDisponibilidade,2) + "%</b>";
table += "</td>";
table += "<td style='font-size:14px; border:1px solid black'>";
if (tempoDisponibilidade >= acordoNivelServicoDTO.getDisponibilidade()){
table += "<img src='" + br.com.citframework.util.Constantes.getValue("SERVER_ADDRESS") + br.com.citframework.util.Constantes.getValue("CONTEXTO_APLICACAO") + "/imagens/tickg.png' border='0'/>";
}else{
table += "<img src='" + br.com.citframework.util.Constantes.getValue("SERVER_ADDRESS") + br.com.citframework.util.Constantes.getValue("CONTEXTO_APLICACAO") + "/imagens/exclamation02.gif' border='0'/>";
}
table += "</td>";
table += "</tr>";
table += "<tr>";
table += "<td style='font-size:14px; border:1px solid black'>";
table += "Acordo:";
table += "</td>";
table += "<td style='font-size:14px; border:1px solid black'>";
table += UtilFormatacao.formatDouble(acordoNivelServicoDTO.getDisponibilidade(),2) + "%";
table += "</td>";
table += "</tr>";
table += "</table>";
table += "</td>";
}
table += "</tr>";
}
return table;
}
public String converte(long ms) {
int s, m, h;
String tempoPronto = "";
s = (int)ms / 1000;
ms -= s * 1000;
m = s / 60;
s -= m * 60;
h = m / 60;
m -= h * 60;
tempoPronto += (h < 10) ? "0" + h : h;
tempoPronto += (m < 10) ? ":0" + m : ":" + m;
tempoPronto += (s < 10) ? ":0" + s : ":" + s;
tempoPronto += (ms < 10) ? ".00" + ms : (ms < 100) ? ".0" + ms : "." + ms;
return tempoPronto;
}
public java.util.Date transformCTime(Long ctime) throws ParseException{
if (ctime == null){
return null;
}
long l = (ctime.longValue() * 1000);
java.util.Date data = new java.util.Date(l);
return data;
}
public double getQuantidadeHoras(Integer idJornada) throws ServiceException, Exception{
if (idJornada == null){
return 0;
}
JornadaTrabalhoService jornadaTrabalhoService = (JornadaTrabalhoService) ServiceLocator.getInstance().getService(JornadaTrabalhoService.class, null);
JornadaTrabalhoDTO jornadaTrabalhoDto = new JornadaTrabalhoDTO();
jornadaTrabalhoDto.setIdJornada(idJornada);
jornadaTrabalhoDto = (JornadaTrabalhoDTO) jornadaTrabalhoService.restore(jornadaTrabalhoDto);
if (jornadaTrabalhoDto != null){
long qtde1 = 0;
if (jornadaTrabalhoDto.getInicio1() != null && !jornadaTrabalhoDto.getInicio1().trim().equalsIgnoreCase("") &&
jornadaTrabalhoDto.getTermino1() != null && !jornadaTrabalhoDto.getTermino1().trim().equalsIgnoreCase("")){
qtde1 = calcHoras(jornadaTrabalhoDto.getInicio1(), jornadaTrabalhoDto.getTermino1());
}
long qtde2 = 0;
if (jornadaTrabalhoDto.getInicio2() != null && !jornadaTrabalhoDto.getInicio2().trim().equalsIgnoreCase("") &&
jornadaTrabalhoDto.getTermino2() != null && !jornadaTrabalhoDto.getTermino2().trim().equalsIgnoreCase("")){
qtde2 = calcHoras(jornadaTrabalhoDto.getInicio2(), jornadaTrabalhoDto.getTermino2());
}
long qtde3 = 0;
if (jornadaTrabalhoDto.getInicio3() != null && !jornadaTrabalhoDto.getInicio3().trim().equalsIgnoreCase("") &&
jornadaTrabalhoDto.getTermino3() != null && !jornadaTrabalhoDto.getTermino3().trim().equalsIgnoreCase("")){
qtde3 = calcHoras(jornadaTrabalhoDto.getInicio3(), jornadaTrabalhoDto.getTermino3());
}
long qtde4 = 0;
if (jornadaTrabalhoDto.getInicio4() != null && !jornadaTrabalhoDto.getInicio4().trim().equalsIgnoreCase("") &&
jornadaTrabalhoDto.getTermino4() != null && !jornadaTrabalhoDto.getTermino4().trim().equalsIgnoreCase("")){
qtde4 = calcHoras(jornadaTrabalhoDto.getInicio4(), jornadaTrabalhoDto.getTermino4());
}
long qtde5 = 0;
if (jornadaTrabalhoDto.getInicio5() != null && !jornadaTrabalhoDto.getInicio5().trim().equalsIgnoreCase("") &&
jornadaTrabalhoDto.getTermino5() != null && !jornadaTrabalhoDto.getTermino5().trim().equalsIgnoreCase("")){
qtde5 = calcHoras(jornadaTrabalhoDto.getInicio5(), jornadaTrabalhoDto.getTermino5());
}
long qtde = qtde1 + qtde2 + qtde3 + qtde4 + qtde5;
String timeStr = converte(qtde);
double h = Integer.parseInt(timeStr.substring(0, 2));
double m = Integer.parseInt(timeStr.substring(3, 5));
double convert = h + (m / 60);
return convert;
}
return 0;
}
public long calcHoras(String data1, String data2) throws ServiceException, Exception{
Timestamp tsFinal = null;
Timestamp tsInicio = null;
if (data2 != null && !data2.trim().equalsIgnoreCase("")){
tsFinal = UtilDatas.strToTimestamp("00/00/0000 " + data2 + ":00");
}
if (data1 != null && !data1.trim().equalsIgnoreCase("")){
tsInicio = UtilDatas.strToTimestamp("00/00/0000 " + data1 + ":00");
}
long timeAtividadeMill = 0;
if (tsFinal != null && tsInicio != null){
timeAtividadeMill = tsFinal.getTime() - tsInicio.getTime();
return timeAtividadeMill;
}
return 0;
}
@Override
public Class getBeanClass() {
return RecursoAvaliacaoDTO.class;
}
public static void main(String[] args) throws NumberFormatException, ParseException {
RecursoAvaliacao r = new RecursoAvaliacao();
System.out.println("System.currentTimeMillis() (ANTES): ::::::>>>> " + System.currentTimeMillis());
System.out.println("Hora Atual: ::::::>>>> " + UtilDatas.formatHoraFormatadaHHMMSSStr(new java.util.Date(System.currentTimeMillis())));
String str = "" + (System.currentTimeMillis() / 1000);
Long aux = new Long(str);
System.out.println("Tempo: ::::::>>>> " + str + " -> " + aux);
Long l = aux * 1000;
System.out.println("System.currentTimeMillis() (DEPOIS): ::::::>>>> " + l);
System.out.println("Tempo: 2222 ::::::>>>> " + str + " -> " + UtilDatas.formatHoraFormatadaHHMMSSStr(new java.util.Date(l.longValue())));
System.out.println("Tempo: XXXXXXXXXXX>>>> " + str + " -> " + UtilDatas.dateToSTR(r.transformCTime(aux)) + " " + UtilDatas.formatHoraFormatadaHHMMSSStr(r.transformCTime(aux)));
}
}