refactor!: 重构 DataOperationResultException

删除 `DataOperationResultException` 多余的构造方法,仅提供两个构造方法。
创建 `DataOperationResultException` 实例时,必须将预计影响的行数
和实际影响的行数作为入参。(不兼容)

重构 `AssertTools` 中相关的断言方法。
This commit is contained in:
zhouxy108 2025-05-09 21:37:16 +08:00
parent e90e3dc1b4
commit fe8c6330f2
2 changed files with 100 additions and 82 deletions

View File

@ -33,43 +33,49 @@ package xyz.zhouxy.plusone.commons.exception.system;
*/
public final class DataOperationResultException extends SysException {
private static final String DEFAULT_MSG = "数据操作的结果不符合预期";
private final long expected;
private final long actual;
/**
* 使用默认 message 构造新的 {@code DataOperationResultException}
* {@code cause} 未初始化后面可能会通过调用 {@link #initCause} 进行初始化
* 创建一个 {@code DataOperationResultException} 对象
*
* @param expected 预期影响的行数
* @param actual 实际影响的行数
*/
public DataOperationResultException() {
super(DEFAULT_MSG);
public DataOperationResultException(long expected, long actual) {
super(String.format("The number of rows affected is expected to be %d, but is: %d", expected, actual));
this.expected = expected;
this.actual = actual;
}
/**
* 使用指定的 {@code message} 构造新的 {@code DataOperationResultException}
* {@code cause} 未初始化后面可能会通过调用 {@link #initCause} 进行初始化
* 创建一个 {@code DataOperationResultException} 对象
*
* @param message 异常信息
* @param expected 预期影响的行数
* @param actual 实际影响的行数
* @param message 错误信息
*/
public DataOperationResultException(String message) {
public DataOperationResultException(long expected, long actual, String message) {
super(message);
this.expected = expected;
this.actual = actual;
}
/**
* 使用指定的 {@code cause} 构造新的 {@code DataOperationResultException}
* {@code message} (cause==null ? null : cause.toString())
* 预期影响的行数
*
* @param cause 包装的异常
* @return the expected
*/
public DataOperationResultException(Throwable cause) {
super(cause);
public long getExpected() {
return expected;
}
/**
* 使用指定的 {@code message} {@code cause} 构造新的 {@code DataOperationResultException}
* 实际影响的行数
*
* @param message 异常信息
* @param cause 包装的异常
* @return the actual
*/
public DataOperationResultException(String message, Throwable cause) {
super(message, cause);
public long getActual() {
return actual;
}
}

View File

@ -411,141 +411,154 @@ public class AssertTools {
/**
* 当影响的数据量与预计不同时抛出 {@link DataOperationResultException}
*
* @param expectedValue 预计的数量
* @param result 实际影响的数据量
* @param expected 预期影响的行数
* @param actualRowCount 实际影响的行数
*/
public static void checkAffectedRows(int expectedValue, int result) {
checkAffectedRows(expectedValue, result,
"The number of rows affected is expected to be %d, but is: %d", expectedValue, result);
public static void checkAffectedRows(int expected, int actualRowCount) {
if (expected != actualRowCount) {
throw new DataOperationResultException(expected, actualRowCount);
}
}
/**
* 当影响的数据量与预计不同时抛出 {@link DataOperationResultException}
*
* @param expectedValue 预计的数量
* @param result 实际影响的数据量
* @param expected 预期影响的行数
* @param actualRowCount 实际影响的行数
* @param errorMessage 异常信息
*/
public static void checkAffectedRows(int expectedValue, int result, @Nullable String errorMessage) {
checkCondition(expectedValue == result, () -> new DataOperationResultException(errorMessage));
public static void checkAffectedRows(int expected, int actualRowCount,
@Nullable String errorMessage) {
if (expected != actualRowCount) {
throw new DataOperationResultException(expected, actualRowCount, errorMessage);
}
}
/**
* 当影响的数据量与预计不同时抛出 {@link DataOperationResultException}
*
* @param expectedValue 预计的数量
* @param result 实际影响的数据量
* @param expected 预期影响的行数
* @param actualRowCount 实际影响的行数
* @param errorMessageSupplier 异常信息
*/
public static void checkAffectedRows(int expectedValue, int result,
public static void checkAffectedRows(int expected, int actualRowCount,
Supplier<String> errorMessageSupplier) {
checkCondition(expectedValue == result,
() -> new DataOperationResultException(errorMessageSupplier.get()));
if (expected != actualRowCount) {
throw new DataOperationResultException(expected, actualRowCount, errorMessageSupplier.get());
}
}
/**
* 当影响的数据量与预计不同时抛出 {@link DataOperationResultException}
*
* @param expectedValue 预计的数量
* @param result 实际影响的数据量
* @param expected 预期影响的行数
* @param actualRowCount 实际影响的行数
* @param errorMessageTemplate 异常信息模板
* @param errorMessageArgs 异常信息参数
*/
public static void checkAffectedRows(int expectedValue, int result,
public static void checkAffectedRows(int expected, int actualRowCount,
String errorMessageTemplate, Object... errorMessageArgs) {
checkCondition(expectedValue == result,
() -> new DataOperationResultException(String.format(errorMessageTemplate, errorMessageArgs)));
if (expected != actualRowCount) {
throw new DataOperationResultException(expected, actualRowCount,
String.format(errorMessageTemplate, errorMessageArgs));
}
}
/**
* 当影响的数据量与预计不同时抛出 {@link DataOperationResultException}
*
* @param expectedValue 预计的数量
* @param result 实际影响的数据量
* @param expected 预期影响的行数
* @param actualRowCount 实际影响的行数
*/
public static void checkAffectedRows(long expectedValue, long result) {
checkAffectedRows(expectedValue, result,
"The number of rows affected is expected to be %d, but is: %d", expectedValue, result);
public static void checkAffectedRows(long expected, long actualRowCount) {
if (expected != actualRowCount) {
throw new DataOperationResultException(expected, actualRowCount);
}
}
/**
* 当影响的数据量与预计不同时抛出 {@link DataOperationResultException}
*
* @param expectedValue 预计的数量
* @param result 实际影响的数据量
* @param expected 预期影响的行数
* @param actualRowCount 实际影响的行数
* @param errorMessage 异常信息
*/
public static void checkAffectedRows(long expectedValue, long result, @Nullable String errorMessage) {
checkCondition(expectedValue == result, () -> new DataOperationResultException(errorMessage));
public static void checkAffectedRows(long expected, long actualRowCount,
@Nullable String errorMessage) {
if (expected != actualRowCount) {
throw new DataOperationResultException(expected, actualRowCount, errorMessage);
}
}
/**
* 当影响的数据量与预计不同时抛出 {@link DataOperationResultException}
*
* @param expectedValue 预计的数量
* @param result 实际影响的数据量
* @param expected 预期影响的行数
* @param actualRowCount 实际影响的行数
* @param errorMessageSupplier 异常信息
*/
public static void checkAffectedRows(long expectedValue, long result,
public static void checkAffectedRows(long expected, long actualRowCount,
Supplier<String> errorMessageSupplier) {
checkCondition(expectedValue == result,
() -> new DataOperationResultException(errorMessageSupplier.get()));
if (expected != actualRowCount) {
throw new DataOperationResultException(expected, actualRowCount, errorMessageSupplier.get());
}
}
/**
* 当影响的数据量与预计不同时抛出 {@link DataOperationResultException}
*
* @param expectedValue 预计的数量
* @param result 实际影响的数据量
* @param expected 预期影响的行数
* @param actualRowCount 实际影响的行数
* @param errorMessageTemplate 异常信息模板
* @param errorMessageArgs 异常信息参数
*/
public static void checkAffectedRows(long expectedValue, long result,
public static void checkAffectedRows(long expected, long actualRowCount,
String errorMessageTemplate, Object... errorMessageArgs) {
checkCondition(expectedValue == result,
() -> new DataOperationResultException(String.format(errorMessageTemplate, errorMessageArgs)));
if (expected != actualRowCount) {
throw new DataOperationResultException(expected, actualRowCount,
String.format(errorMessageTemplate, errorMessageArgs));
}
}
/**
* 当影响的数据量不为 1 时抛出 {@link DataOperationResultException}
*
* @param result 实际影响的数据量
* @param actualRowCount 实际影响的行数
*/
public static void checkAffectedOneRow(int result) {
checkAffectedRows(1, result,
() -> "The number of rows affected is expected to be 1, but is: " + result);
public static void checkAffectedOneRow(int actualRowCount) {
checkAffectedRows(1, actualRowCount);
}
/**
* 当影响的数据量不为 1 时抛出 {@link DataOperationResultException}
*
* @param result 实际影响的数据量
* @param actualRowCount 实际影响的行数
* @param errorMessage 异常信息
*/
public static void checkAffectedOneRow(int result, String errorMessage) {
checkAffectedRows(1, result, errorMessage);
public static void checkAffectedOneRow(int actualRowCount, String errorMessage) {
checkAffectedRows(1, actualRowCount, errorMessage);
}
/**
* 当影响的数据量不为 1 时抛出 {@link DataOperationResultException}
*
* @param result 实际影响的数据量
* @param actualRowCount 实际影响的行数
* @param errorMessageSupplier 异常信息
*/
public static void checkAffectedOneRow(int result, Supplier<String> errorMessageSupplier) {
checkAffectedRows(1, result, errorMessageSupplier);
public static void checkAffectedOneRow(int actualRowCount, Supplier<String> errorMessageSupplier) {
checkAffectedRows(1, actualRowCount, errorMessageSupplier);
}
/**
* 当影响的数据量不为 1 时抛出 {@link DataOperationResultException}
*
* @param result 实际影响的数据量
* @param actualRowCount 实际影响的行数
* @param errorMessageTemplate 异常信息模板
* @param errorMessageArgs 异常信息参数
*/
public static void checkAffectedOneRow(int result,
public static void checkAffectedOneRow(int actualRowCount,
String errorMessageTemplate, Object... errorMessageArgs) {
checkAffectedRows(1, result, errorMessageTemplate, errorMessageArgs);
checkAffectedRows(1, actualRowCount, errorMessageTemplate, errorMessageArgs);
}
/**
@ -554,40 +567,39 @@ public class AssertTools {
* @param result 实际影响的数据量
*/
public static void checkAffectedOneRow(long result) {
checkAffectedRows(1L, result,
() -> "The number of rows affected is expected to be 1, but is: " + result);
checkAffectedRows(1L, result);
}
/**
* 当影响的数据量不为 1 时抛出 {@link DataOperationResultException}
*
* @param result 实际影响的数据量
* @param actualRowCount 实际影响的行数
* @param errorMessage 异常信息
*/
public static void checkAffectedOneRow(long result, String errorMessage) {
checkAffectedRows(1L, result, errorMessage);
public static void checkAffectedOneRow(long actualRowCount, String errorMessage) {
checkAffectedRows(1L, actualRowCount, errorMessage);
}
/**
* 当影响的数据量不为 1 时抛出 {@link DataOperationResultException}
*
* @param result 实际影响的数据量
* @param actualRowCount 实际影响的行数
* @param errorMessageSupplier 异常信息
*/
public static void checkAffectedOneRow(long result, Supplier<String> errorMessageSupplier) {
checkAffectedRows(1L, result, errorMessageSupplier);
public static void checkAffectedOneRow(long actualRowCount, Supplier<String> errorMessageSupplier) {
checkAffectedRows(1L, actualRowCount, errorMessageSupplier);
}
/**
* 当影响的数据量不为 1 时抛出 {@link DataOperationResultException}
*
* @param result 实际影响的数据量
* @param actualRowCount 实际影响的行数
* @param errorMessageTemplate 异常信息模板
* @param errorMessageArgs 异常信息参数
*/
public static void checkAffectedOneRow(long result,
public static void checkAffectedOneRow(long actualRowCount,
String errorMessageTemplate, Object... errorMessageArgs) {
checkAffectedRows(1L, result, errorMessageTemplate, errorMessageArgs);
checkAffectedRows(1L, actualRowCount, errorMessageTemplate, errorMessageArgs);
}
// ================================