public static void main(String[] args) throws Throwable {
		
		
		BusResult br = BusServer.estimaTempoChegadaBR("", 0, 0, 0, 0);
		
		br.getDistDestino();
		br.getDistOrigem();
		br.getDviagem();
		br.getTviagem();
		
		for(int i=0; i< br.getVbus().size(); i++){
			Bus bus = 	(Bus) br.getVbus().get(i);
			bus.getBusId();
			bus.getEstim();
			bus.isAcess();
			bus.getdistU();

		}
		
		
		
		try{
			proxyhost=new String(args[0]);
			proxyport=Integer.parseInt(new String(args[1]));
			proxy=true;
			
		}catch (Throwable e){
			proxy=false;
		}
		System.out.println("proxy = " + proxy);
		if(proxy)
			System.out.println(proxyhost +" "+ proxyport);
		
	
//		procuraLinhaX("477A");
//		System.exit(0);
		
		/*
		//---->Pega detalhes da linha percorrendo o range de ids  e salva em arquivo
		for(int i=1; i< 2200 ; i++){
			
			boolean retry=true;
			
			while(retry){
				try{
					System.out.println(i);
					String result = getDetalheLinha("" + i);
					appendlineTofile("/tmp/dat.txt",i + " # " + result);
					retry=false;
				}catch (java.net.SocketTimeoutException e){
					 //e.printStackTrace();
					retry=true;
				 }
			}
			
			retry=true;
			int j = i+ 32768;
			while(retry){
				try{
					System.out.println(j);
					String result = getDetalheLinha("" + j);
					appendlineTofile("/tmp/dat.txt",j + " # " + result);
					retry=false;
				}catch (java.net.SocketTimeoutException e){
					 //e.printStackTrace();
					retry=true;
				 }
			}
			
			
		}
		System.exit(0);
		//<<-------------
		*/
		
		
		/*
		//->>> PEga o CodigoLinha do arquivo e verifica se tem "sinal"de GPS
		 FileInputStream fstreamX = new FileInputStream("/home/usr/JWS/cod.txt");
		 DataInputStream inX = new DataInputStream(fstreamX);
		 BufferedReader brX = new BufferedReader(new InputStreamReader(inX));
		 String strLineX;
		  //Read File Line By Line
		 while ((strLineX = brX.readLine()) != null)   {
			 
			 	String result="erro";
			 
				 try{
			 
					 
					 Vector<BusPos> posbus = getPosicaoBus(strLineX);
					 result="size= " +posbus.size();
					 
				 }catch (java.net.SocketTimeoutException e){
					 //e.printStackTrace();
					 
				 }
				 System.out.println (strLineX + " # " + result);
				 appendlineTofile("/tmp/dat.txt",strLineX + " # " + result);
		 }
		 System.exit(0);
		//<---------------
		*/
		
		/*
		//PEGA as rota e codigo linha  das linhas-->>>
		 FileInputStream fstream = new FileInputStream("/home/usr/JWS/linhas.txt");
		 DataInputStream in = new DataInputStream(fstream);
		 BufferedReader br = new BufferedReader(new InputStreamReader(in));
		 String strLine;
		  //Read File Line By Line
		 while ((strLine = br.readLine()) != null)   {
			 
			 String lineA=null;
			 String lineB=null;
			 
			 boolean retry =true;
			 while (retry){
				 try{
				 
					  // Print the content on the console
					 System.out.println (strLine);
					 Vector<LinhaResult> vlinhas = procuraLinha(strLine);//
					if(vlinhas.size()!=2){
							System.out.println("Numero delinhas deve ser 2  encontrado:" + vlinhas.size());
							System.exit(0);
					}
					LinhaResult linhaA=vlinhas.get(0);
					LinhaResult linhaB=vlinhas.get(1);
					
					String idlinhaA = getIDLinha(linhaA.getLetreiro());
					String idlinhaB = getIDLinha(linhaB.getLetreiro());
					
					if(!idlinhaA.endsWith(idlinhaB)){
						System.out.println("idlinhas diferentes: " + idlinhaA + "  " + idlinhaB);
						System.exit(0);
					}
					
					
					BusRota busrotaA = getRotaBusao(linhaA.getSentido(), 0, idlinhaA);
					BusRota busrotaB = getRotaBusao(linhaB.getSentido(), 0, idlinhaA);
					
					
					lineA=linhaA + "#" + busrotaA;
					lineB=linhaB + "#" + busrotaB;
					
					retry=false;
					
				 }catch (java.net.SocketTimeoutException e){
					 e.printStackTrace();
					 retry=true; 
				 }
		 	}
			
			appendlineTofile("/tmp/dat.txt",lineA);
			appendlineTofile("/tmp/dat.txt",lineB);
			
			  }
		 System.exit(0);
		 //XXXXXXXXXXXXXXXXXXXXXXXXXXXXX->>
		 */
		 
		
		/*
		//-->BUSCA DE LINHAS NO BANCO DE DADOS 
		int ini=65000;
		try{
			ini = Integer.parseInt(args[0]);
		}catch (Throwable e){
			
		}
		
		
		int i=-1;
		for(i =ini; i< 72001; i++){
			//Thread.sleep(1000);
			System.out.println(i);
			
			boolean cont=true;
			while(cont){
				try{
					getDetalheLinha2(0,i,"/tmp/dados.txt");
					cont=false;
				}catch (Throwable e){
					cont=true;
					e.printStackTrace();
				}
			}
		}
		
		System.out.println("**"+(i-1));
		System.exit(0);		
		//XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX<--
		*/
		
		//[0] linha [1] sentido [2] lat,long ref  
		String[] argx = {"477a","1","-23.53304,-46.734483"};args=argx;
		//String[] argx = {"8060-10","1","-23.53304,-46.734483"};args=argx;
		//String[] argx = {"477a","1","-23.533483,-46.734625"};args=argx;
		//String[] argx = {"7550-10","2","-23.53304,-46.734483"};args=argx;
		
		Vector<LinhaResult> vlinhas = procuraLinha(args[0]);//

		if(vlinhas.size()!=2){
			System.out.println("Numero delinhas deve ser 2  encontrado:" + vlinhas.size());
			System.exit(0);
		}
		
		LinhaResult linha =null;
		
		System.out.println("vlinhas.get(0).getSentido() = " + vlinhas.get(0).getSentido() + "  " + vlinhas.get(0).getLetreiro());
		System.out.println("vlinhas.get(1).getSentido() = " + vlinhas.get(1).getSentido() + "  " + vlinhas.get(1).getLetreiro());
		
		if(vlinhas.get(0).Sentido == Integer.parseInt(args[1]))
			linha=vlinhas.get(0);
		if(vlinhas.get(1).Sentido == Integer.parseInt(args[1]))
			linha=vlinhas.get(1);

		if(linha==null){
			System.out.println("Sentido " + args[1] + " nao encontrado");
			System.exit(0);
		}
		
		
		getDetalheLinha(linha.getCodigoLinha());

		
		String idlinha = getIDLinha(linha.getLetreiro());

		BusRota busrota = getRotaBusao(linha.getSentido(), 0, idlinha);

		//System.out.println(busrota.rawCoord);
		System.out.println("Extencao calculada = " + busrota.getExtencao());
		System.out.println(linha.getDestString() + " sent=" +linha.getSentido());
		
		PositionMetric distRef = busrota.calcDistPercorrida(new Coord(args[2]));
		System.out.println("Dist Referencia : " + distRef.distPercorrida);
		Analinha analinha = new Analinha(busrota,distRef);
		while (true){

			
			Vector<BusPos> posbus = getPosicaoBus(linha.getCodigoLinha());
			
			analinha.addDado(posbus);

			//analinha.getLinhaProjetion();

			Thread.sleep(3000);
		}
		
		//System.exit(0);
		
		
		/*
		Vector LinhaEncontradas = procuraLinha("477A");

		while (true){
		
			Enumeration en = LinhaEncontradas.elements();
			while(en.hasMoreElements()){
		
				LinhaResult linhares =(LinhaResult)en.nextElement();			
				System.out.println("Sentido "+ linhares.getSentido());
				
				String idLinha = getIDLinha(linhares.getLetreiro());			
				BusRota busrota = getRotaBusao(linhares.getSentido(), 0, idLinha);
				
				System.out.println(busrota);
				
				Coord minhapos = new Coord(-23.572877, -46.611021);
				
	
				
				Vector vbuspos = getPosicaoBus(linhares.CodigoLinha);
				busrota.xpto(vbuspos,minhapos,"21611");
				
				}
				Thread.sleep(3000);
			}
			
		*/
		
		
	}