1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.syncope.core.persistence.jpa.dao;
20
21 import com.fasterxml.jackson.databind.node.ObjectNode;
22 import java.util.List;
23 import java.util.stream.Collectors;
24 import org.apache.syncope.core.provisioning.api.serialization.POJOHelper;
25
26 public class MyJPAJSONAuditConfDAO extends AbstractJPAJSONLoggerDAO {
27
28 protected static class MyMessageCriteriaBuilder extends JSONMessageCriteriaBuilder {
29
30 @Override
31 protected String doBuild(final List<ObjectNode> containers) {
32 if (entityKey != null) {
33 query.append(andIfNeeded()).append('(').
34 append(AUDIT_ENTRY_MESSAGE_COLUMN).append("->'$.before' LIKE '%").append(entityKey).
35 append("%' OR ").
36 append(AUDIT_ENTRY_MESSAGE_COLUMN).append("->'$.input' LIKE '%").append(entityKey).
37 append("%' OR ").
38 append(AUDIT_ENTRY_MESSAGE_COLUMN).append("->'$.output' LIKE '%").append(entityKey).
39 append("%')");
40 }
41
42 if (!containers.isEmpty()) {
43 query.append(andIfNeeded()).append('(').
44 append(containers.stream().
45 map(container -> "JSON_CONTAINS(" + AUDIT_ENTRY_MESSAGE_COLUMN + ", '"
46 + POJOHelper.serialize(container).replace("'", "''")
47 + "')").collect(Collectors.joining(" OR "))).
48 append(')');
49 }
50
51 return query.toString();
52 }
53 }
54
55 @Override
56 protected MessageCriteriaBuilder messageCriteriaBuilder(final String entityKey) {
57 return new MyMessageCriteriaBuilder().entityKey(entityKey);
58 }
59 }