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 classItemExpressionTranslator.CombinedSearchResultstatic classItemExpressionTranslator.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.ExportPatternEndElementaddValuePath(java.util.List<AttributeDescriptor> path, AtomicValueTranslator trans, java.util.Map modifiers, boolean isAlternative)protected ItemExpressionTranslator.ExpressionQuerybuildQuery(ComposedType targetType, java.util.List<AbstractDescriptor.ColumnParams> itemPatternList)protected voidcheckResolvableAttribute(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.ObjectconvertToJalo(java.lang.String valueExpr, Item forItem)Converts a non-null and non-empty string into a jalo attribute value.protected java.lang.StringconvertToString(java.lang.Object value)Converts a non-null jalo attribute value into its string representation.protected voidcreateAtomicAttributeSubTranslator(AttributeDescriptor attributeDescriptor, java.lang.StringBuilder stringBuilder, ComposedType type, AbstractDescriptor.ColumnParams patternElement, java.util.List<AttributeDescriptor> qualifierPath, java.lang.String enclosingTableAlias, boolean isAlternative)protected voidcreateDocumentIDSubTranslator(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 voidcreateItemAttributeSubTranslator(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.StringcreateNewTableAlias()protected voidcreateRelationAttributeSubTranslator(RelationDescriptor relationDescriptor, java.lang.StringBuilder stringBuilder, ComposedType relatedType, AbstractDescriptor.ColumnParams patternElement, java.util.List<AttributeDescriptor> qualifierPath, java.lang.String enclosingTableAlias, boolean isAlternative)protected ComposedTypecreateSubTranslator(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.StringgetDocumentIDFromItemPattern(AbstractDescriptor.ColumnParams pattern)protected java.lang.ObjectgetEmptyValue()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 LanguagegetLanguageByIsoCode(de.hybris.platform.impex.jalo.translators.ItemExpressionTranslator.ExportPatternEndElement patternElement)protected ComposedTypegetMostSpecific(ComposedType baseType, java.util.Set<ComposedType> types)protected ItemExpressionTranslator.ExpressionQuerygetQuery()protected ComposedTypegetTargetType()voidinit(StandardColumnDescriptor columnDescriptor)Called once per header creation to allow configuring this translator using column modifiers etc.protected static java.lang.StringinserIsNullIfNecessary(java.lang.String queryBody, java.util.Map<java.lang.String,java.lang.Object> valuesIncludingNull)protected booleanisLocalizedAndLanguageModifierIsSet(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 voidmergeValues(java.util.Map<java.lang.String,java.lang.Object> merged, java.util.Map<java.lang.String,java.lang.Object> original, int tokenNumber)protected AttributeDescriptorresolveAttribute(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.ObjectsearchItem(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.StringtoString(Item item)voidvalidate(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:AbstractValueTranslatorCalled once per header creation to allow configuring this translator using column modifiers etc.- Overrides:
initin 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:AbstractValueTranslatorValidates the value translator once per header creation.- Overrides:
validatein 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:SingleValueTranslatorConverts a non-null jalo attribute value into its string representation.- Specified by:
convertToStringin 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
attribcolumn 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:
getEmptyValuein 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:SingleValueTranslatorConverts a non-null and non-empty string into a jalo attribute value.- Specified by:
convertToJaloin classSingleValueTranslator- Parameters:
valueExpr- string to translateforItem- item instance the translated value will be set to as attribute- Returns:
- Object translated value
-
-