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 package org.bitrepository.audittrails;
26
27 import java.util.Date;
28 import javax.jms.JMSException;
29
30 import org.bitrepository.audittrails.collector.AuditTrailCollector;
31 import org.bitrepository.audittrails.store.AuditTrailStore;
32 import org.bitrepository.bitrepositoryelements.FileAction;
33 import org.bitrepository.common.ArgumentValidator;
34 import org.bitrepository.common.settings.Settings;
35 import org.bitrepository.protocol.messagebus.MessageBus;
36 import org.bitrepository.protocol.messagebus.MessageBusManager;
37 import org.bitrepository.service.LifeCycledService;
38 import org.bitrepository.service.contributor.ContributorMediator;
39 import org.bitrepository.audittrails.store.AuditEventIterator;
40 import org.slf4j.Logger;
41 import org.slf4j.LoggerFactory;
42
43
44
45
46
47 public class AuditTrailService implements LifeCycledService {
48 private final Logger log = LoggerFactory.getLogger(getClass());
49
50 private final AuditTrailStore store;
51
52 private final AuditTrailCollector collector;
53
54 private final ContributorMediator mediator;
55
56 private final Settings settings;
57
58
59
60
61
62
63
64
65 public AuditTrailService(
66 AuditTrailStore store,
67 AuditTrailCollector collector,
68 ContributorMediator mediator,
69 Settings settings) {
70 ArgumentValidator.checkNotNull(collector, "AuditTrailCollector collector");
71 ArgumentValidator.checkNotNull(store, "AuditTrailStore store");
72 ArgumentValidator.checkNotNull(mediator, "ContributorMediator mediator");
73 ArgumentValidator.checkNotNull(settings, "Settings settings");
74
75 this.store = store;
76 this.collector = collector;
77 this.mediator = mediator;
78 this.settings = settings;
79
80 mediator.start();
81 }
82
83
84
85
86
87
88
89
90
91
92
93 public AuditEventIterator queryAuditTrailEventsByIterator(Date fromDate, Date toDate, String fileID,
94 String collectionID, String reportingComponent, String actor, FileAction action,
95 String fingerprint, String operationID) {
96 return store.getAuditTrailsByIterator(fileID, collectionID, reportingComponent, null, null, actor, action,
97 fromDate, toDate, fingerprint, operationID);
98 }
99
100
101
102
103
104
105 public void collectAuditTrails() {
106 for(org.bitrepository.settings.repositorysettings.Collection c
107 : settings.getRepositorySettings().getCollections().getCollection()) {
108 collector.collectNewestAudits(c.getID());
109 }
110 }
111
112 @Override
113 public void start() {
114 mediator.start();
115 }
116
117 @Override
118 public void shutdown() {
119 collector.close();
120 store.close();
121 mediator.close();
122 MessageBus messageBus = MessageBusManager.getMessageBus();
123 if ( messageBus != null) {
124 try {
125 messageBus.close();
126 } catch (JMSException e) {
127 log.warn("Failed to close message bus cleanly, " + e.getMessage());
128 }
129 }
130 }
131 }