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.ArrayList;
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.Area;
import br.edu.uniritter.liquid.democracy.service.AreaService;
@Resource
public class AreaController {
private Result result;
private AreaService service;
private final Validator validator;
public AreaController(Result result, AreaService service, Validator validator) {
this.result = result;
this.service = service;
this.validator = validator;
}
@Public
@Get("/area")
public void home() {
}
@Public
@Get("/area/new")
public void add() {
}
@Public
@Post("/area/new")
public void add(Area area) {
validate(area);
service.create(area);
}
@Public
@Post("/area/find")
public void find(String name) {
List<Area> areas = new ArrayList<>();
if(name == null)
areas = service.findAll();
else
areas = service.findByName(name);
result.include("areas", areas);
result.redirectTo(this).home();
}
@Public
@Post("/area/delete/{id}")
public void delete(Long id) {
service.delete(id);
result.forwardTo(this).home();
}
private void validate(final Area area) {
validator.checking(new Validations() {
{
that(area, is(notNull()), "erro", "Erro ao validar Area.");
}
});
validator.onErrorUsePageOf(AreaController.class).add();
}
}