package com.statscollector.targets.controller;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import com.statscollector.targets.dao.GerritDisplayParametersRepository;
import com.statscollector.targets.dao.SonarDisplayParametersRepository;
import com.statscollector.targets.model.DisplayParameters;
import com.statscollector.targets.model.GerritDisplayParameters;
import com.statscollector.targets.model.SonarDisplayParameters;
@RestController
public class ParametersController {
@Autowired
private GerritDisplayParametersRepository gerritDisplayParametersRepository;
@Autowired
private SonarDisplayParametersRepository sonarDisplayParametersRepository;
@RequestMapping(value = "/parameters/list", method = RequestMethod.GET)
@ResponseBody
public List<DisplayParameters> parametersList() {
Map<String, GerritDisplayParameters> gerritParameters = new HashMap<>();
sonarDisplayParametersRepository.findAll();
for(GerritDisplayParameters parameter : gerritDisplayParametersRepository.findAll()) {
gerritParameters.put(parameter.getProjectName(), parameter);
}
List<DisplayParameters> parameters = new ArrayList<>();
for(SonarDisplayParameters parameter : sonarDisplayParametersRepository.findAll()) {
parameters.add(new DisplayParameters(gerritParameters.get(parameter.getProjectName()), parameter));
}
return parameters;
}
@RequestMapping(value = "/parameters/{projectName}", method = RequestMethod.GET)
@ResponseBody
public DisplayParameters parameters(@PathVariable final String projectName) {
return new DisplayParameters(gerritDisplayParametersRepository.findByProjectName(projectName),
sonarDisplayParametersRepository.findByProjectName(projectName));
}
@RequestMapping(value = "/parameters/save", method = RequestMethod.POST)
@ResponseBody
public DisplayParameters parameters(@RequestBody final DisplayParameters displayParameters) {
GerritDisplayParameters gerritParams = gerritDisplayParametersRepository
.save(displayParameters.getGerritDisplayParameters());
SonarDisplayParameters sonarParams = sonarDisplayParametersRepository
.save(displayParameters.getSonarDisplayParameters());
return new DisplayParameters(gerritParams, sonarParams);
}
}