examples/src/main/java/ru/lanit/at/utils/CompareUtil.java
2026-08-14 16:47:31 +03:00

63 lines
2.3 KiB
Java

package ru.lanit.at.utils;
import org.apache.commons.lang3.math.NumberUtils;
import java.math.BigDecimal;
/**
* Created by Sorokin Boris on 21.01.2022.
*/
public class CompareUtil {
public static boolean compare(String firstValue, String secondValue, String operator) {
if (isNumeric(firstValue) && isNumeric(secondValue)) {
return compareNumbers(firstValue, secondValue, operator);
} else {
return compareStrings(firstValue, secondValue, operator);
}
}
private static boolean compareStrings(String firstValue, String secondValue, String operator) {
switch (operator.toLowerCase()) {
case "равно":
case "==":
return firstValue.equals(secondValue);
case "не равно":
case "!=":
return !firstValue.equals(secondValue);
case "содержит":
return firstValue.contains(secondValue);
case "не содержит":
return !firstValue.contains(secondValue);
default:
throw new IllegalArgumentException(String
.format("Параметр '%s' является неверным для метода '%s'.", operator, "compareStrings"));
}
}
private static boolean compareNumbers(String firstValue, String secondValue, String operator) {
BigDecimal number1 = new BigDecimal(firstValue);
BigDecimal number2 = new BigDecimal(secondValue);
switch (operator.toLowerCase()) {
case "равно":
case "==":
return number1.equals(number2);
case "не равно":
case "!=":
return !number1.equals(number2);
case "больше":
case ">":
return number1.compareTo(number2) > 0;
case "меньше":
case "<":
return number1.compareTo(number2) < 0;
default:
throw new IllegalArgumentException(String
.format("Параметр '%s' является неверным для метода '%s'.", operator, "compareNumbers"));
}
}
private static boolean isNumeric(String strNum) {
return NumberUtils.isParsable(strNum);
}
}