working on journal module

Signed-off-by: Stephan Richter <s.richter@srsoftware.de>
This commit is contained in:
2026-01-09 08:47:20 +01:00
parent 6668e29923
commit 81dc30359d
10 changed files with 75 additions and 12 deletions

View File

@@ -3,4 +3,7 @@ package de.srsoftware.umbrella.journal;
public class Constants {
public static final String CONFIG_DATABASE = "umbrella.modules.journal.database";
public static final String ERROR_WRITE_EVENT = "Failed to write {0} event of {1} to journal!";
public static final String TABLE_JOURNAL = "journal";
}

View File

@@ -1,4 +1,7 @@
package de.srsoftware.umbrella.journal;
import de.srsoftware.umbrella.messagebus.events.Event;
public interface JournalDb {
void logEvent(Event event);
}

View File

@@ -13,17 +13,18 @@ import static de.srsoftware.umbrella.journal.Constants.CONFIG_DATABASE;
public class JournalModule extends BaseHandler implements EventListener {
private final SqliteDb journalDb;
private final JournalDb journalDb;
public JournalModule(Configuration config){
super();
var dbFile = config.get(CONFIG_DATABASE).orElseThrow(() -> missingFieldException(CONFIG_DATABASE))
var dbFile = config.get(CONFIG_DATABASE).orElseThrow(() -> missingFieldException(CONFIG_DATABASE));
journalDb = new SqliteDb(connect(dbFile));
ModuleRegistry.add(this);
}
@Override
public void onEvent(Event event) {
LOG.log(System.Logger.Level.DEBUG,"{0} @ {1} ({2})",event.eventType(),event.module(),event.initiator());
journalDb.logEvent(event);
}
}

View File

@@ -1,8 +1,19 @@
package de.srsoftware.umbrella.journal;
import de.srsoftware.tools.jdbc.Query;
import de.srsoftware.umbrella.core.BaseDb;
import de.srsoftware.umbrella.core.exceptions.UmbrellaException;
import de.srsoftware.umbrella.messagebus.events.Event;
import java.sql.Connection;
import java.sql.SQLException;
import static de.srsoftware.tools.jdbc.Query.insertInto;
import static de.srsoftware.umbrella.core.Constants.*;
import static de.srsoftware.umbrella.core.exceptions.UmbrellaException.databaseException;
import static de.srsoftware.umbrella.journal.Constants.ERROR_WRITE_EVENT;
import static de.srsoftware.umbrella.journal.Constants.TABLE_JOURNAL;
import static java.text.MessageFormat.format;
public class SqliteDb extends BaseDb implements JournalDb{
public SqliteDb(Connection connection) {
@@ -18,4 +29,33 @@ public class SqliteDb extends BaseDb implements JournalDb{
return setCurrentVersion(1);
}
private void createJournalTable() {
var sql = """
CREATE TABLE {0} (
{1} INT PRIMARY KEY,
{2} INT,
{3} VARCHAR(255) NOT NULL,
{4} VARCHAR(16) NUT NULL,
{5} TEXT
);
""";
sql = format(sql,TABLE_JOURNAL,ID,USER_ID,MODULE,ACTION,DESCRIPTION);
try {
db.prepareStatement(sql).execute();
} catch (SQLException e) {
throw databaseException(ERROR_FAILED_CREATE_TABLE,TABLE_JOURNAL);
}
}
@Override
public void logEvent(Event event) {
try {
insertInto(TABLE_JOURNAL,USER_ID,MODULE,ACTION,DESCRIPTION)
.values(event.initiator().id(), event.module(), event.eventType(), event.describe())
.execute(db).close();
} catch (SQLException e) {
throw databaseException(ERROR_WRITE_EVENT,event.eventType(),event.initiator().name());
}
}
}