private AbstractLogicalOperator findOp()

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;
    }