boolean instantiable = GraphtUtils.getPlaceholderNodes(graph).isEmpty();
return new LenskitRecommenderEngine(graph, instantiable);
}
private DAGNode<Component, Dependency> rewriteGraph(DAGNode<Component, Dependency> graph) throws RecommenderConfigurationException {
RecommenderGraphBuilder rewriteBuilder = new RecommenderGraphBuilder();
boolean rewrite = false;
for (Pair<LenskitConfiguration,ModelDisposition> cfg: configurations) {
switch (cfg.getRight()) {
case EXCLUDED:
rewriteBuilder.addBindings(cfg.getLeft().getBindings());
rewriteBuilder.addRoots(cfg.getLeft().getRoots());
rewrite = true;
break;
}
}
if (rewrite) {
logger.debug("rewriting graph");
DependencySolver rewriter = rewriteBuilder.buildDependencyUnsolver();
try {
graph = rewriter.rewrite(graph);
} catch (ResolutionException e) {
throw new RecommenderConfigurationException("Resolution error while rewriting graph", e);
}