use of org.openksavi.sponge.kb.KnowledgeBaseType in project sponge by softelnet.
the class DefaultKnowledgeBaseManager method createScriptKnowledgeBaseFromConfiguration.
protected DefaultScriptKnowledgeBase createScriptKnowledgeBaseFromConfiguration(String name, String typeCode, Configuration[] fileNodes) {
List<KnowledgeBaseScript> scripts = new ArrayList<>();
for (Configuration fileNode : fileNodes) {
String fileName = fileNode.getValue();
if (StringUtils.isEmpty(fileName)) {
throw new SpongeException("Knowledge base file name must not be empty");
}
scripts.add(new FileKnowledgeBaseScript(fileName, fileNode.getAttribute(CFG_KB_FILE_ATTR_CHARSET, null), fileNode.getBooleanAttribute(CFG_KB_FILE_ATTR_REQUIRED, KnowledgeBaseScript.DEFAULT_REQUIRED)));
}
DefaultScriptKnowledgeBase knowledgeBase;
if (scripts.isEmpty()) {
if (StringUtils.isEmpty(typeCode)) {
throw new SpongeException("Knowledge base type for script knowledge bases with no files must not be empty");
}
knowledgeBase = new DefaultScriptKnowledgeBase(name, getKnowledgeBaseInterpreterFactory(typeCode).getSupportedType());
} else {
KnowledgeBaseType inferredKnowledgeBaseType = inferKnowledgeBaseType(name, scripts);
if (!StringUtils.isEmpty(typeCode) && !inferredKnowledgeBaseType.getTypeCode().equals(typeCode)) {
throw new SpongeException("The inferred knowledge base type '" + inferredKnowledgeBaseType.getTypeCode() + "' is different that the specified '" + typeCode + "'");
}
knowledgeBase = new DefaultScriptKnowledgeBase(name, inferredKnowledgeBaseType);
}
scripts.forEach(script -> knowledgeBase.addScript(script));
return knowledgeBase;
}
Aggregations