よく考えた結果、独自のプロセッサを作成する以外に適切な解決策を見つけることができませんでした。ここに解決策があります
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]
これはエラーを救いません。しかし、コンソールに入っていたので、Null Pointer Exception はスローされません (大きなものはこれが本当に嫌いです)。したがって、code = null
システムがその行をダンプして次へ進む場合。
アップデート :
簡単なハックで問題が解決しました。code = null の場合に完全な行をダンプする適切な解決策は次のとおりです(私の要件による)
1行ですべてが魅力的に機能しました!!!
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;
}
}