planetiler/planetiler-basemap/src/main/java/com/onthegomap/planetiler/basemap/util/Utils.java

79 wiersze
2.7 KiB
Java
Czysty Zwykły widok Historia

package com.onthegomap.planetiler.basemap.util;
2021-06-14 11:04:03 +00:00
import com.onthegomap.planetiler.util.Parse;
2021-06-16 10:01:39 +00:00
import java.util.Map;
/**
* Common utilities for working with data and the OpenMapTiles schema in {@code layers} implementations.
*/
2021-06-14 11:04:03 +00:00
public class Utils {
public static <T> T coalesce(T a, T b) {
return a != null ? a : b;
}
public static <T> T coalesce(T a, T b, T c) {
return a != null ? a : b != null ? b : c;
}
public static <T> T coalesce(T a, T b, T c, T d) {
2021-06-16 10:01:39 +00:00
return a != null ? a : b != null ? b : c != null ? c : d;
}
2021-06-25 11:06:55 +00:00
public static <T> T coalesce(T a, T b, T c, T d, T e) {
return a != null ? a : b != null ? b : c != null ? c : d != null ? d : e;
}
public static <T> T coalesce(T a, T b, T c, T d, T e, T f) {
return a != null ? a : b != null ? b : c != null ? c : d != null ? d : e != null ? e : f;
}
/** Boxes {@code a} into an {@link Integer}, or {@code null} if {@code a} is {@code nullValue}. */
public static Long nullIfLong(long a, long nullValue) {
return a == nullValue ? null : a;
}
/** Boxes {@code a} into a {@link Long}, or {@code null} if {@code a} is {@code nullValue}. */
public static Integer nullIfInt(int a, int nullValue) {
return a == nullValue ? null : a;
2021-06-14 11:04:03 +00:00
}
/** Returns {@code a}, or null if {@code a} is "". */
2021-06-17 01:05:42 +00:00
public static String nullIfEmpty(String a) {
return (a == null || a.isEmpty()) ? null : a;
}
/** Returns true if {@code a} is null, or its {@link Object#toString()} value is "". */
2021-07-14 09:31:54 +00:00
public static boolean nullOrEmpty(Object a) {
return a == null || a.toString().isEmpty();
2021-07-13 10:09:36 +00:00
}
/** Returns a map with {@code ele} (meters) and {ele_ft} attributes from an elevation in meters. */
public static Map<String, Object> elevationTags(double meters) {
2021-06-16 10:01:39 +00:00
return Map.of(
"ele", (int) Math.round(meters),
2021-06-16 10:01:39 +00:00
"ele_ft", (int) Math.round(meters * 3.2808399)
);
2021-06-14 11:04:03 +00:00
}
2021-06-17 12:11:24 +00:00
/**
* Returns a map with {@code ele} (meters) and {ele_ft} attributes from an elevation string in meters, if {@code
* meters} can be parsed as a valid number.
*/
2021-06-17 12:11:24 +00:00
public static Map<String, Object> elevationTags(String meters) {
Double ele = Parse.meters(meters);
2021-06-17 12:11:24 +00:00
return ele == null ? Map.of() : elevationTags(ele);
}
2021-06-19 10:43:42 +00:00
/** Returns "bridge" or "tunnel" string used for "brunnel" attribute by OpenMapTiles schema. */
2021-06-19 10:43:42 +00:00
public static String brunnel(boolean isBridge, boolean isTunnel) {
2021-07-13 10:09:36 +00:00
return brunnel(isBridge, isTunnel, false);
}
/** Returns "bridge" or "tunnel" or "ford" string used for "brunnel" attribute by OpenMapTiles schema. */
2021-07-13 10:09:36 +00:00
public static String brunnel(boolean isBridge, boolean isTunnel, boolean isFord) {
return isBridge ? "bridge" : isTunnel ? "tunnel" : isFord ? "ford" : null;
2021-06-19 10:43:42 +00:00
}
2021-06-14 11:04:03 +00:00
}