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.automaster.autoview.client.ordenadores.OrdenaPosicao; import com.automaster.autoview.client.ui.openlayers.MapaInicioOpenLayer; import com.automaster.autoview.client.ui.paineis.tabs.TabLog; import com.google.gwt.core.client.GWT; import com.google.gwt.i18n.client.DateTimeFormat; import com.google.gwt.i18n.client.DateTimeFormat.PredefinedFormat; import com.google.gwt.user.client.Timer; import com.google.gwt.user.client.Window; import com.google.gwt.user.client.rpc.AsyncCallback; import com.smartgwt.client.data.DataSource; import com.smartgwt.client.data.Record; import com.smartgwt.client.data.SortSpecifier; import com.smartgwt.client.data.fields.DataSourceTextField; import com.smartgwt.client.types.Alignment; import com.smartgwt.client.types.AnimationEffect; import com.smartgwt.client.types.GroupStartOpen; import com.smartgwt.client.types.Overflow; import com.smartgwt.client.types.SelectionStyle; import com.smartgwt.client.types.SortDirection; import com.smartgwt.client.types.VisibilityMode; import com.smartgwt.client.util.SC; import com.smartgwt.client.widgets.ImgButton; import com.smartgwt.client.widgets.Label; import com.smartgwt.client.widgets.events.ClickEvent; import com.smartgwt.client.widgets.events.ClickHandler; import com.smartgwt.client.widgets.events.DrawEvent; import com.smartgwt.client.widgets.events.DrawHandler; import com.smartgwt.client.widgets.grid.ListGrid; import com.smartgwt.client.widgets.grid.ListGridField; import com.smartgwt.client.widgets.grid.ListGridRecord; import com.smartgwt.client.widgets.grid.events.DataArrivedEvent; import com.smartgwt.client.widgets.grid.events.DataArrivedHandler; import com.smartgwt.client.widgets.grid.events.GroupStateChangedEvent; import com.smartgwt.client.widgets.grid.events.GroupStateChangedHandler; import com.smartgwt.client.widgets.grid.events.SelectionUpdatedEvent; import com.smartgwt.client.widgets.grid.events.SelectionUpdatedHandler; 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.Map; import java.util.TreeMap; import java.util.TreeSet; /** * * @author Adriano */ public class TabInicio extends Tab { //private int contador; // Pega o cdigo da Unidade do Usurio Logado Cliente ou Funiconrio int codigoUnidade = Integer.parseInt( (Info.usuarioLogado.get("codUnidadeCliente") == null) ? Info.usuarioLogado.get("codUnidadeFuncionario") : Info.usuarioLogado.get("codUnidadeCliente")); public static int indexVeiculos; public static ListGrid veiculos; public static ListGrid posicoesVeiculos; public static int indexVeiculoPlaca; public static int codUltimaPosicao; public static int offSet; private int offSetAux; private int codUltimaPosicaoAux; private String nomeCliente = ""; //private boolean inicio = true; private boolean flagCincoPosicoes = false; private boolean flagPosicoesDemanda = true; private int countThreadNovasDemanda = 0; private boolean flagNovasPosicoes = true; private int countThreadNovasPosicoes = 0; private int direcaoPosicao = 0; private double distancia = 0; private double distanciaTotal = 0; private double latAnt = 0, lonAnt = 0, latAtual = 0, lonAtual = 0; private int indexDistancia = 0; private String kms = null; private double metros = 0; private String m = null; private String dist = " Percorridos 0 metros"; private String tempoDecorrido = " 0"; private String icone = null; private int tamanhoListaVeiculos; private boolean verificaListaDeVeiculos = true; //private boolean verificaPrimeiraPosicao = true; private final VLayout painelSectionPlacas = new VLayout(); private final Label infoVeiculo = new Label("<strong style=\"font-size:15px; \"> Placa: XXX-1111" + " Fabricante: XXXX" + " Modelo: XXXX" + " Cor: XXXX" + " Ano: 0000/0000" + "</strong>"); //private boolean verificaArrived = true; //private TreeMap<String, ArrayList<TreeMap<String, String>>> listaVeiculosAuxiliar; public static ArrayList<Record> posicoesSemEndereco; public static TreeMap<String, Object> listaVeiculos; public static DataSource dataSourcePlacas; private String latEndereco = null; private String lonEndereco = null; private String placaSelecionadaAtual = null; private boolean flagSemEndereco = true; private static boolean flagBuscaEndereco = true; public static boolean TABELAVEICULODESENHADA = false; private static TreeMap<String, TreeMap<String, String>> gruposDeVeiculos; public static TreeMap<String, TreeMap<String, String>> getGruposDeVeiculos() { return gruposDeVeiculos; } public static void setGruposDeVeiculos(TreeMap<String, TreeMap<String, String>> gruposDeVeiculos) { TabInicio.gruposDeVeiculos = gruposDeVeiculos; } //public static TreeMap<String, String> placasNaoRepetidas; public static TreeMap<String, Object> getListaVeiculos() { return listaVeiculos; } public static void setListaVeiculos(String placa, ArrayList<TreeMap<String, String>> novaListaVeiculo) { listaVeiculos.put(placa, novaListaVeiculo); } public static void setListaVeiculos(TreeMap<String, Object> listaVeiculos) { TabInicio.listaVeiculos = listaVeiculos; } private MapaInicioOpenLayer mapaInicioOpenLayer; public TabInicio() { //, TimeZone.createTimeZone(120) //tabelaDesenhada = true; //placasNaoRepetidas = new TreeMap<>(); //this.timeZone = Info.timeZoneClient(); //DateUtil.setDefaultDisplayTimezone(timeZone); Info.enderecosResolvidos = new TreeMap<>(); indexVeiculos = 0; indexVeiculoPlaca = 0; codUltimaPosicao = 0; codUltimaPosicaoAux = 1; offSet = 0; offSetAux = -1; TabInicio.posicoesSemEndereco = new ArrayList<>(); TabInicio.listaVeiculos = new TreeMap<>(); this.tamanhoListaVeiculos = 0; TabInicio.veiculos = new ListGrid(); TabInicio.veiculos.setSortDirection(SortDirection.ASCENDING); TabInicio.veiculos.setSortField("placa"); TabInicio.veiculos.setCanSort(false); TabInicio.veiculos.setCanGroupBy(true); TabInicio.veiculos.setGroupByMaxRecords(100000); TabInicio.veiculos.setCanAutoFitFields(false); TabInicio.veiculos.setSelectionType(SelectionStyle.SINGLE); TabInicio.veiculos.setWidth("10%"); TabInicio.veiculos.setCanPickFields(false); TabInicio.veiculos.setAlternateRecordStyles(true); TabInicio.veiculos.setShowFilterEditor(true); TabInicio.veiculos.setTooltip(Info.titulosMsg.get("listaVeiculos")); TabInicio.veiculos.setFilterOnKeypress(true); TabInicio.veiculos.setCanSort(false); TabInicio.dataSourcePlacas = new DataSource(); TabInicio.dataSourcePlacas.setClientOnly(true); DataSourceTextField codVeiculoField = new DataSourceTextField("codigo", Info.titulosMsg.get("tituloCodigo")); codVeiculoField.setHidden(true); DataSourceTextField placaVeiculo = new DataSourceTextField("placa", Info.titulosMsg.get("placa")); placaVeiculo.setRequired(true); //placaVeiculo.setPrimaryKey(true); DataSourceTextField iconeVeiculo = new DataSourceTextField("icone", "?cone de veculo"); iconeVeiculo.setHidden(true); DataSourceTextField grupoVeiculo = new DataSourceTextField("grupo", "grupo"); //grupoVeiculo.setGroup(icone); grupoVeiculo.setHidden(true); TabInicio.dataSourcePlacas.setFields(codVeiculoField, iconeVeiculo, placaVeiculo, grupoVeiculo); TabInicio.posicoesVeiculos = new ListGrid(); //this.indexVeiculoPlaca = 0; //this.index20 = 0; //this.indexDecrescente = 100; //TabInicio.semafaro = true; //criando o Vlayout que ir armazenar todo o layout da janela final HLayout painelPai = new HLayout(); painelPai.setWidth100(); painelPai.setHeight100(); painelPai.setAlign(Alignment.CENTER); Info.dbService.buscarVeiculoPorUsuarioLogado(Integer.parseInt(Info.usuarioLogado.get("codUsuario")), new AsyncCallback<TreeMap<String, Object>>() { @Override public void onFailure(Throwable caught) { // if (caught instanceof Exception) { SC.warn("Falha na conexo - buscarVeiculo"); } } @Override public void onSuccess(TreeMap<String, Object> result) { if (result != null) { setListaVeiculos(result); tamanhoListaVeiculos = result.size() - 3; //GWT.log("TamanhoLista : "+tamanhoListaVeiculos); TreeMap<String, Object> veiculosAuxiliar = new TreeMap<>(result); //ListGridRecord[] registeredPlacaRecords = new ListGridRecord[result.size()]; if (veiculosAuxiliar.size() > 0) { TabInicio.codUltimaPosicao = Integer.parseInt((String) result.get("MAXIMO")); //codUltimaPosicaoAux = Integer.parseInt((String) result.get("MAXIMO")); Info.enderecosResolvidos.putAll((TreeMap<String, String>) result.get("ENDERECO")); TabInicio.indexVeiculos = 0; TreeMap<String, TreeMap<String, String>> grupoAux = (TreeMap<String, TreeMap<String, String>>) result .get("GRUPO"); setGruposDeVeiculos(grupoAux); //GWT.log("Grupos : " + grupoAux.size()); for (Map.Entry<String, TreeMap<String, String>> entrySet : grupoAux.entrySet()) { String key = entrySet.getKey(); TreeMap<String, String> value = entrySet.getValue(); for (Map.Entry<String, String> entrySet1 : value.entrySet()) { String key1 = entrySet1.getKey(); //String value1 = entrySet1.getValue(); ListGridRecord recordVeiculos = new ListGridRecord(); recordVeiculos.setAttribute("icone", key1.substring(0, key1.indexOf(";"))); recordVeiculos.setAttribute("placa", key1.substring(key1.indexOf(";") + 1, key1.length())); recordVeiculos.setAttribute("grupo", key); TabInicio.dataSourcePlacas.addData(recordVeiculos); } } //GWT.log("FLAG DE 5 POSICOES : " + flagCincoPosicoes); flagCincoPosicoes = true; //GWT.log("FLAG DE 5 POSICOES : " + flagCincoPosicoes); } else { GWT.log("ERRO ao listar os veculos do usurio DataSource: " + Info.usuarioLogado.get("codUsuario")); } } else { GWT.log("Usurio sem veculo: " + Info.usuarioLogado.get("codUsuario")); } } }); //Setando itens de configurao da tab setTitle(Info.titulosMsg.get("inicio")); //final Label infoVeiculo = new Label("<strong style=\"font-size:15px; \">Placa: XXX-1111" + " Fabricante: XXXX" + " Modelo: XXXX" + " Cor: XXXX" + " Ano: 0000/0000" + "</strong>"); infoVeiculo.setHeight(30); final SectionStackSection mapaSection = new SectionStackSection(); mapaSection.setID("mapaSection"); mapaSection.setTitle(Info.titulosMsg.get("mapa"));// mapaSection.setExpanded(true); /********************************************/ mapaInicioOpenLayer = new MapaInicioOpenLayer(); /*******************************************/ mapaSection.setItems(mapaInicioOpenLayer); final VLayout painelGridVeiculos = new VLayout(); //painelGridVeiculos.setMembersMargin(10); painelGridVeiculos.addMember(infoVeiculo); painelGridVeiculos.addMember(TabInicio.posicoesVeiculos); painelGridVeiculos.setHeight100(); final HLayout painelGridInfoVeiculo = new HLayout(); painelGridInfoVeiculo.setMembersMargin(5); painelGridInfoVeiculo.addMember(TabInicio.veiculos); painelGridInfoVeiculo.addMember(painelGridVeiculos); painelGridInfoVeiculo.setHeight("25%"); final SectionStackSection dadosSection = new SectionStackSection(); dadosSection.setTitle(Info.titulosMsg.get("dadosVeiculo")); dadosSection.setItems(painelGridInfoVeiculo); dadosSection.setExpanded(true); final SectionStack buscarClientes = new SectionStack(); buscarClientes.setSections(mapaSection, dadosSection); buscarClientes.setVisibilityMode(VisibilityMode.MULTIPLE); buscarClientes.setAnimateSections(true); buscarClientes.setWidth100(); buscarClientes.setHeight100(); buscarClientes.setOverflow(Overflow.VISIBLE); //excluir.setWidth(40); final ListGridField codigo = new ListGridField("codigo", Info.titulosMsg.get("tituloCodigo")); final ListGridField placaGrid = new ListGridField("placa", Info.titulosMsg.get("lista")); codigo.setHidden(true); placaGrid.setAlign(Alignment.CENTER); TabInicio.veiculos.setDataSource(TabInicio.dataSourcePlacas); //final ListGridField quantidade = new ListGridField("contador", Info.titulosMsg.get("numeroEndereco")); final ListGridField googleMap = new ListGridField("google", "Mapa"); final ListGridField codPosicao = new ListGridField("codPosicao", "codPosicao"); final ListGridField lat = new ListGridField("lat", Info.titulosMsg.get("latitude")); final ListGridField lon = new ListGridField("lon", Info.titulosMsg.get("longitude")); final ListGridField dataEhoraReal = new ListGridField("dataEhoraReal", Info.titulosMsg.get("dataHora")); final ListGridField dataEhora = new ListGridField("dataEhora", Info.titulosMsg.get("dataHora")); final ListGridField sat = new ListGridField("sat", Info.titulosMsg.get("satelite")); final ListGridField gps = new ListGridField("gps", Info.titulosMsg.get("gps")); final ListGridField vel = new ListGridField("vel", Info.titulosMsg.get("velocidade")); final ListGridField ing = new ListGridField("ign", Info.titulosMsg.get("ignicao")); final ListGridField ingReal = new ListGridField("ignReal", Info.titulosMsg.get("ignicao")); final ListGridField entrada = new ListGridField("entrada", Info.titulosMsg.get("entrada")); final ListGridField saida = new ListGridField("saida", Info.titulosMsg.get("saida")); final ListGridField evento = new ListGridField("evento", Info.titulosMsg.get("evento")); final ListGridField enderecoGrid = new ListGridField("endereco", Info.titulosMsg.get("endereco")); final ListGridField codDirecao = new ListGridField("codDirecao", Info.titulosMsg.get("direcao")); final ListGridField direcao = new ListGridField("direcao", Info.titulosMsg.get("direcao")); final ListGridField fabricante = new ListGridField("fabricante", Info.titulosMsg.get("fabricante")); final ListGridField modelo = new ListGridField("modelo", Info.titulosMsg.get("modelo")); final ListGridField cor = new ListGridField("cor", Info.titulosMsg.get("cor")); final ListGridField ano = new ListGridField("ano", Info.titulosMsg.get("ano")); final ListGridField nomeClienteGrid = new ListGridField("cliente", "Cliente"); //quantidade.setWidth(40); //quantidade.setAlign(Alignment.CENTER); //quantidade.setHidden(true); googleMap.setAlign(Alignment.CENTER); googleMap.setWidth(60); codPosicao.setHidden(true); fabricante.setHidden(true); modelo.setHidden(true); cor.setHidden(true); ano.setHidden(true); codPosicao.setSortDirection(SortDirection.DESCENDING); codPosicao.setWidth(1); lat.setAlign(Alignment.CENTER); lat.setWidth(80); lon.setAlign(Alignment.CENTER); lon.setWidth(80); dataEhora.setAlign(Alignment.CENTER); dataEhora.setWidth(115); sat.setAlign(Alignment.CENTER); sat.setWidth(80); gps.setAlign(Alignment.CENTER); gps.setWidth(65); vel.setAlign(Alignment.CENTER); vel.setWidth(80); ing.setAlign(Alignment.CENTER); ing.setWidth(70); ingReal.setAlign(Alignment.LEFT); ingReal.setHidden(true); entrada.setAlign(Alignment.CENTER); entrada.setWidth(80); saida.setAlign(Alignment.CENTER); saida.setWidth(80); evento.setAlign(Alignment.CENTER); evento.setWidth(80); enderecoGrid.setAlign(Alignment.CENTER); //enderecoGrid.setWidth(500); codDirecao.setAlign(Alignment.CENTER); codDirecao.setHidden(true); direcao.setAlign(Alignment.CENTER); direcao.setWidth(70); //direcao.setHidden(true); dataEhoraReal.setHidden(true); nomeClienteGrid.setHidden(true); if (Info.usuarioLogado.get("codClienteCliente") != null) { lat.setHidden(true); lon.setHidden(true); //sat.setHidden(true); entrada.setHidden(true); saida.setHidden(true); evento.setHidden(true); } TabInicio.posicoesVeiculos.setFields(googleMap, codPosicao, dataEhoraReal, dataEhora, vel, ingReal, ing, lat, lon, sat, gps, entrada, saida, evento, enderecoGrid, codDirecao, direcao, fabricante, modelo, cor, ano, nomeClienteGrid); TabInicio.posicoesVeiculos.setCanPickFields(false); TabInicio.posicoesVeiculos.setSelectionType(SelectionStyle.MULTIPLE); TabInicio.posicoesVeiculos.setCanDragSelect(true); TabInicio.posicoesVeiculos.setCanAutoFitFields(false); TabInicio.posicoesVeiculos.setCanAutoFitFields(false); TabInicio.posicoesVeiculos.setCanSort(false); TabInicio.posicoesVeiculos.setCanGroupBy(false); TabInicio.posicoesVeiculos.setCanFreezeFields(false); //posicoesVeiculos.setSortField("dataEhora"); //posicoesVeiculos.setSortDirection(SortDirection.DESCENDING); SortSpecifier sortSpecifier = new SortSpecifier("dataEhoraReal", SortDirection.DESCENDING); TabInicio.posicoesVeiculos.setSort(sortSpecifier); TabInicio.posicoesVeiculos.setProgressiveLoading(true); //TabInicio.posicoesVeiculos.setAnimateScrollAcceleration(AnimationAcceleration.SMOOTH_START); //TabInicio.posicoesVeiculos.addSort(sortSpecifier); //TabInicio.posicoesVeiculos.setCanSort(false); //TabInicio.posicoesVeiculos.setSortField(0); final ImgButton addPlacas = new ImgButton(); addPlacas.setSrc("[SKIN]actions/add.png"); addPlacas.setTooltip("Maximizar lista de veculos"); addPlacas.setSize(16); addPlacas.setShowFocused(false); addPlacas.setShowRollOver(false); addPlacas.setShowDown(false); addPlacas.setDisabled(true); final ImgButton telaCheia = new ImgButton(); telaCheia.setSrc("../imagens/fullscreen.png"); telaCheia.setTooltip("Tela Cheia"); telaCheia.setSize(16); telaCheia.setShowFocused(false); telaCheia.setShowRollOver(false); telaCheia.setShowDown(false); //telaCheia.setDisabled(true); telaCheia.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { Info.telaCheia("map-inicio"); } }); final ImgButton removePlacas = new ImgButton(); removePlacas.setSrc("[SKIN]actions/remove.png"); removePlacas.setTooltip("Minimizar lista de veculos"); removePlacas.setSize(16); removePlacas.setShowFocused(false); removePlacas.setShowRollOver(false); removePlacas.setShowDown(false); removePlacas.setDisabled(true); final ImgButton refreshMapa = new ImgButton(); refreshMapa.setSrc("[SKIN]actions/refresh.png"); refreshMapa.setTooltip("Atualizar mapa"); refreshMapa.setSize(16); refreshMapa.setShowFocused(false); refreshMapa.setShowRollOver(false); refreshMapa.setShowDown(false); refreshMapa.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { //Info.mapa.refresh(Info.mapa.value()); mapaInicioOpenLayer.getOsm_1().redraw(); } }); // boolean internetExplore = false; // internetExplore = Info.identificaNavegador(); // if(internetExplore){ mapaSection.setControls(refreshMapa, addPlacas, removePlacas); // } else { // mapaSection.setControls(telaCheia, refreshMapa, addPlacas, removePlacas); // } addPlacas.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { painelSectionPlacas.setAnimateTime(1200); painelSectionPlacas.animateShow(AnimationEffect.FADE); addPlacas.setDisabled(true); removePlacas.setDisabled(false); } }); removePlacas.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { //veiculos.selectRecord(indexVeiculoPlaca); painelSectionPlacas.setAnimateTime(1200); painelSectionPlacas.animateHide(AnimationEffect.FADE); addPlacas.setDisabled(false); removePlacas.setDisabled(true); //painelFormulario.hide(); } }); TabInicio.posicoesVeiculos.addSelectionUpdatedHandler(new SelectionUpdatedHandler() { @Override public void onSelectionUpdated(SelectionUpdatedEvent event) { ListGridRecord[] lista = new ListGridRecord[0]; lista = TabInicio.posicoesVeiculos.getSelectedRecords(); sortPosicoes(lista); } }); painelPai.addMember(buscarClientes); setPane(painelPai); TabInicio.veiculos.addDrawHandler(new DrawHandler() { @Override public void onDraw(DrawEvent event) { //GWT.log("addDrawHandler(new DrawHandler()"); //Info.esconderLogoGoogle(); TabInicio.TABELAVEICULODESENHADA = true; //GWT.log("addDrawHandler(new DrawHandler(): "+TabInicio.TABELAVEICULODESENHADA); if (tamanhoListaVeiculos > 0) { if (TabInicio.indexVeiculoPlaca == tamanhoListaVeiculos) { TabInicio.indexVeiculoPlaca--; } TabInicio.veiculos.selectRecord(TabInicio.veiculos.getRecord(TabInicio.indexVeiculoPlaca)); TabInicio.veiculos.groupBy("grupo"); TabInicio.veiculos.selectRecord(TabInicio.veiculos.getRecord(TabInicio.indexVeiculoPlaca)); TabInicio.posicoesVeiculos.selectRecord(0, true); if (tamanhoListaVeiculos > 7 && verificaListaDeVeiculos) { verificaListaDeVeiculos = false; //GWT.log("Tamanho lista veculos INICIO : " + tamanhoListaVeiculos + " verficaLista : " + verificaListaDeVeiculos); //painelPai.clear(); removePlacas.setDisabled(false); painelPai.redraw(); final SectionStackSection placasSection = new SectionStackSection(); placasSection.setTitle("Placas"); TabInicio.veiculos.markForRedraw(); TabInicio.veiculos.setBorder("0px"); TabInicio.veiculos.setWidth("100%"); placasSection.setItems(TabInicio.veiculos); placasSection.setExpanded(true); final SectionStack listaDePlacasSectionStack = new SectionStack(); listaDePlacasSectionStack.setSections(placasSection); listaDePlacasSectionStack.setVisibilityMode(VisibilityMode.MULTIPLE); listaDePlacasSectionStack.setAnimateSections(true); listaDePlacasSectionStack.setWidth100(); listaDePlacasSectionStack.setHeight100(); listaDePlacasSectionStack.setOverflow(Overflow.VISIBLE); painelSectionPlacas.setMembersMargin(5); painelSectionPlacas.setWidth("10%"); painelSectionPlacas.setHeight100(); painelSectionPlacas.addMember(listaDePlacasSectionStack); painelGridVeiculos.markForRedraw(); painelGridVeiculos.addMember(TabInicio.posicoesVeiculos); painelPai.addMember(painelSectionPlacas, 0); painelPai.addMember(buscarClientes, 1); } } } }); //TabInicio.veiculos.setAutoFetchData(true); TabInicio.veiculos.setDataSource(TabInicio.dataSourcePlacas); TabInicio.veiculos.fetchData(); //TabInicio.veiculos.groupBy("grupo"); //TabInicio.veiculos.selectRecord(indexVeiculoPlaca, true); TabInicio.veiculos.setGroupStartOpen(GroupStartOpen.ALL); TabInicio.veiculos.setGroupByField("grupo"); TabInicio.veiculos.groupBy("grupo"); TabInicio.veiculos.addGroupStateChangedHandler(new GroupStateChangedHandler() { @Override public void onGroupStateChanged(GroupStateChangedEvent event) { if (TabInicio.veiculos.getTotalRows() > indexVeiculoPlaca) { //TabInicio.veiculos.selectRecord(indexVeiculoPlaca + 1); TabInicio.veiculos.selectRecord(TabInicio.veiculos.getRecord(indexVeiculoPlaca)); } else { TabInicio.veiculos.selectRecord(TabInicio.veiculos.getRecord(0)); //GWT.log("addGroupStateChangedHandler" + indexVeiculoPlaca); } //TabInicio.veiculos.focus(); } }); TabInicio.veiculos.addDataArrivedHandler(new DataArrivedHandler() { @Override public void onDataArrived(DataArrivedEvent event) { if (tamanhoListaVeiculos > 7 && verificaListaDeVeiculos) { verificaListaDeVeiculos = false; //GWT.log("Tamanho lista veculos INICIO : " + tamanhoListaVeiculos + " verficaLista : " + verificaListaDeVeiculos); //painelPai.clear(); removePlacas.setDisabled(false); painelPai.redraw(); final SectionStackSection placasSection = new SectionStackSection(); placasSection.setTitle("Placas"); TabInicio.veiculos.markForRedraw(); TabInicio.veiculos.setBorder("0px"); TabInicio.veiculos.setWidth("100%"); placasSection.setItems(veiculos); placasSection.setExpanded(true); //placasSection.setControls(addPlacas, removePlacas); final SectionStack listaDePlacasSectionStack = new SectionStack(); listaDePlacasSectionStack.setSections(placasSection); listaDePlacasSectionStack.setVisibilityMode(VisibilityMode.MULTIPLE); listaDePlacasSectionStack.setAnimateSections(true); listaDePlacasSectionStack.setWidth100(); listaDePlacasSectionStack.setHeight100(); listaDePlacasSectionStack.setOverflow(Overflow.VISIBLE); painelSectionPlacas.setMembersMargin(5); painelSectionPlacas.setWidth("10%"); painelSectionPlacas.setHeight100(); painelSectionPlacas.addMember(listaDePlacasSectionStack); painelGridVeiculos.markForRedraw(); painelGridVeiculos.addMember(posicoesVeiculos); painelPai.addMember(painelSectionPlacas, 0); painelPai.addMember(buscarClientes, 1); } } }); // Evento de seleo na tabela veculos// TabInicio.veiculos.addSelectionUpdatedHandler(new SelectionUpdatedHandler() { @Override public void onSelectionUpdated(SelectionUpdatedEvent event) { //GWT.log("veiculos.getSelectedRecord()<<>> "+veiculos.getSelectedRecord()); TabInicio.posicoesSemEndereco.clear(); String placaVeiculo = veiculos.getSelectedRecord().getAttributeAsString("placa"); placaSelecionadaAtual = placaVeiculo; TabInicio.indexVeiculoPlaca = veiculos.getRecordIndex(veiculos.getSelectedRecord()); TabInicio.posicoesVeiculos.setData(new Record[0]); ArrayList<TreeMap<String, String>> posicoesVeiculo = (ArrayList<TreeMap<String, String>>) getListaVeiculos() .get(placaVeiculo); for (TreeMap<String, String> posicoes : posicoesVeiculo) { //if (posicoes.get("placa").equalsIgnoreCase(placaVeiculo)) { Record registro = new Record(); //registro.setAttribute("contador", i); registro.setAttribute("google", "<a href=\"http://maps.google.com.br/maps?q=" + posicoes.get("lat") + "," + posicoes.get("lon") + "\" title=\"Google maps\" target=\"_blank\"><img src=\"./imagens/mapa.png\" alt=\"Google\" height =\"16px\" width=\"16px\"></a>"); registro.setAttribute("codPosicao", Integer.parseInt(posicoes.get("codUltimo"))); registro.setAttribute("lat", posicoes.get("lat")); registro.setAttribute("lon", posicoes.get("lon")); registro.setAttribute("dataEhoraReal", Long.parseLong(posicoes.get("dataHora"))); //DateUtil.setDefaultDisplayTimezone("-03:00"); //registro.setAttribute("dataEhora", DateTimeFormat.getFormat(PredefinedFormat.DATE_TIME_MEDIUM).format(new Timestamp(Long.parseLong(posicoes.get("dataHora"))), TimeZone.createTimeZone(120))); registro.setAttribute("dataEhora", posicoes.get("dataHoraString")); //registro.setAttribute("sat", posicoes.get("sat")); registro.setAttribute("sat", posicoes.get("sat") + " <img src=\"../imagens/satelite.png\" width=\"16\" height=\"16\" alt=\"Satlite\" title=\"Satlite\"/>"); registro.setAttribute("gps", (posicoes.get("gps").equalsIgnoreCase("0")) ? "<nbr class=\"positivo\">Atualizado</nbr>" : "<nbr class=\"alerta\">Memria</nbr>"); registro.setAttribute("vel", posicoes.get("vel")); registro.setAttribute("ignReal", Boolean.parseBoolean(posicoes.get("ign"))); registro.setAttribute("ign", (Boolean.parseBoolean(posicoes.get("ign"))) ? "<img src=\"../imagens/ignligada.png\" width=\"16\" height=\"16\" alt=\"Ligada\" title=\"Ligada\"/>" : "<img src=\"../imagens/igndesligada.png\" width=\"16\" height=\"16\" alt=\"desligada\" title=\"Desligada\"/>"); registro.setAttribute("entrada", posicoes.get("entrada")); registro.setAttribute("saida", posicoes.get("saida")); registro.setAttribute("evento", posicoes.get("evento")); registro.setAttribute("endereco", (posicoes.get("endereco") == null) ? "Sem endereo" : posicoes.get("endereco")); registro.setAttribute("codDirecao", posicoes.get("codDirecao")); registro.setAttribute("direcao", posicoes.get("direcao")); registro.setAttribute("fabricante", posicoes.get("fabricante")); registro.setAttribute("modelo", posicoes.get("modelo")); registro.setAttribute("cor", posicoes.get("cor")); registro.setAttribute("ano", posicoes.get("ano")); registro.setAttribute("cliente", posicoes.get("nomeCliente")); //<a href=\"http://maps.google.com.br/maps?q="+lat+","+lon+"\" title=\"Google maps\" target=\"_blank\"><img src=\"./imagens/mapa.png\" alt=\"Google\" height =\"16px\" width=\"16px\"></a> TabInicio.posicoesVeiculos.addData(registro); //registro.setAttribute("contador", TabInicio.posicoesVeiculos.getRecordIndex(registro)); //posicoesVeiculos.refreshRecordComponent(TabInicio.posicoesVeiculos.getRecordIndex(registro), 0); //GWT.log("lat: "+posicoes.get("endereco")+" lon: "+posicoes.get("lon")+" end: "+posicoes.get("endereco")); if (posicoes.get("endereco") == null) { TabInicio.posicoesSemEndereco.add(registro); } //} } TabInicio.posicoesVeiculos.selectRecord(0, true); if (flagSemEndereco) { flagSemEndereco = false; Info.atualizaPosicoesSemEndereco.scheduleRepeating(5000); } //indexDecrescente = posicoesVeiculos.getRecords().length - 1; infoVeiculo.redraw(); //infoVeiculo.setTooltip("TESTE 2"); infoVeiculo.setContents("<strong style=\"font-size:15px; \"> " + Info.titulosMsg.get("placa") + ": " + placaVeiculo + " " + Info.titulosMsg.get("fabricante") + ": " + TabInicio.posicoesVeiculos.getRecord(0).getAttributeAsString("fabricante") + " " + Info.titulosMsg.get("modelo") + ": " + TabInicio.posicoesVeiculos.getRecord(0).getAttributeAsString("modelo") + " " + Info.titulosMsg.get("cor") + ": " + TabInicio.posicoesVeiculos.getRecord(0).getAttributeAsString("cor") + " " + Info.titulosMsg.get("ano") + ": " + TabInicio.posicoesVeiculos.getRecord(0).getAttributeAsString("ano") + ".</strong> Percorridos 0 metros. Tempo : 0."); } }); Info.atualizaVeiculosTodos = new Timer() { @Override public void run() { if (Info.validaConexao()) { //GWT.log("flagCincoPosicoes : " + flagCincoPosicoes + " flagPosicoesDemanda: " + flagPosicoesDemanda + " offSet: " + offSet + " offSetAux: " + offSetAux); if (flagCincoPosicoes && flagPosicoesDemanda && offSet > offSetAux) { //GWT.log("FLAG DE POSICOES OFFSET : " + flagPosicoesDemanda); flagPosicoesDemanda = false; //GWT.log("FLAG DE POSICOES OFFSET : " + flagPosicoesDemanda); //GWT.log("flagPosicoesDemanda: " + flagPosicoesDemanda + " codMinimaPosicao: " + offSet + " codMinimaPosicaoAux: " + offSetAux); Info.dbService.buscarVeiculoPorUsuarioLogadoTodas( Integer.parseInt(Info.usuarioLogado.get("codUsuario")), offSet, new AsyncCallback<TreeMap<String, Object>>() { @Override public void onFailure(Throwable caught) { SC.warn("ERRO - Falha na conexo com a internet - buscarVeiculoTodos"); } @Override public void onSuccess(TreeMap<String, Object> result) { if (result != null) { offSetAux = TabInicio.offSet; TabInicio.offSet = Integer .parseInt(String.valueOf(result.get("OFFSET"))); countThreadNovasDemanda = 0; //GWT.log("resultOFFSET .size(): " + result.size() + " codMinimaPosicao: " + offSet); //Info.enderecosResolvidos.clear(); Info.enderecosResolvidos .putAll((TreeMap<String, String>) result.get("ENDERECO")); // diz para a thread que a busca pelas 100 posicoes foi feita; Record registro = new Record(); registro.setAttribute("dataHoraReal", new Timestamp(System.currentTimeMillis()).getTime()); registro.setAttribute("log", "Linha da Thread atualiza Veiculos por OFFSET : " + DateTimeFormat .getFormat(PredefinedFormat.DATE_TIME_MEDIUM) .format(new Timestamp( System.currentTimeMillis()))); TabLog.log.addData(registro); TabInicio.listaVeiculos.putAll(result); String placaSelecao = null; long dataReal = 0; ArrayList<TreeMap<String, String>> lista = new ArrayList<>(); //GWT.log("Por OFFSET TABELAVEICULODESENHADA 00 : " + TABELAVEICULODESENHADA); if (TabInicio.TABELAVEICULODESENHADA) { //GWT.log("1 Por OFFSET TABELAVEICULODESENHADA : " + TabInicio.TABELAVEICULODESENHADA); //GWT.log("2 Por OFFSET TABELAVEICULODESENHADA placaSelecao : " + placaSelecao); placaSelecao = veiculos.getSelectedRecord() .getAttributeAsString("placa"); //GWT.log("3 Por OFFSET TABELAVEICULODESENHADA placaSelecao : " + placaSelecao); lista = (ArrayList<TreeMap<String, String>>) TabInicio.listaVeiculos .get(placaSelecao); //GWT.log("4 Por OFFSET TABELAVEICULODESENHADA placaSelecao : " + placaSelecao); //GWT.log("Por OFFSET POSICOES - placaSelecao: " + placaSelecao+" - DataReal: "+posicoesVeiculos.getRecord(posicoesVeiculos.getRecords().length - 1).getAttributeAsLong("dataEhoraReal")); dataReal = TabInicio.posicoesVeiculos .getRecord( TabInicio.posicoesVeiculos.getRecords().length - 1) .getAttributeAsLong("dataEhoraReal"); //GWT.log("Por OFFSET POSICOES - placaSelecao: " + placaSelecao+" - DataReal: "+dataReal); } if (!lista.isEmpty()) { TabInicio.posicoesSemEndereco.clear(); for (TreeMap<String, String> k : lista) { Record registroPosicion = new Record(); //registroPosicion.setAttribute("contador", "<strong>NV</strong>"); registroPosicion.setAttribute("google", "<a href=\"http://maps.google.com.br/maps?q=" + k.get("lat") + "," + k.get("lon") + "\" title=\"Google maps\" target=\"_blank\"><img src=\"./imagens/mapa.png\" alt=\"Google\" height =\"16px\" width=\"16px\"></a>"); registroPosicion.setAttribute("codPosicao", Integer.parseInt(k.get("codUltimo"))); registroPosicion.setAttribute("lat", k.get("lat")); registroPosicion.setAttribute("lon", k.get("lon")); registroPosicion.setAttribute("dataEhoraReal", Long.parseLong(k.get("dataHora"))); //DateUtil.setDefaultDisplayTimezone("-03:00"); //registroPosicion.setAttribute("dataEhora", DateTimeFormat.getFormat(PredefinedFormat.DATE_TIME_MEDIUM).format(new Timestamp(Long.parseLong(k.get("dataHora"))), TimeZone.createTimeZone(120))); registroPosicion.setAttribute("dataEhora", k.get("dataHoraString")); //registroPosicion.setAttribute("sat", k.get("sat")); registroPosicion.setAttribute("sat", k.get("sat") + " <img src=\"../imagens/satelite.png\" width=\"16\" height=\"16\" alt=\"Satlite\" title=\"Satlite\"/>"); registroPosicion.setAttribute("gps", (k.get("gps").equalsIgnoreCase("0")) ? "<nbr class=\"positivo\">Atualizado</nbr>" : "<nbr class=\"alerta\">Memria</nbr>"); registroPosicion.setAttribute("vel", k.get("vel")); registroPosicion.setAttribute("ignReal", Boolean.parseBoolean(k.get("ign"))); //registroPosicion.setAttribute("ign", (Boolean.parseBoolean(k.get("ign"))) ? "<nbr class=\"positivo\">Ligada</nbr>" : "<nbr class=\negativo\">Desligada</nbr>"); registroPosicion.setAttribute("ign", (Boolean.parseBoolean(k.get("ign"))) ? "<img src=\"../imagens/ignligada.png\" width=\"16\" height=\"16\" alt=\"Ligada\" title=\"Ligada\"/>" : "<img src=\"../imagens/igndesligada.png\" width=\"16\" height=\"16\" alt=\"desligada\" title=\"Desligada\"/>"); registroPosicion.setAttribute("entrada", k.get("entrada")); registroPosicion.setAttribute("saida", k.get("saida")); registroPosicion.setAttribute("evento", k.get("evento")); registroPosicion.setAttribute("endereco", (k.get("endereco") == null) ? "Sem endereo" : k.get("endereco")); registroPosicion.setAttribute("codDirecao", k.get("codDirecao")); registroPosicion.setAttribute("direcao", k.get("direcao")); registroPosicion.setAttribute("fabricante", k.get("fabricante")); registroPosicion.setAttribute("modelo", k.get("modelo")); registroPosicion.setAttribute("cor", k.get("cor")); registroPosicion.setAttribute("ano", k.get("ano")); registroPosicion.setAttribute("cliente", k.get("nomeCliente")); //GWT.log("atualizaVeiculosTodos: lat: "+k.get("endereco")+" lon: "+k.get("lon")+" end: "+k.get("endereco")); if (Long.parseLong(k.get("dataHora")) < dataReal) { TabInicio.posicoesVeiculos.addData(registroPosicion); } if (k.get("endereco") == null) { TabInicio.posicoesSemEndereco.add(registroPosicion); } } } //GWT.log("Por OFFSET POSICOES 2 : " + flagPosicoesDemanda); flagPosicoesDemanda = true; //GWT.log("Por OFFSET POSICOES 3 : " + flagPosicoesDemanda); } else { //veiculos.setDataSource(new DataSource()); countThreadNovasDemanda++; GWT.log("LISTA DE POSIES EM LOTE EST? VAZIA!"); flagPosicoesDemanda = true; } } }); } else { //countThreadNovasDemanda++; //flagPosicoesDemanda = true; GWT.log("ESPERANDO............. " + countThreadNovasDemanda); } } else { SC.warn("***** Voc est offline *****"); } } }; Info.atualizaVeiculosTodos.scheduleRepeating(5000); Info.atualizaVeiculosNovasPosicoes = new Timer() { @Override public void run() { if (Info.validaConexao()) { if (countThreadNovasPosicoes > 23) { flagNovasPosicoes = true; countThreadNovasPosicoes = 0; codUltimaPosicaoAux = 1; } if (countThreadNovasDemanda > 48) { TabInicio.offSet = 0; offSetAux = -1; countThreadNovasDemanda = 0; //GWT.log("CANCELANDO: Info.atualizaVeiculosTodos.cancel()!"); Info.atualizaVeiculosTodos.cancel(); //GWT.log("CANCELADO: Info.atualizaVeiculosTodos.cancel()!"); } //GWT.log("ANTES DO IF : inicio: "+inicio+" CINCO POSICOES: "+flagCincoPosicoes+" FLAG CEM POSICOES: "+flagPosicoesDemanda+" FLAG NOVAS POSICOES: " +flagNovasPosicoes + " codUltimaPosicao: "+codUltimaPosicao+" codUltimaPosicaoAux: "+codUltimaPosicaoAux); if (flagCincoPosicoes && flagNovasPosicoes && TabInicio.codUltimaPosicao > codUltimaPosicaoAux) { //GWT.log("FLAG DE NOVAS POSICOES 2 : " + flagNovasPosicoes); flagNovasPosicoes = false; //GWT.log("FLAG DE NOVAS POSICOES 3 : " + flagNovasPosicoes); //GWT.log("(TabInicio) - buscarVeiculoPorUsuarioLogadoPosicoesNovas: codUsuario: " + Info.usuarioLogado.get("codUsuario") + " codUltimaPosicao: " + codUltimaPosicao); //GWT.log("CodUsurio: "+Info.usuarioLogado.get("codUsuario")+" Info.posicoesSemEndereco: "+TabInicio.posicoesSemEndereco.size()); Info.dbService.buscarVeiculoPorUsuarioLogadoPosicoesNovas( Integer.parseInt(Info.usuarioLogado.get("codUsuario")), TabInicio.codUltimaPosicao, new AsyncCallback<TreeMap<String, Object>>() { @Override public void onFailure(Throwable caught) { SC.warn("Falha na conexo - PosicoesNovas"); } @Override public void onSuccess(TreeMap<String, Object> result) { //Timestamp dataUltimaPosicaoAuxiliar = new Timestamp((Long.parseLong(listaVeiculosAuxiliar.get(veiculos.getSelectedRecord().getAttributeAsString("placa")).get(0).get("dataHora")))); //GWT.log("LINHA do buscar posicoes novas!"); //flagNovasPosicoes = true; countThreadNovasPosicoes = 0; //GWT.log("LINHA do buscar posicoes novas: "+codUltimaPosicao); if (result != null) { codUltimaPosicaoAux = TabInicio.codUltimaPosicao; TabInicio.codUltimaPosicao = Integer .parseInt(String.valueOf(result.get("MAXIMO"))); Record registro = new Record(); registro.setAttribute("dataHoraReal", new Timestamp(System.currentTimeMillis()).getTime()); registro.setAttribute("log", "Linha da Thread atualiza novas Posicoes: " + DateTimeFormat .getFormat(PredefinedFormat.DATE_TIME_MEDIUM) .format(new Timestamp(System.currentTimeMillis()))); TabLog.log.addData(registro); //GWT.log("LINHA 00 NOVAS POSICOES - M?XIMO: "+result.get("MAXIMO")); //veiculos.selectRecord(indexVeiculoPlaca); String placaSelecao = null; //GWT.log("FLAG DE NOVAS POSICOES TABELAVEICULODESENHADA 00 : " + TABELAVEICULODESENHADA); if (TabInicio.TABELAVEICULODESENHADA) { //GWT.log("FLAG DE NOVAS POSICOES TABELAVEICULODESENHADA : " + TABELAVEICULODESENHADA); placaSelecao = veiculos.getSelectedRecord() .getAttributeAsString("placa"); //GWT.log("LINHA 0001 NOVAS POSICOES - PLACA: " + placaSelecao); } //GWT.log("TABELA DESENHADA: " + TABELAVEICULODESENHADA); if (Integer.parseInt((String) result.get("MAXIMO")) > 0) { //GWT.log("LINHA 00012 NOVAS POSICOES - PLACA: "+placaSelecao); Info.enderecosResolvidos .putAll((TreeMap<String, String>) result.get("ENDERECO")); //GWT.log("LINHA 01 NOVAS POSICOES - ENDERECOS RESOLVIDOS: " + Info.enderecosResolvidos.size()); for (java.util.Map.Entry<String, Object> entrySet : result .entrySet()) { //GWT.log("LINHA 02 NOVAS POSICOES" + codUltimaPosicao); String key = entrySet.getKey(); if (!key.equalsIgnoreCase("OFFSET") && !key.equalsIgnoreCase("MAXIMO") && !key.equalsIgnoreCase("MINIMO") && !key.equalsIgnoreCase("ENDERECO") && !key.equalsIgnoreCase("GRUPO")) { //if (!key.equalsIgnoreCase("MINIMO") && !key.equalsIgnoreCase("MAXIMO") && !key.equalsIgnoreCase("ENDERECO")) { //GWT.log("LINHA 03 NOVAS POSICOES" + codUltimaPosicao); ArrayList<TreeMap<String, String>> value = (ArrayList<TreeMap<String, String>>) entrySet .getValue(); if (TabInicio.listaVeiculos.containsKey(key)) { //GWT.log("LINHA 04 PLACA: "+key+" LINHA 04 NOVAS POSICOES" + codUltimaPosicao); for (TreeMap<String, String> k : value) { //GWT.log("LINHA 05: "+key+" LINHA 05 NOVAS POSICOES" + codUltimaPosicao); ArrayList<TreeMap<String, String>> lista = (ArrayList<TreeMap<String, String>>) TabInicio.listaVeiculos .get(key); TreeSet<TreeMap<String, String>> treeSetAux = new TreeSet<>( new OrdenaPosicao()); treeSetAux.addAll(lista); //GWT.log("LINHA 06 Placa novas: "); if (treeSetAux.add(k)) { //GWT.log("LINHA 07 Placa novas: "); if (key.equalsIgnoreCase(placaSelecao)) { //GWT.log("LINHA 08 Placa novas: "); //GWT.log("REMOVER: "+TabInicio.posicoesVeiculos.getRecord(TabInicio.posicoesVeiculos.getRecords().length - 1).getAttributeAsString("codPosicao")); ListGridRecord[] selecionados = TabInicio.posicoesVeiculos .getSelectedRecords(); int indexSelecao = -5; int auxIndex = -3; if (selecionados.length == 1) { //GWT.log("LINHA 09 Placa novas: "); int index = TabInicio.posicoesVeiculos .getRecordIndex( TabInicio.posicoesVeiculos .getSelectedRecord()); //GWT.log("LINHA 10 Placa novas: "); if (index == 0) { //GWT.log("LINHA 11 Placa novas: " + key); TabInicio.posicoesVeiculos .deselectAllRecords(); indexSelecao = 0; //GWT.log("LINHA 12 Placa novas: "); } else if (index == TabInicio.posicoesVeiculos .getRecords().length - 1) { //GWT.log("LINHA 13 Placa novas: "); //if(TabInicio.posicoesVeiculos.getRecords().length <= 100){ TabInicio.posicoesVeiculos .deselectAllRecords(); //GWT.log("LINHA 14 Placa novas: "); indexSelecao = index; auxIndex = index; //GWT.log("Index ltimo 15: " + indexSelecao); } } if (TabInicio.posicoesVeiculos .getRecords().length >= 100) { //GWT.log("LINHA 16 Placa novas: "); TabInicio.posicoesVeiculos.removeData( TabInicio.posicoesVeiculos .getRecord( TabInicio.posicoesVeiculos .getRecords().length - 1)); //GWT.log("LINHA 17 Placa novas: "); } //GWT.log("LINHA 18 Placa novas: "); Record registroPosicion = new Record(); registroPosicion.setAttribute("google", "<a href=\"http://maps.google.com.br/maps?q=" + k.get("lat") + "," + k.get("lon") + "\" title=\"Google maps\" target=\"_blank\"><img src=\"./imagens/mapa.png\" alt=\"Google\" height =\"16px\" width=\"16px\"></a>"); registroPosicion.setAttribute("codPosicao", Integer.parseInt( k.get("codUltimo"))); registroPosicion.setAttribute("lat", k.get("lat")); registroPosicion.setAttribute("lon", k.get("lon")); registroPosicion.setAttribute( "dataEhoraReal", Long.parseLong(k.get("dataHora"))); registroPosicion.setAttribute("dataEhora", k.get("dataHoraString")); registroPosicion.setAttribute("sat", k .get("sat") + " <img src=\"../imagens/satelite.png\" width=\"16\" height=\"16\" alt=\"Satlite\" title=\"Satlite\"/>"); registroPosicion.setAttribute("gps", (k.get("gps").equalsIgnoreCase("0")) ? "<nbr class=\"positivo\">Atualizado</nbr>" : "<nbr class=\"alerta\">Memria</nbr>"); registroPosicion.setAttribute("vel", k.get("vel")); registroPosicion.setAttribute("ignReal", Boolean.parseBoolean(k.get("ign"))); registroPosicion.setAttribute("ign", (Boolean.parseBoolean(k.get("ign"))) ? "<img src=\"../imagens/ignligada.png\" width=\"16\" height=\"16\" alt=\"Ligada\" title=\"Ligada\"/>" : "<img src=\"../imagens/igndesligada.png\" width=\"16\" height=\"16\" alt=\"desligada\" title=\"Desligada\"/>"); registroPosicion.setAttribute("entrada", k.get("entrada")); registroPosicion.setAttribute("saida", k.get("saida")); registroPosicion.setAttribute("evento", k.get("evento")); registroPosicion.setAttribute("endereco", (k.get("endereco") == null) ? "Sem endereo" : k.get("endereco")); registroPosicion.setAttribute("codDirecao", k.get("codDirecao")); registroPosicion.setAttribute("direcao", k.get("direcao")); registroPosicion.setAttribute("fabricante", k.get("fabricante")); registroPosicion.setAttribute("modelo", k.get("modelo")); registroPosicion.setAttribute("cor", k.get("cor")); registroPosicion.setAttribute("ano", k.get("ano")); registroPosicion.setAttribute("cliente", k.get("nomeCliente")); TabInicio.posicoesVeiculos .addData(registroPosicion); //GWT.log("atualizaVeiculosNovasPosicoes: lat: "+k.get("endereco")+" lon: "+k.get("lon")+" end: "+k.get("endereco")); if (k.get("endereco") == null) { TabInicio.posicoesSemEndereco .add(registroPosicion); } //GWT.log("LINHA 19 Placa novas: "); //GWT.log("POSICAO NOVA: "+k); if ((selecionados.length == 1 && indexSelecao == 0) || (selecionados.length == 1 && indexSelecao == auxIndex)) { //GWT.log("LINHA 20 Placa novas: "); TabInicio.posicoesVeiculos .selectRecord(indexSelecao); //GWT.log("Index Selecionado: " + indexSelecao); //GWT.log("LINHA 21 Placa novas: "); } //GWT.log("ENDEREO - POSICOES NOVAS: "+registroPosicion.getAttributeAsString("endereco")); if (registroPosicion .getAttributeAsString("endereco") .equalsIgnoreCase( "Sem endereo")) { //GWT.log("LINHA 22 Placa novas: "); //int indexNovaPosicao = TabInicio.posicoesVeiculos.getRecordIndex(registroPosicion); TabInicio.posicoesSemEndereco .add(registroPosicion); //GWT.log("LINHA 23 Placa novas: "); buscaEndereco(registroPosicion .getAttributeAsString("lat"), registroPosicion .getAttributeAsString( "lon"), key, registroPosicion); //GWT.log("LINHA 24 Placa novas: "); //GWT.log("LINHA DA CHEGADA DA NOVA POSICAO"); } } if (treeSetAux.size() >= 100) { //GWT.log("LINHA 25 Placa novas: "); treeSetAux.pollLast(); //GWT.log("LINHA 26 Placa novas: "); } //GWT.log("LINHA 07 NOVAS POSICOES - REMOVEU LTIMO: " +treeSetAux.size()); lista.clear(); lista.addAll(treeSetAux); //GWT.log("LINHA 27 Placa novas: "); //GWT.log("LINHA 08 NOVAS POSICOES - ADICIONOU TREESET A LISTA: "+lista.size()); TabInicio.listaVeiculos.put(key, lista); //GWT.log("LINHA 28 Placa novas: "); //GWT.log("LINHA 09 NOVAS POSICOES - ADICIONOU LISTA AO TREEMAP GERAL"); } } } else { //GWT.log("LINHA 29 Placa novas: "); TabInicio.listaVeiculos.put(key, value); Record recordVeiculos = new Record(); recordVeiculos.setAttribute("icone", value.get(0).get("codIcone")); recordVeiculos.setAttribute("placa", value.get(0).get("placa")); recordVeiculos.setAttribute("grupo", value.get(0).get("nomeGrupo")); TabInicio.dataSourcePlacas.addData(recordVeiculos); TabInicio.veiculos.fetchData(); if (!TabHistorico.codPlacasHistorico .containsKey(value.get(0).get("codVeiculo"))) { TabHistorico.codPlacasHistorico.put( value.get(0).get("codVeiculo"), value.get(0).get("codVeiculo")); Record recordVeiculosHist = new Record(); recordVeiculosHist.setAttribute("codigo", value.get(0).get("codVeiculo")); recordVeiculosHist.setAttribute("placa", value.get(0).get("placa")); recordVeiculosHist.setAttribute("fabricante", value.get(0).get("fabricante")); recordVeiculosHist.setAttribute("modelo", value.get(0).get("modelo")); recordVeiculosHist.setAttribute("cor", value.get(0).get("cor")); recordVeiculosHist.setAttribute("ano", value.get(0).get("ano")); recordVeiculosHist.setAttribute("icone", value.get(0).get("codIcone")); recordVeiculosHist.setAttribute("grupo", Info.usuarioLogado.get("nomeGrupo")); recordVeiculosHist.setAttribute("cliente", value.get(0).get("nomeCliente")); //GWT.log("LINHA 32 Placa novas: "); TabHistorico.dataSoucePlacas .addData(recordVeiculosHist); TabHistorico.veiculos.fetchData(); } } } } } //GWT.log("LINHA 34 Placa novas: "); // diz para a thread que a consulta das novas posicoes foi feita; flagNovasPosicoes = true; //GWT.log("LINHA 35 Placa novas: "); } else { GWT.log("LISTA VAZIA!!!"); flagNovasPosicoes = true; } } }); } else { //GWT.log("FLAG DE NOVAS POSICOES 4 : " + flagNovasPosicoes); countThreadNovasPosicoes++; //GWT.log("Contador de espera das novas posicoes: " + countThreadNovasPosicoes); // GWT.log("FLAG DE NOVAS POSICOES 5 : " + flagNovasPosicoes); } } else { SC.warn("..:: Voc est offline ::.."); } } }; Info.atualizaVeiculosNovasPosicoes.scheduleRepeating(5000); Info.atualizaPosicoesSemEndereco = new Timer() { @Override public void run() { if (Info.validaConexao()) { final String placaSelecao = TabInicio.veiculos.getSelectedRecord() .getAttributeAsString("placa"); //GWT.log("Placa INCIIO : "+placaSelecao); if (TabInicio.posicoesSemEndereco.size() > 0) { for (Record posicaoSemEndereco : TabInicio.posicoesSemEndereco) { latEndereco = posicaoSemEndereco.getAttributeAsString("lat"); lonEndereco = posicaoSemEndereco.getAttributeAsString("lon"); String latLng = String.valueOf(latEndereco) + ";" + String.valueOf(lonEndereco); if (Info.enderecosResolvidos.containsKey(latLng)) { int index = TabInicio.posicoesVeiculos.getRecordIndex(posicaoSemEndereco); if (index != -1) { GWT.log("Info.enderecosResolvidos: " + "lat: " + latEndereco + " lon: " + lonEndereco + " end: " + Info.enderecosResolvidos.get(latLng)); TabInicio.posicoesVeiculos.getRecord(index).setAttribute("endereco", Info.enderecosResolvidos.get(latLng)); TabInicio.posicoesVeiculos.markForRedraw(); TabInicio.posicoesVeiculos.refreshRecordComponent(index, 13); TabInicio.posicoesSemEndereco.remove(posicaoSemEndereco); TreeMap<String, String> enderecoPosicao = new TreeMap<>(); enderecoPosicao.put("placa", placaSelecao); //GWT.log("Placa selecionada INICIO 1 "+placaSelecao); enderecoPosicao.put("lat", latEndereco); enderecoPosicao.put("lon", lonEndereco); TabInicio.posicoesSemEndereco.remove(posicaoSemEndereco); ArrayList<TreeMap<String, String>> posicaoPlacaAux = (ArrayList<TreeMap<String, String>>) TabInicio .getListaVeiculos().get(placaSelecao); for (int i = 0; i < posicaoPlacaAux.size(); i++) { //GWT.log("LINHA 999 TabInicio.FLAG_CONSULTA_ENDERECO_GOOGLE; placaSelecao: "+placaSelecao); if (Double.parseDouble(posicaoPlacaAux.get(i).get("lat")) == Double .parseDouble(latEndereco) && Double.parseDouble(posicaoPlacaAux.get(i).get("lon")) == Double .parseDouble(lonEndereco)) { TreeMap<String, String> pAux = posicaoPlacaAux.get(i); pAux.put("endereco", Info.enderecosResolvidos.get(latLng)); posicaoPlacaAux.set(i, pAux); } } TabInicio.setListaVeiculos(placaSelecao, posicaoPlacaAux); Info.dbService.atualizarPosicaoEndereco(enderecoPosicao, new AsyncCallback<Boolean>() { @Override public void onFailure(Throwable caught) { Window.alert( "atualizarPosicaoEnderecoInicio - A remote interface failure !: " + caught.getMessage()); } @Override public void onSuccess(Boolean result) { //GWT.log("Endereco atualizado no BD : " + result); } }); } } else { //for (int i = 0; i < 20; i++) { //if (i == 19) { if (flagBuscaEndereco) { flagBuscaEndereco = false; GWT.log("Meu sleep forado 1"); buscaEndereco(latEndereco, lonEndereco, placaSelecao, posicaoSemEndereco); GWT.log("Meu sleep forado 2"); } //} //} } } } else { //TabInicio.LIMIT_CONSULTA_ENDERECO_GOOGLE = 0; } } else { SC.warn("Voc est Offline!"); } } }; } private void buscaEndereco(final String lat, final String lon, final String placa, final Record record) { //String resposta = "Sem endereo"; GWT.log("LINHA 01"); TreeMap<String, String> posicoesEndereco = new TreeMap<>(); posicoesEndereco.put("lat", lat); posicoesEndereco.put("lon", lon); posicoesEndereco.put("placa", placa); GWT.log("LINHA 03"); String latLon = lat + "," + lon; Info.enderecoGoogleInicio(latLon, lat, lon, placa, record); // Info.dbService.resolveEnderecoExterno(latLon, new AsyncCallback<String>() { // @Override // public void onFailure(Throwable caught) { // flagBuscaEndereco = true; // SC.warn("ERRO ao resolver endereo!"); // } // // @Override // public void onSuccess(String resposta) { // GWT.log("Resposta: "+resposta); // if ( resposta != null) { // // if (Info.validaConexao()) { // // int index = TabInicio.posicoesVeiculos.getRecordIndex(record); // if (index != -1) { // TabInicio.posicoesSemEndereco.remove(record); // Info.enderecosResolvidos.put(lat + ";" + lon, resposta); // // if (TabInicio.posicoesVeiculos.getRecord(index).getAttributeAsDouble("lat") == Double.parseDouble(lat) && TabInicio.posicoesVeiculos.getRecord(index).getAttributeAsDouble("lon") == Double.parseDouble(lon)) { // TabInicio.posicoesVeiculos.getRecord(index).setAttribute("endereco", resposta); // TabInicio.posicoesVeiculos.markForRedraw(); // TabInicio.posicoesVeiculos.refreshRecordComponent(index, 13); // //GWT.log("LINHA 10 TabInicio.FLAG_CONSULTA_ENDERECO_GOOGLE"); // } // TreeMap<String, String> enderecoPosicao = new TreeMap<>(); // enderecoPosicao.put("placa", placa); // //GWT.log("Placa selecionada INICIO 2 "+placa); // enderecoPosicao.put("lat", lat); // enderecoPosicao.put("lon", lon); // enderecoPosicao.put("endereco", resposta); // ArrayList<TreeMap<String, String>> posicaoPlacaAux = (ArrayList<TreeMap<String, String>>) TabInicio.getListaVeiculos().get(placa); // // for (int i = 0; i < posicaoPlacaAux.size(); i++) { // if (Double.parseDouble(posicaoPlacaAux.get(i).get("lat")) == Double.parseDouble(lat) && Double.parseDouble(posicaoPlacaAux.get(i).get("lon")) == Double.parseDouble(lon)) { // TreeMap<String, String> pAux = posicaoPlacaAux.get(i); // pAux.put("endereco", resposta); // posicaoPlacaAux.set(i, pAux); // GWT.log("Endereco alterado: lat: " + lat + " lon" + lon + " pAux: " + resposta); // } // } // TabInicio.setListaVeiculos(placa, posicaoPlacaAux); // // Info.dbService.cadastrarPosicaoEndereco(enderecoPosicao, new AsyncCallback<Integer>() { // // @Override // public void onFailure(Throwable caught) { // flagBuscaEndereco = true; // Window.alert("cadastrarPosicaoEnderecoInicio - A remote interface failure !: " + caught.getMessage()); // } // // @Override // public void onSuccess(Integer result) { // //TabInicio.semafaro = true; // flagBuscaEndereco = true; // GWT.log("ltima posico cadastrada: " + result); // } // }); // // } else { // TabInicio.posicoesSemEndereco.remove(record); // Info.enderecosResolvidos.put(lat + ";" + lon, resposta); // TreeMap<String, String> enderecoPosicao = new TreeMap<>(); // enderecoPosicao.put("placa", placa); // enderecoPosicao.put("lat", lat); // enderecoPosicao.put("lon", lon); // enderecoPosicao.put("endereco", resposta); // GWT.log("enderecoPosicao 22: lat: " + lat + " long: " + lon + " end: " + enderecoPosicao); // Info.dbService.cadastrarPosicaoEndereco(enderecoPosicao, new AsyncCallback<Integer>() { // // @Override // public void onFailure(Throwable caught) { // flagBuscaEndereco = true; // } // // @Override // public void onSuccess(Integer result) { // flagBuscaEndereco = true; // GWT.log("ltima posico cadastrada 2: " + result); // } // }); // //TabInicio.FLAG_CONSULTA_ENDERECO_GOOGLE = true; // } // } else { // SC.warn("Voc est Offline"); // } // // } else { // flagBuscaEndereco = true; // GWT.log("Sem endereo no meu BD"); // } // } // }); } public static void enderecoGoogle(final String resposta, String lat, String lon, String placa, Record record) { GWT.log("ENDEREO GOOGLE: " + resposta); if (resposta != null) { if (Info.validaConexao()) { int index = TabInicio.posicoesVeiculos.getRecordIndex(record); if (index != -1) { TabInicio.posicoesSemEndereco.remove(record); Info.enderecosResolvidos.put(lat + ";" + lon, resposta); if (TabInicio.posicoesVeiculos.getRecord(index).getAttributeAsDouble("lat") == Double .parseDouble(lat) && TabInicio.posicoesVeiculos.getRecord(index).getAttributeAsDouble("lon") == Double .parseDouble(lon)) { TabInicio.posicoesVeiculos.getRecord(index).setAttribute("endereco", resposta); TabInicio.posicoesVeiculos.markForRedraw(); TabInicio.posicoesVeiculos.refreshRecordComponent(index, 13); //GWT.log("LINHA 10 TabInicio.FLAG_CONSULTA_ENDERECO_GOOGLE"); } TreeMap<String, String> enderecoPosicao = new TreeMap<>(); enderecoPosicao.put("placa", placa); //GWT.log("Placa selecionada INICIO 2 "+placa); enderecoPosicao.put("lat", lat); enderecoPosicao.put("lon", lon); enderecoPosicao.put("endereco", resposta); ArrayList<TreeMap<String, String>> posicaoPlacaAux = (ArrayList<TreeMap<String, String>>) TabInicio .getListaVeiculos().get(placa); for (int i = 0; i < posicaoPlacaAux.size(); i++) { if (Double.parseDouble(posicaoPlacaAux.get(i).get("lat")) == Double.parseDouble(lat) && Double.parseDouble(posicaoPlacaAux.get(i).get("lon")) == Double .parseDouble(lon)) { TreeMap<String, String> pAux = posicaoPlacaAux.get(i); pAux.put("endereco", resposta); posicaoPlacaAux.set(i, pAux); GWT.log("Endereco alterado: lat: " + lat + " lon" + lon + " pAux: " + resposta); } } TabInicio.setListaVeiculos(placa, posicaoPlacaAux); Info.dbService.cadastrarPosicaoEndereco(enderecoPosicao, new AsyncCallback<Integer>() { @Override public void onFailure(Throwable caught) { Window.alert("cadastrarPosicaoEnderecoInicio - A remote interface failure !: " + caught.getMessage()); } @Override public void onSuccess(Integer result) { //TabInicio.semafaro = true; flagBuscaEndereco = true; GWT.log("ltima posico cadastrada: " + result); } }); } else { TabInicio.posicoesSemEndereco.remove(record); Info.enderecosResolvidos.put(lat + ";" + lon, resposta); TreeMap<String, String> enderecoPosicao = new TreeMap<>(); enderecoPosicao.put("placa", placa); enderecoPosicao.put("lat", lat); enderecoPosicao.put("lon", lon); enderecoPosicao.put("endereco", resposta); GWT.log("enderecoPosicao 22: lat: " + lat + " long: " + lon + " end: " + enderecoPosicao); Info.dbService.cadastrarPosicaoEndereco(enderecoPosicao, new AsyncCallback<Integer>() { @Override public void onFailure(Throwable caught) { flagBuscaEndereco = true; throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. } @Override public void onSuccess(Integer result) { flagBuscaEndereco = true; GWT.log("ltima posico cadastrada 2: " + result); } }); //TabInicio.FLAG_CONSULTA_ENDERECO_GOOGLE = true; } } else { SC.warn("Voc est Offline"); } } else { flagBuscaEndereco = true; GWT.log("Sem endereo no meu BD"); } } public void sortPosicoes(ListGridRecord[] list) { ListGridRecord temp; for (int j = 0; j <= list.length - 1; j++) { for (int k = 0; k <= list.length - 2; ++k) { if (list[k].getAttributeAsLong("dataEhoraReal") < list[k + 1].getAttributeAsLong("dataEhoraReal")) { temp = list[k]; list[k] = list[k + 1]; list[k + 1] = temp; } } } Info.listaSeleciona = list; mapaInicioOpenLayer.clearMarkers(); latAnt = 0; lonAnt = 0; latAtual = 0; lonAtual = 0; distancia = 0; distanciaTotal = 0; infoVeiculo.redraw(); infoVeiculo.setContents("<strong style=\"font-size:15px; \"> " + Info.titulosMsg.get("placa") + ": " + TabInicio.veiculos.getSelectedRecord().getAttributeAsString("placa") + " " + Info.titulosMsg.get("fabricante") + ": " + TabInicio.posicoesVeiculos.getRecord(0).getAttributeAsString("fabricante") + " " + Info.titulosMsg.get("modelo") + ": " + TabInicio.posicoesVeiculos.getRecord(0).getAttributeAsString("modelo") + " " + Info.titulosMsg.get("cor") + ": " + TabInicio.posicoesVeiculos.getRecord(0).getAttributeAsString("cor") + " " + Info.titulosMsg.get("ano") + ": " + TabInicio.posicoesVeiculos.getRecord(0).getAttributeAsString("ano") + ".</strong> Percorridos 0 metros. Tempo : 0."); // GWT.log("Linha do IF!"); for (int j = 0; j < list.length; j++) { direcaoPosicao = list[j].getAttributeAsInt("codDirecao"); icone = "./imagens/ponto_desligado.png"; nomeCliente = ((Info.usuarioLogado.get("codUnidadeCliente") == null) ? "</strong></br>Cliente: <strong>" + list[j].getAttributeAsString("cliente") + "</strong>" : ""); if (j == 0) { distancia = 0; if (list[j].getAttributeAsString("ignReal").equalsIgnoreCase("false")) { if (direcaoPosicao == 0) { icone = "./imagens/" + TabInicio.veiculos.getSelectedRecord().getAttribute("icone") + "/parado_desligado.png"; } else if (direcaoPosicao == 1) { icone = "./imagens/" + TabInicio.veiculos.getSelectedRecord().getAttribute("icone") + "/norte_desligado.png"; } else if (direcaoPosicao == 2) { icone = "./imagens/" + TabInicio.veiculos.getSelectedRecord().getAttribute("icone") + "/nordeste_desligado.png"; } else if (direcaoPosicao == 3) { icone = "./imagens/" + TabInicio.veiculos.getSelectedRecord().getAttribute("icone") + "/leste_desligado.png"; } else if (direcaoPosicao == 4) { icone = "./imagens/" + TabInicio.veiculos.getSelectedRecord().getAttribute("icone") + "/sudeste_desligado.png"; } else if (direcaoPosicao == 5) { icone = "./imagens/" + TabInicio.veiculos.getSelectedRecord().getAttribute("icone") + "/sul_desligado.png"; } else if (direcaoPosicao == 6) { icone = "./imagens/" + TabInicio.veiculos.getSelectedRecord().getAttribute("icone") + "/sudoeste_desligado.png"; } else if (direcaoPosicao == 7) { icone = "./imagens/" + TabInicio.veiculos.getSelectedRecord().getAttribute("icone") + "/oeste_desligado.png"; } else if (direcaoPosicao == 8) { icone = "./imagens/" + TabInicio.veiculos.getSelectedRecord().getAttribute("icone") + "/noroeste_desligado.png"; } } else { if (direcaoPosicao == 0) { icone = "./imagens/" + TabInicio.veiculos.getSelectedRecord().getAttribute("icone") + "/parado_ligado.png"; } else if (direcaoPosicao == 1) { icone = "./imagens/" + TabInicio.veiculos.getSelectedRecord().getAttribute("icone") + "/norte_ligado.png"; } else if (direcaoPosicao == 2) { icone = "./imagens/" + TabInicio.veiculos.getSelectedRecord().getAttribute("icone") + "/nordeste_ligado.png"; } else if (direcaoPosicao == 3) { icone = "./imagens/" + TabInicio.veiculos.getSelectedRecord().getAttribute("icone") + "/leste_ligado.png"; } else if (direcaoPosicao == 4) { icone = "./imagens/" + TabInicio.veiculos.getSelectedRecord().getAttribute("icone") + "/sudeste_ligado.png"; } else if (direcaoPosicao == 5) { icone = "./imagens/" + TabInicio.veiculos.getSelectedRecord().getAttribute("icone") + "/sul_ligado.png"; } else if (direcaoPosicao == 6) { icone = "./imagens/" + TabInicio.veiculos.getSelectedRecord().getAttribute("icone") + "/sudoeste_ligado.png"; } else if (direcaoPosicao == 7) { icone = "./imagens/" + TabInicio.veiculos.getSelectedRecord().getAttribute("icone") + "/oeste_ligado.png"; } else if (direcaoPosicao == 8) { icone = "./imagens/" + TabInicio.veiculos.getSelectedRecord().getAttribute("icone") + "/noroeste_ligado.png"; } } String placaPosicao = TabInicio.veiculos.getSelectedRecord().getAttribute("placa"); double latitudePosicao = list[j].getAttributeAsDouble("lat"); double longitudePosicao = list[j].getAttributeAsDouble("lon"); String data = list[j].getAttributeAsString("dataEhora"); String velocidade = list[j].getAttributeAsString("vel"); String ignicao = list[j].getAttributeAsString("ignReal").equalsIgnoreCase("false") ? "Desligada" : "Ligada"; String enderecoPosicao = (list[j].getAttributeAsString("endereco").equalsIgnoreCase("Sem endereo") ? "No h resoluo de endereo para este local" : list[j].getAttributeAsString("endereco")); nomeCliente = ((Info.usuarioLogado.get("codUnidadeCliente") == null) ? "</br><strong>Cliente: </strong>" + list[0].getAttributeAsString("cliente") + "</strong>" : ""); String direcaoP = "</br><strong>Direo: </strong> " + list[j].getAttributeAsString("direcao") + nomeCliente; mapaInicioOpenLayer.addMarker(longitudePosicao, latitudePosicao, placaPosicao, icone, j, data, velocidade, ignicao, enderecoPosicao, direcaoP); } else { if (list[j].getAttributeAsString("ignReal").equalsIgnoreCase("false")) { icone = "./imagens/ponto_desligado.png"; } else { icone = "./imagens/ponto_ligado.png"; } String placaPosicao = TabInicio.veiculos.getSelectedRecord().getAttribute("placa"); double latitudePosicao = list[j].getAttributeAsDouble("lat"); double longitudePosicao = list[j].getAttributeAsDouble("lon"); String data = list[j].getAttributeAsString("dataEhora"); String velocidade = list[j].getAttributeAsString("vel"); String ignicao = list[j].getAttributeAsString("ignReal").equalsIgnoreCase("false") ? "Desligada" : "Ligada"; String enderecoPosicao = (list[j].getAttributeAsString("endereco").equalsIgnoreCase("Sem endereo") ? "No h resoluo de endereo para este local" : list[j].getAttributeAsString("endereco")); nomeCliente = ((Info.usuarioLogado.get("codUnidadeCliente") == null) ? "</br><strong>Cliente: </strong>" + list[0].getAttributeAsString("cliente") + "</strong>" : ""); String direcaoP = "</br><strong>Direo: </strong>" + list[j].getAttributeAsString("direcao") + nomeCliente; mapaInicioOpenLayer.addMarker(longitudePosicao, latitudePosicao, placaPosicao, icone, j, data, velocidade, ignicao, enderecoPosicao, direcaoP); latAnt = list[j - 1].getAttributeAsDouble("lat"); lonAnt = list[j - 1].getAttributeAsDouble("lon"); latAtual = list[j].getAttributeAsDouble("lat"); lonAtual = list[j].getAttributeAsDouble("lon"); if (latAnt == latAtual && lonAnt == lonAtual) { distancia = 0; } else { distancia = Info.caculaDistanciaEntreDoisPontos(latAnt, lonAnt, latAtual, lonAtual); } } distanciaTotal = distanciaTotal + distancia; } GWT.log("Data : 1"); mapaInicioOpenLayer.addLinha(); tempoDecorrido = Info.calculaDatas(list[0].getAttributeAsLong("dataEhoraReal"), list[list.length - 1].getAttributeAsLong("dataEhoraReal")); //GWT.log("Data : 2"); if (distanciaTotal > 0) { indexDistancia = String.valueOf(Info.formataDecimal(distanciaTotal)).indexOf("."); kms = String.valueOf(Info.formataDecimal(distanciaTotal)).substring(0, indexDistancia); m = "0" + (String.valueOf(Info.formataDecimal(distanciaTotal)).substring(indexDistancia)); metros = Double.parseDouble(m) * 1000; dist = ((Double.parseDouble(kms) > 0) ? ". Percorridos: " + kms + " KM e " + metros + " metros" : ". Percorridos: " + metros + " metros"); } else { dist = " Percorridos 0 metros"; } infoVeiculo.redraw(); infoVeiculo.setContents("<strong style=\"font-size:15px; \"> " + Info.titulosMsg.get("placa") + ": " + TabInicio.veiculos.getSelectedRecord().getAttributeAsString("placa") + " " + Info.titulosMsg.get("fabricante") + ": " + TabInicio.posicoesVeiculos.getRecord(0).getAttributeAsString("fabricante") + " " + Info.titulosMsg.get("modelo") + ": " + TabInicio.posicoesVeiculos.getRecord(0).getAttributeAsString("modelo") + " " + Info.titulosMsg.get("cor") + ": " + TabInicio.posicoesVeiculos.getRecord(0).getAttributeAsString("cor") + " " + Info.titulosMsg.get("ano") + ": " + TabInicio.posicoesVeiculos.getRecord(0).getAttributeAsString("ano") + "</strong>" + dist + ". Tempo : " + tempoDecorrido); } }