package comHttp;

import java.net.*;
import java.io.*;
import java.util.*;

import combd.TabelaDeResultado;
import combd.PedidoQuery;

/**
*   Classe que fornece comunicação com o BD remoto através de queries enviadas à
*  uma URL.
* @author Marcos V. S. Godinho
*/
public class RequisitorHttp{

  private URL url;

  public RequisitorHttp(String url){

    try{
      this.url = new URL(url);
    }
    catch(MalformedURLException ex){

      System.err.println("URL inválida.");
      ex.printStackTrace();
    }
  }


  public TabelaDeResultado requisitaQuery(String query, Object[] param){

    TabelaDeResultado resultado = null;

    try{
          HttpMessage msg = new HttpMessage(url);
          InputStream  in = msg.sendPostMessage(new PedidoQuery(query, param));

          ObjectInputStream objin = new ObjectInputStream(in);
          resultado = (TabelaDeResultado)objin.readObject();
          objin.close();
    }
    catch(IOException ex0){

      System.err.println("Ocorreu um erro na comunicação com a URL passada.");
      ex0.printStackTrace();
    }
    catch(ClassNotFoundException ex1){

      ex1.printStackTrace();
    }

    return resultado;
  }


  public Properties requisitaHttpVars(URL httpURL, Properties prop){

    Properties resposta = null;

    try{
          HttpMessage msg = new HttpMessage(url);
          InputStream  in = msg.sendPostMessage(new PedidoHttpVars(httpURL, prop));

          ObjectInputStream objin = new ObjectInputStream(in);
          resposta = (Properties)objin.readObject();
          objin.close();
    }
    catch(IOException ex0){

      System.err.println("Ocorreu um erro na comunicação com a URL passada.");
      ex0.printStackTrace();
    }
    catch(ClassNotFoundException ex1){

      ex1.printStackTrace();
    }

    return resposta;
  }
}
