package jsfhandlers;
import com.ibm.egl.jsf.UIViewRoot;
import eglderbydb.data.Customer;
import eglderbydb.data.Statetable;
import eglderbydb.primitivetypes.data.STATE;
import libraries.SearchLibrary;
import libraries.customizedResult;
handler customersearch type JSFHandler
{onConstructionFunction = onConstruction,
onPrerenderFunction = onPrerender,
view = "customersearch.jsp",
viewRootVar = viewRoot}
viewRoot UIViewRoot;
searchTerms Customer;
searchResults Customer[0];
resultMessage CHAR(80);
numberOfResults INT;
andOr CHAR(3);
customerStates STRING[0];
allRecords customizedResult[0];
// Function Declarations
function onConstruction()
end
function onPrerender()
SearchLibrary.getAllCustomerStates(customerStates);
if (searchResults.getSize() == 0)
resultMessage = "No customers found or no search criteria entered.";
end
end
function searchFunction()
searchTerms.LastName = searchTerms.LastName::"%";
if (andOr == "AND")
SearchLibrary.NameAndStateSearch_And(
searchTerms.LastName,
searchTerms.State, searchResults);
else
SearchLibrary.NameAndStateSearch_Or(
searchTerms.LastName,
searchTerms.State, searchResults);
end
resultMessage = " customer(s) found.";
numberOfResults = searchResults.getSize();
if(numberOfResults == NULL)
numberOfResults = 0;
end
generateCustomResults (searchResults);
end
function generateCustomResults(passedResults Customer[])
allRecords.removeAll();
oneRecord customizedResult;
counter INT = 1;
state Statetable;
//loop once for each search result returned
while (counter <= (passedResults.getSize()))
oneRecord.fullName = passedResults[counter].FirstName ::
" " :: passedResults[counter].LastName;
oneRecord.email = passedResults[counter].EmailAddress;
state.STATE_ABBREV = passedResults[counter].state;
SearchLibrary.getOneState(state);
oneRecord.stateName = state.STATE_NAME;
allRecords.appendElement(oneRecord);
counter = counter + 1;
end
end
end
Return to Lesson 5: Customize the search results.