the billable controllerpackage jsf;import jpa.entities.Billable;import
jsf.util.JsfUtil;import jsf.util.PaginationHelper;import
jpa.session.BillableFacade;import java.util.ResourceBundle;import
javax.ejb.EJB;import javax.faces.bean.ManagedBean;import
javax.faces.bean.SessionScoped;import
javax.faces.component.UIComponent;import
javax.faces.context.FacesContext;import javax.faces.convert.Converter;import
javax.faces.convert.FacesConverter;import javax.faces.model.DataModel;import
javax.faces.model.ListDataModel;import
javax.faces.model.SelectItem;@ManagedBean
(name="billableController")@SessionScopedpublic class BillableController {
private Billable current; private DataModel items = null; @EJB private
jpa.session.BillableFacade ejbFacade; private PaginationHelper
pagination; private int selectedItemIndex; public BillableController()
{ } public Billable getSelected() { if (current == null) {
current = new Billable(); selectedItemIndex = -1; }
return current; } private BillableFacade getFacade() { return
ejbFacade; } public PaginationHelper getPagination() { if
(pagination == null) { pagination = new PaginationHelper(10) {
@Override public int getItemsCount() {
return getFacade().count(); } @Override
public DataModel createPageDataModel() { return new
ListDataModel(getFacade().findRange(new int[]{getPageFirstItem(),
getPageFirstItem()+getPageSize()})); } }; }
return pagination; } public String prepareList() {
recreateModel(); return "List"; } public String prepareView() {
current = (Billable)getItems().getRowData(); selectedItemIndex =
pagination.getPageFirstItem() + getItems().getRowIndex(); return
"View"; } public String prepareCreate() { current = new
Billable(); selectedItemIndex = -1; return "Create"; }
public String create() { try {
getFacade().create(current);
JsfUtil.addSuccessMessage(ResourceBundle.getBundle("/resources/Bundle").getString("BillableCreated"));
return prepareCreate(); } catch (Exception e) {
JsfUtil.addErrorMessage(e,
ResourceBundle.getBundle("/resources/Bundle").getString("PersistenceErrorOccured"));
return null; } } public String prepareEdit() { current =
(Billable)getItems().getRowData(); selectedItemIndex =
pagination.getPageFirstItem() + getItems().getRowIndex(); return
"Edit"; } public String update() { try {
getFacade().edit(current);
JsfUtil.addSuccessMessage(ResourceBundle.getBundle("/resources/Bundle").getString("BillableUpdated"));
return "View"; } catch (Exception e) {
JsfUtil.addErrorMessage(e,
ResourceBundle.getBundle("/resources/Bundle").getString("PersistenceErrorOccured"));
return null; } } public String destroy() { current =
(Billable)getItems().getRowData(); selectedItemIndex =
pagination.getPageFirstItem() + getItems().getRowIndex();
performDestroy(); recreateModel(); return "List"; }
public String destroyAndView() { performDestroy();
recreateModel(); updateCurrentItem(); if (selectedItemIndex >=
0) { return "View"; } else { // all items were
removed - go back to list recreateModel(); return
"List"; } } private void performDestroy() { try {
getFacade().remove(current);
JsfUtil.addSuccessMessage(ResourceBundle.getBundle("/resources/Bundle").getString("BillableDeleted"));
} catch (Exception e) { JsfUtil.addErrorMessage(e,
ResourceBundle.getBundle("/resources/Bundle").getString("PersistenceErrorOccured"));
} } private void updateCurrentItem() { int count =
getFacade().count(); if (selectedItemIndex >= count) { //
selected index cannot be bigger than number of items:
selectedItemIndex = count-1; // go to previous page if last page
disappeared: if (pagination.getPageFirstItem() >= count) {
pagination.previousPage(); } } if
(selectedItemIndex >= 0) { current = getFacade().findRange(new
int[]{selectedItemIndex, selectedItemIndex+1}).get(0); } }
public DataModel getItems() { if (items == null) { items =
getPagination().createPageDataModel(); } return items; }
private void recreateModel() { items = null; } public String
next() { getPagination().nextPage(); recreateModel();
return "List"; } public String previous() {
getPagination().previousPage(); recreateModel(); return
"List"; } public SelectItem[] getItemsAvailableSelectMany() {
return JsfUtil.getSelectItems(ejbFacade.findAll(), false); } public
SelectItem[] getItemsAvailableSelectOne() { return
JsfUtil.getSelectItems(ejbFacade.findAll(), true); }
@FacesConverter(forClass=Billable.class) public static class
BillableControllerConverter implements Converter { public Object
getAsObject(FacesContext facesContext, UIComponent component, String value)
{ if (value == null || value.length() == 0) {
return null; } BillableController controller =
(BillableController)facesContext.getApplication().getELResolver().
getValue(facesContext.getELContext(), null, "billableController");
return controller.ejbFacade.find(getKey(value)); }
java.lang.Long getKey(String value) { java.lang.Long key;
key = Long.valueOf(value); return key; } String
getStringKey(java.lang.Long value) { StringBuffer sb = new
StringBuffer(); sb.append(value); return
sb.toString(); } public String getAsString(FacesContext
facesContext, UIComponent component, Object object) { if (object
== null) { return null; } if (object
instanceof Billable) { Billable o = (Billable) object;
return getStringKey(o.getBillableId()); } else {
throw new IllegalArgumentException("object " + object + " is of type " +
object.getClass().getName() + "; expected type:
"+BillableController.class.getName()); } } }}
--
View this message in context:
http://openejb.979440.n4.nabble.com/problem-with-jsf-crud-application-how-resolve-tp4667346p4667350.html
Sent from the OpenEJB User mailing list archive at Nabble.com.