public class SearchFormHandler extends GenericFormHandler
This search form handler is used to support giftlist searches. Giftlist searching will search the giftlist repository for published giftlists that match the search criteria. This formhandler is configurable to search most giftlist properties. At a minimum, doNameSearch and doAdvancedSearch are boolean properties that specify what type of searches to perform. HandleSearch looks at these values to build the search query and executes on the Repository view.
Name
Name searching uses name properties and an input search string to
do text pattern matching. Values entered will be used to build the
subquery for name searching of giftlist owners. The name search query
will be constructed using an OR clause of both first and last names.
Advanced
Advanced searches provide possible search options for each property
specified in AdvancedSearchPropertyNames. For example, enumerated types
will be defined in the repository with a set number of values. Advanced
searching will retrieve these values from the definition to display
in a select box. The advanced query will be built from options selected
to further refine the gift list search. Name searches can also be built into the
query here, to enable searches on a first name basis or last name bases if so
desired. If this sort of name searching is used within the form its likely that
the above Name search will not be used and only the advanced sort properties
firstName and lastName will be used to enable the name searching.
A note on firstName and lastName Advanced search properties. As firstName and lastName are not properties that exist in the gift list repository definition, we therefore must map to such properties. Therefore the properties firstNamePropertyName, lastNamePropertyName and statePropertyName exist to perform this function. We can supply advanced search properties of firstName, lastName and state, and these will be mapped to configured properties firstNamePropertyName, lastNamePropertyName and statePropertyName.
Modifier and Type | Field and Description |
---|---|
static java.lang.String |
ALL |
static java.lang.String |
CLASS_VERSION
Class version string
|
static java.lang.String |
CURRENT |
protected int |
mCurrentPage |
protected java.lang.String |
mFirstNamePropertyName |
protected java.lang.String |
mLastNamePropertyName |
protected int |
mResultsPerPage |
protected java.lang.String |
mSearchErrorURL |
protected java.lang.String |
mSearchSuccessURL |
protected boolean |
mSortCaseSensitive |
protected java.lang.String |
mSortDirection |
protected java.lang.String |
mSortField |
protected int |
mTotalItemCount |
protected boolean |
mUseContainsForNames |
static java.lang.String |
SORT_DIRECTION_ASCENDING
sort direction for a ascending search result
|
static java.lang.String |
SORT_DIRECTION_DESCENDING
sort direction for a descending search result
|
PARAM_DEFER_FORWARD_OR_REDIRECT, PARAM_USE_FORWARDS
SERVICE_INFO_KEY
DEFAULT_LOG_TRACE_STATUS
DEFAULT_LOG_DEBUG_STATUS, DEFAULT_LOG_ERROR_STATUS, DEFAULT_LOG_INFO_STATUS, DEFAULT_LOG_WARNING_STATUS
Constructor and Description |
---|
SearchFormHandler()
Constructs an instanceof SearchFormHandler
|
Modifier and Type | Method and Description |
---|---|
protected QueryOptions |
buildQueryOptions()
buildQueryOptions is called to set the query options on the property mQueryOptions
|
protected SortDirectives |
buildSortDirectives()
Constructs the SortDirectives object that will be used
in the repository query.
|
protected java.lang.Integer |
calculateEndIndex()
calculateEndIndex Calculates the ending index used for the query
|
protected java.lang.Integer |
calculateStartIndex()
calculateStartIndex Calculates the starting index used for the query.
|
java.util.Collection |
doSearch(DynamoHttpServletRequest pRequest,
DynamoHttpServletResponse pResponse)
Performs the search operation and generates the result set.
|
protected void |
executeCountQuery(RepositoryView pView,
Query pQuery)
executeCountQuery Executes a count query and stores the results in the totalItemCount
|
protected Query |
generateAdvancedSearchQuery(java.lang.String pItemType,
QueryBuilder pQueryBuilder)
Return a query which represents an advanced search based on selected
property values.
|
protected Query |
generateNameSearchQuery(java.lang.String pItemType,
QueryBuilder pQueryBuilder,
java.lang.String pInput)
Return a query which represents a name search query.
|
protected Query |
generatePublishedSearchQuery(java.lang.String pItemType,
QueryBuilder pQueryBuilder)
Generates a published search query to verify that lists are both public
and published.
|
protected java.util.Collection |
generateResultSet(java.lang.String pItemType)
For the supplied item type return a sub-result set that will be combined into
the total result set.
|
protected Query |
generateSearchQuery(java.lang.String pItemType,
QueryBuilder pQueryBuilder)
Return the query that should be executed on the Repository View.
|
protected java.util.Collection |
generateSearchValues(java.lang.String pSearchType)
generateSearchValues is used by the advanced searching feature.
|
protected Query |
generateSiteConstrainedQuery(java.lang.String[] pSiteIds,
QueryBuilder pQueryBuilder)
Returns a query that represents a site search.
|
java.lang.String[] |
getAdvancedSearchPropertyNames()
Returns property AdvancedSearchPropertyNames
|
int |
getCurrentPage()
Returns the currently requested page number.
|
java.lang.String |
getFirstNamePropertyName()
Returns property firstNamePropertyName
|
GiftlistManager |
getGiftlistManager()
Returns property GiftlistManager
|
Repository |
getGiftlistRepository()
Returns property GiftlistRepository
|
java.lang.String[] |
getItemTypes()
Returns property ItemTypes
|
java.lang.String |
getLastNamePropertyName()
Returns property lastNamePropertyName
|
java.lang.String |
getLoggingIdentifier()
Returns property LoggingIdentifier
|
java.lang.String[] |
getNameSearchPropertyNames()
Returns property NameSearchPropertyNames
|
java.util.Hashtable |
getPropertyValues()
Returns property PropertyValues
|
java.util.HashMap |
getPropertyValuesByType()
Returns property PropertyValuesByType
|
java.lang.String[] |
getPublishedSearchPropertyNames()
Returns property PublishedSearchPropertyNames
|
QueryOptions |
getQueryOptions()
Returns property QueryOptions
|
int |
getResultsPerPage()
Returns the number of objects to be queried at
one time.
|
java.lang.String |
getSearchErrorURL() |
java.lang.String |
getSearchInput()
Returns property SearchInput
|
java.util.Collection |
getSearchResults()
Returns property SearchResults
|
java.util.HashMap |
getSearchResultsByItemType()
Returns property SearchResultsByItemType
|
java.lang.String |
getSearchSuccessURL() |
SiteGroupManager |
getSiteGroupManager()
Returns property siteGroupManager.
|
java.lang.String[] |
getSiteIds()
Returns property siteId
|
java.lang.String |
getSiteScope()
gets the property siteScope
|
boolean |
getSortCaseSensitive()
Returns the property SortCaseSensitive
|
java.lang.String |
getSortDirection()
Returns property SortDirection
|
java.lang.String |
getSortField()
Returns the property SortField
|
java.lang.String |
getStatePropertyName()
Returns property statePropertyName
|
int |
getTotalItemCount()
The total number of objects in the search results.
|
boolean |
handleSearch(DynamoHttpServletRequest pRequest,
DynamoHttpServletResponse pResponse)
For each item type specified in itemTypes, call generateSearchResultSet
to generate a subResultSet for that item type based on query parameters.
|
boolean |
isDoAdvancedSearch()
Returns property DoAdvancedSearch
|
boolean |
isDoNameSearch()
Returns property DoNameSearch
|
boolean |
isDoPagedSearch()
Returns property DoPagedSearch
|
boolean |
isDoPublishedSearch()
Returns property DoPublishedSearch
|
boolean |
isUseContainsForNames()
Returns property UseContainsForNames
|
void |
postSearch(DynamoHttpServletRequest pRequest,
DynamoHttpServletResponse pResponse)
Called after a search.
|
void |
preSearch(DynamoHttpServletRequest pRequest,
DynamoHttpServletResponse pResponse)
Called prior to the search taking place.
|
void |
setAdvancedSearchPropertyNames(java.lang.String[] pAdvancedSearchPropertyNames)
Sets property AdvancedSearchPropertyNames
|
void |
setCurrentPage(int pCurrentPage)
Sets property CurrentPage
|
void |
setDoAdvancedSearch(boolean pDoAdvancedSearch)
Sets property DoAdvancedSearch
|
void |
setDoNameSearch(boolean pDoNameSearch)
Sets property DoNameSearch
|
void |
setDoPagedSearch(boolean pDoPagedSearch)
Sets property DoPagedSearch
|
void |
setDoPublishedSearch(boolean pDoPublishedSearch)
Sets property DoPublishedSearch
|
void |
setFirstNamePropertyName(java.lang.String pFirstNamePropertyName)
Sets property firstNamePropertyName
|
void |
setGiftlistManager(GiftlistManager pGiftlistManager)
Sets property giftlistManager
|
void |
setGiftlistRepository(Repository pGiftlistRepository)
Sets property giftlistRepository
|
void |
setItemTypes(java.lang.String[] pItemTypes)
Sets property ItemTypes
|
void |
setLastNamePropertyName(java.lang.String pLastNamePropertyName)
Sets property lastNamePropertyName
|
void |
setLoggingIdentifier(java.lang.String pLoggingIdentifier)
Sets property LoggingIdentifier
|
void |
setNameSearchPropertyNames(java.lang.String[] pNameSearchPropertyNames)
Sets property NameSearchPropertyNames
|
void |
setPropertyValues(java.util.Hashtable pPropertyValues)
Sets property PropertyValues
|
void |
setPublishedSearchPropertyNames(java.lang.String[] pPublishedSearchPropertyNames)
Sets property PublishedSearchPropertyNames
|
void |
setQueryOptions(QueryOptions pQueryOptions)
Sets property QueryOptions
|
void |
setResultsPerPage(int pResultsPerPage)
Sets property ResultsPerPage
|
void |
setSearchErrorURL(java.lang.String pSearchErrorURL) |
void |
setSearchInput(java.lang.String pSearchInput)
Sets property SearchInput
|
void |
setSearchSuccessURL(java.lang.String pSearchSuccessURL) |
void |
setSiteGroupManager(SiteGroupManager pSiteGroupManager)
Sets property SiteGroupManager.
|
void |
setSiteIds(java.lang.String[] pSiteIds)
Sets property siteIds
|
void |
setSiteScope(java.lang.String pSiteScope)
Sets the property siteScope.
|
void |
setSortCaseSensitive(boolean pSortCaseSensitive)
Sets property SortCaseSensitive
|
void |
setSortDirection(java.lang.String pSortDirection)
Sets property SortDirection
|
void |
setSortField(java.lang.String pSortField)
Sets property SortField
|
void |
setStatePropertyName(java.lang.String pStatePropertyName)
Sets property statePropertyName
|
void |
setTotalItemCount(int pTotalItemCount)
Sets property TotalItemCount
|
void |
setUseContainsForNames(boolean pUseContainsForNames)
Sets property UseContainsForNames
|
addFormException, addUncheckedFormException, afterSet, beforeSet, checkFormRedirect, createFormSubmissionMessage, getCancelURL, getCheckForValidSession, getFormError, getFormExceptions, getFormName, getMessagePort, getMessageSource, getMessageType, getPropertyExceptions, getSendMessages, getUncheckedFormExceptions, handleCancel, handleFormException, handleUncheckedFormException, hasUncheckedFormExceptions, isDeferForwardsAndRedirects, isRestorableForm, isUseForwards, isValidSession, redirectOrForward, resetFormExceptions, setCancelURL, setCheckForValidSession, setDeferForwardsAndRedirects, setFormName, setMessagePort, setMessageSource, setMessageType, setRestorableForm, setSendMessages, setUseForwards
afterGet, beforeGet
addLogListener, createAdminServlet, doStartService, doStopService, getAbsoluteName, getAdminServlet, getAdminServletOutputStreamEncoding, getLoggingForVlogging, getLogListenerCount, getLogListeners, getName, getNameContext, getNucleus, getRoot, getServiceConfiguration, getServiceInfo, isAdminServletUseServletOutputStream, isLoggingDebug, isLoggingError, isLoggingInfo, isLoggingTrace, isLoggingWarning, isRunning, logDebug, logDebug, logDebug, logError, logError, logError, logInfo, logInfo, logInfo, logTrace, logTrace, logTrace, logWarning, logWarning, logWarning, nameContextElementBound, nameContextElementUnbound, removeLogListener, reResolveThis, resolveName, resolveName, resolveName, resolveName, sendLogEvent, setAdminServletOutputStreamEncoding, setAdminServletUseServletOutputStream, setLoggingDebug, setLoggingError, setLoggingInfo, setLoggingTrace, setLoggingWarning, setNucleus, setServiceInfo, startService, stopService
vlogDebug, vlogDebug, vlogDebug, vlogDebug, vlogDebugTrace, vlogError, vlogError, vlogError, vlogError, vlogInfo, vlogInfo, vlogInfo, vlogInfo, vlogTrace, vlogTrace, vlogTrace, vlogTrace, vlogWarning, vlogWarning, vlogWarning, vlogWarning
public static final java.lang.String CLASS_VERSION
public static final java.lang.String SORT_DIRECTION_DESCENDING
public static final java.lang.String SORT_DIRECTION_ASCENDING
public static final java.lang.String ALL
public static final java.lang.String CURRENT
protected int mTotalItemCount
protected int mCurrentPage
protected java.lang.String mSearchSuccessURL
protected java.lang.String mSearchErrorURL
protected java.lang.String mFirstNamePropertyName
protected java.lang.String mLastNamePropertyName
protected boolean mUseContainsForNames
protected java.lang.String mSortDirection
protected java.lang.String mSortField
protected boolean mSortCaseSensitive
protected int mResultsPerPage
public SearchFormHandler()
public int getTotalItemCount()
The value should relfect the total number of items in the complete result set without the indexing constraints. The client side uses this value to determine how many pages can be requested
public void setTotalItemCount(int pTotalItemCount)
pTotalItemCount
- the property to set the total number of objects in the search results.public int getCurrentPage()
This value is supplied by the client side and is used to calculate the query's starting and ending indexes.
Note that this value must be request scoped because the client side can request pages in ansynchronous random order.
public void setCurrentPage(int pCurrentPage)
pCurrentPage
- the property to set the currently requested page number.public java.lang.String getSearchSuccessURL()
public void setSearchSuccessURL(java.lang.String pSearchSuccessURL)
pSearchSuccessURL
- The searchSuccessURL to set.public java.lang.String getSearchErrorURL()
public void setSearchErrorURL(java.lang.String pSearchErrorURL)
pSearchErrorURL
- The searchErrorURL to set.public void setLoggingIdentifier(java.lang.String pLoggingIdentifier)
pLoggingIdentifier
- the property which identifies this object as the Giftlist Search.public java.lang.String getLoggingIdentifier()
public void setFirstNamePropertyName(java.lang.String pFirstNamePropertyName)
pFirstNamePropertyName
- the property to store the owner firstName property.public java.lang.String getFirstNamePropertyName()
public void setLastNamePropertyName(java.lang.String pLastNamePropertyName)
pLastNamePropertyName
- the property to store the owner lastName property.public java.lang.String getLastNamePropertyName()
public void setStatePropertyName(java.lang.String pStatePropertyName)
pStatePropertyName
- the property to store the owner state property.public java.lang.String getStatePropertyName()
public void setNameSearchPropertyNames(java.lang.String[] pNameSearchPropertyNames)
pNameSearchPropertyNames
- the property to store name search property names.public java.lang.String[] getNameSearchPropertyNames()
public void setUseContainsForNames(boolean pUseContainsForNames)
pUseContainsForNames
- the property to store the boolean value of which query operation to use when performing name search. true for CONTAINS, false for STARTS_WITH.public boolean isUseContainsForNames()
public void setDoNameSearch(boolean pDoNameSearch)
pDoNameSearch
- the property to store the boolean value of whether or not to perform a name search.public boolean isDoNameSearch()
public void setSiteScope(java.lang.String pSiteScope)
public java.lang.String getSiteScope()
public void setSiteIds(java.lang.String[] pSiteIds)
pSiteIds
- the property which holds site IDs in which context search happens.public java.lang.String[] getSiteIds()
public void setSearchInput(java.lang.String pSearchInput)
pStringInput
- the property to store the input search string to parse and search.public java.lang.String getSearchInput()
public void setGiftlistRepository(Repository pGiftlistRepository)
pGiftlistRepository
- the property to store the name of the giftlist repository.public Repository getGiftlistRepository()
public void setGiftlistManager(GiftlistManager pGiftlistManager)
pGiftlistManager
- gift list manager.public GiftlistManager getGiftlistManager()
public void setSiteGroupManager(SiteGroupManager pSiteGroupManager)
pSiteGroupManager
- the siteGroupManagerpublic SiteGroupManager getSiteGroupManager()
public void setItemTypes(java.lang.String[] pItemTypes)
pItemTypes
- the property to store the item types to search in the repository (e.g. gift-list).public java.lang.String[] getItemTypes()
public void setQueryOptions(QueryOptions pQueryOptions)
pQueryOptions
- the property to store specific query options to used when generating the search string.public QueryOptions getQueryOptions()
public void setSortDirection(java.lang.String pSortDirection)
pSortDirection
- the property to store the sort direction.public java.lang.String getSortDirection()
public void setSortField(java.lang.String pSortField)
pSortField
- the property to set the field by which the search results are to be sorted on.public java.lang.String getSortField()
public void setSortCaseSensitive(boolean pSortCaseSensitive)
pSortCaseSensitive
- the property to set if the sort should be case sensitive.public boolean getSortCaseSensitive()
public int getResultsPerPage()
This value, along with the current page is used to calculate the starting and ending indexes of the query.
public void setResultsPerPage(int pResultsPerPage)
pResultsPerPage
- the property to set the number of objects to be queried at one time.public void setDoPagedSearch(boolean pDoPagedSearch)
pDoPagedSearch
- the property to store the boolean value of whether or not to perform a paged search.public boolean isDoPagedSearch()
public java.util.Collection getSearchResults()
public java.util.HashMap getSearchResultsByItemType()
public void setDoAdvancedSearch(boolean pDoAdvancedSearch)
pDoAdvancedSearch
- the property to store the boolean value of whether or not to perform a advanced search.public boolean isDoAdvancedSearch()
public void setAdvancedSearchPropertyNames(java.lang.String[] pAdvancedSearchPropertyNames)
pAdvancedSearchPropertyNames
- the property to store advanced search property names.public java.lang.String[] getAdvancedSearchPropertyNames()
public void setDoPublishedSearch(boolean pDoPublishedSearch)
pDoPublishedSearch
- the property to store the boolean value of whether or not to perform a published search.public boolean isDoPublishedSearch()
public void setPublishedSearchPropertyNames(java.lang.String[] pPublishedSearchPropertyNames)
pPublishedSearchPropertyNames
- the property to store published search property names.public java.lang.String[] getPublishedSearchPropertyNames()
public java.util.HashMap getPropertyValuesByType()
public void setPropertyValues(java.util.Hashtable pPropertyValues)
pPropertyValues
- the property to store selected property values for advanced searching.public java.util.Hashtable getPropertyValues()
public void preSearch(DynamoHttpServletRequest pRequest, DynamoHttpServletResponse pResponse) throws javax.servlet.ServletException, java.io.IOException
pRequest
- pResponse
- javax.servlet.ServletException
java.io.IOException
public boolean handleSearch(DynamoHttpServletRequest pRequest, DynamoHttpServletResponse pResponse) throws javax.servlet.ServletException, java.io.IOException
pRequest
- the servlet's requestpResponse
- the servlet's responsejavax.servlet.ServletException
- if there was an error while executing the codejava.io.IOException
- if there was an error with servlet iopublic java.util.Collection doSearch(DynamoHttpServletRequest pRequest, DynamoHttpServletResponse pResponse) throws javax.servlet.ServletException, java.io.IOException
pRequest
- pResponse
- javax.servlet.ServletException
java.io.IOException
public void postSearch(DynamoHttpServletRequest pRequest, DynamoHttpServletResponse pResponse) throws javax.servlet.ServletException, java.io.IOException
pRequest
- pResponse
- javax.servlet.ServletException
java.io.IOException
protected void executeCountQuery(RepositoryView pView, Query pQuery) throws RepositoryException
pView
- pQuery
- RepositoryException
protected java.lang.Integer calculateStartIndex()
If doPagedSearch
is true
, the starting index is the currentPage * resultsPerPage.
protected java.lang.Integer calculateEndIndex()
If doPagedSearch
is true
, the ending index is the (currentPage * resultsPerPage) + resultsPerPage.
protected SortDirectives buildSortDirectives()
This method uses the sortDirection and sortField properties to build a SortDirectives object. If sortField is not specified, no SortDirectives are created.
null
protected QueryOptions buildQueryOptions()
protected java.util.Collection generateSearchValues(java.lang.String pSearchType)
pSearchType
- the search type. Typically corresponds to an
property descriptor name in the giftlist repositoryprotected java.util.Collection generateResultSet(java.lang.String pItemType)
pItemType
- the type of item to search for. Typically corresponds to an
item descriptor name in the giftlist repositoryprotected Query generateSearchQuery(java.lang.String pItemType, QueryBuilder pQueryBuilder) throws RepositoryException
pItemType
- the type of item to search for. Typically corresponds to an
item descriptor name in the giftlist repositorypQueryBuilder
- the builder that should be used to construct the queryRepositoryException
- if an error occured while forming the queryprotected Query generateNameSearchQuery(java.lang.String pItemType, QueryBuilder pQueryBuilder, java.lang.String pInput) throws RepositoryException
nameSearchPropertyNames
property. Each
sub-query is OR'd together to form the total query.pItemType
- the type of item to search for. Typically corresponds to an
item descriptor name in the giftlist repositorypQueryBuilder
- the builder that should be used to construct the querypInput
- the search string to use for the full name searchRepositoryException
- if an error occured while forming the queryprotected Query generatePublishedSearchQuery(java.lang.String pItemType, QueryBuilder pQueryBuilder) throws RepositoryException
pItemType
- the type of item to search for. Typically corresponds to an
item descriptor name in the catalog repositorypQueryBuilder
- the builder that should be used to construct the queryRepositoryException
- if an error occured while forming the queryprotected Query generateAdvancedSearchQuery(java.lang.String pItemType, QueryBuilder pQueryBuilder) throws RepositoryException
pItemType
- the type of item to search for. Typically corresponds to an
item descriptor name in the catalog repositorypQueryBuilder
- the builder that should be used to construct the queryRepositoryException
- if an error occured while forming the queryprotected Query generateSiteConstrainedQuery(java.lang.String[] pSiteIds, QueryBuilder pQueryBuilder) throws RepositoryException
pSiteIds
- the list of site IDs to which gift list should belongpQueryBuilder
- the builder that should be used to construct the queryRepositoryException