static Optional validateExcludedExpression()

in flink-autoscaler/src/main/java/org/apache/flink/autoscaler/utils/CalendarUtils.java [67:100]


    static Optional<String> validateExcludedExpression(String expression) {
        String[] subExpressions = expression.split("&&");
        Optional<DailyCalendar> dailyCalendar = Optional.empty();
        Optional<CronCalendar> cronCalendar = Optional.empty();
        if (subExpressions.length > 2) {
            return Optional.of(
                    String.format(
                            "Invalid value %s in the autoscaler config %s",
                            expression, AutoScalerOptions.EXCLUDED_PERIODS.key()));
        }

        for (String subExpression : subExpressions) {
            subExpression = subExpression.strip();
            Optional<DailyCalendar> daily = interpretAsDaily(subExpression);
            dailyCalendar = daily.isPresent() ? daily : dailyCalendar;
            Optional<CronCalendar> cron = interpretAsCron(subExpression);
            cronCalendar = cron.isPresent() ? cron : cronCalendar;

            if (daily.isEmpty() && cron.isEmpty()) {
                return Optional.of(
                        String.format(
                                "Invalid value %s in the autoscaler config %s, the value is neither a valid daily expression nor a valid cron expression",
                                expression, AutoScalerOptions.EXCLUDED_PERIODS.key()));
            }
        }

        if (subExpressions.length == 2 && (dailyCalendar.isEmpty() || cronCalendar.isEmpty())) {
            return Optional.of(
                    String.format(
                            "Invalid value %s in the autoscaler config %s, the value can not be configured as dailyExpression && dailyExpression or cronExpression && cronExpression",
                            expression, AutoScalerOptions.EXCLUDED_PERIODS.key()));
        }
        return Optional.empty();
    }