2014-08-27 69 views
1

我想以这样的方式导入媒体,如果代码为空,那么hybris应该忽略它,否则它会通过它。这里是我的ImpexHybris:如果代码为空,是否可以忽略impex行?

INSERT_UPDATE Media;mediaFormat(qualifier);code[unique=true][allownull=true];youtubeURL;mime[default='video/mp4'];$catalogVersion;folder(qualifier)[default=images] 

我有一个CSV文件,其中有多个产品的数据集。有些产品有媒体,有些则不是。所以我试图让代码属性为空,但它不工作。

我检查impex.legacy.mode=true也没有运气。它仍然抛出错误。可能是通过beanshell可能,但不知道该怎么做。我不想为此编写自定义翻译器。请给我一些可能的解决方案。

回答

1

经过大量的思考,我找不到任何合适的解决方案,除了创建我自己的处理器。下面是解

public class MediaProcessor extends DefaultImportProcessor 
{ 

@Override 
public void init(final ImpExImportReader reader) 
{ 
    super.init(reader); 
} 

@Override 
public Item processItemData(final ValueLine valueLine) throws ImpExException 
{ 
    Item item = null; 
    final ValueEntry codeEntry = valueLine.getValueEntry(2); 
    final String mediaCode = codeEntry.getCellValue(); 
    if (StringUtils.isNotEmpty(mediaCode)) 
    { 
     item = super.processItemData(valueLine); 
    } 
    return item; 
} 
} 

Impex公司应该是这样..

INSERT_UPDATE Media[processor=com.hybris.core.impex.processor.MediaProcessor];mediaFormat(qualifier);code[unique=true];youtubeURL;mime[default='video/mp4'];$catalogVersion;folder(qualifier)[default=images] 

这不会拯救错误。但它不会抛出空指针异常,因为我在我的控制台中得到(一个大的真的很讨厌这个)。因此,如果code = null系统将转储该行并继续下一步。

UPDATE:

快速黑客解决我的问题。这是一个适当的解决方案转储完整的行,如果代码= null(按照我的要求)

一行使一切工作像一个魅力!

valueLine.resolve(item, Collections.EMPTY_LIST);

全码

public class MediaProcessor extends DefaultImportProcessor 
{ 

    @Override 
    public void init(final ImpExImportReader reader) 
    { 
     super.init(reader); 
    } 

    @Override 
    public Item processItemData(final ValueLine valueLine) throws ImpExException 
    { 
     Item item = null; 
     final ValueEntry codeEntry = valueLine.getValueEntry(2); 
     final String mediaCode = codeEntry.getCellValue(); 
     if (StringUtils.isNotEmpty(mediaCode)) 
     { 
      item = super.processItemData(valueLine); 
     } 
     else 
     { 
      valueLine.resolve(item, Collections.EMPTY_LIST); 
     } 
     return item; 
    } 
} 
0

不,这是不可能的。随机尝试遗留模式将无济于事。

您需要重新考虑从CSV文件到Impex的转换。

+0

我们能不能做一些usign BeanShell的? – 2014-09-01 18:21:49