private void addPatternToComposite(final RuleModel m, final ConditionalElementDescr conditionalDescr, final CompositeFactPattern comp, final boolean isJavaDialect, final Map<String, String> boundParams, final PackageDataModelOracle dmo) { for (Object descr : conditionalDescr.getDescrs()) { if (descr instanceof PatternDescr) { comp.addFactPattern(parsePatternDescr(m, (PatternDescr) descr, isJavaDialect, boundParams, dmo)); } else if (descr instanceof ConditionalElementDescr) { addPatternToComposite(m, (ConditionalElementDescr) descr, comp, isJavaDialect, boundParams, dmo); } } }
private CompositeFactPattern parseExistentialElementDescr(final RuleModel m, final ConditionalElementDescr conditionalDescr, final boolean isJavaDialect, final Map<String, String> boundParams, final PackageDataModelOracle dmo) { CompositeFactPattern comp; if (conditionalDescr instanceof NotDescr) { comp = new CompositeFactPattern(CompositeFactPattern.COMPOSITE_TYPE_NOT); } else if (conditionalDescr instanceof OrDescr) { comp = new CompositeFactPattern(CompositeFactPattern.COMPOSITE_TYPE_OR); } else if (conditionalDescr instanceof ExistsDescr) { comp = new CompositeFactPattern(CompositeFactPattern.COMPOSITE_TYPE_EXISTS); } else { throw new IllegalArgumentException("Unknown conditional descr type: " + conditionalDescr); } addPatternToComposite(m, conditionalDescr, comp, isJavaDialect, boundParams, dmo); IFactPattern[] patterns = comp.getPatterns(); return patterns != null && patterns.length > 0 ? comp : null; }