Java tutorial
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package com.automaster.autoview.client.ui.paineis.tabs.monitoramento; import com.automaster.autoview.client.Info; import com.google.gwt.core.client.GWT; import com.google.gwt.i18n.client.DateTimeFormat; import com.google.gwt.i18n.client.TimeZone; import com.google.gwt.user.client.Timer; import com.google.gwt.user.client.rpc.AsyncCallback; import com.smartgwt.client.data.Record; import com.smartgwt.client.data.SortSpecifier; import com.smartgwt.client.types.Alignment; import com.smartgwt.client.types.DateDisplayFormat; import com.smartgwt.client.types.Overflow; import com.smartgwt.client.types.SelectionStyle; import com.smartgwt.client.types.SortDirection; import com.smartgwt.client.types.VerticalAlignment; import com.smartgwt.client.types.VisibilityMode; import com.smartgwt.client.util.SC; import com.smartgwt.client.widgets.IButton; import com.smartgwt.client.widgets.events.ClickEvent; import com.smartgwt.client.widgets.events.ClickHandler; import com.smartgwt.client.widgets.form.DynamicForm; import com.smartgwt.client.widgets.form.fields.ComboBoxItem; import com.smartgwt.client.widgets.form.fields.DateTimeItem; import com.smartgwt.client.widgets.form.fields.RadioGroupItem; import com.smartgwt.client.widgets.form.fields.TextAreaItem; import com.smartgwt.client.widgets.form.fields.events.ChangedEvent; import com.smartgwt.client.widgets.form.fields.events.ChangedHandler; import com.smartgwt.client.widgets.grid.ListGrid; import com.smartgwt.client.widgets.grid.ListGridField; import com.smartgwt.client.widgets.layout.HLayout; import com.smartgwt.client.widgets.layout.SectionStack; import com.smartgwt.client.widgets.layout.SectionStackSection; import com.smartgwt.client.widgets.layout.VLayout; import com.smartgwt.client.widgets.tab.Tab; import java.sql.Timestamp; import java.util.ArrayList; import java.util.Date; import java.util.LinkedHashMap; import java.util.TreeMap; /** * * @author Adriano */ public class TabLogUsuario extends Tab { private final ListGrid registrosGrid; private final DynamicForm formBusca; private final RadioGroupItem tipoBusca; private final IButton btnParar; private final IButton btnIniciar; private boolean flagUltimosTrintaLogs = false; private boolean flagThreadNovosLogs = true; private boolean flagPararThreadNovosLogs = true; private int codMaiorLogSis = 0; private int codMaiorLogSisAux = 1; public TabLogUsuario() { this.btnIniciar = new IButton("Iniciar"); this.btnIniciar.setTitle("Iniciar buscador de logs de usurio"); this.btnIniciar.setDisabled(true); this.btnParar = new IButton("Parar"); this.btnParar.setTitle("Parar buscardor de logs de usurio"); this.setTitle("Logs do usurio"); this.tipoBusca = new RadioGroupItem(); tipoBusca.setTitle(Info.titulosMsg.get("tipoBusca")); LinkedHashMap<String, String> tp = new LinkedHashMap<>(); tp.put("1", "Usurios"); tp.put("2", "Parmetros"); tipoBusca.setValueMap(tp); tipoBusca.setRequired(true); tipoBusca.setValue("1"); //tipoBusca.setShowTitle(false); tipoBusca.setAlign(Alignment.CENTER); tipoBusca.setTooltip("Buscar log de usurios"); tipoBusca.setWidth(350); tipoBusca.setVertical(false); this.registrosGrid = new ListGrid(); this.registrosGrid.setCanPickFields(false); this.registrosGrid.setSelectionType(SelectionStyle.MULTIPLE); this.registrosGrid.setCanDragSelect(true); this.registrosGrid.setCanAutoFitFields(false); this.registrosGrid.setCanAutoFitFields(false); //this.registrosGrid.setCanSort(false); this.registrosGrid.setCanGroupBy(false); this.registrosGrid.setCanFreezeFields(false); //this.registrosGrid.setSortDirection(SortDirection.DESCENDING); SortSpecifier sortSpecifier = new SortSpecifier("dataHoraReal", SortDirection.DESCENDING); this.registrosGrid.setSort(sortSpecifier); this.registrosGrid.setProgressiveLoading(true); final ListGridField codAgente = new ListGridField("codAgente", "cod Agente"); codAgente.setAlign(Alignment.CENTER); codAgente.setHidden(true); final ListGridField nomeAgente = new ListGridField("nomeAgente", "Cliente / Funcionrio"); nomeAgente.setAlign(Alignment.CENTER); nomeAgente.setWidth(150); final ListGridField codUsuario = new ListGridField("codUsuario", "cod Usurio"); codUsuario.setAlign(Alignment.CENTER); codUsuario.setHidden(true); final ListGridField nomeUsuario = new ListGridField("nomeUsuario", "Usurio"); nomeUsuario.setAlign(Alignment.CENTER); nomeUsuario.setWidth(80); final ListGridField codOperacao = new ListGridField("codOperacao", "cod Operao"); codOperacao.setAlign(Alignment.CENTER); codOperacao.setHidden(true); final ListGridField operacao = new ListGridField("operacao", "Operao"); operacao.setAlign(Alignment.CENTER); operacao.setWidth(200); final ListGridField dataHoraReal = new ListGridField("dataHoraReal", "Data e Hora"); dataHoraReal.setAlign(Alignment.CENTER); dataHoraReal.setHidden(true); final ListGridField dataHora = new ListGridField("dataHora", "Data e Hora"); dataHora.setAlign(Alignment.CENTER); dataHora.setWidth(120); final ListGridField parametro = new ListGridField("parametro", "Parmetros"); parametro.setAlign(Alignment.CENTER); final ListGridField acessos = new ListGridField("acessos", "Acessos"); acessos.setWidth(30); parametro.setAlign(Alignment.CENTER); this.registrosGrid.setFields(codAgente, nomeAgente, codUsuario, nomeUsuario, codOperacao, operacao, dataHoraReal, dataHora, parametro, acessos); this.formBusca = new DynamicForm(); this.formBusca.setLayoutAlign(VerticalAlignment.CENTER); this.formBusca.setLayoutAlign(Alignment.CENTER); this.formBusca.setAlign(Alignment.CENTER); this.formBusca.setWidth(600); final ComboBoxItem itemUsuario = new ComboBoxItem(); itemUsuario.setAddUnknownValues(false); itemUsuario.setTitle("Usurios"); itemUsuario.setName("itemUsuario"); itemUsuario.setHint("<nbr>*</nbr>"); itemUsuario.setRequired(true); itemUsuario.setWidth(450); Info.dbService .buscarUsuarioPorUsuarioLogadoLogUsuario(new AsyncCallback<ArrayList<TreeMap<String, String>>>() { @Override public void onSuccess(ArrayList<TreeMap<String, String>> result) { //GWT.log("interface - size listaUsuarios : "+result); LinkedHashMap<String, String> hasMap = new LinkedHashMap<>(); hasMap.put("0", "Todos"); if (result != null) { for (TreeMap<String, String> g : result) { //GWT.log("grupos - size listaUsuarios - linha 01 : "+g.get("nomeCliente")); String nome = (g.get("nomeFuncionario") == null) ? " / CLIENTE: " + g.get("nomeCliente") : " / FUNCION?RIO: " + g.get("nomeFuncionario"); hasMap.put(g.get("codUsuario"), "USU?RIO: " + g.get("nomeUsuario") + nome); } itemUsuario.setValueMap(hasMap); itemUsuario.setValue("0"); } else { hasMap.put("0", "No h usurios disponveis"); itemUsuario.setValueMap(hasMap); itemUsuario.setValue("0"); } } @Override public void onFailure(Throwable caught) { Info.fecharJanelaCarrgando(); SC.warn("FALHA na conexo! [Erro ao buscar buscar Usuario Por Usuario Logado LogUsuario]"); } }); final DateTimeItem itemDataEhoraInicio = new DateTimeItem("dataEhoraInicio", "Incio"); itemDataEhoraInicio.setRequired(true); itemDataEhoraInicio.setHeight(18); itemDataEhoraInicio.setWidth(450); itemDataEhoraInicio.setDateFormatter(DateDisplayFormat.TOEUROPEANSHORTDATETIME); DateTimeFormat dateTimeFormat = DateTimeFormat.getFormat("dd/MM/yyyy HH:mm"); TimeZone timeZone = TimeZone.createTimeZone(180); //itemDataEhora.setDateFormatter(DateDisplayFormat.TOEUROPEANSHORTDATETIME); final Date dataManha = new Date(System.currentTimeMillis()); //dateTimeFormat.format(dataOntem, timeZone); itemDataEhoraInicio.setDefaultValue(dateTimeFormat.format( new Date(dataManha.getYear(), dataManha.getMonth(), dataManha.getDate(), 07, 45, 00), timeZone)); itemDataEhoraInicio.setHint("<nbr>*</nbr>"); itemDataEhoraInicio.setUseMask(true); final DateTimeItem itemDataEhoraFim = new DateTimeItem("dataEhoraFim", "Fim"); itemDataEhoraFim.setRequired(true); itemDataEhoraFim.setHeight(18); itemDataEhoraFim.setWidth(450); itemDataEhoraFim.setDateFormatter(DateDisplayFormat.TOEUROPEANSHORTDATETIME); itemDataEhoraFim.setDefaultValue(dateTimeFormat.format( new Date(dataManha.getYear(), dataManha.getMonth(), dataManha.getDate(), 18, 15, 00), timeZone)); itemDataEhoraFim.setHint("<nbr>*</nbr>"); itemDataEhoraFim.setUseMask(true); final TextAreaItem itemParametros = new TextAreaItem("parametro", "Parmetros"); itemParametros.setRequired(true); //itemParametros.setValidators(tamanhoTextItem); itemParametros.setHint("<nbr>*</nbr>"); itemParametros.setWidth(450); itemParametros.setHeight(100); itemParametros.setLength(100); tipoBusca.addChangedHandler(new ChangedHandler() { @Override public void onChanged(ChangedEvent event) { String itemSelecionado = (String) event.getValue(); if (itemSelecionado.equalsIgnoreCase("1")) { formBusca.showItem("itemUsuario"); formBusca.showItem("dataEhoraInicio"); formBusca.showItem("dataEhoraFim"); formBusca.hideItem("parametro"); } else { formBusca.hideItem("itemUsuario"); formBusca.hideItem("dataEhoraInicio"); formBusca.hideItem("dataEhoraFim"); formBusca.showItem("parametro"); } } }); HLayout hButoes = new HLayout(); hButoes.setWidth(200); hButoes.setHeight(20); //hButoes.setMembersMargin(3); hButoes.setLayoutAlign(Alignment.CENTER); hButoes.setAlign(Alignment.LEFT); final IButton pesquisar = new IButton("Pesquisar"); pesquisar.setHeight(18); final IButton limpar = new IButton("Limpar"); limpar.setHeight(18); hButoes.setMargin(5); hButoes.setMembersMargin(5); hButoes.addMember(pesquisar); hButoes.addMember(limpar); formBusca.setItems(tipoBusca, itemUsuario, itemDataEhoraInicio, itemDataEhoraFim, itemParametros); formBusca.showItem("itemUsuario"); formBusca.showItem("dataEhoraInicio"); formBusca.showItem("dataEhoraFim"); formBusca.hideItem("parametro"); pesquisar.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { if (flagPararThreadNovosLogs) { flagPararThreadNovosLogs = false; btnIniciar.setDisabled(false); btnParar.setDisabled(true); } if (Integer.parseInt(tipoBusca.getValueAsString()) == 1) { registrosGrid.setData(new Record[0]); Timestamp dataIncio = new Timestamp(itemDataEhoraInicio.getValueAsDate().getTime()); Timestamp dataFim = new Timestamp(itemDataEhoraFim.getValueAsDate().getTime()); int codUsuario = Integer.parseInt(itemUsuario.getValueAsString()); buscarPorUsuario(codUsuario, dataIncio, dataFim, itemDataEhoraFim); } else { registrosGrid.setData(new Record[0]); String parametro = itemParametros.getValueAsString(); buscarPorParametro(parametro); } } }); HLayout painelPai = new HLayout(); painelPai.setWidth100(); painelPai.setHeight100(); painelPai.setAlign(Alignment.CENTER); painelPai.setLayoutAlign(Alignment.CENTER); VLayout painelBusca = new VLayout(); //painelBusca.setMembersMargin(15); painelBusca.setWidth100(); painelBusca.setAlign(Alignment.CENTER); painelBusca.setDefaultLayoutAlign(Alignment.CENTER); final SectionStackSection formSection = new SectionStackSection(); formSection.setTitle("Buscar logs do usurio"); formSection.setItems(formBusca, hButoes); formSection.setExpanded(true); //Criando o painel que ir armazenar to tab, sections e butoes VLayout painelNovoCliente = new VLayout(); painelNovoCliente.setMembersMargin(15); //painelNovoCliente.setWidth(1000); painelNovoCliente.setDefaultLayoutAlign(Alignment.CENTER); final SectionStackSection dadosSection = new SectionStackSection(); dadosSection.setTitle("Informaes dos log's"); dadosSection.setItems(registrosGrid); dadosSection.setExpanded(true); dadosSection.setControls(btnIniciar, btnParar); final SectionStack buscarClientes = new SectionStack(); buscarClientes.setSections(formSection, dadosSection); buscarClientes.setVisibilityMode(VisibilityMode.MULTIPLE); buscarClientes.setAnimateSections(true); buscarClientes.setWidth("70%"); buscarClientes.setHeight100(); buscarClientes.setOverflow(Overflow.VISIBLE); painelBusca.addMember(buscarClientes); painelPai.addMember(painelBusca); setPane(painelPai); // iNICIA A GRID COM UMA LISTA VAZIA DE REGISTROS DE LOG //registrosGrid.setData(new Record[0]); btnParar.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { flagPararThreadNovosLogs = false; btnIniciar.setDisabled(false); btnParar.setDisabled(true); } }); btnIniciar.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { flagPararThreadNovosLogs = true; btnIniciar.setDisabled(true); btnParar.setDisabled(false); } }); Info.dbService.buscarUltimosLogsDoSis(new AsyncCallback<ArrayList<TreeMap<String, String>>>() { @Override public void onFailure(Throwable caught) { Info.fecharJanelaCarrgando(); SC.warn("FALHA na conexo! [Erro ao buscar ltimos Logs]"); } @Override public void onSuccess(ArrayList<TreeMap<String, String>> result) { //SC.say("*"); if (result != null) { //GWT.log("buscarUltimosLogsDoSis"); for (TreeMap<String, String> log : result) { Record registro = new Record(); registro.setAttribute("codAgente", (log.get("nomeCliente") == null) ? log.get("codFunc") : log.get("codCliente")); registro.setAttribute("nomeAgente", (log.get("nomeCliente") == null) ? log.get("nomeFunc") : log.get("nomeCliente")); registro.setAttribute("codUsuario", Integer.parseInt(log.get("codUsuario"))); registro.setAttribute("nomeUsuario", log.get("usuario")); registro.setAttribute("codOperacao", Integer.parseInt(log.get("codOperacao"))); registro.setAttribute("operacao", log.get("operacao")); registro.setAttribute("dataHoraReal", Long.parseLong(log.get("dataHora"))); registro.setAttribute("dataHora", log.get("dataHoraString")); registro.setAttribute("parametro", (log.get("parametro").equalsIgnoreCase("") || log.get("parametro") == null) ? "Sem informao" : log.get("parametro")); registro.setAttribute("acessos", result.get(0).get("ACESSOS")); registrosGrid.addData(registro); } // atualizada a flag dos ultimos 100 logs de usurio flagUltimosTrintaLogs = true; codMaiorLogSis = Integer.parseInt(result.get(0).get("MAXIMO")); } else { GWT.log("Nenhum log de usurio foi retornado! LISTA VAZIA!"); } } }); Info.atualizaLogUsuario = new Timer() { @Override public void run() { //SC.say("++++"); if (Info.validaConexao()) { if (flagUltimosTrintaLogs && flagPararThreadNovosLogs && flagPararThreadNovosLogs && codMaiorLogSis > codMaiorLogSisAux) { flagThreadNovosLogs = false; Info.dbService.buscarNovosLogSis(codMaiorLogSis, new AsyncCallback<ArrayList<TreeMap<String, String>>>() { @Override public void onFailure(Throwable caught) { Info.fecharJanelaCarrgando(); SC.warn("FALHA na conexo! [Erro ao atualizar log]"); } @Override public void onSuccess(ArrayList<TreeMap<String, String>> result) { if (result != null) { //GWT.log("buscarNovosLogSis"); flagThreadNovosLogs = true; codMaiorLogSisAux = codMaiorLogSis; codMaiorLogSis = Integer.parseInt(result.get(0).get("MAXIMO")); for (TreeMap<String, String> log : result) { Record registro = new Record(); registro.setAttribute("codAgente", (log.get("nomeCliente") == null) ? log.get("codFunc") : log.get("codCliente")); registro.setAttribute("nomeAgente", (log.get("nomeCliente") == null) ? log.get("nomeFunc") : log.get("nomeCliente")); registro.setAttribute("codUsuario", Integer.parseInt(log.get("codUsuario"))); registro.setAttribute("nomeUsuario", log.get("usuario")); registro.setAttribute("codOperacao", Integer.parseInt(log.get("codOperacao"))); registro.setAttribute("operacao", log.get("operacao")); registro.setAttribute("dataHoraReal", Long.parseLong(log.get("dataHora"))); registro.setAttribute("dataHora", log.get("dataHoraString")); registro.setAttribute("parametro", (log.get("parametro").equalsIgnoreCase("") || log.get("parametro") == null) ? "Sem informao" : log.get("parametro")); registro.setAttribute("acessos", result.get(0).get("ACESSOS")); registrosGrid.addData(registro); } } else { flagThreadNovosLogs = true; //GWT.log("LISTA DE NOVOS LOGS EST? VAZIA!"); } } }); } } } }; Info.atualizaLogUsuario.scheduleRepeating(10000); } public void buscarPorUsuario(int codUsuario, Timestamp dataIncio, Timestamp dataFim, final DateTimeItem itemDataEhoraFim) { if (formBusca.validate() && dataFim.getTime() > dataIncio.getTime()) { Info.abrirJanelaCarregando(); Info.dbService.buscarLogDoSisPorUsuario(codUsuario, dataIncio, dataFim, new AsyncCallback<ArrayList<TreeMap<String, String>>>() { @Override public void onFailure(Throwable caught) { Info.fecharJanelaCarrgando(); SC.warn("FALHA na conexo! [Erro ao buscar Log por intervalo de Data]"); } @Override public void onSuccess(ArrayList<TreeMap<String, String>> result) { if (result != null) { Info.fecharJanelaCarrgando(); for (TreeMap<String, String> log : result) { Record registro = new Record(); registro.setAttribute("codAgente", (log.get("nomeCliente") == null) ? log.get("codFunc") : log.get("codCliente")); registro.setAttribute("nomeAgente", (log.get("nomeCliente") == null) ? log.get("nomeFunc") : log.get("nomeCliente")); registro.setAttribute("codUsuario", Integer.parseInt(log.get("codUsuario"))); registro.setAttribute("nomeUsuario", log.get("usuario")); registro.setAttribute("codOperacao", Integer.parseInt(log.get("codOperacao"))); registro.setAttribute("operacao", log.get("operacao")); registro.setAttribute("dataHoraReal", Long.parseLong(log.get("dataHora"))); registro.setAttribute("dataHora", log.get("dataHoraString")); registro.setAttribute("parametro", (log.get("parametro").equalsIgnoreCase("") || log.get("parametro") == null) ? "Sem informao" : log.get("parametro")); registro.setAttribute("acessos", result.get(0).get("ACESSOS")); registrosGrid.addData(registro); } } else { SC.warn("No h registro para este intervalo!"); Info.fecharJanelaCarrgando(); } } }); } else { SC.warn("A data inicial maior que a data final"); formBusca.focusInItem(itemDataEhoraFim); Info.fecharJanelaCarrgando(); } } public void buscarPorParametro(String parametros) { if (formBusca.validate()) { Info.abrirJanelaCarregando(); Info.dbService.buscarLogDoSisPorParametro(parametros, new AsyncCallback<ArrayList<TreeMap<String, String>>>() { @Override public void onFailure(Throwable caught) { Info.fecharJanelaCarrgando(); SC.warn("FALHA na conexo! [Erro ao buscar Log por parmetro]"); } @Override public void onSuccess(ArrayList<TreeMap<String, String>> result) { if (result != null) { Info.fecharJanelaCarrgando(); for (TreeMap<String, String> log : result) { Record registro = new Record(); registro.setAttribute("codAgente", (log.get("nomeCliente") == null) ? log.get("codFunc") : log.get("codCliente")); registro.setAttribute("nomeAgente", (log.get("nomeCliente") == null) ? log.get("nomeFunc") : log.get("nomeCliente")); registro.setAttribute("codUsuario", Integer.parseInt(log.get("codUsuario"))); registro.setAttribute("nomeUsuario", log.get("usuario")); registro.setAttribute("codOperacao", Integer.parseInt(log.get("codOperacao"))); registro.setAttribute("operacao", log.get("operacao")); registro.setAttribute("dataHoraReal", Long.parseLong(log.get("dataHora"))); registro.setAttribute("dataHora", log.get("dataHoraString")); registro.setAttribute("parametro", (log.get("parametro").equalsIgnoreCase("") || log.get("parametro") == null) ? "Sem informao" : log.get("parametro")); registro.setAttribute("acessos", result.get(0).get("ACESSOS")); registrosGrid.addData(registro); } } else { SC.warn("No h registro com este parmetro!"); Info.fecharJanelaCarrgando(); } } }); } } }