/**
* @author 郑小康
*
* 1.根据groupName获取GenericHelperInfo
*
* 2.获取GenericHelperInfo的helperBaseName
*
* 3.如果HelperFullName不为空,则进行下面的操作 HelperFullName可能是default,也可能是default#tenantId
*
* 4.根据helperBaseName(localmysql),获取对应的ModelFieldTypeReader 字段类型阅读器,这个是为了在建表的时候的创建对应字段类型
*
* 5.根据helperInfo通过GenericHelperFactory工厂获取GenericHelper,实际是GenericHelperDAO
*
* 6.根据helperBaseName获取对应的Datasource标签实例
*
* 7.根据GenericHelper所构建的实例,调用其checkDataSource检查数据源,向其中添加未添加的表和字段
*
* */
private void initializeOneGenericHelper(String groupName) {
//根据groupName获取GenericHelperInfo
GenericHelperInfo helperInfo = this.getGroupHelperInfo(groupName);
if (helperInfo == null) {
if (Debug.infoOn()) {
Debug.logInfo("Delegator \"" + delegatorFullName + "\" NOT initializing helper for entity group \"" + groupName + "\" because the group is not associated to this delegator.", module);
}
return;
}
String helperBaseName = helperInfo.getHelperBaseName();
if (Debug.infoOn()) {
Debug.logInfo("Delegator \"" + delegatorFullName + "\" initializing helper \"" + helperBaseName + "\" for entity group \"" + groupName + "\".", module);
}
if (UtilValidate.isNotEmpty(helperInfo.getHelperFullName())) {
// pre-load field type defs, the return value is ignored
ModelFieldTypeReader.getModelFieldTypeReader(helperBaseName);
// get the helper and if configured, do the datasource check
GenericHelper helper = GenericHelperFactory.getHelper(helperInfo);
try {
Datasource datasource = EntityConfig.getDatasource(helperBaseName);
if (datasource.getCheckOnStart()) {
if (Debug.infoOn()) {
Debug.logInfo("Doing database check as requested in entityengine.xml with addMissing=" + datasource.getAddMissingOnStart(), module);
}
helper.checkDataSource(this.getModelEntityMapByGroup(groupName), null, datasource.getAddMissingOnStart());
}
} catch (GenericEntityException e) {
Debug.logWarning(e, e.getMessage(), module);
}
}
}
protected Callable<Void> createHelperCallable(final String groupName) {
return new Callable<Void>() {
@Override
public Void call() {
initializeOneGenericHelper(groupName);
return null;
}
};
}