kopia lustrzana https://github.com/onthegomap/planetiler
47 wiersze
1.6 KiB
Java
47 wiersze
1.6 KiB
Java
package com.onthegomap.planetiler.stream;
|
|
|
|
import com.fasterxml.jackson.annotation.JsonSubTypes;
|
|
import com.fasterxml.jackson.annotation.JsonTypeInfo;
|
|
import com.onthegomap.planetiler.archive.TileArchiveMetadata;
|
|
import java.util.Arrays;
|
|
import java.util.Objects;
|
|
|
|
@JsonTypeInfo(
|
|
use = JsonTypeInfo.Id.NAME,
|
|
include = JsonTypeInfo.As.PROPERTY,
|
|
property = "type")
|
|
@JsonSubTypes({
|
|
@JsonSubTypes.Type(value = JsonStreamArchiveEntry.TileEntry.class, name = "tile"),
|
|
@JsonSubTypes.Type(value = JsonStreamArchiveEntry.InitializationEntry.class, name = "initialization"),
|
|
@JsonSubTypes.Type(value = JsonStreamArchiveEntry.FinishEntry.class, name = "finish")
|
|
})
|
|
sealed interface JsonStreamArchiveEntry {
|
|
record TileEntry(int x, int y, int z, byte[] encodedData) implements JsonStreamArchiveEntry {
|
|
|
|
@Override
|
|
public int hashCode() {
|
|
final int prime = 31;
|
|
int result = 1;
|
|
result = prime * result + Arrays.hashCode(encodedData);
|
|
result = prime * result + Objects.hash(x, y, z);
|
|
return result;
|
|
}
|
|
|
|
@Override
|
|
public boolean equals(Object obj) {
|
|
return this == obj || (obj instanceof JsonStreamArchiveEntry.TileEntry tileEntry &&
|
|
Arrays.equals(encodedData, tileEntry.encodedData) && x == tileEntry.x && y == tileEntry.y && z == tileEntry.z);
|
|
}
|
|
|
|
@Override
|
|
public String toString() {
|
|
return "TileEntry [x=" + x + ", y=" + y + ", z=" + z + ", encodedData=" + Arrays.toString(encodedData) + "]";
|
|
}
|
|
}
|
|
|
|
record InitializationEntry() implements JsonStreamArchiveEntry {}
|
|
|
|
|
|
record FinishEntry(TileArchiveMetadata metadata) implements JsonStreamArchiveEntry {}
|
|
}
|