From b16f2f9cd5902fe88f3d0e8473cbe994eeaf96fb Mon Sep 17 00:00:00 2001 From: Stephan Richter Date: Tue, 31 Dec 2024 16:09:34 +0100 Subject: [PATCH] made Appointment.location() return an optional Signed-off-by: Stephan Richter --- build.gradle.kts | 1 - .../src/main/java/de/srsoftware/cal/api/Appointment.java | 2 +- .../src/main/java/de/srsoftware/cal/BaseAppointment.java | 8 ++++---- .../src/main/java/de/srsoftware/cal/db/MariaDB.java | 4 ++-- 4 files changed, 7 insertions(+), 8 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 2ff669d..24c2f9c 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -12,7 +12,6 @@ spotless { removeUnusedImports() importOrder() licenseHeader("/* © SRSoftware 2024 */") - toggleOffOn() } } diff --git a/de.srsoftware.cal.api/src/main/java/de/srsoftware/cal/api/Appointment.java b/de.srsoftware.cal.api/src/main/java/de/srsoftware/cal/api/Appointment.java index 37be552..17aca8b 100644 --- a/de.srsoftware.cal.api/src/main/java/de/srsoftware/cal/api/Appointment.java +++ b/de.srsoftware.cal.api/src/main/java/de/srsoftware/cal/api/Appointment.java @@ -65,7 +65,7 @@ public interface Appointment { * descriptive text of the location, e.g. address * @return location text */ - String location(); + Optional location(); /** * The date and time, when the appointment starts diff --git a/de.srsoftware.cal.base/src/main/java/de/srsoftware/cal/BaseAppointment.java b/de.srsoftware.cal.base/src/main/java/de/srsoftware/cal/BaseAppointment.java index 62cb6de..12a068e 100644 --- a/de.srsoftware.cal.base/src/main/java/de/srsoftware/cal/BaseAppointment.java +++ b/de.srsoftware.cal.base/src/main/java/de/srsoftware/cal/BaseAppointment.java @@ -134,7 +134,7 @@ public class BaseAppointment implements Appointment { sb.append(contentLine(SUMMARY,title())); sb.append(contentLine(DESCRIPTION,description())); coords().map(Coords::icalFormat).map(geo -> contentLine(GEO,geo)).ifPresent(sb::append); - if (!location().isBlank()) sb.append(contentLine(LOCATION,location())); + location().map(loc -> contentLine(LOCATION,loc)).ifPresent(sb::append); for (var attachment : attachments()) sb.append(contentLine("ATTACH;FMTYPE=%s".formatted(attachment.mime()),attachment.url().toString())); for (var link : links) sb.append(contentLine("ATTACH;TITLE="+paramText(link.desciption()),link.url().toString())); sb.append(contentLine("CLASS","PUBLIC")); @@ -156,7 +156,7 @@ public class BaseAppointment implements Appointment { json.put("description", description()); json.put("end", end().map(end -> end.format(DATE_TIME)).orElse(null)); json.put("id", id()); - json.put("location", location()); + json.put("location", location().orElse(null)); json.put("start", start().format(DATE_TIME)); json.put("tags", tags()); json.put("title", title()); @@ -166,8 +166,8 @@ public class BaseAppointment implements Appointment { } @Override - public String location() { - return location; + public Optional location() { + return nullable(location); } @Override diff --git a/de.srsoftware.cal.db/src/main/java/de/srsoftware/cal/db/MariaDB.java b/de.srsoftware.cal.db/src/main/java/de/srsoftware/cal/db/MariaDB.java index 4df565c..5dab6f0 100644 --- a/de.srsoftware.cal.db/src/main/java/de/srsoftware/cal/db/MariaDB.java +++ b/de.srsoftware.cal.db/src/main/java/de/srsoftware/cal/db/MariaDB.java @@ -62,7 +62,7 @@ public class MariaDB implements Database { public Result add(Appointment appointment) { try { ResultSet keys = insertInto(APPOINTMENTS, TITLE, DESCRIPTION, START, END, LOCATION, COORDS) // - .values(appointment.title(), appointment.description(), appointment.start(), appointment.end().orElse(null), appointment.location(), appointment.coords().orElse(null)) + .values(appointment.title(), appointment.description(), appointment.start(), appointment.end().orElse(null), appointment.location().orElse(null), appointment.coords().orElse(null)) .execute(connection) .getGeneratedKeys(); Appointment saved = null; @@ -316,7 +316,7 @@ public class MariaDB implements Database { .set(TITLE, DESCRIPTION, START, END, LOCATION, COORDS) .where(AID, equal(event.id())) .prepare(connection) - .apply(event.title(), event.description(), Timestamp.valueOf(event.start()), end, event.location(), event.coords().orElse(null)); + .apply(event.title(), event.description(), Timestamp.valueOf(event.start()), end, event.location().orElse(null), event.coords().orElse(null)); // TODO: update links, attachments, tags