package test.seam.action;
import java.util.List;
import javax.persistence.EntityManager;
import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.Create;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Logger;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;
import org.jboss.seam.annotations.web.RequestParameter;
import org.jboss.seam.faces.FacesMessages;
import org.jboss.seam.international.StatusMessage.Severity;
import org.jboss.seam.log.Log;
import test.biz.Product;
import test.biz.ProductType;
@Name("productAction")
@Scope(ScopeType.CONVERSATION)
public class ProductAction {
@Logger
private Log log;
@In
EntityManager em;
@In
FacesMessages facesMessages;
@RequestParameter
private Integer id;
private Product product;
@Create
public void create() {
if (id != null) {
product = em.find(Product.class, id);
} else {
product = new Product();
product.setType(new ProductType());
}
}
public String save() {
try {
boolean isValidationOk = true;
if ("belonga".equals(product.getName())) {
facesMessages.addFromResourceBundle("global.error", "You can't belonga me.");
isValidationOk = false;
}
if (isValidationOk) {
em.clear();
em.merge(product);
em.flush();
return "/private/productList.xhtml";
}
} catch (Exception e) {
log.error(e, e);
facesMessages.addFromResourceBundle(Severity.ERROR, "global.error", e);
}
return null;
}
public String delete() {
em.remove(product);
em.flush();
return "/private/productList.xhtml";
}
public List<Product> getProductList() {
return em.createQuery("from Product order by id").getResultList();
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Product getProduct() {
return product;
}
public void setProduct(Product product) {
this.product = product;
}
}