package org.bench4q.agent.api;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;

import org.bench4q.agent.scenario.engine.ScenarioContext;
import org.bench4q.agent.scenario.engine.ScenarioEngine;
import org.bench4q.share.models.agent.ServerStatusModel;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
@RequestMapping("/")
public class HomeController {
	private ScenarioEngine scenarioEngine;

	private ScenarioEngine getScenarioEngine() {
		return scenarioEngine;
	}

	@Autowired
	private void setScenarioEngine(ScenarioEngine scenarioEngine) {
		this.scenarioEngine = scenarioEngine;
	}

	@RequestMapping(method = { RequestMethod.GET, RequestMethod.POST })
	@ResponseBody
	public ServerStatusModel index() {
		ServerStatusModel serverStatusModel = new ServerStatusModel();
		serverStatusModel.setFinishedTests(new ArrayList<UUID>());
		serverStatusModel.setRunningTests(new ArrayList<UUID>());
		Map<UUID, ScenarioContext> contexts = new HashMap<UUID, ScenarioContext>(
				getScenarioEngine().getRunningTests());
		for (UUID key : contexts.keySet()) {
			ScenarioContext value = contexts.get(key);
			if (value.isFinished()) {
				serverStatusModel.getFinishedTests().add(key);
			} else {
				serverStatusModel.getRunningTests().add(key);
			}
		}
		return serverStatusModel;
	}

	// @RequestMapping(method = { RequestMethod.GET, RequestMethod.POST })
	// @ResponseBody
	// public ServerStatusModel reset() {
	//
	// }
}
