2014-08-27 45 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