improved handling of null values when mapping entities to json

This commit is contained in:
2025-07-25 23:02:54 +02:00
parent 01a7389665
commit 3d81ddd3c5
15 changed files with 81 additions and 124 deletions

View File

@@ -48,7 +48,15 @@ public class Util {
return result;
}
public static HashMap<String, Object> mapMarkdown(String source){
var map = new HashMap<String,Object>();
map.put(SOURCE,source);
map.put(RENDERED,markdown(source));
return map;
}
public static String markdown(String source){
if (source == null) return source;
try {
if (plantumlJar.exists()) {
var matcher = UML_PATTERN.matcher(source);

View File

@@ -3,6 +3,7 @@ package de.srsoftware.umbrella.core.model;
import static de.srsoftware.tools.Optionals.nullable;
import static de.srsoftware.umbrella.core.Constants.*;
import static de.srsoftware.umbrella.core.Util.mapMarkdown;
import static de.srsoftware.umbrella.core.Util.markdown;
import de.srsoftware.tools.Mappable;
@@ -95,7 +96,7 @@ public class Project implements Mappable {
}
map.put(ID,id);
map.put(NAME,name);
map.put(DESCRIPTION,Map.of(SOURCE,description,RENDERED,markdown(description)));
map.put(DESCRIPTION,mapMarkdown(description));
map.put(STATUS,Map.of(STATUS_CODE,status.code(), NAME,status.name()));
map.put(COMPANY_ID,companyId);
map.put(SHOW_CLOSED,showClosed);

View File

@@ -3,8 +3,7 @@ package de.srsoftware.umbrella.core.model;
import static de.srsoftware.tools.Optionals.nullIfEmpty;
import static de.srsoftware.umbrella.core.Constants.*;
import static de.srsoftware.umbrella.core.Util.LOG;
import static de.srsoftware.umbrella.core.Util.markdown;
import static de.srsoftware.umbrella.core.Util.*;
import static de.srsoftware.umbrella.core.exceptions.UmbrellaException.invalidFieldException;
import static de.srsoftware.umbrella.core.exceptions.UmbrellaException.missingFieldException;
import static java.lang.System.Logger.Level.WARNING;
@@ -182,7 +181,7 @@ public class Task implements Mappable {
map.put(PROJECT_ID, projectId);
map.put(PARENT_TASK_ID, parentTaskId);
map.put(NAME, name);
map.put(DESCRIPTION, Map.of(SOURCE,description,RENDERED,markdown(description)));
map.put(DESCRIPTION, mapMarkdown(description));
map.put(STATUS, Map.of(NAME,status.name(),STATUS_CODE,status.code()));
map.put(ESTIMATED_TIME, estimatedTime);
map.put(START_DATE,start);

View File

@@ -2,8 +2,7 @@
package de.srsoftware.umbrella.core.model;
import static de.srsoftware.umbrella.core.Constants.*;
import static de.srsoftware.umbrella.core.Util.dateTimeOf;
import static de.srsoftware.umbrella.core.Util.markdown;
import static de.srsoftware.umbrella.core.Util.*;
import de.srsoftware.tools.Mappable;
import java.sql.ResultSet;
@@ -103,7 +102,7 @@ public class Time implements Mappable{
map.put(ID,id);
map.put(USER_ID,userId);
map.put(SUBJECT,subject);
map.put(DESCRIPTION,Map.of(SOURCE,description,RENDERED,markdown(description)));
map.put(DESCRIPTION,mapMarkdown(description));
map.put(START_TIME,start.toString().replace("T"," "));
map.put(END_TIME,end.toString().replace("T"," "));
map.put(STATE,Map.of(STATUS_CODE,state.code,NAME,state.name()));