chore(build): 更新构建脚本并优化操作历史日志

- 修改 runClient任务组和描述信息
- 添加多个 2D 模型测试任务 (test2DModelLayerPanel, testModelRenderLightingTest 等)
- 替换 System.out.println 日志为 SLF4J Logger 实现
- 移除冗余的日志打印和注释代码
- 统一使用占位符方式记录日志信息
- 注册和注销操作类型时增加日志跟踪
- 完善操作监听器添加与移除的日志提示
-优化异常处理中的错误日志输出
This commit is contained in:
tzdwindows 7
2025-10-22 22:33:15 +08:00
parent fec5de1276
commit 2278c5d0c7
3 changed files with 74 additions and 130 deletions

View File

@@ -191,8 +191,8 @@ application {
}
task runClient(type: JavaExec) {
group = "application"
description = "运行 com.axis.innovators.box.Main"
group = "run-toolboxProgram"
description = "执行工具箱程序"
classpath = sourceSets.main.runtimeClasspath
mainClass = "com.axis.innovators.box.Main"
jvmArgs = [
@@ -200,3 +200,43 @@ task runClient(type: JavaExec) {
"-Djava.system.class.loader=com.axis.innovators.box.plugins.BoxClassLoader"
]
}
task test2DModelLayerPanel(type: JavaExec) {
group = "test-model"
description = "运行 2D Model Layer Panel 测试"
classpath = sourceSets.main.runtimeClasspath
mainClass = "com.chuangzhou.vivid2D.test.ModelLayerPanelTest"
jvmArgs = [
"-Dfile.encoding=UTF-8"
]
}
task testModelRenderLightingTest(type: JavaExec) {
group = "test-model"
description = "运行 2D Model 高亮灯光测试"
classpath = sourceSets.main.runtimeClasspath
mainClass = "com.chuangzhou.vivid2D.test.ModelRenderLightingTest"
jvmArgs = [
"-Dfile.encoding=UTF-8"
]
}
task testModelTest(type: JavaExec) {
group = "test-model"
description = "运行 2D Model 保存和完整性测试"
classpath = sourceSets.main.runtimeClasspath
mainClass = "com.chuangzhou.vivid2D.test.ModelTest"
jvmArgs = [
"-Dfile.encoding=UTF-8"
]
}
task testModelTest2(type: JavaExec) {
group = "test-model"
description = "运行 2D Model 物理基准测试"
classpath = sourceSets.main.runtimeClasspath
mainClass = "com.chuangzhou.vivid2D.test.ModelTest2"
jvmArgs = [
"-Dfile.encoding=UTF-8"
]
}

View File

@@ -3,6 +3,8 @@ package com.chuangzhou.vivid2D.render.awt.util;
import com.chuangzhou.vivid2D.render.model.ModelPart;
import com.chuangzhou.vivid2D.render.model.util.Mesh2D;
import org.joml.Vector2f;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.*;
import java.util.concurrent.CopyOnWriteArrayList;
@@ -15,6 +17,8 @@ import java.util.concurrent.CopyOnWriteArrayList;
*/
public class OperationHistoryGlobal {
private static final Logger LOGGER = LoggerFactory.getLogger(OperationHistoryGlobal.class);
// 单例实例
private static final OperationHistoryGlobal INSTANCE = new OperationHistoryGlobal();
@@ -58,7 +62,7 @@ public class OperationHistoryGlobal {
* 初始化基础操作记录器
*/
private void initializeBasicRecorders() {
System.out.println("开始初始化基础操作记录器...");
LOGGER.debug("开始初始化基础操作记录器...");
// 基础变换操作
registerOperationRecorder("SET_POSITION", new OperationRecorder() {
@@ -442,7 +446,7 @@ public class OperationHistoryGlobal {
}
});
System.out.println("基础操作记录器初始化完成,共注册 " + registeredOperations.size() + " 个操作类型");
LOGGER.info("基础操作记录器初始化完成,共注册 {} 个操作类型", registeredOperations.size());
}
/**
@@ -484,12 +488,6 @@ public class OperationHistoryGlobal {
// 标记已处理的操作类型
handledOperations.add(operationType);
// 输出调试信息
if (isDebugEnabled()) {
System.out.printf("默认监听器处理: %s - %s (参数数: %d)%n",
operationType, action, params != null ? params.length : 0);
}
}
private void handleRecordEvent(String operationType, Object... params) {
@@ -550,7 +548,7 @@ public class OperationHistoryGlobal {
handleBatchTransformRecord(params);
break;
default:
System.out.println("记录操作: " + operationType);
LOGGER.debug("记录操作: {}", operationType);
break;
}
}
@@ -592,7 +590,7 @@ public class OperationHistoryGlobal {
executeBatchTransform(params);
break;
default:
System.out.println("执行操作: " + operationType);
LOGGER.debug("执行操作: {}", operationType);
break;
}
}
@@ -646,8 +644,6 @@ public class OperationHistoryGlobal {
ModelPart part = (ModelPart) params[0];
Object[] oldValues = (Object[]) params[1];
Object[] newValues = (Object[]) params[2];
System.out.printf("记录批量变换: %s (位置、旋转、缩放、中心点)%n", part.getName());
}
}
@@ -669,7 +665,7 @@ public class OperationHistoryGlobal {
part.setPivot(newPivot.x, newPivot.y);
}
System.out.println("重做批量变换: " + part.getName());
LOGGER.debug("重做批量变换: {}", part.getName());
}
}
@@ -691,7 +687,7 @@ public class OperationHistoryGlobal {
part.setPivot(oldPivot.x, oldPivot.y);
}
System.out.println("撤回批量变换: " + part.getName());
LOGGER.debug("撤回批量变换: {}", part.getName());
}
}
@@ -705,11 +701,11 @@ public class OperationHistoryGlobal {
operationCounts.clear();
handledOperations.clear();
operationContext.clear();
System.out.println("操作历史已清空");
LOGGER.debug("操作历史已清空");
}
private void handleUnknownEvent(String operationType, String action, Object... params) {
System.out.println("未知操作事件: " + operationType + " - " + action);
LOGGER.debug("未知操作事件: {} - {}", operationType, action);
}
// ============ 新增的拖拽结束操作方法 ============
@@ -733,45 +729,19 @@ public class OperationHistoryGlobal {
if (params.length >= 2) {
List<ModelPart> parts = (List<ModelPart>) params[0];
Map<ModelPart, Vector2f> startScales = (Map<ModelPart, Vector2f>) params[1];
System.out.printf("记录调整大小结束: %d 个部件从起始缩放调整%n", parts.size());
for (ModelPart part : parts) {
Vector2f startScale = startScales.get(part);
Vector2f currentScale = part.getScale();
System.out.printf(" 部件 %s: (%.2f,%.2f) -> (%.2f,%.2f)%n",
LOGGER.debug(" 部件 %s: (%.2f,%.2f) -> (%.2f,%.2f)%n",
part.getName(), startScale.x, startScale.y, currentScale.x, currentScale.y);
}
}
}
private void handleRotatePartEndRecord(Object... params) {
if (params.length >= 2) {
List<ModelPart> parts = (List<ModelPart>) params[0];
Map<ModelPart, Float> startRotations = (Map<ModelPart, Float>) params[1];
System.out.printf("记录旋转结束: %d 个部件从起始旋转角度调整%n", parts.size());
for (ModelPart part : parts) {
float startRotation = startRotations.get(part);
float currentRotation = part.getRotation();
System.out.printf(" 部件 %s: %.1f° -> %.1f°%n",
part.getName(), Math.toDegrees(startRotation), Math.toDegrees(currentRotation));
}
}
}
private void handleMovePivotEndRecord(Object... params) {
if (params.length >= 2) {
List<ModelPart> parts = (List<ModelPart>) params[0];
Map<ModelPart, Vector2f> startPivots = (Map<ModelPart, Vector2f>) params[1];
System.out.printf("记录移动中心点结束: %d 个部件从起始中心点移动%n", parts.size());
for (ModelPart part : parts) {
Vector2f startPivot = startPivots.get(part);
Vector2f currentPivot = part.getPivot();
System.out.printf(" 部件 %s: (%.1f,%.1f) -> (%.1f,%.1f)%n",
part.getName(), startPivot.x, startPivot.y, currentPivot.x, currentPivot.y);
}
}
}
private void executeDragPartEnd(Object... params) {
@@ -786,7 +756,7 @@ public class OperationHistoryGlobal {
paramIndex++;
}
}
System.out.println("重做拖拽结束操作");
LOGGER.debug("重做拖拽结束操作");
}
}
@@ -802,7 +772,7 @@ public class OperationHistoryGlobal {
paramIndex++;
}
}
System.out.println("重做调整大小结束操作");
LOGGER.debug("重做调整大小结束操作");
}
}
@@ -818,7 +788,7 @@ public class OperationHistoryGlobal {
paramIndex++;
}
}
System.out.println("重做旋转结束操作");
LOGGER.debug("重做旋转结束操作");
}
}
@@ -834,7 +804,7 @@ public class OperationHistoryGlobal {
paramIndex++;
}
}
System.out.println("重做移动中心点结束操作");
LOGGER.debug("重做移动中心点结束操作");
}
}
@@ -864,7 +834,7 @@ public class OperationHistoryGlobal {
part.setScale(startScale.x, startScale.y);
}
}
System.out.println("撤回调整大小结束操作");
LOGGER.debug("撤回调整大小结束操作");
}
}
@@ -879,7 +849,7 @@ public class OperationHistoryGlobal {
part.setRotation(startRotation);
}
}
System.out.println("撤回旋转结束操作");
LOGGER.debug("撤回旋转结束操作");
}
}
@@ -894,7 +864,7 @@ public class OperationHistoryGlobal {
part.setPivot(startPivot.x, startPivot.y);
}
}
System.out.println("撤回移动中心点结束操作");
LOGGER.debug("撤回移动中心点结束操作");
}
}
@@ -910,9 +880,6 @@ public class OperationHistoryGlobal {
// 保存撤回信息
String key = "position_undo_" + part.getName();
operationContext.put(key, oldPosition);
System.out.printf("记录位置变化: %s (%.1f,%.1f) -> (%.1f,%.1f)%n",
part.getName(), oldPosition.x, oldPosition.y, newPosition.x, newPosition.y);
}
}
@@ -921,7 +888,6 @@ public class OperationHistoryGlobal {
ModelPart part = (ModelPart) params[0];
Vector2f newPosition = (Vector2f) params[2];
part.setPosition(newPosition.x, newPosition.y);
System.out.println("重做位置变化: " + part.getName());
}
}
@@ -930,7 +896,6 @@ public class OperationHistoryGlobal {
ModelPart part = (ModelPart) params[0];
Vector2f oldPosition = (Vector2f) params[1];
part.setPosition(oldPosition.x, oldPosition.y);
System.out.println("撤回位置变化: " + part.getName());
}
}
@@ -942,9 +907,6 @@ public class OperationHistoryGlobal {
String key = "rotation_undo_" + part.getName();
operationContext.put(key, oldRotation);
System.out.printf("记录旋转变化: %s %.1f° -> %.1f°%n",
part.getName(), Math.toDegrees(oldRotation), Math.toDegrees(newRotation));
}
}
@@ -953,7 +915,6 @@ public class OperationHistoryGlobal {
ModelPart part = (ModelPart) params[0];
float newRotation = (Float) params[2];
part.setRotation(newRotation);
System.out.println("重做旋转变化: " + part.getName());
}
}
@@ -962,7 +923,6 @@ public class OperationHistoryGlobal {
ModelPart part = (ModelPart) params[0];
float oldRotation = (Float) params[1];
part.setRotation(oldRotation);
System.out.println("撤回旋转变化: " + part.getName());
}
}
@@ -974,9 +934,6 @@ public class OperationHistoryGlobal {
String key = "scale_undo_" + part.getName();
operationContext.put(key, oldScale);
System.out.printf("记录缩放变化: %s (%.2f,%.2f) -> (%.2f,%.2f)%n",
part.getName(), oldScale.x, oldScale.y, newScale.x, newScale.y);
}
}
@@ -985,7 +942,6 @@ public class OperationHistoryGlobal {
ModelPart part = (ModelPart) params[0];
Vector2f newScale = (Vector2f) params[2];
part.setScale(newScale.x, newScale.y);
System.out.println("重做缩放变化: " + part.getName());
}
}
@@ -994,7 +950,6 @@ public class OperationHistoryGlobal {
ModelPart part = (ModelPart) params[0];
Vector2f oldScale = (Vector2f) params[1];
part.setScale(oldScale.x, oldScale.y);
System.out.println("撤回缩放变化: " + part.getName());
}
}
@@ -1006,9 +961,6 @@ public class OperationHistoryGlobal {
String key = "opacity_undo_" + part.getName();
operationContext.put(key, oldOpacity);
System.out.printf("记录不透明度变化: %s %.1f -> %.1f%n",
part.getName(), oldOpacity, newOpacity);
}
}
@@ -1017,7 +969,6 @@ public class OperationHistoryGlobal {
ModelPart part = (ModelPart) params[0];
float newOpacity = (Float) params[2];
part.setOpacity(newOpacity);
System.out.println("重做不透明度变化: " + part.getName());
}
}
@@ -1026,7 +977,6 @@ public class OperationHistoryGlobal {
ModelPart part = (ModelPart) params[0];
float oldOpacity = (Float) params[1];
part.setOpacity(oldOpacity);
System.out.println("撤回不透明度变化: " + part.getName());
}
}
@@ -1038,9 +988,6 @@ public class OperationHistoryGlobal {
String key = "visible_undo_" + part.getName();
operationContext.put(key, oldVisible);
System.out.printf("记录可见性变化: %s %s -> %s%n",
part.getName(), oldVisible ? "显示" : "隐藏", newVisible ? "显示" : "隐藏");
}
}
@@ -1049,7 +996,6 @@ public class OperationHistoryGlobal {
ModelPart part = (ModelPart) params[0];
boolean newVisible = (Boolean) params[2];
part.setVisible(newVisible);
System.out.println("重做可见性变化: " + part.getName());
}
}
@@ -1058,7 +1004,6 @@ public class OperationHistoryGlobal {
ModelPart part = (ModelPart) params[0];
boolean oldVisible = (Boolean) params[1];
part.setVisible(oldVisible);
System.out.println("撤回可见性变化: " + part.getName());
}
}
@@ -1070,9 +1015,6 @@ public class OperationHistoryGlobal {
String key = "pivot_undo_" + part.getName();
operationContext.put(key, oldPivot);
System.out.printf("记录中心点变化: %s (%.1f,%.1f) -> (%.1f,%.1f)%n",
part.getName(), oldPivot.x, oldPivot.y, newPivot.x, newPivot.y);
}
}
@@ -1081,7 +1023,6 @@ public class OperationHistoryGlobal {
ModelPart part = (ModelPart) params[0];
Vector2f newPivot = (Vector2f) params[2];
part.setPivot(newPivot.x, newPivot.y);
System.out.println("重做中心点变化: " + part.getName());
}
}
@@ -1090,63 +1031,28 @@ public class OperationHistoryGlobal {
ModelPart part = (ModelPart) params[0];
Vector2f oldPivot = (Vector2f) params[1];
part.setPivot(oldPivot.x, oldPivot.y);
System.out.println("撤回中心点变化: " + part.getName());
}
}
private void handleAddPartRecord(Object... params) {
if (params.length >= 1 && params[0] instanceof ModelPart) {
ModelPart part = (ModelPart) params[0];
System.out.println("记录添加图层: " + part.getName());
}
}
private void handleRemovePartRecord(Object... params) {
if (params.length >= 1 && params[0] instanceof MeshState) {
MeshState state = (MeshState) params[0];
System.out.println("记录删除图层: " + state.name);
}
}
private void handleRenamePartRecord(Object... params) {
if (params.length >= 3 && params[0] instanceof ModelPart) {
ModelPart part = (ModelPart) params[0];
String oldName = (String) params[1];
String newName = (String) params[2];
System.out.printf("记录重命名: %s -> %s%n", oldName, newName);
}
}
private void handleDragPartRecord(Object... params) {
if (params.length >= 3 && params[0] instanceof ModelPart) {
ModelPart part = (ModelPart) params[0];
Vector2f startPos = (Vector2f) params[1];
Vector2f endPos = (Vector2f) params[2];
System.out.printf("记录拖拽: %s (%.1f,%.1f) -> (%.1f,%.1f)%n",
part.getName(), startPos.x, startPos.y, endPos.x, endPos.y);
}
}
private void handleAddMeshRecord(Object... params) {
if (params.length >= 1 && params[0] instanceof Mesh2D) {
Mesh2D mesh = (Mesh2D) params[0];
System.out.println("记录添加网格: " + mesh.getName());
}
}
private void handleRemoveMeshRecord(Object... params) {
if (params.length >= 1 && params[0] instanceof MeshState) {
MeshState state = (MeshState) params[0];
System.out.println("记录删除网格: " + state.name);
}
}
private void handleBindTextureRecord(Object... params) {
System.out.println("记录绑定纹理操作");
}
private boolean isDebugEnabled() {
return Boolean.getBoolean("operation.history.debug");
}
/**
@@ -1252,7 +1158,7 @@ public class OperationHistoryGlobal {
historyManager.registerRecorder(operationType, recorder);
}
System.out.println("已注册操作类型: " + operationType);
LOGGER.debug("已注册操作类型: {}", operationType);
}
/**
@@ -1262,9 +1168,7 @@ public class OperationHistoryGlobal {
if (operationType != null) {
registeredOperations.remove(operationType);
recorderMap.remove(operationType);
// 注意:这里不从历史管理器中移除,因为历史管理器可能需要处理已有的操作记录
System.out.println("已注销操作类型: " + operationType);
LOGGER.debug("已注销操作类型: {}", operationType);
}
}
@@ -1273,7 +1177,7 @@ public class OperationHistoryGlobal {
*/
public void recordOperation(String operationType, Object... params) {
if (!isOperationRegistered(operationType)) {
System.err.println("未注册的操作类型: " + operationType);
LOGGER.warn("未注册的操作类型: {}", operationType);
return;
}
@@ -1308,7 +1212,7 @@ public class OperationHistoryGlobal {
if (success) {
String description = historyManager.getRedoDescription();
notifyListeners("SYSTEM", "redo", description);
System.out.println("重做操作: " + description);
LOGGER.debug("重做操作: {}", description);
}
return success;
}
@@ -1321,7 +1225,7 @@ public class OperationHistoryGlobal {
public void addOperationListener(OperationListener listener) {
if (listener != null && !listeners.contains(listener)) {
listeners.add(listener);
System.out.println("已添加操作监听器: " + listener.getClass().getSimpleName());
LOGGER.debug("已添加操作监听器: {}", listener.getClass().getSimpleName());
}
}
@@ -1330,7 +1234,7 @@ public class OperationHistoryGlobal {
*/
public void removeOperationListener(OperationListener listener) {
if (listeners.remove(listener)) {
System.out.println("已移除操作监听器: " + listener.getClass().getSimpleName());
LOGGER.debug("已移除操作监听器: {}", listener.getClass().getSimpleName());
}
}
@@ -1349,7 +1253,7 @@ public class OperationHistoryGlobal {
try {
listener.onOperationEvent(operationType, action, params);
} catch (Exception e) {
System.err.println("操作监听器执行失败: " + e.getMessage());
LOGGER.error("操作监听器执行失败: {}", e.getMessage());
e.printStackTrace();
}
}

View File

@@ -126,11 +126,11 @@ public class ModelLayerPanelTest {
@Override
public void windowClosing(java.awt.event.WindowEvent e) {
// 先释放渲染面板相关 GL 资源与线程
try {
renderPanel.dispose();
} catch (Throwable t) {
t.printStackTrace();
}
//try {
// renderPanel.dispose();
//} catch (Throwable t) {
// t.printStackTrace();
//}
}
@Override