index.xhtml
Code: Select all
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui">
<h:head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title><h:outputText value="MCMS"/></title>
<h:outputStylesheet name="#{PageNavigationController.css}"/>
</h:head>
<h:body>
<ui:include src="/header_menubar.xhtml"/>
<p:outputPanel id="pageContentPanel" style="width: 100%; height: 100%">
<!--
<p:ajaxStatus>
<f:facet name="start">
<p:outputPanel layout="block" style="z-index:9999; position: absolute; top: 15px; left: 94%;">
<p:graphicImage value="/resources/images/loading3.gif" />
</p:outputPanel>
</f:facet>
<f:facet name="error">
<p:outputPanel layout="block" style="text-align: center !important;">
<h:outputText value="Error on partial page refresh." />
</p:outputPanel>
</f:facet>
<f:facet name="complete">
</f:facet>
</p:ajaxStatus>
-->
<p:outputPanel layout="block">
<ui:include src="#{PageNavigationController.page}"/>
</p:outputPanel>
<p:messages showDetail="true" showSummary="true" />
</p:outputPanel>
</h:body>
</html>
Code: Select all
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui">
<ui:composition>
<h:form>
<p:menubar id="pageMenuBar">
<p:submenu label="Orders">
<p:menuitem value="Add" update="pageContentPanel"
actionListener="#{pf_ordersController.prepareCreate}"/>
<p:submenu label="Browse">
<p:submenu label="By">
<p:menuitem value="Calendar" update="pageContentPanel"
actionListener="#{pf_ordersController.browseOrdersByCalendar}"/>
<p:menuitem value="Table" update="pageContentPanel"
actionListener="#{pf_ordersController.browseOrdersByTable}"/>
</p:submenu>
<p:menuitem value="All" update="pageContentPanel"
actionListener="#{pf_ordersController.browseOrdersAll}"/>
<p:submenu label="Booking Status">
<p:menuitem value="Definite" update="pageContentPanel"
actionListener="#{pf_ordersController.browseOrdersDefinite}"
helpText="Orders that are CONFIRMED" />
<p:menuitem value="Tentative" update="pageContentPanel"
actionListener="#{pf_ordersController.browseOrdersTentative}"
helpText="Orders where CONTRACT or INVOICE SENT" />
<p:menuitem value="Quote" update="pageContentPanel"
actionListener="#{pf_ordersController.browseOrdersQuote}"
helpText="Orders where QUOTE SENT" />
</p:submenu>
<p:menuitem value="Confirmed" update="pageContentPanel"
actionListener="#{pf_ordersController.browseOrdersConfirmed}"/>
<p:menuitem value="Contract Not Sent" update="pageContentPanel"
actionListener="#{pf_ordersController.browseOrdersContractNotSent}"/>
<p:menuitem value="Delete" update="pageContentPanel"
actionListener="#{pf_ordersController.browseOrdersDelete}"/>
<p:menuitem value="Invoice Not Sent" update="pageContentPanel"
actionListener="#{pf_ordersController.browseOrdersInvoiceNotSent}"/>
<p:menuitem value="Need Pricing" update="pageContentPanel"
actionListener="#{pf_ordersController.browseOrdersNeedPricing}"/>
<p:menuitem value="No Customer" update="pageContentPanel"
actionListener="#{pf_ordersController.browseOrdersNoCustomer}"/>
<p:menuitem value="Quote Not Sent" update="pageContentPanel"
actionListener="#{pf_ordersController.browseOrdersQuoteNotSent}"/>
</p:submenu>
</p:submenu>
<p:submenu label="Customers">
<p:menuitem value="Add" update="pageContentPanel"
actionListener="#{pf_customerController.prepareCreate}"/>
<p:menuitem value="Browse" update="pageContentPanel"
actionListener="#{pf_customerController.prepareList}"/>
</p:submenu>
<p:submenu label="Charges">
<p:menuitem value="Add" update="pageContentPanel"
actionListener="#{pf_chargesController.prepareCreate}"/>
<p:menuitem value="Browse" update="pageContentPanel"
actionListener="#{pf_chargesController.prepareList}"/>
</p:submenu>
<p:submenu label="Services">
<p:menuitem value="Add" update="pageContentPanel"
actionListener="#{pf_serviceController.prepareCreate}"/>
<p:menuitem value="Browse" update="pageContentPanel"
actionListener="#{pf_serviceController.prepareList}"/>
</p:submenu>
<p:submenu label="Drivers">
<p:menuitem value="Add" update="pageContentPanel"
actionListener="#{pf_driverController.prepareCreate}"/>
<p:menuitem value="Browse" update="pageContentPanel"
actionListener="#{pf_driverController.prepareList}"/>
</p:submenu>
<p:submenu label="Subcontractors">
<p:menuitem value="Add" update="pageContentPanel"
actionListener="#{pf_subcontractorController.prepareCreate}"/>
<p:menuitem value="Browse" update="pageContentPanel"
actionListener="#{pf_subcontractorController.prepareList}"/>
</p:submenu>
<p:submenu label="Vehicles">
<p:menuitem value="Add" update="pageContentPanel"
actionListener="#{pf_vehicleController.prepareCreate}"/>
<p:menuitem value="Browse" update="pageContentPanel"
actionListener="#{pf_vehicleController.prepareList}"/>
</p:submenu>
</p:menubar>
</h:form>
</ui:composition>
</html>
Code: Select all
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui">
<ui:composition>
<h:form id="ordersBrowseForm" onkeypress="disableEnterKey(event)" >
<p:panel header="ORDERS #{pf_ordersController.browseOption}">
<p:schedule value="#{pf_ordersController.lazyScheduleModel}" />
</p:panel>
</h:form>
<script language="JavaScript">
function disableEnterKey(e)
{
var key;
if(window.event)
key = window.event.keyCode; //IE
else
key = e.which; //firefox
if(key == 13)
return false;
else
return true;
}
</script>
</ui:composition>
</html>
pf_OrdersController.java
Code: Select all
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package jsf.orders;
import java.io.Serializable;
import java.text.*;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.FacesConverter;
import javax.faces.model.SelectItem;
import jpa.entities.Destination;
import jpa.entities.Orders;
import jpa.entities.OrderNotes;
import jpa.session.OrdersFacade;
import jpa.session.OrderNotesFacade;
import jsf.util.JsfUtil;
import org.primefaces.event.DateSelectEvent;
import org.primefaces.model.LazyDataModel;
import org.primefaces.model.LazyScheduleModel;
import org.primefaces.model.DefaultScheduleEvent;
import org.primefaces.model.ScheduleModel;
import pf.MessagesController;
import pf.PageNavigationController;
/* *** VIEWSCOPED as per BalusC
* *** http://stackoverflow.com/questions/3180400/recommended-jsf-2-0-crud-frameworks
* *** http://balusc.blogspot.com/2010/06/benefits-and-pitfalls-of-viewscoped.html
*/
@ManagedBean(name = "pf_ordersController")
@ViewScoped
public class pf_OrdersController implements Serializable {
private Orders current;
private OrderNotes currentNotes;
private Orders[] selectedRows;
private LazyDataModel<Orders> lazyModel;
private ScheduleModel lazyScheduleModel;
@EJB
private OrdersFacade ejbFacade;
@EJB
private OrderNotesFacade ejbFacadeNotes;
private PageNavigationController pageNavigation;
private MessagesController messages;
private String filterCustomer, filterCustomerPointOfContact, filterDestination;
private Date filterTripDateFrom, filterTripDateTo;
private String rowPanelStyle;
private String tableName;
private Boolean browse, add, edit, view, viewToAdd, viewToEdit, addToViewEdit;
/*
* BROWSE options: All, Confirmed, Delete, Need Pricing, Quote Not Sent
*
* Confirmed orders.confirmed = 'Y'
* Contract Not Sent orders.confirmed = 'N' and orders.contract_sent = 'N' and orders.total_cost > 0
* Delete orders.delete = 'Y' (Yes) *** DO NOT COPY THESE ORDERS via mcmsdbtransfer
* Invoice Not Sent orders.confirmed = 'N' and orders.invoice_sent = 'N' and orders.total_cost > 0
* Need Pricing orders.total_cost = 0.00 *** CUSTOMER = 'NEED QUOTE'; exclude NO CUSTOMER from this list
* No Customer orders.customerId.customerName = 'NO CUSTOMER'
* Quote Not Sent orders.confirmed = 'N' and orders.quote_sent = 'N' and orders.total_cost > 0
*
*/
private Boolean browseAll, browseConfirmed, browseContractNotSent, browseDefinite, browseDelete, browseInvoiceNotSent;
private Boolean browseNeedPricing, browseNoCustomer, browseQuote, browseQuoteNotSent, browseTentative;
private Boolean browseByCalendar, browseByTable;
private String browseOption, browseByCalendarIcon, browseByTableIcon;
// embed HTML in h:outputText via escape="false"
// <h:outputText escape="false" value="..." />
private static String br = "<br>";
private static String iconCheck = "ui-icon-check";
public pf_OrdersController() {
lazyModel = null;
current = null;
currentNotes = null;
messages = new MessagesController();
filterCustomer = "";
filterCustomerPointOfContact = "";
filterDestination = "";
filterTripDateFrom = new Date();
filterTripDateTo = new Date();
tableName = "orders";
browse = false;
add = false;
edit = false;
view = false;
viewToAdd = false;
viewToEdit = false;
addToViewEdit = false;
// BROWSE ORDERS options: default = ALL
browseAll = true;
browseConfirmed = false;
browseContractNotSent = false;
browseDelete = false;
browseInvoiceNotSent = false;
browseNeedPricing = false;
browseNoCustomer = false;
browseQuoteNotSent = false;
browseDefinite = false;
browseTentative = false;
browseQuote = false;
browseByCalendar = false;
browseByTable = true;
browseOption = "";
// BROWSE ORDERS BY option: default = TABLE
browseByCalendarIcon = "";
browseByTableIcon = iconCheck;
lazyScheduleModel = new LazyScheduleModel() {
@Override
public void loadEvents(Date start, Date end) {
try {
// filter by
String tripDateFrom = getDateFromDateTime(start);
String tripDateTo = getDateFromDateTime(end);
List<Orders> filteredList = getFacade().filterBy(browseAll, browseConfirmed, browseContractNotSent, browseDefinite,
browseInvoiceNotSent, browseNeedPricing, browseNoCustomer,
browseQuote, browseQuoteNotSent, browseTentative,
filterCustomer, filterCustomerPointOfContact, filterDestination,
tripDateFrom, tripDateTo);
Integer listSize = filteredList.size();
for (int i = 0; i <= listSize; i++) {
Orders order = filteredList.get(i);
String title = order.getCustomerId().getCustomerName();
Date tripDate = order.getTripDateTime();
Date returnDate = order.getReturnDateTime();
addEvent(new DefaultScheduleEvent(title, tripDate, returnDate));
}
} catch (ParseException parseException) {
parseException.printStackTrace();
messages.addFormErrorMsg("Error parsing Trip Date", (parseException.getMessage() != null) ? parseException.getMessage() : "");
} catch (Exception e) {
e.printStackTrace();
messages.addFormErrorMsg("Error retrieving list of Orders", (e.getMessage() != null) ? e.getMessage() : "");
}
}
};
} // pf_OrdersController()
public void browseOrdersAll() {
browseAll = true;
browseConfirmed = false;
browseContractNotSent = false;
browseDelete = false;
browseInvoiceNotSent = false;
browseNeedPricing = false;
browseNoCustomer = false;
browseQuoteNotSent = false;
browseDefinite = false;
browseTentative = false;
browseQuote = false;
prepareList();
}
public void browseOrdersByCalendar() {
browseByCalendar = true;
browseByTable = false;
browseByCalendarIcon = (browseByCalendar ? iconCheck : "");
browseByTableIcon = (browseByTable ? iconCheck : "");
prepareList();
}
public void browseOrdersByTable() {
browseByTable = true;
browseByCalendar = false;
browseByCalendarIcon = (browseByCalendar ? iconCheck : "");
browseByTableIcon = (browseByTable ? iconCheck : "");
prepareList();
}
public void browseOrdersConfirmed() {
browseAll = false;
browseConfirmed = true;
browseContractNotSent = false;
browseDelete = false;
browseInvoiceNotSent = false;
browseNeedPricing = false;
browseNoCustomer = false;
browseQuoteNotSent = false;
browseDefinite = false;
browseTentative = false;
browseQuote = false;
prepareList();
}
public void browseOrdersContractNotSent() {
browseAll = false;
browseConfirmed = false;
browseContractNotSent = true;
browseDelete = false;
browseInvoiceNotSent = false;
browseNeedPricing = false;
browseNoCustomer = false;
browseQuoteNotSent = false;
browseDefinite = false;
browseTentative = false;
browseQuote = false;
prepareList();
}
public void browseOrdersDefinite() {
browseAll = false;
browseConfirmed = false;
browseContractNotSent = false;
browseDelete = false;
browseInvoiceNotSent = false;
browseNeedPricing = false;
browseNoCustomer = false;
browseQuoteNotSent = false;
browseDefinite = true;
browseTentative = false;
browseQuote = false;
prepareList();
}
public void browseOrdersDelete() {
browseAll = false;
browseConfirmed = false;
browseContractNotSent = false;
browseDelete = true;
browseInvoiceNotSent = false;
browseNeedPricing = false;
browseNoCustomer = false;
browseQuoteNotSent = false;
browseDefinite = false;
browseTentative = false;
browseQuote = false;
/*
* DO NOT COPY THESE ORDERS via mcmsdbtransfer
*/
//prepareList();
}
public void browseOrdersInvoiceNotSent() {
browseAll = false;
browseConfirmed = false;
browseContractNotSent = false;
browseDelete = false;
browseInvoiceNotSent = true;
browseNeedPricing = false;
browseNoCustomer = false;
browseQuoteNotSent = false;
browseDefinite = false;
browseTentative = false;
browseQuote = false;
prepareList();
}
public void browseOrdersNeedPricing() {
browseAll = false;
browseConfirmed = false;
browseContractNotSent = false;
browseDelete = false;
browseInvoiceNotSent = false;
browseNeedPricing = true;
browseNoCustomer = false;
browseQuoteNotSent = false;
browseDefinite = false;
browseTentative = false;
browseQuote = false;
prepareList();
}
public void browseOrdersNoCustomer() {
browseAll = false;
browseConfirmed = false;
browseContractNotSent = false;
browseDelete = false;
browseInvoiceNotSent = false;
browseNeedPricing = false;
browseNoCustomer = true;
browseQuoteNotSent = false;
browseDefinite = false;
browseTentative = false;
browseQuote = false;
prepareList();
}
public void browseOrdersQuote() {
browseAll = false;
browseConfirmed = false;
browseContractNotSent = false;
browseDelete = false;
browseInvoiceNotSent = false;
browseNeedPricing = false;
browseNoCustomer = false;
browseQuoteNotSent = false;
browseDefinite = false;
browseTentative = false;
browseQuote = true;
prepareList();
}
public void browseOrdersQuoteNotSent() {
browseAll = false;
browseConfirmed = false;
browseContractNotSent = false;
browseDelete = false;
browseInvoiceNotSent = false;
browseNeedPricing = false;
browseNoCustomer = false;
browseQuoteNotSent = true;
browseDefinite = false;
browseTentative = false;
browseQuote = false;
prepareList();
}
public void browseOrdersTentative() {
browseAll = false;
browseConfirmed = false;
browseContractNotSent = false;
browseDelete = false;
browseInvoiceNotSent = false;
browseNeedPricing = false;
browseNoCustomer = false;
browseQuoteNotSent = false;
browseDefinite = false;
browseTentative = true;
browseQuote = false;
prepareList();
}
public String getBrowseOption() {
if (browseAll) {
browseOption = "";
}
else if (browseConfirmed) {
browseOption = " (CONFIRMED)";
}
else if (browseContractNotSent) {
browseOption = " (CONTRACT NOT SENT)";
}
else if (browseDefinite) {
browseOption = " (BOOKING STATUS: DEFINITE)";
}
else if (browseInvoiceNotSent) {
browseOption = " (INVOICE NOT SENT)";
}
else if (browseNeedPricing) {
browseOption = " (NEED PRICING)";
}
else if (browseNoCustomer) {
browseOption = " (NO CUSTOMER)";
}
else if (browseQuote) {
browseOption = " (BOOKING STATUS: QUOTE)";
}
else if (browseQuoteNotSent) {
browseOption = " (QUOTE NOT SENT)";
}
else if (browseTentative) {
browseOption = " (BOOKING STATUS: TENTATIVE)";
}
return browseOption;
}
public String getBrowseByCalendarIcon() {
return browseByCalendarIcon;
}
public String getBrowseByTableIcon() {
return browseByTableIcon;
}
public LazyDataModel<Orders> getLazyModel() {
try {
/* *** MAY NEED TO REMOVE if (lazyModel == null) *** */
if (lazyModel == null) {
// filter by
String tripDateFrom = getDateFromDateTime(filterTripDateFrom);
String tripDateTo = getDateFromDateTime(filterTripDateTo);
lazyModel = new LazyOrdersDataModel(getFacade().filterBy(browseAll, browseConfirmed, browseContractNotSent, browseDefinite,
browseInvoiceNotSent, browseNeedPricing, browseNoCustomer,
browseQuote, browseQuoteNotSent, browseTentative,
filterCustomer, filterCustomerPointOfContact, filterDestination,
tripDateFrom, tripDateTo));
} // lazyModel == null
} catch (ParseException parseException) {
parseException.printStackTrace();
messages.addFormErrorMsg("Error parsing Trip Date", (parseException.getMessage() != null) ? parseException.getMessage() : "");
} catch (Exception e) {
e.printStackTrace();
messages.addFormErrorMsg("Error retrieving list of Orders", (e.getMessage() != null) ? e.getMessage() : "");
}
return lazyModel;
}
public void setLazyModel(LazyDataModel<Orders> lazyModel) {
this.lazyModel = lazyModel;
}
public ScheduleModel getLazyScheduleModel() {
return lazyScheduleModel;
}
public Boolean getAdd() {
return add;
}
public void setAdd(Boolean add) {
this.add = add;
}
public Boolean getBrowse() {
return browse;
}
public void setBrowse(Boolean browse) {
this.browse = browse;
}
public Boolean getEdit() {
return edit;
}
public void setEdit(Boolean edit) {
this.edit = edit;
}
public Boolean getView() {
return view;
}
public void setView(Boolean view) {
this.view = view;
}
private String getDateFromDateTime (Date date) throws ParseException {
DateFormat formatter;
String myDate;
formatter = new SimpleDateFormat("yyyy-MM-dd");
myDate = formatter.format(date);
return myDate;
} // getYearFromDate
public String getDestinationListDisplay(List<Destination> destinationList) {
String destination = null;
if (destinationList != null) {
for (Destination d : destinationList) {
if (d.getDestinationTx() != null) {
if (destination == null)
destination = d.getDestinationTx();
else
destination += br + d.getDestinationTx();
}
}
}
if (destination == null)
destination = new String();
return destination;
}
private OrdersFacade getFacade() {
return ejbFacade;
}
public String getFilterCustomer() {
return filterCustomer;
}
public void setFilterCustomer(String filterCustomer) {
this.filterCustomer = filterCustomer;
}
public String getFilterCustomerPointOfContact() {
return filterCustomerPointOfContact;
}
public void setFilterCustomerPointOfContact(String filterCustomerPointOfContact) {
this.filterCustomerPointOfContact = filterCustomerPointOfContact;
}
public String getFilterDestination() {
return filterDestination;
}
public void setFilterDestination(String filterDestination) {
this.filterDestination = filterDestination;
}
public Date getFilterTripDateFrom() {
return filterTripDateFrom;
}
public void setFilterTripDateFrom(Date filterTripDateFrom) {
this.filterTripDateFrom = filterTripDateFrom;
}
public void filterTripDateFromSelected(DateSelectEvent event) {
filterTripDateFrom = event.getDate();
if (filterTripDateFrom.after(filterTripDateTo))
filterTripDateTo = filterTripDateFrom;
prepareList();
}
public Date getFilterTripDateTo() {
return filterTripDateTo;
}
public void setFilterTripDateTo(Date filterTripDateTo) {
this.filterTripDateTo = filterTripDateTo;
}
public void filterTripDateToSelected(DateSelectEvent event) {
filterTripDateTo = event.getDate();
if (filterTripDateTo.before(filterTripDateFrom)) {
messages.addFormInfoMsg("Please select Trip Date TO that occurs on same day or after Trip Date FROM.", "");
}
else
prepareList();
}
public String getNotesDisplay(String notesTx) {
if (notesTx == null)
notesTx = new String();
else
notesTx = "<pre>" + notesTx + "</pre>";
return notesTx;
}
public String getNotesTx() {
if (currentNotes == null)
currentNotes = new OrderNotes(1);
if (currentNotes.getNotesTx() == null)
currentNotes.setNotesTx("");
return currentNotes.getNotesTx();
}
public void setNotesTx(String NotesTx) {
if (currentNotes == null)
currentNotes = new OrderNotes(1);
if (currentNotes.getNotesTx() == null)
currentNotes.setNotesTx("");
currentNotes.setNotesTx(NotesTx);
}
private PageNavigationController getPageNavigation () {
// get reference to MessagesController managed/session bean
pageNavigation = (PageNavigationController)
FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("PageNavigationController");
return pageNavigation;
}
public String getRowPanelStyle() {
/*
if (messages.anyFormMsg())
rowPanelStyle = "width:500px !important;";
else
rowPanelStyle = "width:350px !important;";
*/
rowPanelStyle = "width:600px !important;";
return rowPanelStyle;
}
public Orders getSelected() {
if (current == null) {
current = new Orders();
currentNotes = null;
}
else {
if (currentNotes == null)
currentNotes = current.getNotesId();
}
return current;
}
public Orders[] getSelectedRows() {
return selectedRows;
}
public void setSelectedRows(Orders[] selectedRows) {
this.selectedRows = selectedRows;
}
public String getTableName() {
return tableName;
}
public String clearFilter() {
filterCustomer = "";
filterCustomerPointOfContact = "";
filterDestination = "";
filterTripDateFrom = new Date();
filterTripDateTo = new Date();
return prepareList();
}
public String prepareCancel() {
if (add) {
if (getPageNavigation().isPreviousPage("/orders/pf_Browse.xhtml")) {
if (viewToAdd)
prepareView();
else {
getPageNavigation().cancelPage();
prepareList();
}
}
else {
getPageNavigation().setToBlankPage();
}
}
else if (edit) {
if (viewToEdit)
prepareView();
else {
prepareList();
}
}
else {
prepareList();
}
return null;
}
public String prepareList() {
recreateModel();
browse = true;
add = false;
edit = false;
view = false;
viewToAdd = false;
viewToEdit = false;
addToViewEdit = false;
if (browseByCalendar)
getPageNavigation().setPage("/orders/pf_BrowseCalendar.xhtml");
else
getPageNavigation().setPage("/orders/pf_Browse.xhtml");
return null;
}
public String prepareView() {
if (!addToViewEdit && add) addToViewEdit = true;
if (!addToViewEdit) {
if (selectedRows == null || selectedRows.length != 1) {
messages.addFormInfoMsg("Please select ONE row to view.", "");
return null;
}
else
current = selectedRows[0];
}
currentNotes = current.getNotesId();
browse = false;
add = false;
edit = false;
view = true;
viewToAdd = false;
viewToEdit = false;
getPageNavigation().setPage("/orders/pf_View.xhtml");
return null;
}
public String prepareCreate() {
current = new Orders();
currentNotes = null;
viewToAdd = view;
browse = false;
add = true;
edit = false;
view = false;
getPageNavigation().setPage("/orders/pf_Add.xhtml");
return null;
}
public String create() {
try {
// create OrderNotes, first
if (currentNotes != null) {
ejbFacadeNotes.create(currentNotes);
current.setNotesId(currentNotes);
}
// set createdDt to current date/time
current.setCreatedDt(new Date());
String ordersName = "";
/*
* Exception below is thrown when adding new orders rows to database table
*
* Internal Exception: java.sql.SQLIntegrityConstraintViolationException: The statement was aborted
* because it would have caused a duplicate key value in a unique or primary key constraint or
* unique index identified by 'ORDER_PK' defined on 'ORDER'.
*
* see below articles:
*
* http://old.nabble.com/Auto-Increment-Constraint-Error-td18355172.html
* http://db.apache.org/derby/docs/dev/ref/rrefsqlj81859.html#rrefsqlj81859__rrefsqlj37860
*
*/
current.setOrderId(1);
getFacade().create(current);
messages.addFormInfoMsg("ORDER added successfully", ordersName);
prepareView();
} catch (Exception e) {
e.printStackTrace();
messages.addFormErrorMsg("Error adding ORDER", (e.getMessage() != null) ? e.getMessage() : "");
}
return null;
}
public String prepareEdit() {
if (!addToViewEdit && add) addToViewEdit = true;
if (!addToViewEdit) {
if (selectedRows == null || selectedRows.length != 1) {
messages.addFormInfoMsg("Please select ONE row to edit.", "");
return null;
}
else
current = selectedRows[0];
}
currentNotes = current.getNotesId();
viewToEdit = view;
browse = false;
add = false;
edit = true;
view = false;
getPageNavigation().setPage("/orders/pf_Edit.xhtml");
return null;
}
public String update() {
try {
// create OrderNotes, first
if (currentNotes != null) {
if (current.getNotesId() == null) {
ejbFacadeNotes.create(currentNotes);
current.setNotesId(currentNotes);
}
else {
ejbFacadeNotes.edit(currentNotes);
}
}
// set changedDt to current date/time
String ordersName = "";
current.setChangedDt(new Date());
getFacade().edit(current);
messages.addFormInfoMsg("ORDER updated successfully", ordersName);
} catch (Exception e) {
e.printStackTrace();
messages.addFormErrorMsg("Error updating ORDER", (e.getMessage() != null) ? e.getMessage() : "");
}
return prepareView();
}
public String confirmDelete() {
// if no row selected
if (current == null)
messages.addFormInfoMsg("Please select row to delete.", "");
else
getPageNavigation().setPage("/orders/pf_ConfirmDelete.xhtml");
return null;
}
public String confirmDeleteSelectedRows() {
// if no rows selected
if (selectedRows.length == 0)
messages.addFormInfoMsg("No rows selected.", "");
else
getPageNavigation().setPage("/orders/pf_ConfirmDelete.xhtml");
return null;
}
/*
* delete() not used at all, since /orders/pf_ConfirmDelete.xhtml
* calls deleteSelectedRows()
*/
public String delete() {
performDelete();
prepareList();
return null;
}
private void performDelete() {
try {
// to display in SUCCESSFUL delete msg
String ordersName = "";
currentNotes = current.getNotesId();
getFacade().remove(current);
if (currentNotes != null) {
ejbFacadeNotes.remove(currentNotes);
}
// SUCCESSFUL delete msg
messages.addFormInfoMsg("ORDER deleted successfully", ordersName);
} catch (Exception e) {
e.printStackTrace();
messages.addFormErrorMsg("Error deleting ORDER", (e.getMessage() != null) ? e.getMessage() : "");
}
}
public String deleteSelectedRows() {
performDeleteSelectedRows();
prepareList();
return null;
}
private void performDeleteSelectedRows() {
try {
for (int row = 0; row < selectedRows.length; row++) {
Orders orders = selectedRows[row];
OrderNotes orderNotes = orders.getNotesId();
getFacade().remove(orders);
if (orderNotes != null) {
ejbFacadeNotes.remove(orderNotes);
}
}
messages.addFormInfoMsg("Selected ORDERS deleted successfully", "");
} catch (Exception e) {
e.printStackTrace();
messages.addFormErrorMsg("Error deleting selected ORDERS", (e.getMessage() != null) ? e.getMessage() : "");
}
}
private void recreateModel() {
lazyModel = null;
lazyScheduleModel = null;
current = null;
currentNotes = null;
selectedRows = null;
}
public SelectItem[] getItemsAvailableSelectMany() {
return JsfUtil.getSelectItems(ejbFacade.findAll(), false);
}
/*
* returned List<Orders> to populate <p:selectOneMenu />
* <f:selectItems value="#{pf_ordersController.itemsAvailableSelectOne}"
* var="orders" itemLabel="#{orders.ordersName}" itemValue="#{orders}"/>
* http://stackoverflow.com/questions/4595280/jsf-selectonemenu-with-noselectionoption-using-label-as-value
*/
public List<Orders> getItemsAvailableSelectOne() {
return getFacade().findAll();
}
/*
* Deleted @FacesConverter(...) annotation from jsf.OrdersController.java
*/
@FacesConverter(forClass = Orders.class)
public static class OrdersControllerConverter implements Converter {
public Object getAsObject(FacesContext facesContext, UIComponent component, String value) {
if (value == null || value.length() == 0) {
return null;
}
pf_OrdersController controller = (pf_OrdersController) facesContext.getApplication().getELResolver().
getValue(facesContext.getELContext(), null, "pf_ordersController");
return controller.ejbFacade.find(getKey(value));
}
java.lang.Integer getKey(String value) {
java.lang.Integer key;
key = Integer.valueOf(value);
return key;
}
String getStringKey(java.lang.Integer 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 Orders) {
Orders o = (Orders) object;
return getStringKey(o.getOrderId());
} else {
throw new IllegalArgumentException("object " + object + " is of type " + object.getClass().getName() + "; expected type: " + pf_OrdersController.class.getName());
}
}
}
}
Thanks,
Howard