Skip to content

Commit 8f05a7a

Browse files
committed
3.1.1:Add object deep copy function to facilitate users to save the objects before change
1 parent 7ce15e2 commit 8f05a7a

24 files changed

+61
-49
lines changed

README.md

+16-15
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
# [ObjectLogger](https://github.com/yeecode/ObjectLogger)
66
![language](https://img.shields.io/badge/language-java-green.svg)
7-
![version](https://img.shields.io/badge/mvn-3.0.1-blue.svg?style=flat)
7+
![version](https://img.shields.io/badge/mvn-3.1.1-blue.svg?style=flat)
88
[![codebeat badge](https://codebeat.co/badges/94beca78-0817-4a27-9544-326afe35339f)](https://codebeat.co/projects/github-com-yeecode-objectlogger-master)
99
![license](https://img.shields.io/badge/license-Apache-brightgreen.svg)
1010

@@ -242,19 +242,20 @@ This function can automatically complete the comparison between old and new obje
242242
For example:
243243

244244
```
245-
CleanRoomTask oldTask = new CleanRoomTask();
246-
oldTask.setId(5);
247-
oldTask.setTaskName("Demo Task");
248-
oldTask.setStatus("TODO");
249-
oldTask.setDescription("Do something...");
245+
CleanRoomTask task = new CleanRoomTask();
246+
task.setId(5);
247+
task.setTaskName("Demo Task");
248+
task.setStatus("TODO");
249+
task.setDescription("Do something...");
250250
251-
CleanRoomTask newTask = new CleanRoomTask();
252-
newTask.setId(5);
253-
newTask.setTaskName("Demo Task");
254-
newTask.setStatus("DOING");
255-
newTask.setDescription("The main job is to clean the floor.");
256-
newTask.setAddress("Sunny Street");
257-
newTask.setRoomNumber(702);
251+
CleanRoomTask oldTask = logClient.deepCopy(task);
252+
253+
task.setId(5);
254+
task.setTaskName("Demo Task");
255+
task.setStatus("DOING");
256+
task.setDescription("The main job is to clean the floor.");
257+
task.setAddress("Sunny Street");
258+
task.setRoomNumber(702);
258259
259260
logClient.logObject(
260261
cleanRoomTask.getId().toString(),
@@ -264,7 +265,7 @@ logClient.logObject(
264265
null,
265266
null,
266267
oldTask,
267-
newTask);
268+
task);
268269
```
269270

270271
Query form ObjectLoggerServer:
@@ -428,7 +429,7 @@ public class ExtendedTypeHandler implements BaseExtendedTypeHandler {
428429

429430
## 9 Roadmap
430431

431-
- TODO:Added object deep copy function
432+
- 3.1.1:Add object deep copy function to facilitate users to save the objects before change
432433
- 3.0.1:Optimizing System Naming, represent the difference value with json
433434
- 3.0.0:Optimizing System Naming
434435
- 2.3.0:Added automatic recording for inherited attributes

README_CN.md

+16-15
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
# [ObjectLogger](https://github.com/yeecode/ObjectLogger)
66
![language](https://img.shields.io/badge/language-java-green.svg)
7-
![version](https://img.shields.io/badge/mvn-3.0.1-blue.svg?style=flat)
7+
![version](https://img.shields.io/badge/mvn-3.1.1-blue.svg?style=flat)
88
[![codebeat badge](https://codebeat.co/badges/94beca78-0817-4a27-9544-326afe35339f)](https://codebeat.co/projects/github-com-yeecode-objectlogger-master)
99
![license](https://img.shields.io/badge/license-Apache-brightgreen.svg)
1010

@@ -244,19 +244,20 @@ http://127.0.0.1:12301/ObjectLoggerServer/log/query?appName=ObjectLoggerDemo&obj
244244
例如,业务系统这样调用:
245245

246246
```
247-
CleanRoomTask oldTask = new CleanRoomTask();
248-
oldTask.setId(5);
249-
oldTask.setTaskName("Demo Task");
250-
oldTask.setStatus("TODO");
251-
oldTask.setDescription("Do something...");
247+
CleanRoomTask task = new CleanRoomTask();
248+
task.setId(5);
249+
task.setTaskName("Demo Task");
250+
task.setStatus("TODO");
251+
task.setDescription("Do something...");
252252
253-
CleanRoomTask newTask = new CleanRoomTask();
254-
newTask.setId(5);
255-
newTask.setTaskName("Demo Task");
256-
newTask.setStatus("DOING");
257-
newTask.setDescription("The main job is to clean the floor.");
258-
newTask.setAddress("Sunny Street");
259-
newTask.setRoomNumber(702);
253+
CleanRoomTask oldTask = logClient.deepCopy(task);
254+
255+
task.setId(5);
256+
task.setTaskName("Demo Task");
257+
task.setStatus("DOING");
258+
task.setDescription("The main job is to clean the floor.");
259+
task.setAddress("Sunny Street");
260+
task.setRoomNumber(702);
260261
261262
logClient.logObject(
262263
cleanRoomTask.getId().toString(),
@@ -266,7 +267,7 @@ logClient.logObject(
266267
null,
267268
null,
268269
oldTask,
269-
newTask);
270+
task);
270271
```
271272

272273
则我们可以使用下面查询条件:
@@ -432,7 +433,7 @@ public class ExtendedTypeHandler implements BaseExtendedTypeHandler {
432433

433434
## 9 Roadmap
434435

435-
- TODO:增加对象深度镜像功能
436+
- 3.1.1:增加对象深度拷贝功能,便于用户保存变更前的对象
436437
- 3.0.1: 优化系统命名,对比值输出转为灵活的json
437438
- 3.0.0:优化系统命名
438439
- 2.3.0:增加对继承属性的自动记录功能

client/pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<groupId>com.github.yeecode.objectlogger</groupId>
77
<artifactId>ObjectLogger</artifactId>
8-
<version>3.0.1</version>
8+
<version>3.1.1</version>
99
</parent>
1010
<artifactId>ObjectLoggerClient</artifactId>
1111
<packaging>jar</packaging>

client/src/main/java/com/github/yeecode/objectlogger/client/service/LogClient.java

+12
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import com.github.yeecode.objectlogger.client.model.BaseAttributeModel;
77
import com.github.yeecode.objectlogger.client.task.LogAttributesTask;
88
import com.github.yeecode.objectlogger.client.task.LogObjectTask;
9+
import com.google.gson.Gson;
910
import org.springframework.beans.factory.annotation.Autowired;
1011
import org.springframework.stereotype.Component;
1112

@@ -24,6 +25,17 @@ public class LogClient {
2425

2526
private ExecutorService fixedThreadPool = Executors.newFixedThreadPool(10);
2627

28+
/**
29+
* Get a deep copy of the input object
30+
*
31+
* @param originalObject Original object
32+
* @param <T> Type of original object
33+
* @return Deep copy of the original object
34+
*/
35+
public <T> T deepCopy(T originalObject) {
36+
Gson gson = new Gson();
37+
return gson.fromJson(gson.toJson(originalObject), (Class<T>)originalObject.getClass());
38+
}
2739

2840
/**
2941
* Auto diff old/new object and write one log
Binary file not shown.
Binary file not shown.

client/target/ObjectLoggerClient-3.0.1.pom renamed to client/target/ObjectLoggerClient-3.1.1.pom

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<groupId>com.github.yeecode.objectlogger</groupId>
77
<artifactId>ObjectLogger</artifactId>
8-
<version>3.0.1</version>
8+
<version>3.1.1</version>
99
</parent>
1010
<artifactId>ObjectLoggerClient</artifactId>
1111
<packaging>jar</packaging>

demo/pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<groupId>com.github.yeecode.objectlogger</groupId>
77
<artifactId>ObjectLogger</artifactId>
8-
<version>3.0.1</version>
8+
<version>3.1.1</version>
99
</parent>
1010
<artifactId>ObjectLoggerDemo</artifactId>
1111

demo/src/main/java/com/github/yeecode/objectlogger/demo/controller/TaskController.java

+9-11
Original file line numberDiff line numberDiff line change
@@ -70,14 +70,12 @@ public String start() {
7070
@RequestMapping(value = "/update")
7171
public String update() {
7272
initTask();
73-
CleanRoomTask oldTask = cleanRoomTask;
74-
// Omission: Read and write database operations
73+
// Get a deep copy of the original object
74+
CleanRoomTask oldTask = logClient.deepCopy(cleanRoomTask);
7575

76-
CleanRoomTask newTask = new CleanRoomTask();
77-
newTask.setId(5);
78-
newTask.setTaskName("Demo Task");
79-
newTask.setStatus("DOING");
80-
newTask.setDescription("" +
76+
// Modify the original object
77+
cleanRoomTask.setStatus("DOING");
78+
cleanRoomTask.setDescription("" +
8179
"<p>" +
8280
"What is poetry? Who knows<br>" +
8381
"Not a rose, but the scent of the rose.<br>" +
@@ -98,20 +96,20 @@ public String update() {
9896
"See ,hear and feel something that prose<br>" +
9997
"Cannot: and what it is who knows.</p>" +
10098
"<h2>yes!</h2>");
101-
newTask.setAddress("Sunny Street");
102-
newTask.setRoomNumber(702);
99+
cleanRoomTask.setAddress("Sunny Street");
100+
cleanRoomTask.setRoomNumber(702);
103101

104102

105103
// Usage 3: Automatically analyze and record changes in object attributes
106104
logClient.logObject(
107-
cleanRoomTask.getId().toString(),
105+
this.cleanRoomTask.getId().toString(),
108106
"Tom",
109107
"update",
110108
"Update a Task",
111109
null,
112110
null,
113111
oldTask,
114-
newTask);
112+
cleanRoomTask);
115113

116114
return "success";
117115
}
-65 KB
Binary file not shown.
64.9 KB
Binary file not shown.

demo/target/ObjectLoggerDemo-3.0.1.pom renamed to demo/target/ObjectLoggerDemo-3.1.1.pom

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<groupId>com.github.yeecode.objectlogger</groupId>
77
<artifactId>ObjectLogger</artifactId>
8-
<version>3.0.1</version>
8+
<version>3.1.1</version>
99
</parent>
1010
<artifactId>ObjectLoggerDemo</artifactId>
1111

pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<modelVersion>4.0.0</modelVersion>
55
<groupId>com.github.yeecode.objectlogger</groupId>
66
<artifactId>ObjectLogger</artifactId>
7-
<version>3.0.1</version>
7+
<version>3.1.1</version>
88
<name>ObjectLogger</name>
99

1010
<modules>

server/pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<groupId>com.github.yeecode.objectlogger</groupId>
77
<artifactId>ObjectLogger</artifactId>
8-
<version>3.0.1</version>
8+
<version>3.1.1</version>
99
</parent>
1010
<artifactId>ObjectLoggerServer</artifactId>
1111
<packaging>jar</packaging>
Binary file not shown.
Binary file not shown.

server/target/ObjectLoggerServer-3.0.1.pom renamed to server/target/ObjectLoggerServer-3.1.1.pom

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<groupId>com.github.yeecode.objectlogger</groupId>
77
<artifactId>ObjectLogger</artifactId>
8-
<version>3.0.1</version>
8+
<version>3.1.1</version>
99
</parent>
1010
<artifactId>ObjectLoggerServer</artifactId>
1111
<packaging>jar</packaging>

target/ObjectLogger-3.0.1.pom renamed to target/ObjectLogger-3.1.1.pom

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<modelVersion>4.0.0</modelVersion>
55
<groupId>com.github.yeecode.objectlogger</groupId>
66
<artifactId>ObjectLogger</artifactId>
7-
<version>3.0.1</version>
7+
<version>3.1.1</version>
88
<name>ObjectLogger</name>
99

1010
<modules>

0 commit comments

Comments
 (0)