package eu.wdaqua.qanary.message;

import java.net.URI;
import java.net.URISyntaxException;
import java.util.UUID;

import eu.wdaqua.qanary.business.QanaryConfigurator;
// import eu.wdaqua.qanary.web.QanaryQuestionAnsweringController; // TODO

/**
 * represents the message send back to the client after starting a QA process
 *
 * @author AnBo
 */
public class QanaryQuestionAnsweringRun {

	private final URI questionAnsweringRunUri;
	private final URI endpoint;
	private final URI inGraph;
	private final URI outGraph;
	private final URI question;

	public QanaryQuestionAnsweringRun(UUID runId, URI question, URI endpoint, URI inGraph, URI outGraph,
			QanaryConfigurator configurator) throws URISyntaxException {
		if (runId == null) {
			runId = UUID.randomUUID();
		}

		this.questionAnsweringRunUri = null; // TODO
		this.endpoint = endpoint;
		this.inGraph = inGraph;
		this.outGraph = outGraph;
		this.question = question;
	}

	/**
	 * constructor wrapper if runId was not provided
	 * 
	 * @param question
	 * @param endpoint
	 * @param inGraph
	 * @param outGraph
	 * @param configurator
	 * @throws URISyntaxException
	 */
	public QanaryQuestionAnsweringRun(URI question, URI endpoint, URI inGraph, URI outGraph,
			QanaryConfigurator configurator) throws URISyntaxException {
		this(null, question, endpoint, inGraph, outGraph, configurator);
	}

	public String toString() {
		return this.getQuestionAnsweringRunUri().toASCIIString();
	}

	private URI getQuestionAnsweringRunUri() {
		return this.questionAnsweringRunUri;
	}

	public URI getEndpoint() {
		return this.endpoint;
	}

	public URI getInGraph() {
		return this.inGraph;
	}

	public URI getOutGraph() {
		return this.outGraph;
	}

	public URI getQuestion() {
		return this.question;
	}

}
