Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,9 @@ public static Result generate(
String selectedConfig = parameters.get("selectedConfig");
String newId = parameters.get("id");
Map<String, Boolean> typeObject = parseTypeObject(parameters.get("typeObject"));
boolean createProvider = typeObject.getOrDefault("provider", true);
boolean createService = typeObject.getOrDefault("service", true);
boolean createTileProvider = typeObject.getOrDefault("tileProvider", true);

if ("fromScratch".equalsIgnoreCase(createOption)) {
return generateBasicEntity(parameters, ldproxyCfg, typeObject);
Expand Down Expand Up @@ -287,7 +290,7 @@ public static Result generate(

List<String> newFiles = new ArrayList<>();

if (typeObject.getOrDefault("provider", true)) {
if (createProvider) {
FeatureProviderDataV2 featureProvider = parseFeatureProvider(parameters, ldproxyCfg, types);

AutoEntityFactory autoFactory =
Expand All @@ -305,7 +308,7 @@ public static Result generate(
.toString());
}

if (typeObject.getOrDefault("service", true)) {
if (createService) {
OgcApiDataV2 ogcApi = parseOgcApi(parameters, ldproxyCfg);

AutoEntityFactory autoFactory2 =
Expand All @@ -318,6 +321,9 @@ public static Result generate(
});

ldproxyCfg.writeEntity(entityData2);
if (createTileProvider) {
ensureTilesApiConfig(ldproxyCfg, entityData2);
}

newFiles.add(
ldproxyCfg
Expand All @@ -326,7 +332,7 @@ public static Result generate(
.toString());
}

if (typeObject.getOrDefault("tileProvider", true)) {
if (createTileProvider) {
TileProviderFeaturesData tileProvider = parseTileProvider(parameters, ldproxyCfg);

AutoEntityFactory autoFactory3 =
Expand Down Expand Up @@ -551,7 +557,11 @@ private static Result generateBasicEntity(
List<String> newFiles = new ArrayList<>();

try {
if (typeObject.getOrDefault("provider", true)) {
boolean createProvider = typeObject.getOrDefault("provider", true);
boolean createService = typeObject.getOrDefault("service", true);
boolean createTileProvider = typeObject.getOrDefault("tileProvider", true);

if (createProvider) {
parameters.put("featureProviderType", "PGIS");

FeatureProviderDataV2 featureProvider =
Expand All @@ -566,7 +576,7 @@ private static Result generateBasicEntity(
.toString());
}

if (typeObject.getOrDefault("service", true)) {
if (createService) {
OgcApiDataV2 ogcApi = parseOgcApi(parameters, ldproxyCfg);

AutoEntityFactory autoFactory =
Expand All @@ -576,6 +586,9 @@ private static Result generateBasicEntity(
});

ldproxyCfg.writeEntity(entityData);
if (createTileProvider) {
ensureTilesApiConfig(ldproxyCfg, entityData);
}

newFiles.add(
ldproxyCfg
Expand All @@ -584,7 +597,7 @@ private static Result generateBasicEntity(
.toString());
}

if (typeObject.getOrDefault("tileProvider", true)) {
if (createTileProvider) {
TileProviderFeaturesData tileProvider = parseTileProvider(parameters, ldproxyCfg);

ldproxyCfg.writeEntity(tileProvider);
Expand All @@ -607,4 +620,40 @@ private static Result generateBasicEntity(

return result;
}

private static void ensureTilesApiConfig(LdproxyCfg ldproxyCfg, OgcApiDataV2 service) throws IOException {
File serviceFile = ldproxyCfg.getEntityPath(service).toFile();

Map<String, Object> yamlContent = ldproxyCfg.getObjectMapper().readValue(serviceFile, Map.class);

List<Map<String, Object>> apiEntries = new ArrayList<>();
Object apiValue = yamlContent.get("api");
if (apiValue instanceof List<?> existingList) {
for (Object entry : existingList) {
if (entry instanceof Map<?, ?> existingMap) {
apiEntries.add(new LinkedHashMap<>((Map<String, Object>) existingMap));
}
}
}

Map<String, Object> tilesEntry = new LinkedHashMap<>();
tilesEntry.put("buildingBlock", "TILES");
tilesEntry.put("enabled", true);

boolean replaced = false;
for (int i = 0; i < apiEntries.size(); i++) {
Object buildingBlock = apiEntries.get(i).get("buildingBlock");
if ("TILES".equals(buildingBlock)) {
apiEntries.set(i, tilesEntry);
replaced = true;
break;
}
}
if (!replaced) {
apiEntries.add(tilesEntry);
}

yamlContent.put("api", apiEntries);
ldproxyCfg.getObjectMapper().writeValue(serviceFile, yamlContent);
}
}
Loading