use of org.openksavi.sponge.core.kb.DefaultScriptKnowledgeBase in project sponge by softelnet.
the class EngineBuilder method knowledgeBase.
/**
* Adds the knowledge base.
*
* @param name the knowledge base name.
* @param type the knowledge base type.
* @param scripts the knowledge base scripts.
* @return this Engine Builder.
*/
public EngineBuilder<T> knowledgeBase(String name, KnowledgeBaseType type, List<KnowledgeBaseScript> scripts) {
ScriptKnowledgeBase knowledgeBase = new DefaultScriptKnowledgeBase(name, type);
scripts.forEach(script -> knowledgeBase.addScript(script));
knowledgeBases.add(knowledgeBase);
return this;
}
use of org.openksavi.sponge.core.kb.DefaultScriptKnowledgeBase 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