package com.example.forgeWiz3.view; import java.io.Serializable; import java.util.ArrayList; import java.util.List; import javax.annotation.Resource; import javax.ejb.SessionContext; 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 com.example.forgeWiz3.model.Staff; /** * Backing bean for Staff entities. *
* This class provides CRUD functionality for all Staff 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 StaffBean implements Serializable
{
private static final long serialVersionUID = 1L;
/*
* Support creating and retrieving Staff entities
*/
private Byte id;
public Byte getId()
{
return this.id;
}
public void setId(Byte id)
{
this.id = id;
}
private Staff staff;
public Staff getStaff()
{
return this.staff;
}
@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.staff = this.example;
}
else
{
this.staff = findById(getId());
}
}
public Staff findById(Byte id)
{
return this.entityManager.find(Staff.class, id);
}
/*
* Support updating and deleting Staff entities
*/
public String update()
{
this.conversation.end();
try
{
if (this.id == null)
{
this.entityManager.persist(this.staff);
return "search?faces-redirect=true";
}
else
{
this.entityManager.merge(this.staff);
return "view?faces-redirect=true&id=" + this.staff.getStaffId();
}
}
catch (Exception e)
{
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(e.getMessage()));
return null;
}
}
public String delete()
{
this.conversation.end();
try
{
Staff deletableEntity = findById(getId());
this.entityManager.remove(deletableEntity);
this.entityManager.flush();
return "search?faces-redirect=true";
}
catch (Exception e)
{
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(e.getMessage()));
return null;
}
}
/*
* Support searching Staff entities with pagination
*/
private int page;
private long count;
private List