public class GeoLocatorFormHandler extends GenericFormHandler
This form handler can be used to return items in a repository based on their geographical location.
Location Properties
To locate items one of the following property combinations need to be provided as a central location to search from:
address
postalCode
city
& state
latitude
& longitude
A distance must be provided to indicate the range of returned results. Only items within the provided distance will be in the result set. Distance is measured in meters by default. -1 indicates no location based restraint.
distance
unitOfMeasureKey
maximumDistance
Form Actions
In addition to the standard "cancel" action of all form handlers:
locateItems
Retrieving Results
Once the query has been performed, the results are available:
locationResults
searchResultsByItemType
A set of properties and actions are provided to allow a page developer to create controls which navigate between pages of results. Use the the following properties to create "Next", "Previous" or "Go to Page #" buttons.
enableCountQuery
maxResultsPerPage
maxResultsPerPage
that fit the
search criteria, the next set of results can be displayed when the user hits
a "Next" button. Default value is -1 which indicates no maximum.currentResultPageNum
resultSetSize
resultPageCount
startIndex
endIndex
startCount
endCount
Redirection
Properties are available for setting a URL for conditional redirection. If a URL parameter is not set, the redirection will not take place.
successURL
errorURL
clearQueryURL
clearQuery
action is called
If the items being located have a site membership property, the returned
items can be filtered to only include specific sites. The default behavior is
to filter on the current site. Either a list of sites can be specified or a
siteScope
that specifies all
, any
,
none
, or a shareable id.
siteIds
siteScope
current
or null to filter on current site,
any
to filter items that have at least one site,
all
to not filter by sitenone
to filter on
items that don't have site membership, or any shareable id to filter on the
sites that share a ShareableType
isIncludeInactiveSites
isIncludeDisabledSites
Modifier and Type | Field and Description |
---|---|
static java.lang.String |
CLASS_VERSION
Class version string
|
static java.lang.String |
INVALID_PROP_COMBINATION
droplet exception code: can't combine these properties
|
protected int |
mEndIndex |
protected int |
mStartIndex |
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 |
---|
GeoLocatorFormHandler() |
Modifier and Type | Method and Description |
---|---|
protected java.util.Collection<java.lang.String> |
filterSiteList(java.util.Collection<java.lang.String> pSites)
Filters the site array used in generateSiteFilter().
|
protected java.util.Collection<java.lang.String> |
generateSiteFilter()
Generates the ContextFilteringRules to filter the query based on the sites.
|
java.lang.String |
getAddress()
A free form address field that can indicate a central location
|
java.lang.String |
getCity()
Returns property city.
|
CoordinateManager |
getCoordinateManager()
The coordinate manager that is used to locate items for this form handler.
|
java.lang.String |
getCountryCode()
Get the country code
|
int |
getCurrentResultPageNum()
Returns property CurrentResultPageNum
|
double |
getDistance()
Returns property distance.
|
int |
getEndCount()
Returns the property EndCount.
|
int |
getEndIndex()
Returns the property EndIndex.
|
java.lang.String |
getErrorURL()
Returns property ErrorURL
|
GeoLocatorService |
getGeoLocatorService()
The GeoLocatorService that is used to take an input and find a corresponding latitude and longitude
representing that location
|
protected java.util.ArrayList |
getItems(Coordinate pCoordinate,
double pDistance,
java.util.Collection<java.lang.String> pSiteIds)
Gets the items for this form handler to return based on input location.
|
java.lang.String |
getItemType()
Get the repository item type being located.
|
java.lang.String |
getLanguage()
Get the language.
|
double |
getLatitude()
The latitude to use as a central location.
|
protected Coordinate |
getLocation(DynamoHttpServletRequest pRequest)
Gets the location to search from.
|
java.util.Collection |
getLocationResults()
Returns property locationResults.
|
double |
getLongitude()
The longitude to use as a central location
|
double |
getMaximumDistance()
The maximum distance that can be used to locate items.
|
int |
getMaxResultsPerPage()
Returns property maxResultsPerPage
|
java.lang.String |
getPostalCode()
Returns property postalCode.
|
int |
getResultPageCount()
Returns the number of results pages which is calculated
as the resultSetSize / maxResultsPerPage + 1 if any remainder exists.
|
int |
getResultSetSize()
Returns property ResultSetSize
|
SiteGroupManager |
getSiteGroupManager()
Returns the SiteGroupManager component
|
java.util.Collection<java.lang.String> |
getSiteIds()
Get the siteIds property.
|
SiteManager |
getSiteManager()
Gets the SiteManager
|
java.lang.String |
getSiteScope()
Gets the property siteScope
|
int |
getStartCount()
Returns the property startCount.
|
int |
getStartIndex()
Returns the property startIndex.
|
java.lang.String |
getState()
The state or region to use as a central location in combination with a provided
city.
|
java.lang.String |
getSuccessURL()
Returns property SuccessURL
|
java.lang.String |
getUnitOfMeasureKey() |
atg.commerce.units.UnitOfMeasureTools |
getUnitOfMeasureTools()
Gets the unit of measure tools used for UOM conversions
|
boolean |
handleCurrentResultPageNum(DynamoHttpServletRequest pRequest,
DynamoHttpServletResponse pResponse)
Called when user is iterating through pages of results.
|
boolean |
handleLocateItems(DynamoHttpServletRequest pRequest,
DynamoHttpServletResponse pResponse)
Locate items within the provided distance restricted by site and using a central location of
either address, city & state, postal code, or latitude & longitude.
|
boolean |
isEnableCountQuery()
If the
getMaxResultsPerPage() is greater than
zero, then this method returns true. |
boolean |
isIncludeDisabledSites()
Returns the includeDisabledSites property.
|
boolean |
isIncludeInactiveSites()
Whether or not the site filter should include inactive sites.
|
void |
setAddress(java.lang.String pAddress)
Set the address field.
|
void |
setCity(java.lang.String pCity)
Sets the property city.
|
void |
setCoordinateManager(CoordinateManager pCoordinateManager)
Sets the coordinate manager.
|
void |
setCountryCode(java.lang.String pCountryCode)
Set the country code.
|
void |
setCurrentResultPageNum(int pCurrentResultPageNum)
Sets the property currentResultPageNum.
|
void |
setDistance(double pDistance)
Set the property distance.
|
void |
setEndIndex(int pIndex)
Set the endIndex to a particular value.
|
void |
setErrorURL(java.lang.String pURL)
Sets property ErrorURL.
|
void |
setGeoLocatorService(GeoLocatorService pGeoLocatorService)
Sets the GeoLocatorService
|
void |
setIncludeDisabledSites(boolean pIncludeDisabledSites)
Sets the includeDisabledSites property.
|
void |
setIncludeInactiveSites(boolean pIncludeInactiveSites)
Sets whether or not the site filter should include inactive sites.
|
void |
setItemType(java.lang.String pItemType)
Set the item type being located.
|
void |
setLanguage(java.lang.String pLanguage)
Sets the language property.
|
void |
setLatitude(double pLatitude)
Set the latitude.
|
protected void |
setLocationResults(java.util.ArrayList pLocationResults)
Sets property locationResults.
|
void |
setLongitude(double pLongitude)
Set the longitude
|
void |
setMaximumDistance(double pMaximumDistance)
Set the maximum distance that can be used to locate items
|
void |
setMaxResultsPerPage(int pMaxResultsPerPage)
Sets the property maxResultsPerPage.
|
void |
setPostalCode(java.lang.String pPostalCode)
Set the postalCode property.
|
void |
setResultSetSize(int pResultSetSize) |
void |
setSiteGroupManager(SiteGroupManager pSiteGroupManager)
Sets the SiteGroupManager component
|
void |
setSiteIds(java.util.Collection pSiteIds)
Set the site Ids
|
void |
setSiteManager(SiteManager pSiteManager) |
void |
setSiteScope(java.lang.String pSiteScope)
Sets the property siteScope.
|
void |
setStartIndex(int pIndex)
Set the startIndex to a particular value.
|
void |
setState(java.lang.String pState)
Sets the property state.
|
void |
setSuccessURL(java.lang.String pURL)
Sets property SuccessURL.
|
void |
setUnitOfMeasureKey(java.lang.String pUnitOfMeasureKey) |
void |
setUnitOfMeasureTools(atg.commerce.units.UnitOfMeasureTools pUnitOfMeasureTools)
Sets the unit of measure tools used for UOM conversions
|
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 INVALID_PROP_COMBINATION
protected int mStartIndex
protected int mEndIndex
public java.util.Collection getLocationResults()
protected void setLocationResults(java.util.ArrayList pLocationResults)
pLocationResults
- the location results to setpublic double getDistance()
public void setDistance(double pDistance)
pDistance
- the distance to set after multiplying this distance by distanceConversionpublic double getLatitude()
public void setLatitude(double pLatitude)
pLatitude
- the latitude to use as a central location.public double getLongitude()
public void setLongitude(double pLongitude)
pLongitude
- the longitude to use as a central location.public java.lang.String getPostalCode()
public void setPostalCode(java.lang.String pPostalCode)
pPostalCode
- Set the postal code to use as a central location.public java.lang.String getCity()
public void setCity(java.lang.String pCity)
pCity
- The city to set.public java.lang.String getState()
public void setState(java.lang.String pState)
pState
- The state to set.public java.lang.String getAddress()
public void setAddress(java.lang.String pAddress)
pAddress
- The address to set.public java.lang.String getCountryCode()
public void setCountryCode(java.lang.String pCountryCode)
pCountryCode
- public java.lang.String getLanguage()
public void setLanguage(java.lang.String pLanguage)
pLanguage
- The language being used.public java.lang.String getItemType()
public void setItemType(java.lang.String pItemType)
pItemType
- The repository item type to setpublic void setSiteScope(java.lang.String pSiteScope)
pSiteScope
- the site scope to set.public java.lang.String getSiteScope()
public java.util.Collection<java.lang.String> getSiteIds()
public void setSiteIds(java.util.Collection pSiteIds)
pSiteIds
- the siteIds to setpublic boolean isIncludeInactiveSites()
public void setIncludeInactiveSites(boolean pIncludeInactiveSites)
pIncludeInactiveSites
- the includeInactiveSites to setpublic boolean isIncludeDisabledSites()
public void setIncludeDisabledSites(boolean pIncludeDisabledSites)
pIncludeDisabledSites
- whether or not to include disabled sites in
the matching processpublic double getMaximumDistance()
public void setMaximumDistance(double pMaximumDistance)
pMaximumDistance
- sets the maximum distancepublic void setUnitOfMeasureTools(atg.commerce.units.UnitOfMeasureTools pUnitOfMeasureTools)
pUnitOfMeasureTools
- public atg.commerce.units.UnitOfMeasureTools getUnitOfMeasureTools()
public void setUnitOfMeasureKey(java.lang.String pUnitOfMeasureKey)
public java.lang.String getUnitOfMeasureKey()
public void setMaxResultsPerPage(int pMaxResultsPerPage)
pMaxResultsPerPage
- the property to store the maximum number of
results to be displayed per page.public int getMaxResultsPerPage()
public void setCurrentResultPageNum(int pCurrentResultPageNum)
pCurrentResultPageNum
- the property to tell which page of the result
set is currently being viewed.public int getCurrentResultPageNum()
public void setResultSetSize(int pResultSetSize)
pResultSetSize
- the property that represents the number of items that
match the query.public int getResultSetSize()
public int getResultPageCount()
public int getStartIndex()
public void setStartIndex(int pIndex)
public int getEndIndex()
public void setEndIndex(int pIndex)
public int getStartCount()
public int getEndCount()
public void setSuccessURL(java.lang.String pURL)
pURL
- a String property that is the URL to redirect to.public java.lang.String getSuccessURL()
public void setErrorURL(java.lang.String pURL)
pURL
- a String property that is the URL to redirect to.public java.lang.String getErrorURL()
public SiteManager getSiteManager()
public void setSiteManager(SiteManager pSiteManager)
pSiteManager
- the siteManager to setpublic void setSiteGroupManager(SiteGroupManager pSiteGroupManager)
pSiteGroupManager
- the SiteGroupManager component. Usually /atg/multisite/SiteGroupManagerpublic SiteGroupManager getSiteGroupManager()
public CoordinateManager getCoordinateManager()
public void setCoordinateManager(CoordinateManager pCoordinateManager)
pCoordinateManager
- The CoordinateManagerpublic GeoLocatorService getGeoLocatorService()
public void setGeoLocatorService(GeoLocatorService pGeoLocatorService)
pGeoLocatorService
- the GeoLocatorService to setpublic boolean handleLocateItems(DynamoHttpServletRequest pRequest, DynamoHttpServletResponse pResponse) throws javax.servlet.ServletException, java.io.IOException
pRequest
- The requestpResponse
- the responsejavax.servlet.ServletException
java.io.IOException
public boolean handleCurrentResultPageNum(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 ioprotected Coordinate getLocation(DynamoHttpServletRequest pRequest)
pRequest
- the requestprotected java.util.ArrayList getItems(Coordinate pCoordinate, double pDistance, java.util.Collection<java.lang.String> pSiteIds) throws RepositoryException
pRequest
- The requestpLatitude
- the latitude of the central locationpLongitude
- the longitude of the central locationpDistance
- the distance radius (in meters) to searchRepositoryException
protected java.util.Collection<java.lang.String> generateSiteFilter()
protected java.util.Collection<java.lang.String> filterSiteList(java.util.Collection<java.lang.String> pSites)
pSites
- The array of site idspublic boolean isEnableCountQuery()
getMaxResultsPerPage()
is greater than
zero, then this method returns true. Otherwise false.getMaxResultsPerPage()
> 0. False otherwise.getMaxResultsPerPage()