package br.edu.uniritter.liquid.democracy.controller;
import static br.edu.uniritter.liquid.democracy.validator.CustomMatchers.notNull;
import static org.hamcrest.Matchers.is;
import java.util.List;
import br.com.caelum.vraptor.Get;
import br.com.caelum.vraptor.Post;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
import br.com.caelum.vraptor.Validator;
import br.com.caelum.vraptor.validator.Validations;
import br.edu.uniritter.liquid.democracy.annotation.Public;
import br.edu.uniritter.liquid.democracy.model.Project;
import br.edu.uniritter.liquid.democracy.service.ProjectService;
@Resource
public class ProjectController {
private Result result;
private ProjectService service;
private final Validator validator;
public ProjectController(Result result, ProjectService service, Validator validator) {
this.result = result;
this.service = service;
this.validator = validator;
}
@Public
@Get("/project")
public void home() {
List<Project> projects = service.findAll();
result.include("projects", projects);
}
@Public
@Get("/project/new")
public void add() {
}
@Public
@Post("/project/new")
public void add(Project project) {
validate(project);
service.create(project);
}
@Public
@Post("/project/delete/{project}")
public void delete(Project project) {
validate(project);
service.delete(project);
result.redirectTo(this).home();
}
private void validate(final Project project) {
validator.checking(new Validations() {
{
that(project, is(notNull()), "erro", "Erro ao validar Project.");
}
});
validator.onErrorUsePageOf(ProjectController.class).add();
}
}