Package de.hybris.platform.catalog.jalo
Class ProductFeature
- java.lang.Object
-
- All Implemented Interfaces:
java.io.Serializable
,java.lang.Comparable
public class ProductFeature extends GeneratedProductFeature
A product features is used to describe a property of a product. It is identified by its qualifier and it contains one or more values. Additionally a unit, description and value details may be specified. Product feature are used mainly to allow generic representation of features of imported catalog products. When modeling own product features you may rather consider to use the platforms property concept.- See Also:
- Serialized Form
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class de.hybris.platform.jalo.GenericItem
GenericItem.GenericItemImpl
-
Nested classes/interfaces inherited from class de.hybris.platform.jalo.c2l.LocalizableItem
LocalizableItem.LocalizableItemImpl
-
Nested classes/interfaces inherited from class de.hybris.platform.jalo.ExtensibleItem
ExtensibleItem.ExtensibleItemImpl
-
Nested classes/interfaces inherited from class de.hybris.platform.jalo.Item
Item.AttributeFilter, Item.AttributeMode, Item.CachedGetter, Item.CachedSetter, Item.ItemAttributeMap, Item.ItemConstraint, Item.ItemImpl, Item.JaloCachedComputationException
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.String
ENABLE_STRING_TO_NUMBER_CONVERSION
static int
TYPE_BOOLEAN
static int
TYPE_DATE
static int
TYPE_NUMBER
static int
TYPE_STRING
static int
TYPE_VALUE
static java.lang.String
VALUE
-
Fields inherited from class de.hybris.platform.catalog.jalo.GeneratedProductFeature
BOOLEANVALUE, CLASSIFICATIONATTRIBUTEASSIGNMENT, DEFAULT_INITIAL_ATTRIBUTES, DESCRIPTION, FEATUREPOSITION, LANGUAGE, NUMBERVALUE, PRODUCT, PRODUCTHANDLER, PRODUCTPOS, QUALIFIER, RAWVALUE, STRINGVALUE, UNIT, VALUEDETAILS, VALUEPOSITION, VALUETYPE
-
Fields inherited from class de.hybris.platform.jalo.c2l.LocalizableItem
LANGUAGE_FALLBACK_ENABLED
-
Fields inherited from class de.hybris.platform.jalo.Item
_CREATION_TIME_INTERNAL, _MODIFIED_TIME_INTERNAL, accessorLog, CREATION_TIME, DISABLE_ATTRIBUTE_CHECK, DISABLE_ITEMCHECK_BEFORE_REMOVABLE, EVEN, FEATURE_ACCESSMAP_QUALIFIER, HJMPTS, INITIAL_CREATION_FLAG, isJaloOnly, MODIFIED_TIME, NEGATIVE, NOT_FOUND, OWNER, PK, POSITIVE, SAVE_FROM_SERVICE_LAYER, staticTransientObjects, TYPE
-
Fields inherited from class de.hybris.platform.util.BridgeAbstraction
impl, tenant
-
-
Constructor Summary
Constructors Constructor Description ProductFeature()
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description protected int
calculateSingleValueType(java.lang.Object value)
protected java.math.BigDecimal
convertToBigDecimal(java.lang.Number number)
protected Item
createItem(SessionContext ctx, ComposedType type, Item.ItemAttributeMap allAttributes)
Has to be implemented for each concrete subtype of item.protected void
doSetSingleValue(SessionContext ctx, JaloPropertyContainer cont, java.lang.Object value)
protected JaloPropertyContainer
getInitialProperties(JaloSession jaloSession, Item.ItemAttributeMap allAttributes)
Override to specify all properties which should be written during ejbCreate.protected Item.ItemAttributeMap
getNonInitialAttributes(SessionContext ctx, Item.ItemAttributeMap allAttributes)
The default implementation ofGenericItem.getNonInitialAttributes(SessionContext, Item.ItemAttributeMap)
assures that the 'registered initial' propertiesGenericItem.getInitialProperties(JaloSession, Item.ItemAttributeMap)
will be removed from the 'non initial map'.java.lang.Object
getValue()
Deprecated.since agesjava.lang.Object
getValue(SessionContext ctx)
Deprecated.since agesprotected boolean
isStringToNumberConversionEnabled()
void
remove(SessionContext ctx)
Removes this item.protected void
removeLinks()
void
reType(ClassAttributeAssignment assignment)
(Re-)connects this value to a existingClassAttributeAssignment
.protected void
setSearchFields(SessionContext ctx, JaloPropertyContainer cont, java.lang.Object value)
void
setValue(SessionContext ctx, java.lang.Object value)
Deprecated.since agesvoid
untype()
Disconnects this value from itsClassAttributeAssignment
.-
Methods inherited from class de.hybris.platform.catalog.jalo.GeneratedProductFeature
getClassificationAttributeAssignment, getClassificationAttributeAssignment, getDefaultAttributeModes, getDescription, getDescription, getFeaturePosition, getFeaturePosition, getFeaturePositionAsPrimitive, getFeaturePositionAsPrimitive, getLanguage, getLanguage, getProduct, getProduct, getQualifier, getQualifier, getUnit, getUnit, getValueDetails, getValueDetails, getValuePosition, getValuePosition, getValuePositionAsPrimitive, getValuePositionAsPrimitive, setClassificationAttributeAssignment, setClassificationAttributeAssignment, setDescription, setDescription, setFeaturePosition, setFeaturePosition, setFeaturePosition, setFeaturePosition, setLanguage, setLanguage, setProduct, setProduct, setQualifier, setQualifier, setUnit, setUnit, setValueDetails, setValueDetails, setValuePosition, setValuePosition, setValuePosition, setValuePosition
-
Methods inherited from class de.hybris.platform.jalo.GenericItem
getImplementation, getRelatedItems, setRelatedItems
-
Methods inherited from class de.hybris.platform.jalo.c2l.LocalizableItem
getAllLocalizedProperties, getAllLocalizedProperties, getAllLocalizedProperties, getAllLocalizedProperties, getAllValuesSessionContext, getLocalizedProperty, getLocalizedProperty, getLocalizedPropertyInternal, getLocalizedPropertyNames, getLocalizedPropertyNames, hasLanguage, isEmptyValue, isFallbackEnabled, removeLocalizedProperty, removeLocalizedProperty, setAllLocalizedProperties, setAllLocalizedProperties, setLocalizedProperty, setLocalizedProperty
-
Methods inherited from class de.hybris.platform.jalo.ExtensibleItem
createNonClassAccessor, getAllProperties, getAllProperties, getProperty, getProperty, getPropertyNames, getPropertyNames, removeProperty, removeProperty, setAllProperties, setAllProperties, setProperty, setProperty
-
Methods inherited from class de.hybris.platform.jalo.Item
addLinkedItems, addLinkedItems, addLinkedItems, addLinkedItems, addLinkedItems, addLinkedItems, addLinkedItems, addLinkedItems, addLinkedItems, addNegativePermission, addPermission, addPositivePermission, assureExtensionsLoaded, changeTypeAfterCreation, checkConstraint, checkItemPermission, checkMandatoryAttribute, checkMandatoryAttribute, checkPermission, checkPermission, checkRemovable, clearPermission, compareTo, ctx, doAfterRemove, doBeforeRemove, equals, getAccessorFor, getAllAttributes, getAllAttributes, getAllAttributes, getAllAttributes, getAllAttributesInternal, getAllLinkedItems, getAndCheckCacheBoundItem, getAttribute, getAttribute, getCacheBoundItem, getComposedType, getComposedTypePK, getCreationTime, getCurrentlyRemovingCount, getLinkedItems, getLinkedItems, getLinkedItems, getLinkedItems, getLinkedItems, getLinkedItems, getLinkedItems, getLinkedItemsCount, getLinkedItemsCount, getLinkedItemsCount, getModificationTime, getNegativePermissions, getOwner, getPermissionMap, getPermissions, getPersistenceVersion, getPK, getPositivePermissions, getRestrictedPrincipals, getSession, getSyncObject, getTenant, getTransientObject, getTransientObjectMap, hashCode, hasRegisteredClassAccessorFor, internal_registerClassAccessorFor, internal_registerNonClassAccessorFor, invalidateLocalCaches, isAlive, isCacheBound, isCurrentlyRemoving, isCurrentlyRemoving, isEmptyRelationValue, isInCreate, isInstanceOf, isItemCheckBeforeRemoveableDisabled, isMarkModifiedDisabled, isRelationLocalizationFallbackEnabled, newInstance, notifyExtensionsAfterItemCreation, notifyExtensionsBeforeItemCreation, notifyItemRemoval, notifyManagerAboutItemRemoval, readResolve, registerAccessFor, registerAccessFor, registerJaloInvalidationListeners, remove, removeItemCollection, removeItemCollection, removeLinkedItems, removeLinkedItems, removeLinkedItems, removeLinkedItems, removePartOfItems, removePartOfItems, setAllAttributes, setAllAttributes, setAllAttributesInternal, setAllLinkedItems, setAllLinkedItems, setAllLinkedItems, setAllLinkedItems, setAttribute, setAttribute, setAttributeFromString, setAttributeFromString, setCacheBound, setComposedType, setCreationTime, setImplementation, setLinkedItems, setLinkedItems, setLinkedItems, setLinkedItems, setLinkedItems, setLinkedItems, setLinkedItems, setLinkedItems, setModificationTime, setNonInitialAttributes, setOwner, setPermissionsByMap, setTransientObject, setUseTA, toString, useTA, writeReplace
-
Methods inherited from class de.hybris.platform.util.BridgeAbstraction
setTenant
-
-
-
-
Field Detail
-
TYPE_STRING
public static final int TYPE_STRING
- See Also:
- Constant Field Values
-
TYPE_BOOLEAN
public static final int TYPE_BOOLEAN
- See Also:
- Constant Field Values
-
TYPE_NUMBER
public static final int TYPE_NUMBER
- See Also:
- Constant Field Values
-
TYPE_VALUE
public static final int TYPE_VALUE
- See Also:
- Constant Field Values
-
TYPE_DATE
public static final int TYPE_DATE
- See Also:
- Constant Field Values
-
ENABLE_STRING_TO_NUMBER_CONVERSION
public static final java.lang.String ENABLE_STRING_TO_NUMBER_CONVERSION
- See Also:
- Constant Field Values
-
VALUE
public static final java.lang.String VALUE
- See Also:
- Constant Field Values
-
-
Method Detail
-
createItem
protected Item createItem(SessionContext ctx, ComposedType type, Item.ItemAttributeMap allAttributes) throws JaloBusinessException
Description copied from class:Item
Has to be implemented for each concrete subtype of item. This method is responsible for creating a new item instance ( by calling managers, ejb homes, etc. ) duringComposedType.newInstance(Map)
.In case this method uses any of the attribute values during creation it is required to override
Item.getNonInitialAttributes(SessionContext, ItemAttributeMap)
too.
Sn example:public static final String MY_ATTRIBUTE = "someAttribute"; ... protected Item createItem(SessionContext ctx, ComposedType type, Map allAttributes ) throws JaloBusinessException { MyManager man = ... return man.createMyItem( (String)allAttributes.get(MY_ATTRIBUTE) ); // here MY_ATTRIBUTE is used for creation, so it must not be set again } protected Map getNonInitialAttributes( SessionContext ctx, Map allAttributes ) { // let superclass remove its own initial attributes Map ret = super.getNonInitialAttributes( ctx, allAttributes ); // remove MY_ATTRIBUTE from all attributes since if has already been set ret.remove(MY_ATTRIBUTE); return ret; }
- Overrides:
createItem
in classGeneratedProductFeature
- Parameters:
ctx
- the current session context which this item is created withintype
- the actual item type ( since subtypes may not provide a own jalo class this may be different from the type which this method was implemented for )- Returns:
- the new item instance
- Throws:
JaloBusinessException
- indicates an error during creation - any changes will be rollbacked
-
getInitialProperties
protected JaloPropertyContainer getInitialProperties(JaloSession jaloSession, Item.ItemAttributeMap allAttributes)
Description copied from class:GenericItem
Override to specify all properties which should be written during ejbCreate. This way is is possible to implement non-null property fields ( means property fields which are written in SQL INSERT ). Properties which are set viaItem.setNonInitialAttributes(SessionContext, Item, Item.ItemAttributeMap)
are usually written by additional SQL UPDATE statements.protected JaloPropertyContainer getInitialProperties(ItemAttributeMap allAttributes) { JaloPropertyContainer cont = jaloSession.createPropertyContainer(); cont.setProperty("key", (Serializable) allAttributes.get("myKey")); return cont; }
The default implementation collects all initial properties (localized and unlocalized ones), which were registered by calling
allAttributes.setAttributeMode( MYPROPERTY, Item.AttributeMode.INITIAL );
insideMyType#createItem( SessionContext , ComposedType , Item.ItemAttributeMap )
.- Overrides:
getInitialProperties
in classGenericItem
- Parameters:
jaloSession
- the jalo session which the new item is create withinallAttributes
- the attribute values of the new item
-
getNonInitialAttributes
protected Item.ItemAttributeMap getNonInitialAttributes(SessionContext ctx, Item.ItemAttributeMap allAttributes)
Description copied from class:GenericItem
The default implementation ofGenericItem.getNonInitialAttributes(SessionContext, Item.ItemAttributeMap)
assures that the 'registered initial' propertiesGenericItem.getInitialProperties(JaloSession, Item.ItemAttributeMap)
will be removed from the 'non initial map'.- Overrides:
getNonInitialAttributes
in classGenericItem
- Parameters:
ctx
- session context with language = NULLallAttributes
- aItemAttributeMap
contaning attribute values.- Returns:
- a
ItemAttributeMap
containing all attribute values, which belong to non-initial attributes.
-
removeLinks
protected void removeLinks()
- Overrides:
removeLinks
in classItem
-
remove
public void remove(SessionContext ctx) throws ConsistencyCheckException
Description copied from class:Item
Removes this item.This method is using the following attributes of the given SessionContext:
CacheUsage Language StagingMethod n/a (this is a setter method) no, language doesn't matter for removal yes if called on a StageableItem, no otherwise
- Overrides:
remove
in classItem
- Parameters:
ctx
- A SessionContext object- Throws:
ConsistencyCheckException
- if this item could not be removed for some reason
-
untype
public void untype()
Disconnects this value from itsClassAttributeAssignment
. From this time on the value will only turn up inside untypedFeatureContainer
.
-
reType
public void reType(ClassAttributeAssignment assignment)
(Re-)connects this value to a existingClassAttributeAssignment
.- Parameters:
assignment
- the class-attribute relation which the value will belong to
-
calculateSingleValueType
protected int calculateSingleValueType(java.lang.Object value)
-
setValue
@Deprecated public void setValue(SessionContext ctx, java.lang.Object value) throws java.lang.NullPointerException
Deprecated.since agesChanges the value of this feature.- Throws:
java.lang.NullPointerException
- if the value was null
-
getValue
@Deprecated public java.lang.Object getValue(SessionContext ctx)
Deprecated.since agesReturns the value of this feature.
-
getValue
@Deprecated public java.lang.Object getValue()
Deprecated.since agesReturns the value of this feature.
-
doSetSingleValue
protected void doSetSingleValue(SessionContext ctx, JaloPropertyContainer cont, java.lang.Object value)
-
setSearchFields
protected void setSearchFields(SessionContext ctx, JaloPropertyContainer cont, java.lang.Object value)
-
convertToBigDecimal
protected java.math.BigDecimal convertToBigDecimal(java.lang.Number number)
-
isStringToNumberConversionEnabled
protected boolean isStringToNumberConversionEnabled()
-
-