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.persistence.jpa.dao.AbstractJPAJSONLoggerDAO.JSONMessageCriteriaBuilder;
25 import org.apache.syncope.core.provisioning.api.serialization.POJOHelper;
26
27 public class PGJPAJSONAuditConfDAO extends AbstractJPAJSONLoggerDAO {
28
29 protected static class PGMessageCriteriaBuilder extends JSONMessageCriteriaBuilder {
30
31 @Override
32 protected String doBuild(final List<ObjectNode> containers) {
33 if (entityKey != null) {
34 query.append(andIfNeeded()).append('(').
35 append(AUDIT_ENTRY_MESSAGE_COLUMN).append(" ->> 'before' LIKE '%").append(entityKey).
36 append("%' OR ").
37 append(AUDIT_ENTRY_MESSAGE_COLUMN).append(" ->> 'input' LIKE '%").append(entityKey).
38 append("%' OR ").
39 append(AUDIT_ENTRY_MESSAGE_COLUMN).append(" ->> 'output' LIKE '%").append(entityKey).
40 append("%')");
41 }
42
43 if (!containers.isEmpty()) {
44 query.append(andIfNeeded()).append('(').
45 append(containers.stream().
46 map(container -> AUDIT_ENTRY_MESSAGE_COLUMN + "::jsonb @> '"
47 + POJOHelper.serialize(container).replace("'", "''")
48 + "'::jsonb").collect(Collectors.joining(" OR "))).
49 append(')');
50 }
51
52 return query.toString();
53 }
54 }
55
56 @Override
57 protected String select() {
58 return AUDIT_ENTRY_MESSAGE_COLUMN + "::text";
59 }
60
61 @Override
62 protected MessageCriteriaBuilder messageCriteriaBuilder(final String entityKey) {
63 return new PGMessageCriteriaBuilder().entityKey(entityKey);
64 }
65 }