All Downloads are FREE. Search and download functionalities are using the official Maven repository.

scaffold.faces.BackingBean.jv Maven / Gradle / Ivy

There is a newer version: 3.10.0.Final
Show newest version
package com.test.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 ${entity.getQualifiedName()}${metawidgetImports};

/**
 * Backing bean for ${entity.getName()} entities.
 * 

* This class provides CRUD functionality for all ${entity.getName()} 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 ${entity.getName()}Bean implements Serializable { private static final long serialVersionUID = 1L; /* * Support creating and retrieving ${entity.getName()} entities */ private ${nullablePrimaryKeyType} id; public ${nullablePrimaryKeyType} getId() { return this.id; } public void setId(${nullablePrimaryKeyType} id) { this.id = id; } private ${entity.getName()} ${ccEntity}; public ${entity.getName()} get${entity.getName()}() { return this.${ccEntity}; } public void set${entity.getName()}(${entity.getName()} ${ccEntity}) { this.${ccEntity} = ${ccEntity}; } @Inject private Conversation conversation; @PersistenceContext(unitName="${persistenceUnitName}", type = PersistenceContextType.EXTENDED) private EntityManager entityManager; public String create() { this.conversation.begin(); this.conversation.setTimeout(1800000L); return "create?faces-redirect=true"; } public void retrieve() { if (FacesContext.getCurrentInstance().isPostback()) { return; } if (this.conversation.isTransient()) { this.conversation.begin(); this.conversation.setTimeout(1800000L); } if (this.id == null) { this.${ccEntity} = this.example; } else { this.${ccEntity} = findById(getId()); } } public ${entity.getName()} findById(${nullablePrimaryKeyType} id) { return this.entityManager.find(${entity.getName()}.class, id); } /* * Support updating and deleting ${entity.getName()} entities */ public String update() { this.conversation.end(); try { if (this.id == null) { this.entityManager.persist(this.${ccEntity}); return "search?faces-redirect=true"; } else { this.entityManager.merge(this.${ccEntity}); return "view?faces-redirect=true&id=" + this.${ccEntity}.get${primaryKeyCC}(); } } catch( Exception e ) { FacesContext.getCurrentInstance().addMessage(null, new FacesMessage( e.getMessage() )); return null; } } public String delete() { this.conversation.end(); try { ${entity.getName()} deletableEntity = findById(getId()); ${rmEntityMetawidget} 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 ${entity.getName()} entities with pagination */ private int page; private long count; private List<${entity.getName()}> pageItems; private ${entity.getName()} example = new ${entity.getName()}(); public int getPage() { return this.page; } public void setPage(int page) { this.page = page; } public int getPageSize() { return 10; } public ${entity.getName()} getExample() { return this.example; } public void setExample(${entity.getName()} example) { this.example = example; } public String search() { this.page = 0; return null; } public void paginate() { CriteriaBuilder builder = this.entityManager.getCriteriaBuilder(); // Populate this.count CriteriaQuery countCriteria = builder.createQuery(Long.class); Root<${entity.getName()}> root = countCriteria.from(${entity.getName()}.class); countCriteria = countCriteria.select(builder.count(root)).where( getSearchPredicates(root)); this.count = this.entityManager.createQuery(countCriteria) .getSingleResult(); // Populate this.pageItems CriteriaQuery<${entity.getName()}> criteria = builder.createQuery(${entity.getName()}.class); root = criteria.from(${entity.getName()}.class); TypedQuery<${entity.getName()}> query = this.entityManager.createQuery(criteria .select(root).where(getSearchPredicates(root))); query.setFirstResult(this.page * getPageSize()).setMaxResults( getPageSize()); this.pageItems = query.getResultList(); } private Predicate[] getSearchPredicates(Root<${entity.getName()}> root) { CriteriaBuilder builder = this.entityManager.getCriteriaBuilder(); List predicatesList = new ArrayList(); ${qbeMetawidget} return predicatesList.toArray(new Predicate[predicatesList.size()]); } public List<${entity.getName()}> getPageItems() { return this.pageItems; } public long getCount() { return this.count; } /* * Support listing and POSTing back ${entity.getName()} entities (e.g. from inside an * HtmlSelectOneMenu) */ public List<${entity.getName()}> getAll() { CriteriaQuery<${entity.getName()}> criteria = this.entityManager .getCriteriaBuilder().createQuery(${entity.getName()}.class); return this.entityManager.createQuery( criteria.select(criteria.from(${entity.getName()}.class))).getResultList(); } @Resource private SessionContext sessionContext; public Converter getConverter() { final ${entity.getName()}Bean ejbProxy = this.sessionContext.getBusinessObject(${entity.getName()}Bean.class); return new Converter() { @Override public Object getAsObject(FacesContext context, UIComponent component, String value) { return ejbProxy.findById(${nullablePrimaryKeyType}.valueOf(value)); } @Override public String getAsString(FacesContext context, UIComponent component, Object value) { if (value == null) { return ""; } return String.valueOf(((${entity.getName()}) value).get${primaryKeyCC}()); } }; } /* * Support adding children to bidirectional, one-to-many tables */ private ${entity.getName()} add = new ${entity.getName()}(); public ${entity.getName()} getAdd() { return this.add; } public ${entity.getName()} getAdded() { ${entity.getName()} added = this.add; this.add = new ${entity.getName()}(); return added; } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy