<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<body link="#355491" alink="#4262a1" vlink="#355491" style="background: #e2e2e2; margin: 0; padding: 20px;">

<div>
        <table cellpadding="0" bgcolor="#FFFFFF" border="0" cellspacing="0" style="border: 1px solid #dadada; margin-bottom: 30px; width: 100%; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
                <tbody>
                        <tr>

                                <td>

                                        <table border="0" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF" style="border: solid 2px #ccc; background: #dadada; width: 100%; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
                                                <tbody>
                                                        <tr>
                                                                <td bgcolor="#000000" valign="middle" height="58px" style="border-bottom: 1px solid #ccc; padding: 20px; -moz-border-radius-topleft: 3px; -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 5px; -webkit-border-top-left-radius: 5px;">
                                                                        <h1 style="color: #333333; font: bold 22px Arial, Helvetica, sans-serif; margin: 0; display: block !important;">
                                                                        <!-- To have a header image/logo replace the name below with your img tag -->
                                                                        <!-- Email clients will render the images when the message is read so any image -->
                                                                        <!-- must be made available on a public server, so that all recipients can load the image. -->
                                                                        <a href="http://community.jboss.org/index.jspa" style="text-decoration: none; color: #E1E1E1">JBoss Community</a></h1>
                                                                </td>

                                                        </tr>
                                                        <tr>
                                                                <td bgcolor="#FFFFFF" style="font: normal 12px Arial, Helvetica, sans-serif; color:#333333; padding: 20px;  -moz-border-radius-bottomleft: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 5px; -webkit-border-bottom-left-radius: 5px;"><h3 style="margin: 10px 0 5px; font-size: 17px; font-weight: normal;">
    RichFaces ExtendedDataTable not setting the Selection attribute
</h3>
<span style="margin-bottom: 10px;">
    created by <a href="http://community.jboss.org/people/david-brighton">david hickman</a> in <i>JBoss Web Services</i> - <a href="http://community.jboss.org/message/574386#574386">View the full discussion</a>
</span>
<hr style="margin: 20px 0; border: none; background-color: #dadada; height: 1px;">

<div class="jive-rendered-content"><p>Hi</p><p>I am using Richfaces&#160; richfaces-ui-3.3.3.Final with jojarra-2.0.3 Core JSF and Jave 1.6 running in tomcat 6.0.29.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>I am populating the extendedDataTable using the data model shown below but when I select an entry, the backing bean method is being called but the selection variable is being set but with no keys, any help would be appreciated:</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>// snippet from jsp</p><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;r:simpleTogglePanel&gt;&#160;&#160;&#160; <br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;f:facet name="header"&gt;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;h:outputText value="User Search Results"/&gt;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;/f:facet&gt;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;a:outputPanel id="userSearchResultsPanel" &gt;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;r:extendedDataTable id="userTable"<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; height="200px"<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; value="#{userBean.dataModel}"<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; var="user"<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; selectionMode="single" <br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; selection="#{userBean.searchSelection}"&gt;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;r:column sortOrder="ASCENDING"&#160; &gt;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;f:facet name="header"&gt;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;h:outputText value="User Name" /&gt;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;/f:facet&gt;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;h:outputText value="#{user.userName}" /&gt;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;/r:column&gt;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;r:column sortOrder="ASCENDING"&#160;&#160; &gt;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;f:facet name="header"&gt;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;h:outputText value="First Name" /&gt;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;/f:facet&gt;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;h:outputText value="#{user.firstName}" /&gt;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;/r:column&gt;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;r:column sortOrder="ASCENDING"&#160; &gt;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;f:facet name="header"&gt;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;h:outputText value="Surname" /&gt;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;/f:facet&gt;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;h:outputText value="#{user.surName}" /&gt;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;/r:column&gt;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;r:column sortOrder="ASCENDING"&gt;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;f:facet name="header"&gt;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;h:outputText value="Cost Center" /&gt;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;/f:facet&gt;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;h:outputText value="#{user.costCenter}" /&gt;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;/r:column&gt;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;a:support event="onselectionchange"<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; reRender="userDetailPanel" <br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; action="#{userBean.identifySelectedUser}" /&gt;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;/r:extendedDataTable&gt;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;r:spacer height="10px" /&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;/a:outputPanel&gt;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &lt;/r:simpleTogglePanel&gt;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>// Data Provider</p><p>package util;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>import java.util.*;<br/>import vo.User;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>import org.apache.log4j.Logger;<br/>import org.richfaces.model.DataProvider;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>public class UserTableDataProvider implements DataProvider{<br/>&#160;&#160;&#160; <br/>&#160;&#160;&#160; private Logger log = Logger.getLogger( "UserTableDataProvider: " );<br/>&#160;&#160;&#160; <br/>&#160;&#160;&#160; private Map&lt;UUID, UIUser&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160; dataTable;<br/>&#160;&#160;&#160; private List&lt;UIUser&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; dataList;<br/>&#160;&#160;&#160; <br/>&#160;&#160;&#160; public UserTableDataProvider( List&lt;User&gt; users ) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; dataTable = new HashMap&lt;UUID,UIUser&gt;();<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; dataList&#160; = new ArrayList&lt;UIUser&gt;( users.size());<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; for ( User user : users ) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; UIUser uiUser = new UIUser( user );<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; dataTable.put( uiUser.getId(), uiUser);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; dataList.add( uiUser );<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; }</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>&#160;&#160;&#160; }<br/>&#160;&#160;&#160; /**<br/>&#160;&#160;&#160;&#160; * <br/>&#160;&#160;&#160;&#160; */<br/>&#160;&#160;&#160; public Object getItemByKey( Object key ) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; return dataTable.get(( String)key );<br/>&#160;&#160;&#160; }<br/>&#160;&#160;&#160; /**<br/>&#160;&#160;&#160;&#160; * <br/>&#160;&#160;&#160;&#160; */<br/>&#160;&#160;&#160; public List getItemsByRange( int start, int end ) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; return dataList.subList( start, end );<br/>&#160;&#160;&#160; }<br/>&#160;&#160;&#160; /**<br/>&#160;&#160;&#160;&#160; * <br/>&#160;&#160;&#160;&#160; */<br/>&#160;&#160;&#160; public Object getKey( Object user ) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; return ((UIUser)user).getId();<br/>&#160;&#160;&#160; }<br/>&#160;&#160;&#160; /**<br/>&#160;&#160;&#160;&#160; * <br/>&#160;&#160;&#160;&#160; */<br/>&#160;&#160;&#160; public int getRowCount() {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; return dataList.size();<br/>&#160;&#160;&#160; }<br/>}</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>// Backing Bean</p><p>package beans;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>import org.apache.log4j.*;<br/>import org.richfaces.model.selection.SimpleSelection;<br/>import org.richfaces.model.ExtendedTableDataModel;<br/>import util.UserTableDataProvider;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>import java.util.HashMap;<br/>import java.util.ArrayList;<br/>import java.util.List;<br/>import java.util.Iterator;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p><br/>import exception.UserException;<br/>import exception.BaseRuntimeException;<br/>import vo.User;<br/>import service.UserService;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>public class UserBean extends BaseBean {</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>&#160;&#160;&#160; private Logger log = Logger.getLogger( "UserBean: " );<br/>&#160;&#160;&#160; <br/>&#160;&#160;&#160; //////////////////////////////////////////////////////////<br/>&#160;&#160;&#160; // Injected properties<br/>&#160;&#160;&#160; //////////////////////////////////////////////////////////<br/>&#160;&#160;&#160; private UserService userService;<br/>&#160;&#160;&#160; <br/>&#160;&#160;&#160; //////////////////////////////////////////////////////////<br/>&#160;&#160;&#160; // Private static data<br/>&#160;&#160;&#160; //////////////////////////////////////////////////////////<br/>&#160;&#160;&#160; private final static String COST_CENTER&#160;&#160;&#160;&#160; = "CC";<br/>&#160;&#160;&#160; private final static String SURNAME&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; = "SN";<br/>&#160;&#160;&#160; private final static String USERNAME&#160;&#160;&#160;&#160;&#160;&#160;&#160; = "UN";<br/>&#160;&#160;&#160; <br/>&#160;&#160;&#160; //////////////////////////////////////////////////////////<br/>&#160;&#160;&#160; // Private member variables<br/>&#160;&#160;&#160; //////////////////////////////////////////////////////////<br/>&#160;&#160;&#160; // basic attributes<br/>&#160;&#160;&#160; private String&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; userName;<br/>&#160;&#160;&#160; private String&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; password;<br/>&#160;&#160;&#160; private String&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; userType;&#160;&#160;&#160; <br/>&#160;&#160;&#160; private String&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; email;<br/>&#160;&#160;&#160; private String&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; firstName;<br/>&#160;&#160;&#160; private String&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; surname;<br/>&#160;&#160;&#160; private String&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; costCenter;<br/>&#160;&#160;&#160; private HashMap&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; userTypes;<br/>&#160;&#160;&#160; private String&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; active;<br/>&#160;&#160;&#160; private List&lt;User&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; users;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>&#160;&#160;&#160; // search attributes<br/>&#160;&#160;&#160; private String&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; searchType;<br/>&#160;&#160;&#160; private String&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; searchCriteria;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>&#160;&#160;&#160; <br/>&#160;&#160;&#160; private SimpleSelection&#160;&#160;&#160;&#160;&#160;&#160;&#160; searchSelection;<br/>&#160;&#160;&#160; private ExtendedTableDataModel dataModel;<br/>&#160;&#160;&#160; <br/>&#160;&#160;&#160; <br/>&#160;&#160;&#160; // default bean constructor<br/>&#160;&#160;&#160; public UserBean() {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; users = new ArrayList&lt;User&gt;();<br/>&#160;&#160;&#160; }<br/>&#160;&#160;&#160; <br/>&#160;&#160;&#160; <br/>&#160;&#160;&#160; //////////////////////////////////////////////<br/>&#160;&#160;&#160; // Bean property accessor methods<br/>&#160;&#160;&#160; //////////////////////////////////////////////<br/>&#160;&#160;&#160; public String getUserName() {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; return userName;<br/>&#160;&#160;&#160; }<br/>&#160;&#160;&#160; <br/>&#160;&#160;&#160; public void setUserName(String userName) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; this.userName = userName;<br/>&#160;&#160;&#160; }<br/>&#160;&#160;&#160; <br/>&#160;&#160;&#160; public String getPassword() {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; return password;<br/>&#160;&#160;&#160; }<br/>&#160;&#160;&#160; <br/>&#160;&#160;&#160; public void setPassword(String password) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; this.password = password;<br/>&#160;&#160;&#160; }<br/>&#160;&#160;&#160; public String getUserType() {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; return userType;<br/>&#160;&#160;&#160; }<br/>&#160;&#160;&#160; public void setUserType(String userType) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; this.userType = userType;<br/>&#160;&#160;&#160; }</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>&#160;&#160;&#160; public String getEmail() {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; return email;<br/>&#160;&#160;&#160; }</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>&#160;&#160;&#160; public void setEmail(String email) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; this.email = email;<br/>&#160;&#160;&#160; }</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p><br/>&#160;&#160;&#160; public String getFirstName() {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; return firstName;<br/>&#160;&#160;&#160; }</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>&#160;&#160;&#160; public void setFirstName(String firstName) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; this.firstName = firstName;<br/>&#160;&#160;&#160; }</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>&#160;&#160;&#160; public String getSurname() {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; return surname;<br/>&#160;&#160;&#160; }</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>&#160;&#160;&#160; public void setSurname(String surname) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; this.surname = surname;<br/>&#160;&#160;&#160; }</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>&#160;&#160;&#160; public String getCostCenter() {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; return costCenter;<br/>&#160;&#160;&#160; }</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>&#160;&#160;&#160; public void setCostCenter(String costCenter) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; this.costCenter = costCenter;<br/>&#160;&#160;&#160; }</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>&#160;&#160;&#160; public HashMap getUserTypes() {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; return userTypes;<br/>&#160;&#160;&#160; }</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p><br/>&#160;&#160;&#160; public void setUserTypes(HashMap userTypes) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; this.userTypes = userTypes;<br/>&#160;&#160;&#160; }</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p><br/>&#160;&#160;&#160; public String getActive() {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; return active;<br/>&#160;&#160;&#160; }</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p><br/>&#160;&#160;&#160; public void setActive(String active) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; this.active = active;<br/>&#160;&#160;&#160; }</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p><br/>&#160;&#160;&#160; public String getSearchType() {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; return searchType;<br/>&#160;&#160;&#160; }</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p><br/>&#160;&#160;&#160; public void setSearchType(String searchType) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; this.searchType = searchType;<br/>&#160;&#160;&#160; }</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p><br/>&#160;&#160;&#160; public String getSearchCriteria() {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; return searchCriteria;<br/>&#160;&#160;&#160; }</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p><br/>&#160;&#160;&#160; public void setSearchCriteria(String searchCriteria) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; this.searchCriteria = searchCriteria;<br/>&#160;&#160;&#160; }</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>&#160;&#160;&#160; public SimpleSelection getSearchSelection() {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; return searchSelection;<br/>&#160;&#160;&#160; }</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p><br/>&#160;&#160;&#160; public void setSearchSelection(SimpleSelection searchSelection) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; log.info("UserBean.setSearchSelection");<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; this.searchSelection = searchSelection;<br/>&#160;&#160;&#160; }</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>&#160;&#160;&#160; public ExtendedTableDataModel getDataModel() {</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; dataModel = new ExtendedTableDataModel( new UserTableDataProvider( users ));<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; return dataModel;<br/>&#160;&#160;&#160; }</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p><br/>&#160;&#160;&#160; public void setDataModel(ExtendedTableDataModel dataModel) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; this.dataModel = dataModel;<br/>&#160;&#160;&#160; }</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p><br/>&#160;&#160;&#160; //////////////////////////////////////////////////////////<br/>&#160;&#160;&#160; // User Service methods<br/>&#160;&#160;&#160; //////////////////////////////////////////////////////////<br/>&#160;&#160;&#160; public void userSearch() {</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; String status = validateSearchCriteria();<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; users = new ArrayList();<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; try {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if ( searchType.equals(COST_CENTER )) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; users = userService.getUsersByCostCenter( searchCriteria);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; else if ( searchType.equals(SURNAME )) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; users = userService.getUsersBySurname( searchCriteria );<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; else if ( searchType.equals(USERNAME)) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; users.add( userService.getUser( searchCriteria ));<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; }<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; catch ( UserException ue ) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; if ( searchType.equals(COST_CENTER )) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; addErrorMessage("userSearch", "Failed to retrieve users for Cost Center " + searchCriteria );<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; else if ( searchType.equals(SURNAME )) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; addErrorMessage("userSearch", "Failed to retrieve users for Surname " + searchCriteria );<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; else if ( searchType.equals(USERNAME)) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; addErrorMessage("userSearch", "Failed to retrieve users for Username " + searchCriteria );<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; }<br/>&#160;&#160;&#160; }<br/>&#160;&#160;&#160; <br/>&#160;&#160;&#160; // identify selected user<br/>&#160;&#160;&#160; public void identifySelectedUser() {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; if ( searchSelection != null ) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; log.info("Selection: " + searchSelection.size() );<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Iterator iterator = searchSelection.getKeys();<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; while ( iterator.hasNext() ) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Object key = iterator.next();<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; }<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; }<br/>&#160;&#160;&#160; }<br/>&#160;&#160;&#160; <br/>&#160;&#160;&#160; // User Detail<br/>&#160;&#160;&#160; public void userDetail() {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br/>&#160;&#160;&#160; }<br/>&#160;&#160;&#160; //////////////////////////////////////////////////////////<br/>&#160;&#160;&#160; // IOC methods<br/>&#160;&#160;&#160; //////////////////////////////////////////////////////////<br/>&#160;&#160;&#160; public void setUserService( UserService userService ) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; this.userService = userService;<br/>&#160;&#160;&#160; }<br/>&#160;&#160;&#160; //////////////////////////////////////////////////////////<br/>&#160;&#160;&#160; // Private methods<br/>&#160;&#160;&#160; //////////////////////////////////////////////////////////<br/>&#160;&#160;&#160; // searchCriteria<br/>&#160;&#160;&#160; private String validateSearchCriteria() {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; String status = "ok";<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; if ( !validString(searchType) ) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; addErrorMessage("userSearch","Search Type is required");<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; status = "error";<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; }<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; if ( !validString(searchCriteria) ) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; addErrorMessage("userSearch","Search Criteria is required");<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; status = "error";<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; }<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; return status;<br/>&#160;&#160;&#160; }<br/>&#160;&#160;&#160; // Bean data<br/>&#160;&#160;&#160; private String validateData( ) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; String status = "ok";</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160; if ( userName == null || userName.equals("")) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; addErrorMessage("userSearch", "User Name is required");<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; status = "error";<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; }<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; if ( !validString(password) ) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; addErrorMessage("userSearch", "Password is required");<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; status = "error";<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; }<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; if ( !validString(firstName) ) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; addErrorMessage("userSearch", "First Name is required");<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; status = "error";<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; if ( !validString(surname) ) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; addErrorMessage("userSearch", "Surname is required");<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; status = "error";<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; if ( !validString(email)) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; addErrorMessage("userSearch", "Email is required");<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; status = "error";<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; if ( !validString(costCenter )) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; addErrorMessage("userSearch", "Cost Center is required");<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; status = "error";<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; return status;&#160;&#160;&#160; <br/>&#160;&#160;&#160; }</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>&#160;&#160;&#160; // validString<br/>&#160;&#160;&#160; private boolean validString( String str ) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; if ( str == null || str.equals("" ))<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return false;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; return true;<br/>&#160;&#160;&#160; }</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>}</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>// UI User class</p><p>package util;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>import vo.User;<br/>import java.util.UUID;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>/**<br/> * <br/> * This class encapsulates a standard USER object but<br/> * also includes a UUID for use by UI objects ed.ExtendedDataTable<br/> * <br/> * @author davidhickman<br/> *<br/> */<br/>public class UIUser extends User {</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>&#160;&#160;&#160; /////////////////////////////////////////////////////<br/>&#160;&#160;&#160; // Private data<br/>&#160;&#160;&#160; /////////////////////////////////////////////////////<br/>&#160;&#160;&#160; private UUID&#160;&#160;&#160; id;</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>&#160;&#160;&#160; <br/>&#160;&#160;&#160; public&#160; UIUser( User user ) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; this.setUserName(user.getUserName());<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; this.setPassword(user.getPassword());<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; this.setUserType(user.getUserType());<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; this.setEmail(user.getEmail());<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; this.setFirstName(user.getFirstName());<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; this.setSurName(user.getSurName());<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; this.setCostCenter(user.getCostCenter());<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; this.setActive(user.getActive());<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; this.id = UUID.randomUUID();<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br/>&#160;&#160;&#160; }</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>&#160;&#160;&#160; public UUID getId() {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; return id;<br/>&#160;&#160;&#160; }</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>&#160;&#160;&#160; public void setId(UUID id) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160; this.id = id;<br/>&#160;&#160;&#160; }</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>&#160;&#160;&#160; <br/>}</p></div>

<div style="background-color: #f4f4f4; padding: 10px; margin-top: 20px;">
    <p style="margin: 0;">Reply to this message by <a href="http://community.jboss.org/message/574386#574386">going to Community</a></p>
        <p style="margin: 0;">Start a new discussion in JBoss Web Services at <a href="http://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2044">Community</a></p>
</div></td>
                        </tr>
                    </tbody>
                </table>


                </td>
            </tr>
        </tbody>
    </table>

</div>

</body>
</html>