in hertzbeat-common/src/main/java/org/apache/hertzbeat/common/util/IntervalExpressionUtil.java [51:105]
public static boolean validNumberIntervalExpress(Double numberValue, String expression) {
if (expression == null || expression.isEmpty()) {
return true;
}
if (numberValue == null) {
return false;
}
try {
String[] expressions = expression.split(SPLIT_OR);
for (String expr : expressions) {
String[] values = expr.substring(1, expr.length() - 1).split(SPLIT_AND);
if (values.length != 2) {
continue;
}
Double[] doubleValues = new Double[2];
if (NEGATIVE.equals(values[0])) {
doubleValues[0] = Double.NEGATIVE_INFINITY;
} else {
doubleValues[0] = Double.parseDouble(values[0]);
}
if (POSITIVE.equals(values[1])) {
doubleValues[1] = Double.POSITIVE_INFINITY;
} else {
doubleValues[1] = Double.parseDouble(values[1]);
}
String startBracket = expr.substring(0, 1);
String endBracket = expr.substring(expr.length() - 1);
if (SPLIT_EQU_LEFT.equals(startBracket)) {
if (SPLIT_EQU_RIGHT.equals(endBracket)) {
if (numberValue > doubleValues[0] && numberValue < doubleValues[1]) {
return true;
}
} else if (SPLIT_EQ_RIGHT.equals(endBracket)) {
if (numberValue > doubleValues[0] && numberValue <= doubleValues[1]) {
return true;
}
}
} else if (SPLIT_EQ_LEFT.equals(startBracket)) {
if (SPLIT_EQU_RIGHT.equals(endBracket)) {
if (numberValue >= doubleValues[0] && numberValue < doubleValues[1]) {
return true;
}
} else if (SPLIT_EQ_RIGHT.equals(endBracket)) {
if (numberValue >= doubleValues[0] && numberValue <= doubleValues[1]) {
return true;
}
}
}
}
return false;
} catch (Exception e) {
log.debug(e.getMessage(), e);
return false;
}
}