working on message settings:

- created form
- implemented storing of settings
- implemented loading of settings

next: pre-filling from with settings loaded from DB
This commit is contained in:
2026-01-17 14:46:11 +01:00
parent 32063f046c
commit ea30907bfe
13 changed files with 306 additions and 51 deletions
@@ -8,19 +8,19 @@ import static de.srsoftware.umbrella.core.constants.Constants.TABLE_SETTINGS;
import static de.srsoftware.umbrella.core.constants.Field.*;
import static de.srsoftware.umbrella.core.exceptions.UmbrellaException.*;
import static de.srsoftware.umbrella.core.model.Translatable.t;
import static de.srsoftware.umbrella.message.model.Settings.Times;
import static java.lang.System.Logger.Level.WARNING;
import static de.srsoftware.umbrella.message.model.Schedule.schedule;
import static java.text.MessageFormat.format;
import de.srsoftware.umbrella.core.constants.Text;
import de.srsoftware.umbrella.core.exceptions.UmbrellaException;
import de.srsoftware.umbrella.core.model.UmbrellaUser;
import de.srsoftware.umbrella.message.model.Instantly;
import de.srsoftware.umbrella.message.model.Settings;
import de.srsoftware.umbrella.message.model.Silent;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashSet;
import java.util.stream.Collectors;
import java.util.Arrays;
public class SqliteMessageDb implements MessageDb{
private static final System.Logger LOG = System.getLogger(SqliteMessageDb.class.getSimpleName());
@@ -100,21 +100,19 @@ CREATE TABLE IF NOT EXISTS {0} ( {1} VARCHAR(255) PRIMARY KEY, {2} VARCHAR(255)
private Settings toSettings(ResultSet rs) throws SQLException {
var submission = rs.getString(VALUE);
var parts = submission.split(",");
var times = new HashSet<Times>();
for (var part : parts) try {
times.add(Times.valueOf(part));
} catch (IllegalArgumentException e) {
LOG.log(WARNING,"encountered {0}, which is not a valid Times enumeration value!",part);
if (submission.trim().equalsIgnoreCase(INSTANTLY)) return new Instantly();
try {
var times = Arrays.stream(submission.split(",")).map(Integer::parseInt).toList();
return schedule(times);
} catch (NumberFormatException nfe){
return new Silent();
}
return new Settings(times);
}
@Override
public Settings update(UmbrellaUser user, Settings settings) throws UmbrellaException {
var times = settings.times().stream().map(Times::toString).collect(Collectors.joining(","));
try {
replaceInto(TABLE_SUBMISSIONS, USER_ID, VALUE).values(user.id(),times).execute(db).close();
replaceInto(TABLE_SUBMISSIONS, USER_ID, VALUE).values(user.id(),settings.toString()).execute(db).close();
return settings;
} catch (SQLException e) {
throw failedToStoreObject("submission data").causedBy(e);