package eu.dnetlib.enabling.test;

import javax.annotation.Resource;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import eu.dnetlib.common.ifaces.BlackboardCallback;
import eu.dnetlib.enabling.blackboard.BlackboardDispatcher;
import eu.dnetlib.rmi.blackboard.SumMessage;
import eu.dnetlib.rmi.soap.exceptions.InformationServiceException;

@Controller
public class TestController {

	@Resource
	private BlackboardDispatcher blackboardDispatcher;

	@RequestMapping("/sum")
	public @ResponseBody
	String sum(@RequestParam(value = "x", required = true) final int x, @RequestParam(value = "y", required = true) final int y)
			throws InformationServiceException {

		blackboardDispatcher.createDispatcher(new SumMessage(x, y), new BlackboardCallback<SumMessage>() {

			@Override
			public void onSuccess(final SumMessage t) {
				System.out.println("*************** SUCCESS *************** " + t);
			}

			@Override
			public void onFail(final SumMessage t) {
				System.out.println("*************** FAILED ***************");
			}

			@Override
			public void onOngoing(final SumMessage t) {
				System.out.println("*************** ON GOING ***************");
			}
		});
		return String.format("%d + %d = %d", x, y, x + y);
	}
}
