2
2
3
3
import org .apache .logging .log4j .LogManager ;
4
4
import org .apache .logging .log4j .Logger ;
5
- import org .jembi .jempi .shared .models .AuditEvent ;
5
+ import org .jembi .jempi .shared .models .ApiModels ;
6
+ import org .jembi .jempi .shared .models .GlobalConstants ;
7
+ import org .jembi .jempi .shared .models .LinkingAuditEventData ;
8
+ import org .jembi .jempi .shared .utils .AuditTrailBridge ;
6
9
7
10
import java .sql .PreparedStatement ;
8
11
import java .sql .ResultSet ;
9
- import java .util .ArrayList ;
10
- import java .util .List ;
11
- import java .util .Locale ;
12
+ import java .util .*;
12
13
13
14
import static org .jembi .jempi .shared .models .GlobalConstants .PSQL_TABLE_AUDIT_TRAIL ;
14
15
@@ -25,49 +26,67 @@ final class PsqlAuditTrail {
25
26
psqlClient = new PsqlClient (pgServer , pgPort , pgDatabase , pgUser , pgPassword );
26
27
}
27
28
28
- List <AuditEvent > goldenRecordAuditTrail (final String uid ) {
29
+ List <ApiModels . ApiAuditTrail . LinkingAuditEntry > goldenRecordAuditTrail (final String uid ) {
29
30
psqlClient .connect ();
30
- final var list = new ArrayList <AuditEvent >();
31
+ final var list = new ArrayList <ApiModels . ApiAuditTrail . LinkingAuditEntry >();
31
32
try (PreparedStatement preparedStatement = psqlClient .prepareStatement (String .format (Locale .ROOT ,
32
- """
33
- SELECT * FROM %s where goldenID = ?;
34
- """ ,
35
- PSQL_TABLE_AUDIT_TRAIL )
36
- .stripIndent ())) {
37
- preparedStatement .setString (1 , uid );
33
+ "SELECT * FROM %s WHERE eventType = ? AND eventData ->> 'goldenID' = ?" ,
34
+ PSQL_TABLE_AUDIT_TRAIL ))) {
35
+ preparedStatement .setString (1 , GlobalConstants .AuditEventType .LINKING_EVENT .name ());
36
+ preparedStatement .setString (2 , uid );
38
37
ResultSet rs = preparedStatement .executeQuery ();
39
38
while (rs .next ()) {
40
- final var insertedAt = rs .getTimestamp (2 );
41
- final var createdAt = rs .getTimestamp (3 );
42
- final var interactionID = rs .getString (4 );
43
- final var goldenID = rs .getString (5 );
44
- final var event = rs .getString (6 );
45
- list .add (new AuditEvent (createdAt , insertedAt , interactionID , goldenID , event ));
39
+ final var insertTime = rs .getString (2 );
40
+ final var createdTime = rs .getString (3 );
41
+ final var eventType = rs .getString (4 );
42
+ final var eventData = rs .getString (5 );
43
+ if (Objects .equals (eventType , GlobalConstants .AuditEventType .LINKING_EVENT .name ())) {
44
+ LinkingAuditEventData deserializeEventData = AuditTrailBridge .getDeserializeEventData (eventData , LinkingAuditEventData .class );
45
+ list .add (new ApiModels .ApiAuditTrail .LinkingAuditEntry (
46
+ insertTime ,
47
+ createdTime ,
48
+ deserializeEventData .interaction_id (),
49
+ deserializeEventData .goldenID (),
50
+ deserializeEventData .message (),
51
+ deserializeEventData .score (),
52
+ deserializeEventData .linkingRule ().name ()
53
+ ));
54
+ }
46
55
}
47
56
} catch (Exception e ) {
48
57
LOGGER .error (e );
49
58
}
50
59
return list ;
51
60
}
52
61
53
- List <AuditEvent > interactionRecordAuditTrail (final String uid ) {
62
+ List <ApiModels . ApiAuditTrail . LinkingAuditEntry > interactionRecordAuditTrail (final String uid ) {
54
63
psqlClient .connect ();
55
- final var list = new ArrayList <AuditEvent >();
56
- try (PreparedStatement preparedStatement = psqlClient .prepareStatement (String .format (Locale .ROOT ,
57
- """
58
- SELECT * FROM %s where interactionID = ?;
59
- """ ,
60
- PSQL_TABLE_AUDIT_TRAIL )
61
- .stripIndent ())) {
62
- preparedStatement .setString (1 , uid );
64
+ final var list = new ArrayList <ApiModels .ApiAuditTrail .LinkingAuditEntry >();
65
+ try (PreparedStatement preparedStatement = psqlClient .prepareStatement (String .format (
66
+ Locale .ROOT ,
67
+ "SELECT * FROM %s WHERE eventType = ? AND eventData ->> 'interaction_id' = ?" ,
68
+ PSQL_TABLE_AUDIT_TRAIL ))) {
69
+ preparedStatement .setString (1 , GlobalConstants .AuditEventType .LINKING_EVENT .name ());
70
+ preparedStatement .setString (2 , uid );
63
71
ResultSet rs = preparedStatement .executeQuery ();
64
72
while (rs .next ()) {
65
- final var insertedAt = rs .getTimestamp (2 );
66
- final var createdAt = rs .getTimestamp (3 );
67
- final var interactionID = rs .getString (4 );
68
- final var goldenID = rs .getString (5 );
69
- final var event = rs .getString (6 );
70
- list .add (new AuditEvent (createdAt , insertedAt , interactionID , goldenID , event ));
73
+ final var insertTime = rs .getString (2 );
74
+ final var createdTime = rs .getString (3 );
75
+ final var eventType = rs .getString (4 );
76
+ final var eventData = rs .getString (5 );
77
+
78
+ if (Objects .equals (eventType , GlobalConstants .AuditEventType .LINKING_EVENT .name ())) {
79
+ LinkingAuditEventData deserializeEventData = AuditTrailBridge .getDeserializeEventData (eventData , LinkingAuditEventData .class );
80
+ list .add (new ApiModels .ApiAuditTrail .LinkingAuditEntry (
81
+ insertTime ,
82
+ createdTime ,
83
+ deserializeEventData .interaction_id (),
84
+ deserializeEventData .goldenID (),
85
+ deserializeEventData .message (),
86
+ deserializeEventData .score (),
87
+ deserializeEventData .linkingRule ().name ()
88
+ ));
89
+ }
71
90
}
72
91
} catch (Exception e ) {
73
92
LOGGER .error (e );
0 commit comments