Null value in second column (incoming csv file):->
input CSV: 10512,,
10513,12345,
impex:
INSERT_UPDATE Product;code[unique=true];vendors(code)[translator=ca.batch.converter.StiboSetDefaultVendorIfNullTranslator];...
code:
Extending de.hybris.platform.impex.jalo.translators.AbstractValueTranslator;
private final String defaultVendorCode = "000000";
@Override
public Object importValue(String valueExpr, final Item item)
throws JaloInvalidParameterException {
if (valueExpr == null || StringUtils.isEmpty(valueExpr)) {
LOG.debug("Current attribute value is null so inserting "
+ defaultVendorCode);
valueExpr = defaultVendorCode;
}
return valueExpr;
}
getting the same below error here also for the 12345 but final impex conveterd row has the number (impex row -> 10153;12345)
due to Argument mismatch trying to set value '000000' for attribute de.hybris.platform.jalo.product.Product.vendors (got java.lang.String, expected de.h ybris.platform.jalo.product.Product).,
(impex row -> 10153;;)
I think the error message is quite clear on this:
(got java.lang.String, expected de.h ybris.platform.jalo.product.Product).,
For the translator you'd have to lookup the actual default vendor object instead of returning the default vendor code.
I think the easiest solution would be if you used a Decorator instead that then returns the code values of your "vendors" attribute. You can find detailed instructions here: https://wiki.hybris.com/display/release5/ImpEx+API#ImpExAPI-WritingOwnCellDecorator
but basically something like this:
public class MyDecorator implements CSVCellDecorator
{
public String decorate( int position, Map<Integer, String> srcLine )
{
// here add your custom logic to check and if applies return your default vendor code, otherwise return the given input value
//String parsedValue=srcLine.get(position);
//return parsedValue+"modified"; // some decoration stuff
}
}
Hope that helps a bit :)