package com.owlmountain.webservice.client;

import java.net.MalformedURLException;
import java.rmi.RemoteException;
import java.util.ResourceBundle;

import javax.xml.namespace.QName;
import javax.xml.rpc.ParameterMode;
import javax.xml.rpc.ServiceException;

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType;

import com.owlmountain.bean.JobInfo;

public class AnalysisEngineClient {
	private String serverHome = null;

	public AnalysisEngineClient() {
		ResourceBundle properties =
			ResourceBundle.getBundle(
				"com.owlmountain.webservice.client.AnalysisEngineClient");

		serverHome =
			properties.getString("analysis.server.home")
				+ "/services/AnalysisEngine";
	}

	public JobInfo submitJob(String taskName)
		throws ServiceException, MalformedURLException, RemoteException {
		Service service = new Service();
		Call call = (Call) service.createCall();

		call.setTargetEndpointAddress(new java.net.URL(serverHome));
		call.setOperationName("addTask");
		call.addParameter("op1", XMLType.XSD_STRING, ParameterMode.IN);

		QName qn = new QName("urn:AnalysisEngine", "JobInfo");

		call.registerTypeMapping(
			JobInfo.class,
			qn,
			new org.apache.axis.encoding.ser.BeanSerializerFactory(
				JobInfo.class,
				qn),
			new org.apache.axis.encoding.ser.BeanDeserializerFactory(
				JobInfo.class,
				qn));

		call.setReturnType(qn);

		return (JobInfo) call.invoke(new Object[] { new String(taskName)});

	}

}