in asterix-bad/src/main/java/org/apache/asterix/bad/rules/InsertBrokerNotifierForChannelRule.java [345:365]
private AbstractLogicalOperator findOp(AbstractLogicalOperator op, String lookingForString) {
if (!op.hasInputs()) {
return null;
}
for (Mutable<ILogicalOperator> subOp : op.getInputs()) {
if (lookingForString.equals("brokers") && isBrokerScan((AbstractLogicalOperator) subOp.getValue())) {
return op;
} else if (lookingForString.equals("project")
&& subOp.getValue().getOperatorTag() == LogicalOperatorTag.PROJECT) {
return (AbstractLogicalOperator) subOp.getValue();
} else if (isSubscriptionsScan((AbstractLogicalOperator) subOp.getValue(), lookingForString)) {
return (AbstractLogicalOperator) subOp.getValue();
} else {
AbstractLogicalOperator nestedOp = findOp((AbstractLogicalOperator) subOp.getValue(), lookingForString);
if (nestedOp != null) {
return nestedOp;
}
}
}
return null;
}