动机
这个projectdataStadiums.impex 文件假设导入期间存在,这是一个UPDATE操作,这意味着它可能会抛出异常。
| cuppytrail/resources/impex/projectdataStadium.impex |
... UPDATE Match;id[unique=true];group(competition(code),code)[unique=true];stadium(code) ;1;wc2010:A;Emirates ;2;wc2010:A;Emirates ;3;wc2010:B;Emirates ;4;wc2010:B;VillaPark ...
解决方案
创建SystemSetup类,因为它是由cuppy完成并触发导入wc2010 ProjectData的.
| de.hybris.platform.cuppytrail.systemsetup.CuppyTrailSystemSetup.java |
/*
* [y] hybris Platform
*
* Copyright (c) 2000-2012 hybris AG
* All rights reserved.
*
* This software is the confidential and proprietary information of hybris
* ("Confidential Information"). You shall not disclose such Confidential
* Information and shall use it only in accordance with the terms of the
* license agreement you entered into with hybris.
*
*
*/
package de.hybris.platform.cuppytrail.systemsetup;
import de.hybris.platform.core.initialization.SystemSetup;
import de.hybris.platform.core.initialization.SystemSetup.Process;
import de.hybris.platform.core.initialization.SystemSetup.Type;
import de.hybris.platform.core.initialization.SystemSetupContext;
import de.hybris.platform.core.initialization.SystemSetupParameter;
import de.hybris.platform.core.initialization.SystemSetupParameterMethod;
import de.hybris.platform.cuppy.constants.CuppyConstants;
import de.hybris.platform.cuppy.systemsetup.CuppySystemSetup;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* Class to load the pre-requisite wc2010 data for projectdataStadium.impex imports
*/
@SystemSetup(extension = "cuppytrail", process = Process.ALL, type = Type.PROJECT)
public class CuppyTrailSystemSetup extends CuppySystemSetup
{
@SystemSetup
public void importPreReqsFromCuppy()
{
//set up the items to import
final Map<String, String[]> params = new HashMap<String, String[]>();
final String[] p_basics =
{ CuppyConstants.PARAM_BASICS_PLAYERS };
params.put(CuppyConstants.EXTENSIONNAME + "_" + CuppyConstants.PARAM_BASICS, p_basics);
final String[] p_wc2010 =
{ CuppyConstants.PARAM_WC2010_SETUP };
params.put(CuppyConstants.EXTENSIONNAME + "_" + CuppyConstants.PARAM_WC2010, p_wc2010);
final SystemSetupContext ctx = new SystemSetupContext(params, Type.PROJECT, Process.ALL, CuppyConstants.EXTENSIONNAME);
//here we use the same context for both. since it is a fairly flat data object, this works just fine
//super.importBasics(ctx);
super.importWC2010(ctx);
}
@Override
@SystemSetupParameterMethod
public List<SystemSetupParameter> getSystemSetupParameters()
{
return Collections.emptyList();
}
}
最后,它需要在Spring 注入。
| cuppytrail-spring.xml |
<bean id="cuppytrailSystemSetup" class="de.hybris.platform.cuppytrail.systemsetup.CuppyTrailSystemSetup" scope="tenant"> <property name="importService" ref="importService" /> </bean>
现在,通过在更新过程中选择了ProjectData的这cuppytrail导入将在配置文件中的约定之前被触发。
7. ResolvingProjectdataDependenciesBetweenCuppyTra
原文:http://my.oschina.net/penfin/blog/465613