AdminAdditionalPropertyHelper.java
/*
* Copyright (C) 2025 B3Partners B.V.
*
* SPDX-License-Identifier: MIT
*/
package org.tailormap.api.persistence.helper;
import java.util.List;
import java.util.function.Function;
import org.tailormap.api.persistence.json.AdminAdditionalProperty;
public class AdminAdditionalPropertyHelper {
// these are known keys used in this API and other projects, do not reuse them for other purposes:
// used in Drawing
public static final String KEY_DRAWINGS_ADMIN = "drawings-admin";
public static final String KEY_DRAWINGS_READ_ALL = "drawings-read-all";
// used in PlanmonitorWonen:
// -
// https://github.com/B3Partners/tailormap-planmonitor-wonen/blob/fbe5dd34d64ab0a2b61e1f5db558c7c147d81587/projects/planmonitor-wonen/src/lib/services/planmonitor-authentication.service.ts#L26-L27
// -
// https://github.com/B3Partners/planmonitor-wonen-api/blob/d66180f4b015e1e4e7800f8f0fbe1f3450f1ae80/src/main/java/nl/b3p/planmonitorwonen/api/model/auth/PlanmonitorAuthentication.java#L63-L64
public static final String KEY_TYPE_GEBRUIKER = "typeGebruiker";
public static final String KEY_GEMEENTE = "gemeente";
public static void addOrUpdateAdminProperty(
List<AdminAdditionalProperty> list, String key, Object value, boolean isPublic) {
if (key == null) {
return;
}
list.removeIf(p -> p.getKey().equals(key));
list.add(new AdminAdditionalProperty().key(key).value(value).isPublic(isPublic));
}
public static void mapAdminPropertyValue(
List<AdminAdditionalProperty> additionalProperties,
String key,
boolean isPublic,
Function<Object, Object> valueMapper) {
if (key == null) {
return;
}
AdminAdditionalProperty property = additionalProperties.stream()
.filter(p -> p.getKey().equals(key))
.findFirst()
.orElseGet(() -> {
AdminAdditionalProperty newProperty =
new AdminAdditionalProperty().key(key).isPublic(isPublic);
additionalProperties.add(newProperty);
return newProperty;
});
property.setValue(valueMapper.apply(property.getValue()));
}
}