package br.com.caelum.guj.controller;
import static br.com.caelum.vraptor.view.Results.logic;
import org.apache.commons.lang.StringUtils;
import org.hibernate.Session;
import br.com.caelum.guj.model.Category;
import br.com.caelum.vraptor.Get;
import br.com.caelum.vraptor.Path;
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;
@Resource
public class CategoryController {
private final Result result;
private final Validator validator;
private final Session session;
public CategoryController(Result result, Validator validator, Session session) {
this.result = result;
this.validator = validator;
this.session = session;
}
@Path("/categories") @Get
public void save() {
result.include("isModerator", true);
}
@Path("/categories") @Post
public void add(final Category category) {
validator.checking(new Validations() {{
that(!StringUtils.isBlank(category.getName()),"category.name", "Nome;");
}});
validator.onErrorUse(logic()).forwardTo(CategoryController.class).save();
session.save(category);
result.use(logic()).redirectTo(CategoryController.class).save();
}
protected Category getCategory(Long id) {
return (Category) session.get(Category.class, id);
}
}