package oracle.otnsamples.ibfbs.admin.helper;
import oracle.soap.transport.http.OracleSOAPHTTPConnection;
import org.apache.soap.encoding.soapenc.BeanSerializer;
import org.apache.soap.encoding.SOAPMappingRegistry;
import org.apache.soap.util.xml.QName;
import java.net.URL;
import org.apache.soap.Constants;
import org.apache.soap.Fault;
import org.apache.soap.SOAPException;
import org.apache.soap.rpc.Call;
import org.apache.soap.rpc.Parameter;
import org.apache.soap.rpc.Response;
import java.util.Vector;
import java.util.Properties;
/**
 * Generated by the Oracle9i JDeveloper Web Services Stub/Skeleton Generator.
 * Date Created: Sat Aug 02 18:29:25 IST 2003
 * WSDL URL: http://api.google.com/GoogleSearch.wsdl
 */

public class GoogleSearchServiceStub 
{
  public GoogleSearchServiceStub()
  {
    m_httpConnection = new OracleSOAPHTTPConnection();
    m_smr = new SOAPMappingRegistry();

    BeanSerializer beanSer = new BeanSerializer();
    m_smr.mapTypes(Constants.NS_URI_SOAP_ENC, new QName("urn:GoogleSearch", "GoogleSearchResult"), oracle.otnsamples.ibfbs.admin.helper.GoogleSearchResult.class, beanSer, beanSer);
    m_smr.mapTypes(Constants.NS_URI_SOAP_ENC, new QName("urn:GoogleSearch", "ResultElement"), oracle.otnsamples.ibfbs.admin.helper.ResultElement.class, beanSer, beanSer);
    m_smr.mapTypes(Constants.NS_URI_SOAP_ENC, new QName("urn:GoogleSearch", "DirectoryCategory"), oracle.otnsamples.ibfbs.admin.helper.DirectoryCategory.class, beanSer, beanSer);
  }

  public String endpoint = "http://api.google.com/search/beta2";
  private OracleSOAPHTTPConnection m_httpConnection = null;
  private SOAPMappingRegistry m_smr = null;

  public GoogleSearchResult doGoogleSearch(String key, String q, Integer start, Integer maxResults, Boolean filter, String restrict, Boolean safeSearch, String lr, String ie, String oe) throws Exception
  {
    GoogleSearchResult returnVal = null;

    URL endpointURL = new URL(endpoint);
    Call call = new Call();
    call.setSOAPTransport(m_httpConnection);
    call.setTargetObjectURI("urn:GoogleSearch");
    call.setMethodName("doGoogleSearch");
    call.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC);

    Vector params = new Vector();
    params.addElement(new Parameter("key", java.lang.String.class, key, null));
    params.addElement(new Parameter("q", java.lang.String.class, q, null));
    params.addElement(new Parameter("start", java.lang.Integer.class, start, null));
    params.addElement(new Parameter("maxResults", java.lang.Integer.class, maxResults, null));
    params.addElement(new Parameter("filter", java.lang.Boolean.class, filter, null));
    params.addElement(new Parameter("restrict", java.lang.String.class, restrict, null));
    params.addElement(new Parameter("safeSearch", java.lang.Boolean.class, safeSearch, null));
    params.addElement(new Parameter("lr", java.lang.String.class, lr, null));
    params.addElement(new Parameter("ie", java.lang.String.class, ie, null));
    params.addElement(new Parameter("oe", java.lang.String.class, oe, null));
    call.setParams(params);

    call.setSOAPMappingRegistry(m_smr);

    Response response = call.invoke(endpointURL, "urn:GoogleSearchAction");

    if (!response.generatedFault())
    {
      Parameter result = response.getReturnValue();
      returnVal = (GoogleSearchResult)result.getValue();
    }
    else
    {
      Fault fault = response.getFault();
      throw new SOAPException(fault.getFaultCode(), fault.getFaultString());
    }
    return returnVal;

  }

  public void setMaintainSession(boolean maintainSession)
  {
    m_httpConnection.setMaintainSession(maintainSession);
  }

  public boolean getMaintainSession()
  {
    return m_httpConnection.getMaintainSession();
  }

  public void setTransportProperties(Properties props)
  {
    m_httpConnection.setProperties(props);
  }

  public Properties getTransportProperties()
  {
    return m_httpConnection.getProperties();
  }
}