implemented loading and display of journal.
Nächste Schritte: der Hinweis "you can view/edit xxx at https://…" sollte zwar in der Mail auftauchen, nicht aber im Journal – hier muss also nochmal nachgearbeitet werden Signed-off-by: Stephan Richter <s.richter@srsoftware.de>
This commit is contained in:
@@ -1,15 +1,12 @@
|
||||
/* © SRSoftware 2025 */
|
||||
package de.srsoftware.umbrella.journal;
|
||||
|
||||
import de.srsoftware.umbrella.core.model.UmbrellaUser;
|
||||
import de.srsoftware.umbrella.messagebus.events.Event;
|
||||
import de.srsoftware.umbrella.messagebus.events.JournalEntry;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
public interface JournalDb {
|
||||
void logEvent(Event<?> event);
|
||||
|
||||
List<JournalEntry> list(String module, long entityId, HashMap<Long, UmbrellaUser> userLoader);
|
||||
List<JournalEntry> list(String module, long entityId);
|
||||
}
|
||||
|
||||
@@ -3,8 +3,6 @@ package de.srsoftware.umbrella.journal;
|
||||
|
||||
import static de.srsoftware.umbrella.core.ConnectionProvider.connect;
|
||||
import static de.srsoftware.umbrella.core.ModuleRegistry.userService;
|
||||
import static de.srsoftware.umbrella.core.constants.Path.PARENT_CANDIDATES;
|
||||
import static de.srsoftware.umbrella.core.constants.Path.TAGGED;
|
||||
import static de.srsoftware.umbrella.core.exceptions.UmbrellaException.invalidField;
|
||||
import static de.srsoftware.umbrella.core.exceptions.UmbrellaException.missingField;
|
||||
import static de.srsoftware.umbrella.journal.Constants.CONFIG_DATABASE;
|
||||
@@ -21,12 +19,12 @@ import de.srsoftware.umbrella.core.constants.Field;
|
||||
import de.srsoftware.umbrella.core.constants.Text;
|
||||
import de.srsoftware.umbrella.core.exceptions.UmbrellaException;
|
||||
import de.srsoftware.umbrella.core.model.Token;
|
||||
import de.srsoftware.umbrella.core.model.UmbrellaUser;
|
||||
import de.srsoftware.umbrella.messagebus.EventListener;
|
||||
import de.srsoftware.umbrella.messagebus.events.Event;
|
||||
|
||||
import de.srsoftware.umbrella.messagebus.events.JournalEntry;
|
||||
import java.io.IOException;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
|
||||
|
||||
@@ -55,8 +53,14 @@ public class JournalModule extends BaseHandler implements EventListener {
|
||||
if (head == null) throw missingField(Field.ENTITY_ID);
|
||||
try {
|
||||
var entityId = Long.parseLong(head);
|
||||
var entries = journalDb.list(module, entityId, userService().loader());
|
||||
return sendContent(ex,entries); // TODO: map entries
|
||||
var entries = journalDb.list(module, entityId);
|
||||
var loader = userService().loader();
|
||||
var userMap = new HashMap<Long,Object>();
|
||||
for (var entry : entries) userMap.put(entry.userId(),loader.get(entry.userId()).toMap());
|
||||
return sendContent(ex,Map.of(
|
||||
Field.USER_LIST,userMap,
|
||||
Field.JOURNAL,entries.stream().map(JournalEntry::toMap).toList()
|
||||
));
|
||||
} catch (NumberFormatException e) {
|
||||
throw invalidField(Field.ENTITY_ID, Text.NUMBER);
|
||||
}
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
/* © SRSoftware 2025 */
|
||||
package de.srsoftware.umbrella.journal;
|
||||
|
||||
import static de.srsoftware.tools.NotImplemented.notImplemented;
|
||||
import static de.srsoftware.tools.jdbc.Condition.equal;
|
||||
import static de.srsoftware.tools.jdbc.Query.SelectQuery.ALL;
|
||||
import static de.srsoftware.tools.jdbc.Query.insertInto;
|
||||
@@ -13,20 +12,14 @@ import static de.srsoftware.umbrella.journal.Constants.TABLE_JOURNAL;
|
||||
import static java.text.MessageFormat.format;
|
||||
|
||||
import de.srsoftware.umbrella.core.BaseDb;
|
||||
import de.srsoftware.umbrella.core.constants.Field;
|
||||
import de.srsoftware.umbrella.core.constants.Module;
|
||||
import de.srsoftware.umbrella.core.constants.Text;
|
||||
import de.srsoftware.umbrella.core.model.UmbrellaUser;
|
||||
import de.srsoftware.umbrella.messagebus.events.Event;
|
||||
import de.srsoftware.umbrella.messagebus.events.JournalEntry;
|
||||
import de.srsoftware.umbrella.messagebus.events.TaskEvent;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.SQLException;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.ZoneOffset;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
public class SqliteDb extends BaseDb implements JournalDb{
|
||||
@@ -65,7 +58,7 @@ public class SqliteDb extends BaseDb implements JournalDb{
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<JournalEntry> list(String module, long entityId, HashMap<Long, UmbrellaUser> userLoader) {
|
||||
public List<JournalEntry> list(String module, long entityId) {
|
||||
try {
|
||||
var rs = select(ALL).from(TABLE_JOURNAL).where(MODULE, equal(module)).where(ENTITY_ID,equal(entityId)).exec(db);
|
||||
var list = new ArrayList<JournalEntry>();
|
||||
|
||||
Reference in New Issue
Block a user