package com.taobao.tddl.repo.bdb.spi;
import java.util.Map;
import com.taobao.tddl.common.exception.TddlRuntimeException;
import com.taobao.tddl.common.utils.GeneralUtil;
import com.taobao.tddl.common.utils.extension.Activate;
import com.taobao.tddl.common.utils.logger.Logger;
import com.taobao.tddl.common.utils.logger.LoggerFactory;
import com.taobao.tddl.executor.spi.IRepository;
import com.taobao.tddl.executor.spi.IRepositoryFactory;
@Activate(name = "BDB_JE")
public class RepositoryFactoryBDBImp implements IRepositoryFactory {
private final static Logger logger = LoggerFactory.getLogger(RepositoryFactoryBDBImp.class);
@Override
public IRepository buildRepository(Map properties) {
String repoConfigFile = GeneralUtil.getExtraCmdString(properties, BDBConfig.BDB_REPO_CONFIG_FILE_PATH);
BDBConfig config = null;
if (repoConfigFile == null) {
config = new BDBConfig();
logger.warn("bdb repo config file is not assigned, use default config");
} else {
try {
config = new BDBConfig(repoConfigFile);
} catch (Exception e) {
throw new TddlRuntimeException("bdb repository init error", e);
}
}
JE_Repository jeRepository = null;
if (config.isHA()) {
jeRepository = new JE_HA_Repository();
} else {
jeRepository = new JE_Repository();
}
jeRepository.setConfig(config);
jeRepository.init();
return jeRepository;
}
}