atg.commerce.dp
Class CatalogMapPropertyDerivation

java.lang.Object
  extended by java.beans.FeatureDescriptor
      extended by atg.beans.SerializableFeatureDescriptor
          extended by atg.repository.dp.DerivationMethodImpl
              extended by atg.commerce.dp.CatalogMapDerivation
                  extended by atg.commerce.dp.CatalogMapPropertyDerivation
All Implemented Interfaces:
atg.repository.dp.Constants, atg.repository.dp.DerivationMethod, java.io.Serializable

public class CatalogMapPropertyDerivation
extends CatalogMapDerivation

This class is specifically used for custom catalogs. It will derive a property based on the current session scoped Profile. Each category, product, and sku will have a map of "info" objects (one per catalog id). This derivation method will automatically return the a given property from the correct info object based on the catalog. For example:
(This example could be placed in product)

   
     
       productInfos
     
   
 
In this example, parentCategory would be returned from the productInfo in the map "productInfos" that is mapped to by the current session scoped profile.catalog. If this is accessed outside the scope of a session, or there is no catalog, this will return null. The property that is return from the component object of the expression will have the same name as the derived property. In the above example, this means that productInfos.someKey.parentCategory would be returned. Created: Tue Apr 03 15:36:03 2001

See Also:
Serialized Form

Field Summary
static java.lang.String CLASS_VERSION
          Class version string
protected static java.lang.String DERIVATION_NAME
           
protected static java.lang.String DISPLAY_NAME
           
protected static java.lang.String SHORT_DESCRIPTION
           
 
Fields inherited from class atg.commerce.dp.CatalogMapDerivation
CATALOG_KEY_PROPERTY, MAP_TYPE_NAME, PROFILE_CATALOG_PROPERTY
 
Fields inherited from class atg.repository.dp.DerivationMethodImpl
COMPARISON_QUERY, INCLUDES_ALL_QUERY, INCLUDES_ANY_QUERY, INCLUDES_ITEM_QUERY, INCLUDES_QUERY, IS_NULL_QUERY, PATTERN_MATCH_QUERY, sZero, TEXT_SEARCH_QUERY
 
Fields inherited from class atg.beans.SerializableFeatureDescriptor
BUNDLE_ATTRIBUTE_NAME, LOCALE_ATTRIBUTE_NAME
 
Fields inherited from interface atg.repository.dp.Constants
ATTR_METHOD, ATTR_OVERRIDE_PROPERTY, ATTR_USER_METHOD, DEFAULT_METHOD_NAME, DEFAULT_RECURSION_DEPTH, DP_COUNT_ATTR_NAME, ERR_COLLECTION_EXPRESSION_TYPE, ERR_COLLECTION_ITEM_TYPE, ERR_DP_EXP_NOT_ARRAY, ERR_DP_EXP_NOT_COLLECTION, ERR_DP_EXP_NOT_SET_LIST, ERR_DP_EXP_REFERENCES_DP, ERR_DP_QUERYABLE_OP_NOT, ERR_DP_READABLE_OP_NOT, ERR_DP_WRITABLE_OP_NOT, ERR_DP_WRITABLE_WITH_NULL_OP, ERR_EMPTY_EXPRESSION, ERR_EXACTLY_ONE_EXPRESSION, ERR_INCOMPATIBLE_DP_EXP, ERR_INCOMPATIBLE_OP, ERR_INVALID_OVERRIDE_PROPERTY_NAME, ERR_INVALID_PROPERTY, ERR_METHOD_AND_USER_METHOD, ERR_NO_DP, ERR_NO_EXP, ERR_NO_EXPRESSION, ERR_NO_METHOD, ERR_NO_PROPERTY_FOR_LOCALE, ERR_NO_PROPERTY_TYPE, ERR_NO_SET_LIST, ERR_NULL_ITEM_DESCRIPTOR, ERR_OP_SAME_AS_DP, ERR_PROP_COLLECTION_TYPE, ERR_SET_NOT_WRITABLE, PROPERTY_SEPARATOR, RECURSION_DEPTH_ATTR_NAME, RESOURCE_BUNDLE_NAME, TAG_DERIVATION, TAG_EXPRESSION
 
Constructor Summary
CatalogMapPropertyDerivation()
           
 
Method Summary
 Query createIsNullQuery(QueryBuilder pBuilder, atg.repository.query.PropertyQueryExpression pParentProperty, java.util.List pChildPropertyList)
          Create a query to check if our derived property is null.
protected  Query createQuery(int pQueryType, boolean pDerivedPropertyOnLeft, boolean pCountDerivedProperty, QueryExpression pOther, int pOperator, boolean pIgnoreCase, QueryExpression pMinScore, QueryExpression pSearchStringFormat, Query pItemQuery, QueryBuilder pBuilder, atg.repository.query.PropertyQueryExpression pParentProperty, java.util.List pChildPropertyList)
          Do the real work of implementing a query to find the correct map value.
 java.lang.Object derivePropertyValue(java.lang.Object pBean)
          Determine the specified derived property value.
 java.lang.Object derivePropertyValue(RepositoryItemImpl pItem)
          Determine the specified derived property value.
 atg.repository.dp.Expression getPropertyOrigin(RepositoryItemImpl pItem)
          Determine from where the specified property value is derived, if applicable.
protected  java.lang.String getPropertyToDerive()
           
 boolean isQueryable()
          Determine whether the specified property can be used in a query.
 java.util.List validate()
          Validate the derivation.
 
Methods inherited from class atg.commerce.dp.CatalogMapDerivation
getCatalog, getKeyFromCatalog, getProfile
 
Methods inherited from class atg.repository.dp.DerivationMethodImpl
createComparisonQuery, createExpression, createIncludesAllQuery, createIncludesAnyQuery, createIncludesItemQuery, createIncludesQuery, createPatternMatchQuery, createQuery, createReferencedByQuery, createTextSearchQuery, getAllowNoExpressions, getDerivation, getFeatureDescriptor, getPropertyDescriptor, getPropertyOrigin, getPropertyOrigin, getPropertyOrigin, isEmpty, isWritable, rebuildExpression, setDerivation, setFrom, setPropertyDescriptor, setPropertyValue, setPropertyValue, wrap
 
Methods inherited from class atg.beans.SerializableFeatureDescriptor
copyFeatureDescriptor, getDisplayName, getDisplayNameResource, getDisplaySortString, getResourceBundle, getShortDescription, getShortDescriptionResource, getSortString, setDisplayNameResource, setShortDescriptionResource, toString
 
Methods inherited from class java.beans.FeatureDescriptor
attributeNames, getName, getValue, isExpert, isHidden, isPreferred, setDisplayName, setExpert, setHidden, setName, setPreferred, setShortDescription, setValue
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

CLASS_VERSION

public static java.lang.String CLASS_VERSION
Class version string


DERIVATION_NAME

protected static final java.lang.String DERIVATION_NAME
See Also:
Constant Field Values

DISPLAY_NAME

protected static final java.lang.String DISPLAY_NAME
See Also:
Constant Field Values

SHORT_DESCRIPTION

protected static final java.lang.String SHORT_DESCRIPTION
See Also:
Constant Field Values
Constructor Detail

CatalogMapPropertyDerivation

public CatalogMapPropertyDerivation()
Method Detail

validate

public java.util.List validate()
Validate the derivation. This derivation only works if the expression in the expression list is a map whose values are repository items where the property being assigned is assignable.

Specified by:
validate in interface atg.repository.dp.DerivationMethod
Overrides:
validate in class CatalogMapDerivation
Returns:
a non-null, possibly empty List of RepositoryExceptions if the derivation is not valid. The size of the list is the number of errors found.

derivePropertyValue

public java.lang.Object derivePropertyValue(RepositoryItemImpl pItem)
                                     throws RepositoryException
Determine the specified derived property value.

Specified by:
derivePropertyValue in interface atg.repository.dp.DerivationMethod
Overrides:
derivePropertyValue in class CatalogMapDerivation
Parameters:
pItem - the item whose property value is desired
Returns:
the derived value
Throws:
PropertyNotFoundException - if a property referenced in this expression could not be found in the specified bean
RepositoryException

derivePropertyValue

public java.lang.Object derivePropertyValue(java.lang.Object pBean)
                                     throws RepositoryException
Determine the specified derived property value.

Specified by:
derivePropertyValue in interface atg.repository.dp.DerivationMethod
Overrides:
derivePropertyValue in class CatalogMapDerivation
Parameters:
pBean - the bean representing a repository item whose property value is desired
Returns:
the derived value
Throws:
PropertyNotFoundException - if a property referenced in this expression could not be found in the specified bean
RepositoryException

getPropertyOrigin

public atg.repository.dp.Expression getPropertyOrigin(RepositoryItemImpl pItem)
                                               throws RepositoryException
Determine from where the specified property value is derived, if applicable. For some derivations there is no identifiable origin for a derived property.

Specified by:
getPropertyOrigin in interface atg.repository.dp.DerivationMethod
Overrides:
getPropertyOrigin in class CatalogMapDerivation
Parameters:
pItem - the item whose property value origin is desired
Returns:
the orgin of this property, or null if not applicable
Throws:
RepositoryException

isQueryable

public boolean isQueryable()
Determine whether the specified property can be used in a query.

Specified by:
isQueryable in interface atg.repository.dp.DerivationMethod
Overrides:
isQueryable in class CatalogMapDerivation
Returns:
true if it can be queried, else false

getPropertyToDerive

protected java.lang.String getPropertyToDerive()
                                        throws RepositoryException
Throws:
RepositoryException

createIsNullQuery

public Query createIsNullQuery(QueryBuilder pBuilder,
                               atg.repository.query.PropertyQueryExpression pParentProperty,
                               java.util.List pChildPropertyList)
                        throws RepositoryException
Create a query to check if our derived property is null.

Specified by:
createIsNullQuery in interface atg.repository.dp.DerivationMethod
Overrides:
createIsNullQuery in class CatalogMapDerivation
Parameters:
pQuery - query to translate
pBuilder - query builder to use
the - equivalent query, which is build entirely with pBuilder and contains no references to derived properties
pParentProperty - the parent of the derived property, if the derived property is not a direct child of the Item being queried.
pChildPropertyList - a list of the children of the derived property, if the derived property is not the last expression in the query.
Returns:
the query
Throws:
RepositoryException - if there is problem building the query

createQuery

protected Query createQuery(int pQueryType,
                            boolean pDerivedPropertyOnLeft,
                            boolean pCountDerivedProperty,
                            QueryExpression pOther,
                            int pOperator,
                            boolean pIgnoreCase,
                            QueryExpression pMinScore,
                            QueryExpression pSearchStringFormat,
                            Query pItemQuery,
                            QueryBuilder pBuilder,
                            atg.repository.query.PropertyQueryExpression pParentProperty,
                            java.util.List pChildPropertyList)
                     throws RepositoryException
Do the real work of implementing a query to find the correct map value. The various translate methods call this helper method. The arguments may seem a little strange. By passing all the arguments to all the types of queries we can centralize the logic without having to instanceof and cast query objects (again).

All of the QueryExpression arguments to this method were created by pBuilder and thus can be used as is without being translated.

Overrides:
createQuery in class CatalogMapDerivation
Parameters:
pQueryType - the type of the original query
pDerivedPropertyOnLeft - if true the derived property is used as the left hand side in the query and pOtherExpression is used as the right hand side. If false the derived property is used as the right hand side and pOtherExpression is used as the left hand side.
pCountDerivedProperty - if true the derived property is used in a count query expression
pOther - the other expression involved in binary queries
pOperator - the binary operator involved in binary queries
pIgnoreCase - whether to ignore case in pattern match queries
pMinScore - min score for text queries
pSearchStringFormat - search string format for text queries
pItemQuery - query to use in includes item queries only
pBuilder - query builder to use
pParentProperty - the parent of the derived property, if the derived property is not a direct child of the Item being queried.
pChildPropertyList - a list of the children of the derived property, if the derived property is not the last expression in the query.
Returns:
the specified query
Throws:
RepositoryException - if there is problem building the query