Search in sources :

Example 1 with LeftHandSide

use of org.drools.impact.analysis.model.left.LeftHandSide 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;
}
Also used : Pattern(org.drools.impact.analysis.model.left.Pattern) LeftHandSide(org.drools.impact.analysis.model.left.LeftHandSide) Package(org.drools.impact.analysis.model.Package) Rule(org.drools.impact.analysis.model.Rule)

Aggregations

Package (org.drools.impact.analysis.model.Package)1 Rule (org.drools.impact.analysis.model.Rule)1 LeftHandSide (org.drools.impact.analysis.model.left.LeftHandSide)1 Pattern (org.drools.impact.analysis.model.left.Pattern)1