protected void loadInferenceSemantics(final ModeldocFactory factory,
ModelDocumentation root, String plugin, String pkg,
String name, File file) throws IOException, DocumentationGenerationException {
// create a package for this rule file
final DroolsPackage drools = factory.createDroolsPackage();
drools.setPlugin(plugin);
drools.setPackage(pkg);
drools.setName(name);
root.getReferences().add(drools);
BasicJavadocParser parser = new BasicJavadocParser(getSemanticTagHandlers());
try {
// try and find the first comment from the file, in order to
// provide documentation on the entire rule file
JavadocFragment packageComment = parser.findFirstCommentOfFile(file, this, factory, drools, root);
if (packageComment != null) {
drools.getJavadocs().add(packageComment);
}
// parse all the semantics from the rules
String[] lines = parser.findJavadocTagsInTextFile(file, this, factory, root, new IJavadocReferenceCreator() {
public JavaElement createReference(String[] lines, int line) {
DroolsRule rule = createDroolsRule(factory, line, lines);
if (rule != null) {
drools.getRules().add(rule);
}
return rule;
}
});
// finally, find the number of unique rules
drools.setUniqueRules(getUniqueRuleCount(factory, lines));
} catch (SemanticHandlerException e) {
throw new DocumentationGenerationException("Could not process rule file '" + file + "': " + e.getMessage(), e);
}