-
Notifications
You must be signed in to change notification settings - Fork 4
/
LogAudit.java
68 lines (64 loc) · 2.97 KB
/
LogAudit.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
package orm.query.examples.ehcache;
import com.github.vzakharchenko.dynamic.orm.core.cache.DiffColumn;
import com.github.vzakharchenko.dynamic.orm.core.cache.DiffColumnModel;
import com.github.vzakharchenko.dynamic.orm.core.cache.event.CacheEvent;
import com.github.vzakharchenko.dynamic.orm.core.helper.ModelHelper;
import com.querydsl.core.types.Path;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import org.springframework.context.ApplicationListener;
import org.springframework.stereotype.Component;
import java.io.Serializable;
import java.util.List;
import java.util.Map;
/**
*
*/
@Component
public class LogAudit implements ApplicationListener<CacheEvent> {
@Override
public void onApplicationEvent(CacheEvent cacheEvent) {
switch (cacheEvent.cacheEventType()) {
case INSERT: {
for (Serializable pk : cacheEvent.getListIds()) {
System.out.println("insert table " + cacheEvent.getQTable().getTableName()
+ " primarykey = " + pk);
DiffColumnModel diffModel = cacheEvent.getDiffModel(pk);
for (Map.Entry<Path<?>, DiffColumn<?>> entry : diffModel.getDiffModels().entrySet()) {
System.out.println(" --- column " + ModelHelper.getColumnRealName(entry.getKey())
+ " set " + entry.getValue().getNewValue());
}
}
break;
}
case UPDATE: {
for (Serializable pk : cacheEvent.getListIds()) {
System.out.println("update table " + cacheEvent.getQTable().getTableName());
DiffColumnModel diffModel = cacheEvent.getDiffModel(pk);
for (Map.Entry<Path<?>, DiffColumn<?>> entry : diffModel.getOnlyChangedColumns().entrySet()) {
System.out.println(" --- column " + ModelHelper.getColumnRealName(entry.getKey())
+ " set " + entry.getValue().getNewValue()
+ " old value "
+ entry.getValue().getOldValue());
}
}
break;
}
case SOFT_DELETE:
case DELETE: {
System.out.println("delete into table " + cacheEvent.getQTable().getTableName() + " ids = " + ToStringBuilder.reflectionToString(cacheEvent.getListIds(), ToStringStyle.JSON_STYLE));
break;
}
case BATCH: {
List<? extends CacheEvent> transactionHistory = cacheEvent.getTransactionHistory();
for (CacheEvent event : transactionHistory) {
onApplicationEvent(event);
}
break;
}
default: {
throw new IllegalStateException(cacheEvent.cacheEventType() + " is not supported");
}
}
}
}