From 0d9775a779f656ab55a22e5df5f6f83f7069fa95 Mon Sep 17 00:00:00 2001 From: sowgro Date: Fri, 3 Oct 2025 21:40:23 -0400 Subject: tweak pretty print and datetime serialization --- data/personaldb.json | 2 +- pom.xml | 10 ++++++++++ .../java/design/persistence/JSONPersonalDatabase.java | 19 ++++++++++++++++++- 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/data/personaldb.json b/data/personaldb.json index 86259e5..0637a08 100644 --- a/data/personaldb.json +++ b/data/personaldb.json @@ -1 +1 @@ -[{"username":"sowgro","passwordHash":3433489,"fullName":"Tyler Ferrari","courses":[8],"rounds":[]}] \ No newline at end of file +[] \ No newline at end of file diff --git a/pom.xml b/pom.xml index e8a8fed..1486a8b 100644 --- a/pom.xml +++ b/pom.xml @@ -31,6 +31,16 @@ jackson-module-parameter-names 2.20.0 + + com.fasterxml.jackson.datatype + jackson-datatype-jsr310 + 2.20.0 + + + com.fasterxml.jackson.datatype + jackson-datatype-jdk8 + 2.20.0 + diff --git a/src/main/java/design/persistence/JSONPersonalDatabase.java b/src/main/java/design/persistence/JSONPersonalDatabase.java index dd63407..0efa362 100644 --- a/src/main/java/design/persistence/JSONPersonalDatabase.java +++ b/src/main/java/design/persistence/JSONPersonalDatabase.java @@ -5,8 +5,11 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.PropertyAccessor; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.core.util.DefaultIndenter; +import com.fasterxml.jackson.core.util.DefaultPrettyPrinter; import com.fasterxml.jackson.databind.*; import com.fasterxml.jackson.databind.module.SimpleModule; +import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import com.fasterxml.jackson.module.paramnames.ParameterNamesModule; import design.model.Course; import design.model.Golfer; @@ -33,6 +36,7 @@ public class JSONPersonalDatabase implements PersonalDatabase { mapper.registerModule(module); mapper.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY); mapper.registerModule(new ParameterNamesModule(JsonCreator.Mode.PROPERTIES)); + mapper.registerModule(new JavaTimeModule()); try { load(); @@ -51,7 +55,7 @@ public class JSONPersonalDatabase implements PersonalDatabase { private void save() throws IOException { Golfer[] data = cache.values().toArray(Golfer[]::new); - mapper.writerWithDefaultPrettyPrinter().writeValue(file, data); + mapper.writer(new CustomPrettyPrinter()).writeValue(file, data); } @Override @@ -98,4 +102,17 @@ public class JSONPersonalDatabase implements PersonalDatabase { return masterDB.getCourse(id); } } + + private static class CustomPrettyPrinter extends DefaultPrettyPrinter { + public CustomPrettyPrinter() { + super._arrayIndenter = new DefaultIndenter(); + super._objectFieldValueSeparatorWithSpaces = _separators.getObjectFieldValueSeparator() + " "; + super._arrayEmptySeparator = ""; + } + + @Override + public CustomPrettyPrinter createInstance() { + return new CustomPrettyPrinter(); + } + } } -- cgit v1.2.3