import java.net.*;
import java.io.*;
import java.util.*;

public class Apinfo {

   private String palavra;
   private URL urlInicial;
   private URL urlVagas;
   private InputStream fonte;
   private Vector novosLinks;
   private Vector novasVagas;

   public Apinfo(String p){
     this.palavra = p;
     try{
        urlInicial = new URL("http://www.apinfo.com/pesqofe2x.htm");
     }catch (MalformedURLException mue){
     }
   }

   public String getPalavra(){
     return this.palavra;
   }

   public URL getUrlInicial(){
     return this.urlInicial;
   }

   public void buscarVagas() {

     String linha;
     String link;
     String vaga="";
     String upperVaga="";
     String upperPalavra="";

     novosLinks = new Vector();
     novasVagas = new Vector();
     int retval=0;
     int inicio=0, fim=0;

     try {
       fonte = urlInicial.openStream();

       BufferedReader br = new BufferedReader(new InputStreamReader(fonte));

       while((linha=br.readLine()) != null){

         //Retorna um valor se encontrar a palavra abaixo
         retval=linha.indexOf("www.apinfo.com/p");

         if (retval >= 0 ){
            inicio = linha.indexOf('"');
            fim = linha.lastIndexOf('"');
            link = linha.substring(inicio+1,fim);
            novosLinks.add(link);
         }
       }

       fonte.close();

         for(int i = 0; i < novosLinks.size(); i++){
           System.out.println(novosLinks.get(i));
         }

       for(int i = 0; i < novosLinks.size(); i++){
         link = (String) novosLinks.get(i);
         System.out.println(i);
         //aqui estou começando a montar a pagina de vagas
         try{
            urlVagas = new URL(link);
         }catch (MalformedURLException mue){
         }

         //exibindo pagina das vagas
         fonte = urlVagas.openStream();

         //Canal 1
         br = new BufferedReader(new InputStreamReader(fonte));

         boolean gravar = false;

         //System.out.println("antes do Loop");
         //System.out.println(link);

         while((linha=br.readLine()) != null){

            //Retorna um valor se encontrar a palavra abaixo
            retval=linha.indexOf("<hr size=");
            //System.out.println("dentro do loop "+retval);
            if (retval >= 0 ){
               gravar = true;

               upperVaga = vaga.toUpperCase();
               //System.out.println(upperVaga);

               upperPalavra = palavra.toUpperCase();
               //System.out.println(upperPalavra);

               //retval=vaga.indexOf(palavra);
               retval=upperVaga.indexOf(upperPalavra);
               if (retval >= 0 ){
                  novasVagas.add(vaga);
                  //System.out.println(vaga);
               }
               vaga="";
            }
            if (gravar) {
               vaga += linha;
            }

         }
         fonte.close();

       }
     }catch (java.lang.Exception ex){
       ex.printStackTrace();
     }

     //Cria arquivo HTML

     try{
        DataOutputStream dos = new DataOutputStream(new BufferedOutputStream(new FileOutputStream("vagas.html")));
        for(int i=0; i < novasVagas.size(); i++){
           vaga=(String) novasVagas.get(i);
           dos.writeBytes(vaga);
        }
        dos.close();
     }catch (IOException ioe){
       ioe.printStackTrace();
     }

   }

   public Vector getNovasVagas(){
      return this.novasVagas;
   }

   public static void main (String args[]){

      Apinfo myApinfo = new Apinfo("Java");
      myApinfo.buscarVagas();

   }
}

