}
private void initByXmlCfg(String fileName) throws Exception {
CgXmlLoader loader = new CgXmlLoader();
CGConfiguration cg = loader.load(fileName);
this.datasources = new HashMap<String, DatasourceConfig>();
for (Iterator<DatasourceConfig> dsCfgs = cg.getDatasource().iterator(); dsCfgs
.hasNext();) {
DatasourceConfig dsCfg = dsCfgs.next();
this.datasources.put(dsCfg.getId(), dsCfg);
}
this.cms = new HashMap<String, CodeModel>();
for (Iterator<CmConfig> cmCfgs = cg.getCms().iterator(); cmCfgs
.hasNext();) {
CmConfig cmCfg = cmCfgs.next();
CodeModel cm = new CodeModel();
cm.setId(cmCfg.getId());
cm.setDataProcessor((IDataProcessor) Class.forName(cmCfg.getDp())
.newInstance());
cm.setNamePattern(cmCfg.getSrcfmt());
cm.setTemplate(cmCfg.getTemplate());
this.cms.put(cmCfg.getId(), cm);
}
this.patterns = new HashMap<String, PatternModel>();
for (Iterator<PatternConfig> pnCfgs = cg.getPatterns().iterator(); pnCfgs
.hasNext();) {
PatternConfig pn = pnCfgs.next();
PatternModel pattern = new PatternModel();
pattern.setId(pn.getId());
Object[] parts = pn.getParts().toArray();
for (int i = 0; i < parts.length; i++) {
pattern.addPart(this.cms.get(parts[i].toString()));
}
this.patterns.put(pn.getId(), pattern);
}
this.dms = new HashMap<String, AbsDataModel>();
for (Iterator<DmConfig> dmCfgs = cg.getDms().iterator(); dmCfgs
.hasNext();) {
DmConfig dmCfg = dmCfgs.next();
IDmReader reader = (IDmReader) Class.forName(dmCfg.getReader())
.newInstance();
this.dms.put(dmCfg.getId(), reader.getDm(dmCfg.getParams(),
this.datasources));
}
this.tasks = new HashMap<String, GenerationTaskModel>();
for (Iterator<GenerationTaskConfig> codeCfgs = cg.getCodes().iterator(); codeCfgs
.hasNext();) {
GenerationTaskConfig taskCfg = codeCfgs.next();
GenerationTaskModel task = new GenerationTaskModel();
task.setName(taskCfg.getName());
task.setLang(taskCfg.getLang());
task.setDest(taskCfg.getDestPath());
task.setPackageName(taskCfg.getPkg());
task.setType(taskCfg.getType());
task.setAvailable(taskCfg.getAvailable().trim().equalsIgnoreCase(
"true") ? true : false);
task.setCodeModel(this.cms.get(taskCfg.getCm()));
task.setPattern(this.patterns.get(taskCfg.getPattern()));
task.setDataModel(this.dms.get(taskCfg.getDm()));
this.tasks.put(taskCfg.getName(), task);
}
for (Iterator<CodesetModel> codesets = cg.getCodesets().iterator(); codesets
.hasNext();) {
CodesetModel codeset = codesets.next();
ICodesetHelper codesetHelper =
(ICodesetHelper) Class.forName(codeset.getChelper()).newInstance();
this.tasks.putAll(codesetHelper.getTasks(codeset