use of org.drools.impact.analysis.model.Package in project drools by kiegroup.
the class ModelToGraphConverter method generateGraphAnalysis.
private GraphAnalysis generateGraphAnalysis(AnalysisModel model) {
GraphAnalysis graphAnalysis = new GraphAnalysis();
for (Package pkg : model.getPackages()) {
List<Rule> rules = pkg.getRules();
for (Rule rule : rules) {
graphAnalysis.addNode(new Node(rule));
LeftHandSide lhs = rule.getLhs();
List<Pattern> patterns = lhs.getPatterns();
for (Pattern pattern : patterns) {
Class<?> patternClass = pattern.getPatternClass();
Collection<String> reactOnFields = pattern.getReactOnFields();
if (pattern.isClassReactive()) {
// Pattern which cannot analyze reactivity (e.g. Person(blackBoxMethod())) so reacts to all properties
graphAnalysis.addClassReactiveRule(patternClass, rule, pattern.isPositive());
} else if (reactOnFields.isEmpty()) {
// Pattern without constraint (e.g. Person()) so doesn't react to properties (only react to insert/delete)
graphAnalysis.addInsertReactiveRule(patternClass, rule, pattern.isPositive());
} else {
for (String field : reactOnFields) {
graphAnalysis.addPropertyReactiveRule(patternClass, field, rule, pattern.isPositive());
}
}
}
}
}
return graphAnalysis;
}
use of org.drools.impact.analysis.model.Package in project drools by kiegroup.
the class ModelToGraphConverter method parseGraphAnalysis.
private void parseGraphAnalysis(AnalysisModel model, GraphAnalysis graphAnalysis) {
for (Package pkg : model.getPackages()) {
String pkgName = pkg.getName();
List<Rule> rules = pkg.getRules();
for (Rule rule : rules) {
String ruleName = rule.getName();
RightHandSide rhs = rule.getRhs();
List<ConsequenceAction> actions = rhs.getActions();
for (ConsequenceAction action : actions) {
switch(action.getType()) {
case INSERT:
processInsert(graphAnalysis, pkgName, ruleName, (InsertAction) action);
break;
case DELETE:
processDelete(graphAnalysis, pkgName, ruleName, action);
break;
case MODIFY:
processModify(graphAnalysis, pkgName, ruleName, (ModifyAction) action);
break;
}
}
}
}
}
Aggregations