add extraMetadata to profile interface [#794] (#795)

pull/799/head
Brandon Liu 2024-01-17 19:03:17 +08:00 zatwierdzone przez GitHub
rodzic fdb9ea6e02
commit 67d530a526
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: B5690EEEBB952194
3 zmienionych plików z 38 dodań i 1 usunięć

Wyświetl plik

@ -7,6 +7,7 @@ import com.onthegomap.planetiler.reader.osm.OsmElement;
import com.onthegomap.planetiler.reader.osm.OsmRelationInfo;
import com.onthegomap.planetiler.util.Wikidata;
import java.util.List;
import java.util.Map;
import java.util.function.Consumer;
/**
@ -157,6 +158,8 @@ public interface Profile {
return false;
}
default Map<String,String> extraArchiveMetadata() { return Map.of(); }
/**
* Defines whether {@link Wikidata} should fetch wikidata translations for the input element.
* <p>

Wyświetl plik

@ -17,6 +17,7 @@ import com.onthegomap.planetiler.util.LayerAttrStats;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import org.locationtech.jts.geom.Coordinate;
import org.locationtech.jts.geom.Envelope;
import org.slf4j.Logger;
@ -93,7 +94,7 @@ public record TileArchiveMetadata(
config.minzoom(),
config.maxzoom(),
vectorLayers == null ? null : new TileArchiveMetadataJson(vectorLayers),
mapWithBuildInfo(),
mergeMaps(mapWithBuildInfo(),profile.extraArchiveMetadata()),
config.tileCompression()
);
}
@ -175,6 +176,12 @@ public record TileArchiveMetadata(
* https://github.com/FasterXML/jackson-databind/issues/3439
*/
private static Map<String,String> mergeMaps(Map<String,String> m1, Map<String,String> m2) {
var result = new TreeMap<>(m1);
result.putAll(m2);
return result;
}
@JsonAnySetter
private void putUnknownFieldsToOthers(String name, String value) {
others.put(name, value);

Wyświetl plik

@ -6,11 +6,14 @@ import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.json.JsonMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.onthegomap.planetiler.FeatureCollector;
import com.onthegomap.planetiler.Profile;
import com.onthegomap.planetiler.TestUtils;
import com.onthegomap.planetiler.VectorTile;
import com.onthegomap.planetiler.config.Arguments;
import com.onthegomap.planetiler.config.PlanetilerConfig;
import com.onthegomap.planetiler.geo.GeoUtils;
import com.onthegomap.planetiler.reader.SourceFeature;
import com.onthegomap.planetiler.util.LayerAttrStats;
import java.util.List;
import java.util.Map;
@ -191,6 +194,30 @@ class TileArchiveMetadataTest {
assertEquals(7, Math.ceil(metadata.zoom()));
}
@Test
void testAddExtraMetadata() {
class TestingProfile extends Profile.NullProfile {
@Override
public String name() {
return "My Name";
}
@Override
public Map<String,String> extraArchiveMetadata() {
return Map.of("FooVersion","2.0");
}
}
var metadata = new TileArchiveMetadata(new TestingProfile(), PlanetilerConfig.from(Arguments.of(Map.of(
"bounds", "-73.6632,41.1274,-69.7598,43.0185"
))));
var map = new TreeMap<>(metadata.toMap());
assertEquals("My Name", map.get("name"));
assertEquals("2.0", map.get("FooVersion"));
}
@Test
void testToMap() throws JsonProcessingException {
var bounds = "-73.6632,41.1274,-69.7598,43.0185";