Class ItemExpressionTranslator
- java.lang.Object
-
- de.hybris.platform.impex.jalo.translators.AbstractValueTranslator
-
- de.hybris.platform.impex.jalo.translators.SingleValueTranslator
-
- de.hybris.platform.impex.jalo.translators.ItemExpressionTranslator
-
- Direct Known Subclasses:
AlternativeExpressionTranslator
public class ItemExpressionTranslator extends SingleValueTranslator
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
ItemExpressionTranslator.CombinedSearchResult
static class
ItemExpressionTranslator.ExpressionQuery
-
Constructor Summary
Constructors Constructor Description ItemExpressionTranslator(ComposedType targetType, java.util.List<AbstractDescriptor.ColumnParams> itemPatternList)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected de.hybris.platform.impex.jalo.translators.ItemExpressionTranslator.ExportPatternEndElement
addValuePath(java.util.List<AttributeDescriptor> path, AtomicValueTranslator trans, java.util.Map modifiers, boolean isAlternative)
protected ItemExpressionTranslator.ExpressionQuery
buildQuery(ComposedType targetType, java.util.List<AbstractDescriptor.ColumnParams> itemPatternList)
protected void
checkResolvableAttribute(HeaderDescriptor header, AttributeDescriptor attributeDescriptor)
static java.util.List<ItemExpressionTranslator.CombinedSearchResult>
convertAllToJalo(Item forItem, java.util.List<ItemExpressionTranslator> translators, java.util.List<java.lang.String> expressions)
static java.util.List<ItemExpressionTranslator.CombinedSearchResult>
convertAllToJalo(java.util.List<ItemExpressionTranslator> translators, java.util.List<java.lang.String> expressions, int queryChunkSize)
protected java.lang.Object
convertToJalo(java.lang.String valueExpr, Item forItem)
Converts a non-null and non-empty string into a jalo attribute value.protected java.lang.String
convertToString(java.lang.Object value)
Converts a non-null jalo attribute value into its string representation.protected void
createAtomicAttributeSubTranslator(AttributeDescriptor attributeDescriptor, java.lang.StringBuilder stringBuilder, ComposedType type, AbstractDescriptor.ColumnParams patternElement, java.util.List<AttributeDescriptor> qualifierPath, java.lang.String enclosingTableAlias, boolean isAlternative)
protected void
createDocumentIDSubTranslator(AttributeDescriptor attributeDescriptor, java.lang.StringBuilder stringBuilder, ComposedType type, AbstractDescriptor.ColumnParams patternElement, java.util.List<AttributeDescriptor> qualifierPath, java.lang.String enclosingTableAlias, boolean isAlternative, java.lang.String documentID)
protected void
createItemAttributeSubTranslator(java.lang.String qualifier, ComposedType attrType, java.lang.StringBuilder stringBuilder, ComposedType type, AbstractDescriptor.ColumnParams patternElement, java.util.List<AttributeDescriptor> qualifierPath, java.lang.String enclosingTableAlias, boolean isAlternative)
protected java.lang.String
createNewTableAlias()
protected void
createRelationAttributeSubTranslator(RelationDescriptor relationDescriptor, java.lang.StringBuilder stringBuilder, ComposedType relatedType, AbstractDescriptor.ColumnParams patternElement, java.util.List<AttributeDescriptor> qualifierPath, java.lang.String enclosingTableAlias, boolean isAlternative)
protected ComposedType
createSubTranslator(java.lang.StringBuilder stringBuilder, ComposedType type, AbstractDescriptor.ColumnParams patternElement, java.util.List<AttributeDescriptor> qualifierPath, java.lang.String enclosingTableAlias, boolean isAlternative)
Translates a single item reference expression.protected java.util.List<de.hybris.platform.impex.jalo.translators.ItemExpressionTranslator.ExportPatternElement>
cutOff(java.util.List<de.hybris.platform.impex.jalo.translators.ItemExpressionTranslator.ExportPatternElement> original, int cutPosition)
protected java.lang.String
getDocumentIDFromItemPattern(AbstractDescriptor.ColumnParams pattern)
protected java.lang.Object
getEmptyValue()
Returning default translation in case a default value was specified for each item path expression.protected java.util.Map<java.lang.String,java.lang.Object>
getFullDefaultValueMap()
protected Language
getLanguageByIsoCode(de.hybris.platform.impex.jalo.translators.ItemExpressionTranslator.ExportPatternEndElement patternElement)
protected ComposedType
getMostSpecific(ComposedType baseType, java.util.Set<ComposedType> types)
protected ItemExpressionTranslator.ExpressionQuery
getQuery()
protected ComposedType
getTargetType()
void
init(StandardColumnDescriptor columnDescriptor)
Called once per header creation to allow configuring this translator using column modifiers etc.protected static java.lang.String
inserIsNullIfNecessary(java.lang.String queryBody, java.util.Map<java.lang.String,java.lang.Object> valuesIncludingNull)
protected boolean
isLocalizedAndLanguageModifierIsSet(de.hybris.platform.impex.jalo.translators.ItemExpressionTranslator.ExportPatternEndElement patternElement)
protected java.util.Map<java.lang.String,java.lang.Object>
mergeDefaultValues(java.util.List<java.lang.String> parsedValues)
protected static void
mergeValues(java.util.Map<java.lang.String,java.lang.Object> merged, java.util.Map<java.lang.String,java.lang.Object> original, int tokenNumber)
protected AttributeDescriptor
resolveAttribute(ComposedType type, AbstractDescriptor.ColumnParams patternElement)
Tries to find the matching attribute descriptor for a given expression pattern element.protected static java.util.List<java.lang.Object>
search(java.util.List<ItemExpressionTranslator> translators2query, java.util.List<java.util.Map<java.lang.String,java.lang.Object>> values2query, java.util.List<java.lang.String> expressions2query, int queryChunkSize)
protected static java.util.List<java.lang.Object>
searchCombined(java.util.List<ItemExpressionTranslator> translators, java.util.List<java.util.Map<java.lang.String,java.lang.Object>> valueMaps, java.util.List<java.lang.String> valueExpressions)
protected static java.util.List<java.lang.Object>
searchInChunks(java.util.List<ItemExpressionTranslator> translators2query, java.util.List<java.util.Map<java.lang.String,java.lang.Object>> values2query, java.util.List<java.lang.String> expressions2query, int chunkSize)
protected java.lang.Object
searchItem(java.util.Map values, java.lang.String valueExpr)
Executes actual resolving of a given reference pattern by issuing a flexible search query.protected java.lang.String
toString(Item item)
void
validate(StandardColumnDescriptor columnDescriptor)
Validates the value translator once per header creation.-
Methods inherited from class de.hybris.platform.impex.jalo.translators.SingleValueTranslator
exportValue, importValue, isEmpty
-
Methods inherited from class de.hybris.platform.impex.jalo.translators.AbstractValueTranslator
clearStatus, createTranslator, createTranslator, createTranslator, debug, error, getColumnDescriptor, getFlexibleSearch, info, isDebugEnabled, isInfoEnabled, setEmpty, setError, warn, wasEmpty, wasUnresolved
-
-
-
-
Constructor Detail
-
ItemExpressionTranslator
public ItemExpressionTranslator(ComposedType targetType, java.util.List<AbstractDescriptor.ColumnParams> itemPatternList) throws HeaderValidationException
- Throws:
HeaderValidationException
-
-
Method Detail
-
init
public void init(StandardColumnDescriptor columnDescriptor)
Description copied from class:AbstractValueTranslator
Called once per header creation to allow configuring this translator using column modifiers etc.- Overrides:
init
in classAbstractValueTranslator
- Parameters:
columnDescriptor
- descriptor where the value to translate belongs to
-
getQuery
protected ItemExpressionTranslator.ExpressionQuery getQuery()
-
getTargetType
protected ComposedType getTargetType()
-
createNewTableAlias
protected java.lang.String createNewTableAlias()
-
buildQuery
protected ItemExpressionTranslator.ExpressionQuery buildQuery(ComposedType targetType, java.util.List<AbstractDescriptor.ColumnParams> itemPatternList) throws HeaderValidationException
- Throws:
HeaderValidationException
-
getMostSpecific
protected ComposedType getMostSpecific(ComposedType baseType, java.util.Set<ComposedType> types) throws HeaderValidationException
- Throws:
HeaderValidationException
-
resolveAttribute
protected AttributeDescriptor resolveAttribute(ComposedType type, AbstractDescriptor.ColumnParams patternElement) throws HeaderValidationException
Tries to find the matching attribute descriptor for a given expression pattern element. This method supports the following syntax:( {itemtype} '.' )? {qualifier}
In case a explicite item type is specified it must be the same or subtype of the actual attribute type which encloses this expression.
- Parameters:
type
- the attribute type which encloses this expressionpatternElement
- the expression to reference the enclosing attribute value- Throws:
HeaderValidationException
-
addValuePath
protected de.hybris.platform.impex.jalo.translators.ItemExpressionTranslator.ExportPatternEndElement addValuePath(java.util.List<AttributeDescriptor> path, AtomicValueTranslator trans, java.util.Map modifiers, boolean isAlternative)
-
cutOff
protected java.util.List<de.hybris.platform.impex.jalo.translators.ItemExpressionTranslator.ExportPatternElement> cutOff(java.util.List<de.hybris.platform.impex.jalo.translators.ItemExpressionTranslator.ExportPatternElement> original, int cutPosition)
-
createSubTranslator
protected ComposedType createSubTranslator(java.lang.StringBuilder stringBuilder, ComposedType type, AbstractDescriptor.ColumnParams patternElement, java.util.List<AttributeDescriptor> qualifierPath, java.lang.String enclosingTableAlias, boolean isAlternative) throws HeaderValidationException
Translates a single item reference expression.- Parameters:
stringBuilder
-type
-patternElement
-qualifierPath
-isAlternative
-- Returns:
- in case the expression describes a subtype of the expected attribute type it returns this subtype, null otherwise
- Throws:
HeaderValidationException
-
getDocumentIDFromItemPattern
protected java.lang.String getDocumentIDFromItemPattern(AbstractDescriptor.ColumnParams pattern) throws HeaderValidationException
- Throws:
HeaderValidationException
-
createRelationAttributeSubTranslator
protected void createRelationAttributeSubTranslator(RelationDescriptor relationDescriptor, java.lang.StringBuilder stringBuilder, ComposedType relatedType, AbstractDescriptor.ColumnParams patternElement, java.util.List<AttributeDescriptor> qualifierPath, java.lang.String enclosingTableAlias, boolean isAlternative) throws HeaderValidationException
- Throws:
HeaderValidationException
-
createItemAttributeSubTranslator
protected void createItemAttributeSubTranslator(java.lang.String qualifier, ComposedType attrType, java.lang.StringBuilder stringBuilder, ComposedType type, AbstractDescriptor.ColumnParams patternElement, java.util.List<AttributeDescriptor> qualifierPath, java.lang.String enclosingTableAlias, boolean isAlternative) throws HeaderValidationException
- Throws:
HeaderValidationException
-
createAtomicAttributeSubTranslator
protected void createAtomicAttributeSubTranslator(AttributeDescriptor attributeDescriptor, java.lang.StringBuilder stringBuilder, ComposedType type, AbstractDescriptor.ColumnParams patternElement, java.util.List<AttributeDescriptor> qualifierPath, java.lang.String enclosingTableAlias, boolean isAlternative) throws HeaderValidationException
- Throws:
HeaderValidationException
-
createDocumentIDSubTranslator
protected void createDocumentIDSubTranslator(AttributeDescriptor attributeDescriptor, java.lang.StringBuilder stringBuilder, ComposedType type, AbstractDescriptor.ColumnParams patternElement, java.util.List<AttributeDescriptor> qualifierPath, java.lang.String enclosingTableAlias, boolean isAlternative, java.lang.String documentID) throws HeaderValidationException
- Throws:
HeaderValidationException
-
validate
public void validate(StandardColumnDescriptor columnDescriptor) throws HeaderValidationException
Description copied from class:AbstractValueTranslator
Validates the value translator once per header creation.- Overrides:
validate
in classAbstractValueTranslator
- Parameters:
columnDescriptor
- descriptor where the value to translate belongs to- Throws:
HeaderValidationException
- validation has thrown errors
-
checkResolvableAttribute
protected void checkResolvableAttribute(HeaderDescriptor header, AttributeDescriptor attributeDescriptor) throws HeaderValidationException
- Throws:
HeaderValidationException
-
getFullDefaultValueMap
protected java.util.Map<java.lang.String,java.lang.Object> getFullDefaultValueMap()
-
mergeDefaultValues
protected java.util.Map<java.lang.String,java.lang.Object> mergeDefaultValues(java.util.List<java.lang.String> parsedValues)
-
convertToString
protected java.lang.String convertToString(java.lang.Object value)
Description copied from class:SingleValueTranslator
Converts a non-null jalo attribute value into its string representation.- Specified by:
convertToString
in classSingleValueTranslator
- Parameters:
value
- value to translate- Returns:
- translated value
-
toString
protected java.lang.String toString(Item item)
-
getLanguageByIsoCode
protected Language getLanguageByIsoCode(de.hybris.platform.impex.jalo.translators.ItemExpressionTranslator.ExportPatternEndElement patternElement)
-
isLocalizedAndLanguageModifierIsSet
protected boolean isLocalizedAndLanguageModifierIsSet(de.hybris.platform.impex.jalo.translators.ItemExpressionTranslator.ExportPatternEndElement patternElement)
-
getEmptyValue
protected java.lang.Object getEmptyValue()
Returning default translation in case a default value was specified for each item path expression.Example:
INSERT ...; attrib( a1[ default=a],a2[default=b],a3[default=c] ); ...
Here a actually empty
attrib
column is translated into the equivalent of 'a:b:c' which were set as default value because each path expression ( a1, a2, a3 ) owns a default value. Otherwise the column would not be translatable- Overrides:
getEmptyValue
in classSingleValueTranslator
- Returns:
- used null value
-
searchItem
protected java.lang.Object searchItem(java.util.Map values, java.lang.String valueExpr)
Executes actual resolving of a given reference pattern by issuing a flexible search query.- Parameters:
values
-valueExpr
-- Returns:
- Item
-
inserIsNullIfNecessary
protected static java.lang.String inserIsNullIfNecessary(java.lang.String queryBody, java.util.Map<java.lang.String,java.lang.Object> valuesIncludingNull)
-
mergeValues
protected static void mergeValues(java.util.Map<java.lang.String,java.lang.Object> merged, java.util.Map<java.lang.String,java.lang.Object> original, int tokenNumber)
-
convertAllToJalo
public static java.util.List<ItemExpressionTranslator.CombinedSearchResult> convertAllToJalo(Item forItem, java.util.List<ItemExpressionTranslator> translators, java.util.List<java.lang.String> expressions)
-
convertAllToJalo
public static java.util.List<ItemExpressionTranslator.CombinedSearchResult> convertAllToJalo(java.util.List<ItemExpressionTranslator> translators, java.util.List<java.lang.String> expressions, int queryChunkSize)
-
search
protected static java.util.List<java.lang.Object> search(java.util.List<ItemExpressionTranslator> translators2query, java.util.List<java.util.Map<java.lang.String,java.lang.Object>> values2query, java.util.List<java.lang.String> expressions2query, int queryChunkSize)
-
searchInChunks
protected static java.util.List<java.lang.Object> searchInChunks(java.util.List<ItemExpressionTranslator> translators2query, java.util.List<java.util.Map<java.lang.String,java.lang.Object>> values2query, java.util.List<java.lang.String> expressions2query, int chunkSize)
-
searchCombined
protected static java.util.List<java.lang.Object> searchCombined(java.util.List<ItemExpressionTranslator> translators, java.util.List<java.util.Map<java.lang.String,java.lang.Object>> valueMaps, java.util.List<java.lang.String> valueExpressions)
-
convertToJalo
protected java.lang.Object convertToJalo(java.lang.String valueExpr, Item forItem)
Description copied from class:SingleValueTranslator
Converts a non-null and non-empty string into a jalo attribute value.- Specified by:
convertToJalo
in classSingleValueTranslator
- Parameters:
valueExpr
- string to translateforItem
- item instance the translated value will be set to as attribute- Returns:
- Object translated value
-
-