import com.ardic.arcsp.ws.impl.GenericAxis2WsClientHelper;
import com.ardic.arcsp.ws.util.ParamHelper;
import com.ardic.arcsp.ws.util.PayloadUtil;
import com.ardic.manager.configuration.PropertyLoader;

public class WorkerThreadTest implements Runnable {
	GenericAxis2WsClientHelper wsHelper;
	ParamHelper paramHelper;

	public WorkerThreadTest(GenericAxis2WsClientHelper wsHelper, int sleep) {
		this.wsHelper = wsHelper;
		paramHelper = new ParamHelper();
		paramHelper.addParam("sleep", sleep);
	}

	public void run() {
		try {
			sendMessageToDevice(paramHelper);
		} catch (com.ardic.arcsp.ws.WsClientException e) {
			e.printStackTrace();
		}
	}

	private void sendMessageToDevice(ParamHelper paramHelper)
			throws com.ardic.arcsp.ws.WsClientException {
		String function = "getResult";
		String payload = PayloadUtil.generatePayload(
				WebServices.PerfTest.getNamespace(),
				WebServices.PerfTest.getPrefix(), function,
				paramHelper.getParamsList());
		wsHelper.executeRequest("http://localhost:9763/services/",
				WebServices.PerfTest.getServiceName(), function, payload, false);
	}

	enum WebServices {
		DmUserDevicePresence("DmUserDevicePresence",
				"http://ws.wso2.org/dataservice", "p"), ECHO("echo",
				"http://echo.services.core.carbon.wso2.org", "p"), CommandWriter(
				"CommandWriter", "http://writer.queue.jms.ardic.com", "p"), CommandResponseWriter(
				"CommandResponseWriter", "http://response.queue.jms.ardic.com",
				"p"), MsCommandMonitoring("MsCommandMonitoring",
				"http://ws.ardictech.com/dataservice", "xs"), MsDeviceResponse(
				"MsDeviceResponse", "http://ws.ardictech.com/dataservice", "xs"), PerfTest(
				"PerfTest", "http://test.performance.ardic.com", "dat");

		private String namespace;
		private String prefix;
		private String serviceName;

		WebServices(String serviceName, String namespace, String prefix) {
			this.serviceName = serviceName;
			this.namespace = namespace;
			this.prefix = prefix;
		}

		public String getServiceName() {
			return serviceName;
		}

		public String getNamespace() {
			return namespace;
		}

		public String getPrefix() {
			return prefix;
		}
	}
}