package org.jboss.tools.example.forgeable3.view; import java.io.Serializable; import java.util.ArrayList; import java.util.List; import javax.ejb.Stateful; import javax.enterprise.context.Conversation; import javax.enterprise.context.ConversationScoped; import javax.faces.application.FacesMessage; import javax.faces.component.UIComponent; import javax.faces.context.FacesContext; import javax.faces.convert.Converter; import javax.inject.Inject; import javax.inject.Named; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import javax.persistence.PersistenceContextType; import javax.persistence.TypedQuery; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Root; import org.jboss.tools.example.forgeable3.model.Actor; /** * Backing bean for Actor entities. *
* This class provides CRUD functionality for all Actor entities. It focuses
* purely on Java EE 6 standards (e.g. @ConversationScoped for
* state management, PersistenceContext for persistence,
* CriteriaBuilder for searches) rather than introducing a CRUD framework or
* custom base class.
*/
@Named
@Stateful
@ConversationScoped
public class ActorBean implements Serializable {
private static final long serialVersionUID = 1L;
/*
* Support creating and retrieving Actor entities
*/
private Long id;
public Long getId() {
return this.id;
}
public void setId(Long id) {
this.id = id;
}
private Actor actor;
public Actor getActor() {
return this.actor;
}
@Inject
private Conversation conversation;
@PersistenceContext(type = PersistenceContextType.EXTENDED)
private EntityManager entityManager;
public String create() {
this.conversation.begin();
return "create?faces-redirect=true";
}
public void retrieve() {
if (FacesContext.getCurrentInstance().isPostback()) {
return;
}
if (this.conversation.isTransient()) {
this.conversation.begin();
}
if (this.id == null) {
this.actor = this.search;
} else {
this.actor = this.entityManager.find(Actor.class, getId());
}
}
/*
* Support updating and deleting Actor entities
*/
public String update() {
this.conversation.end();
try {
if (this.id == null) {
this.entityManager.persist(this.actor);
return "search?faces-redirect=true";
} else {
this.entityManager.merge(this.actor);
return "view?faces-redirect=true&id=" + this.actor.getId();
}
} catch( Exception e ) {
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage( e.getMessage() ));
return null;
}
}
public String delete() {
this.conversation.end();
try {
this.entityManager.remove(this.entityManager.find(Actor.class,
getId()));
this.entityManager.flush();
return "search?faces-redirect=true";
} catch( Exception e ) {
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage( e.getMessage() ));
return null;
}
}
/*
* Support searching Actor entities with pagination
*/
private int page;
private long count;
private List