Package de.hybris.platform.catalog.jalo
Class ProductFeature
- All Implemented Interfaces:
Serializable,Comparable
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:
-
Nested Class Summary
Nested classes/interfaces inherited from class de.hybris.platform.jalo.GenericItem
GenericItem.GenericItemImplNested classes/interfaces inherited from class de.hybris.platform.jalo.c2l.LocalizableItem
LocalizableItem.LocalizableItemImplNested classes/interfaces inherited from class de.hybris.platform.jalo.ExtensibleItem
ExtensibleItem.ExtensibleItemImplNested 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
FieldsModifier and TypeFieldDescriptionstatic final Stringstatic final intstatic final intstatic final intstatic final intstatic final intstatic final StringFields 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, VALUETYPEFields inherited from class de.hybris.platform.jalo.c2l.LocalizableItem
LANGUAGE_FALLBACK_ENABLEDFields 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, TYPEFields inherited from class de.hybris.platform.util.BridgeAbstraction
impl, tenant -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected intcalculateSingleValueType(Object value) protected BigDecimalconvertToBigDecimal(Number number) protected ItemcreateItem(SessionContext ctx, ComposedType type, Item.ItemAttributeMap allAttributes) Has to be implemented for each concrete subtype of item.protected voiddoSetSingleValue(SessionContext ctx, JaloPropertyContainer cont, Object value) protected JaloPropertyContainergetInitialProperties(JaloSession jaloSession, Item.ItemAttributeMap allAttributes) Override to specify all properties which should be written during ejbCreate.protected Item.ItemAttributeMapgetNonInitialAttributes(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'.getValue()Deprecated.since agesgetValue(SessionContext ctx) Deprecated.since agesprotected booleanvoidremove(SessionContext ctx) Removes this item.protected voidvoidreType(ClassAttributeAssignment assignment) (Re-)connects this value to a existingClassAttributeAssignment.protected voidsetSearchFields(SessionContext ctx, JaloPropertyContainer cont, Object value) voidsetValue(SessionContext ctx, Object value) Deprecated.since agesvoiduntype()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, setValuePositionMethods inherited from class de.hybris.platform.jalo.GenericItem
getImplementation, getRelatedItems, getRelatedItems, setRelatedItemsMethods 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, setLocalizedPropertyMethods inherited from class de.hybris.platform.jalo.ExtensibleItem
createNonClassAccessor, getAllProperties, getAllProperties, getProperty, getProperty, getPropertyNames, getPropertyNames, removeProperty, removeProperty, setAllProperties, setAllProperties, setProperty, setPropertyMethods 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, getPartOfRemovedSessionMarker, 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, suppressRelation, toString, useTA, writeReplaceMethods inherited from class de.hybris.platform.util.BridgeAbstraction
setTenant
-
Field Details
-
TYPE_STRING
public static final int TYPE_STRING- See Also:
-
TYPE_BOOLEAN
public static final int TYPE_BOOLEAN- See Also:
-
TYPE_NUMBER
public static final int TYPE_NUMBER- See Also:
-
TYPE_VALUE
public static final int TYPE_VALUE- See Also:
-
TYPE_DATE
public static final int TYPE_DATE- See Also:
-
ENABLE_STRING_TO_NUMBER_CONVERSION
- See Also:
-
VALUE
- See Also:
-
-
Constructor Details
-
ProductFeature
public ProductFeature()
-
-
Method Details
-
createItem
protected Item createItem(SessionContext ctx, ComposedType type, Item.ItemAttributeMap allAttributes) throws JaloBusinessException Description copied from class:ItemHas 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:
createItemin 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:GenericItemOverride 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:
getInitialPropertiesin 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:GenericItemThe 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:
getNonInitialAttributesin classGenericItem- Parameters:
ctx- session context with language = NULLallAttributes- aItemAttributeMapcontaning attribute values.- Returns:
- a
ItemAttributeMapcontaining all attribute values, which belong to non-initial attributes.
-
removeLinks
protected void removeLinks()- Overrides:
removeLinksin classItem
-
remove
Description copied from class:ItemRemoves 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:
removein 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
(Re-)connects this value to a existingClassAttributeAssignment.- Parameters:
assignment- the class-attribute relation which the value will belong to
-
calculateSingleValueType
-
setValue
@Deprecated(since="ages", forRemoval=false) public void setValue(SessionContext ctx, Object value) throws NullPointerException Deprecated.since agesChanges the value of this feature.- Throws:
NullPointerException- if the value was null
-
getValue
Deprecated.since agesReturns the value of this feature. -
getValue
Deprecated.since agesReturns the value of this feature. -
doSetSingleValue
-
setSearchFields
-
convertToBigDecimal
-
isStringToNumberConversionEnabled
protected boolean isStringToNumberConversionEnabled()
-