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.io.Console; 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.ValidationMessage; import br.edu.uniritter.liquid.democracy.annotation.Public; import br.edu.uniritter.liquid.democracy.model.Citizen; import br.edu.uniritter.liquid.democracy.service.CitizenService; @Resource public class CitizenController { private Result result; private CitizenService service; private final Validator validator; public CitizenController(Result result, CitizenService service, Validator validator) { this.result = result; this.service = service; this.validator = validator; } @Public @Get("/citizen") public void home() { List<Citizen> citizens = service.findAll(); result.include("citizens", citizens); } @Public @Get("/citizen/new") public void add() { } @Public @Post("/citizen/new") public void add(Citizen citizen) { validateAdd(citizen); service.create(citizen); result.redirectTo(CitizenController.class).home(); } @Public @Get("/citizen/edit/{id}") public void edit(Long id) { Citizen citizen = service.findById(id); result.include("citizen", citizen); } @Public @Post("/citizen/edit/{id}") public void update(Citizen citizen) { validateEdit(citizen); service.update(citizen); result.redirectTo(CitizenController.class).edit(citizen.getId()); } @Public @Post("/citizen/delete/{id}") public void delete(Long id) { Citizen citizen = service.findById(id); service.delete(citizen); result.redirectTo(CitizenController.class).home(); } private void validateAdd(final Citizen citizen) { validate(citizen); validator.onErrorUsePageOf(CitizenController.class).add(); } private void validateEdit(final Citizen citizen) { validate(citizen); if (citizen != null) if (citizen.getId() == null) validator.add(new ValidationMessage("Id can not be empty", "citizen.id")); validator.onErrorUsePageOf(CitizenController.class).home(); } private void validate(final Citizen citizen) { if (citizen == null) { validator.add(new ValidationMessage("Citizen can not be null", "citizen")); } else { if (citizen.getName() == null) validator.add(new ValidationMessage("Name can not be empty", "citizen.name")); if (citizen.getCpf() == null) validator.add(new ValidationMessage("CPF can not be empty", "citizen.cpf")); if (citizen.getPassword() == null) validator.add(new ValidationMessage( "Password can not be empty", "citizen.password")); if (citizen.getCandidate() == null) citizen.setCandidate(false); } } }