21
21
22
22
import java .sql .PreparedStatement ;
23
23
import java .sql .SQLException ;
24
+ import java .util .Date ;
25
+ import java .util .UUID ;
24
26
25
27
import org .audit4j .core .dto .AuditEvent ;
26
28
import org .audit4j .core .dto .Field ;
30
32
*
31
33
* @author <a href="mailto:[email protected] ">Janith Bandara</a>
32
34
*/
33
- class AuditLogDaoImpl extends AuditBaseDao implements AuditLogDao {
35
+ final class AuditLogDaoImpl extends AuditBaseDao implements AuditLogDao {
34
36
37
+ public static boolean initialized = false ;
38
+
39
+ public static AuditLogDao auditDao ;
40
+
41
+ private AuditLogDaoImpl (){}
35
42
/*
36
43
* (non-Javadoc)
37
44
*
@@ -41,32 +48,44 @@ class AuditLogDaoImpl extends AuditBaseDao implements AuditLogDao {
41
48
*/
42
49
@ Override
43
50
public boolean writeEvent (AuditEvent event ) throws SQLException {
44
-
51
+ String uuid ;
52
+ String timestamp ;
45
53
StringBuffer elements = new StringBuffer ();
54
+
55
+ if (event .getUuid () == null ) {
56
+ uuid =String .valueOf (UUID .randomUUID ().getMostSignificantBits ());
57
+ } else {
58
+ uuid = event .getUuid ().toString ();
59
+ }
60
+
61
+ if (event .getTimestamp () == null ) {
62
+ timestamp = new Date ().toString ();
63
+ } else {
64
+ timestamp = event .getTimestamp ().toString ();
65
+ }
66
+
46
67
47
68
for (Field element : event .getFields ()) {
48
69
elements .append (element .getName () + " " + element .getType () + ":" + element .getValue () + ", " );
49
70
}
50
71
StringBuffer query = new StringBuffer ();
51
- query .append ("insert into audit(auditId, uuid, timestamp, actor, origin, action, elements) " ).append (
52
- "values (?, ?, ?, ?, ?, ?, ? )" );
72
+ query .append ("insert into audit(uuid, timestamp, actor, origin, action, elements) " ).append (
73
+ "values (?, ?, ?, ?, ?, ?)" );
53
74
54
75
PreparedStatement statement = getConnection ().prepareStatement (query .toString ());
55
- statement .setInt (1 , event .getAuditId ());
56
- statement .setString (2 , event .getUuid ().toString ());
57
- statement .setString (3 , event .getTimestamp ().toString ());
58
- statement .setString (4 , event .getActor ());
59
- statement .setString (5 , event .getOrigin ());
60
- statement .setString (6 , event .getAction ());
61
- statement .setString (7 , elements .toString ());
76
+ statement .setString (1 , uuid );
77
+ statement .setString (2 , timestamp );
78
+ statement .setString (3 , event .getActor ());
79
+ statement .setString (4 , event .getOrigin ());
80
+ statement .setString (5 , event .getAction ());
81
+ statement .setString (6 , elements .toString ());
62
82
return statement .execute ();
63
83
}
64
84
65
85
@ Override
66
86
public boolean createAuditTableIFNotExist () throws SQLException {
67
87
StringBuffer query = new StringBuffer ("create table if not exists audit (" );
68
- query .append ("auditId INT NOT NULL," );
69
- query .append ("uuid char(60) NOT NULL," );
88
+ query .append ("uuid varchar(200) NOT NULL," );
70
89
query .append ("timestamp varchar(100) NOT NULL," );
71
90
query .append ("actor varchar(200) NOT NULL," );
72
91
query .append ("origin varchar(200)," );
@@ -77,5 +96,16 @@ public boolean createAuditTableIFNotExist() throws SQLException {
77
96
getConnection ().prepareStatement (query .toString ()).execute ();
78
97
return true ;
79
98
}
80
-
99
+
100
+ public static AuditLogDao getInstance () {
101
+ if (!initialized ) {
102
+ synchronized (AuditLogDaoImpl .class ) {
103
+ if (!initialized ) {
104
+ auditDao = new AuditLogDaoImpl ();
105
+ initialized = true ;
106
+ }
107
+ }
108
+ }
109
+ return auditDao ;
110
+ }
81
111
}
0 commit comments