The method in the following example uses the functionality of the JadeAuditAccess class framework to read a journal.
dumpJournal();
vars
file: File;
lyne: String;
jDir: String;
jaa: JadeAuditAccess;
journalNum: Integer;
offset: Integer;
time: Time;
date: Date;
type: Integer;
objType: Integer;
ts: TimeStamp;
serial: Decimal[20, 0];
tranId: Decimal[20, 0];
strOid: String;
classNum: Integer;
editn: Integer;
userSlot: Integer;
userName: String;
byUserSlot: Integer;
byUserName: String;
begin
jDir:= 'c:\jadexxdev\system\journals\current\';
journalNum:= 535;
create file transient;
file.fileName:= jDir & 'dump_of_journal_' & journalNum.String & '.txt';
file.allowReplace:= true;
file.kind:= File.Kind_ANSI;
file.mode:= File.Mode_Output;
file.open;
if file.isAvailable then
create jaa transient;
jaa.getJournal(jDir, journalNum, offset);
while jaa.getNextRecord(type, objType, offset, ts, serial, tranId,
strOid, classNum, editn) do
lyne:= ts.Time.String & ' ' & serial.String & ' (' &
journalNum.String & ', ' & offset.String & ') ';
if type = jaa.Jaa_Type_BeginTransaction then
lyne:= lyne & 'beginTransaction';
elseif type = jaa.Jaa_Type_CommitTransaction then
lyne:= lyne & 'commitTransaction';
elseif type = jaa.Jaa_Type_AbortTransaction then
lyne:= lyne & 'abortTransaction';
elseif type = jaa.Jaa_Type_UserSignOn then
lyne:= lyne & 'signOn';
jaa.getUserData(userName, userSlot);
lyne:= lyne & ' index=' & userSlot.String &
', name=' & userName;
elseif type = jaa.Jaa_Type_UserSignOff then
lyne:= lyne & 'signOff';
jaa.getUserData(userName, userSlot);
lyne:= lyne & ' index=' & userSlot.String &
', name=' & userName;
elseif type = jaa.Jaa_Type_ChangeUser then
lyne:= lyne & 'changeUser';
jaa.getChangeUserData(userName, userSlot, byUserName,
byUserSlot);
lyne:= lyne & ' index=' & userSlot.String &
', name=' & userName &
', by index=' & byUserSlot.String &
', name=' & byUserName;
elseif type = jaa.Jaa_Type_DatabaseOpen then
lyne:= lyne & 'dbOpen';
elseif type = jaa.Jaa_Type_DatabaseClose then
lyne:= lyne & 'dbClose';
elseif type = jaa.Jaa_Type_NoAuditDiscontinuity then
lyne:= lyne & 'disc-noAudit';
elseif type = jaa.Jaa_Type_ReorgDiscontinuity then
lyne:= lyne & 'disc-reorg';
elseif type = jaa.Jaa_Type_AuditSwitch then
lyne:= lyne & 'disc-switch';
elseif type = jaa.Jaa_Type_Create then
lyne:= lyne & 'create';
if objType = jaa.Jaa_Object_Object then
lyne:= lyne & 'object';
elseif objType = jaa.Jaa_Object_Blob then
lyne:= lyne & 'blob';
elseif objType = jaa.Jaa_Object_Collection then
lyne:= lyne & 'collection';
endif;
elseif type = jaa.Jaa_Type_Delete then
lyne:= lyne & 'delete';
if objType = jaa.Jaa_Object_Object then
lyne:= lyne & ' object';
elseif objType = jaa.Jaa_Object_Blob then
lyne:= lyne & ' blob';
elseif objType = jaa.Jaa_Object_Collection then
lyne:= lyne & ' collection';
endif;
elseif type = jaa.Jaa_Type_Update then
lyne:= lyne & 'update';
if objType = jaa.Jaa_Object_Object then
lyne:= lyne & ' object';
elseif objType = jaa.Jaa_Object_Blob then
lyne:= lyne & ' blob';
elseif objType = jaa.Jaa_Object_Collection then
lyne:= lyne & ' collection';
endif;
endif;
file.writeLine(lyne);
endwhile;
endif;
epilog
delete file;
delete jaa;
end;