/
SyncAuditServiceImpl.java
106 lines (88 loc) · 4.2 KB
/
SyncAuditServiceImpl.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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
package org.openmrs.module.sync2.api.impl;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonParseException;
import org.openmrs.api.APIException;
import org.openmrs.api.impl.BaseOpenmrsService;
import org.openmrs.module.sync2.api.SyncAuditService;
import org.openmrs.module.sync2.api.SyncConfigurationService;
import org.openmrs.module.sync2.api.dao.SyncAuditDao;
import org.openmrs.module.sync2.api.model.audit.AuditMessage;
import org.openmrs.module.sync2.api.model.audit.AuditMessageList;
import org.springframework.beans.factory.annotation.Autowired;
import java.sql.Timestamp;
import java.util.List;
public class SyncAuditServiceImpl extends BaseOpenmrsService implements SyncAuditService {
private SyncAuditDao dao;
@Autowired
private SyncConfigurationService configuration;
public void setDao(SyncAuditDao dao) {
this.dao = dao;
}
@Override
public AuditMessage getMessageById(Integer id) throws APIException {
return dao.getMessageById(id);
}
@Override
public String getJsonMessageById(Integer id) throws APIException, JsonParseException {
AuditMessage auditMessage = dao.getMessageById(id);
GsonBuilder gsonBuilder = new GsonBuilder().serializeNulls();
gsonBuilder.registerTypeAdapter(AuditMessage.class, new AuditMessage.AuditMessageSerializer());
Gson gson = gsonBuilder.create();
return gson.toJson(auditMessage);
}
@Override
public String getPaginatedMessages(Integer page, Integer pageSize, Boolean success, String action, String resourceName) throws APIException {
List<AuditMessage> auditMessageList = dao.getPaginatedMessages(page, pageSize, success, action, resourceName);
AuditMessageList result = new AuditMessageList(dao.getCountOfMessages(), page, pageSize, auditMessageList);
return serializeResults(result);
}
@Override
public AuditMessage saveSuccessfulAudit(String resourceName, String resourceUrl, String action, String details) throws APIException {
if (configuration.getSyncConfiguration().getGeneral().isPersistSuccessAudit()) {
AuditMessage newItem = new AuditMessage();
newItem.setSuccess(true);
newItem.setTimestamp(new Timestamp(System.currentTimeMillis()));
newItem.setResourceName(resourceName);
newItem.setUsedResourceUrl(resourceUrl);
newItem.setAction(action);
newItem.setDetails(details);
return dao.saveItem(newItem);
}
return null;
}
@Override
public AuditMessage saveFailedAudit(String resourceName, String resourceUrl, String action, String details) throws APIException {
if (configuration.getSyncConfiguration().getGeneral().isPersistFailureAudit()) {
AuditMessage newItem = new AuditMessage();
newItem.setSuccess(false);
newItem.setTimestamp(new Timestamp(System.currentTimeMillis()));
newItem.setResourceName(resourceName);
newItem.setUsedResourceUrl(resourceUrl);
newItem.setAction(action);
newItem.setDetails(details);
return dao.saveItem(newItem);
}
return null;
}
@Override
public AuditMessage saveAuditMessage(AuditMessage auditMessage) {
boolean persistSuccessAudit = auditMessage.getSuccess()
&& configuration.getSyncConfiguration().getGeneral().isPersistSuccessAudit();
boolean persistFailureAudit = !auditMessage.getSuccess()
&& configuration.getSyncConfiguration().getGeneral().isPersistFailureAudit();
if (persistFailureAudit || persistSuccessAudit) {
if (auditMessage.getTimestamp() == null) {
auditMessage.setTimestamp(new Timestamp(System.currentTimeMillis()));
}
return dao.saveItem(auditMessage);
}
return null;
}
private String serializeResults(AuditMessageList results) {
GsonBuilder gsonBuilder = new GsonBuilder().serializeNulls();
gsonBuilder.registerTypeAdapter(AuditMessage.class, new AuditMessage.AuditMessageSerializer());
Gson gson = gsonBuilder.create();
return gson.toJson(results);
}
}