Pārlūkot izejas kodu

add unicode/linux tz mappings

tags/2.0.1
Jonathan Cobb pirms 4 gadiem
vecāks
revīzija
a0909c78b6
3 mainītis faili ar 91 papildinājumiem un 3 dzēšanām
  1. +2
    -0
      src/main/java/org/cobbzilla/util/time/UnicodeTimezone.java
  2. +78
    -0
      src/main/resources/org/cobbzilla/util/time/linux-timezone-exceptions.json
  3. +11
    -3
      src/test/java/org/cobbzilla/util/time/LinuxTimezoneTest.java

+ 2
- 0
src/main/java/org/cobbzilla/util/time/UnicodeTimezone.java Parādīt failu

@@ -4,6 +4,7 @@ import com.fasterxml.jackson.dataformat.xml.XmlMapper;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import org.cobbzilla.util.string.StringUtil;

import java.util.*;
@@ -14,6 +15,7 @@ import static org.cobbzilla.util.daemon.ZillaRuntime.empty;
import static org.cobbzilla.util.io.StreamUtil.loadResourceAsStream;
import static org.cobbzilla.util.string.StringUtil.getPackagePath;

@ToString
public class UnicodeTimezone implements Comparable<UnicodeTimezone> {

// we exclude these oddball timezones, since they have no good mapping to Linux timezones


+ 78
- 0
src/main/resources/org/cobbzilla/util/time/linux-timezone-exceptions.json Parādīt failu

@@ -4,6 +4,84 @@
"MST7MDT": "America/Denver",
"PST8PDT": "America/Los_Angeles",
"GMT": "UTC",
"Africa/Addis_Ababa": "Africa/Juba",
"Africa/Asmera": "Africa/Juba",
"Africa/Bamako": "UTC",
"Africa/Bangui": "Africa/Lagos",
"Africa/Banjul": "UTC",
"Africa/Blantyre": "Africa/Khartoum",
"Africa/Brazzaville": "Africa/Lagos",
"Africa/Bujumbura": "Africa/Khartoum",
"Africa/Conakry": "UTC",
"Africa/Dakar": "UTC",
"Africa/Dar_es_Salaam": "Africa/Juba",
"Africa/Djibouti": "Africa/Juba",
"Africa/Douala": "Africa/Lagos",
"Africa/Freetown": "UTC",
"Africa/Gaborone": "Africa/Khartoum",
"Africa/Harare": "Africa/Khartoum",
"Africa/Kampala": "Africa/Juba",
"Africa/Kigali": "Africa/Khartoum",
"Africa/Kinshasa": "Africa/Lagos",
"Africa/Libreville": "Africa/Lagos",
"Africa/Lome": "UTC",
"Africa/Luanda": "Africa/Lagos",
"Africa/Lubumbashi": "Africa/Khartoum",
"Africa/Lusaka": "Africa/Khartoum",
"Africa/Malabo": "Africa/Lagos",
"Africa/Maseru": "Africa/Johannesburg",
"Africa/Mbabane": "Africa/Johannesburg",
"Africa/Mogadishu": "Africa/Juba",
"Africa/Niamey": "Africa/Lagos",
"Africa/Nouakchott": "UTC",
"Africa/Ouagadougou": "UTC",
"Africa/Porto-Novo": "Africa/Lagos",
"America/Anguilla": "America/Martinique",
"America/Antigua": "America/Martinique",
"America/Aruba": "America/Martinique",
"America/Cayman": "America/New_York",
"America/Dominica": "America/Martinique",
"America/Godthab": "America/Nuuk",
"America/Grenada": "America/Martinique",
"America/Guadeloupe": "America/Martinique",
"America/Kralendijk": "America/Martinique",
"America/Lower_Princes": "America/Martinique",
"America/Marigot": "America/Martinique",
"America/Montserrat": "America/Martinique",
"America/St_Barthelemy": "America/Martinique",
"America/St_Kitts": "America/Martinique",
"America/St_Lucia": "America/Martinique",
"America/St_Thomas": "America/Martinique",
"America/St_Vincent": "America/Martinique",
"America/Tortola": "America/Martinique",
"Antarctica/McMurdo": "Pacific/Auckland",
"Arctic/Longyearbyen": "Europe/Oslo",
"Asia/Aden": "Asia/Riyadh",
"Asia/Bahrain": "Asia/Riyadh",
"Asia/Kuwait": "Asia/Riyadh",
"Asia/Muscat": "Asia/Dubai",
"Asia/Phnom_Penh": "Asia/Bangkok",
"Asia/Vientiane": "Asia/Bangkok",
"Atlantic/St_Helena": "UTC",
"Europe/Bratislava": "Europe/Vienna",
"Europe/Busingen": "Europe/Berlin",
"Europe/Guernsey": "Europe/London",
"Europe/Isle_of_Man": "Europe/London",
"Europe/Jersey": "Europe/London",
"Europe/Ljubljana": "Europe/Berlin",
"Europe/Mariehamn": "Europe/Stockholm",
"Europe/Podgorica": "Europe/Belgrade",
"Europe/San_Marino": "Europe/Rome",
"Europe/Sarajevo": "Europe/Belgrade",
"Europe/Skopje": "Europe/Belgrade",
"Europe/Vaduz": "Europe/Berlin",
"Europe/Vatican": "Europe/Rome",
"Europe/Zagreb": "Europe/Belgrade",
"Indian/Antananarivo": "Africa/Juba",
"Indian/Comoro": "Africa/Juba",
"Indian/Mayotte": "Africa/Juba",
"Pacific/Midway": "Pacific/Niue",
"Pacific/Saipan": "Australia/Brisbane",
"America/Santa_Isabel": "America/Tijuana",
"Pacific/Johnston": "Pacific/Honolulu",
"Etc/Unknown": "UTC",


+ 11
- 3
src/test/java/org/cobbzilla/util/time/LinuxTimezoneTest.java Parādīt failu

@@ -2,21 +2,29 @@ package org.cobbzilla.util.time;

import org.junit.Test;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

import static org.cobbzilla.util.json.JsonUtil.COMPACT_MAPPER;
import static org.cobbzilla.util.json.JsonUtil.json;
import static org.cobbzilla.util.time.UnicodeTimezone.getAllUnicodeTimezones;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;

public class LinuxTimezoneTest {

@Test public void ensureLinuxTimezoneExistsForEveryUnicodeTimezone () throws Exception {
final Collection<UnicodeTimezone> allUnicode = getAllUnicodeTimezones();
final List<UnicodeTimezone> missing = new ArrayList<>();
for (UnicodeTimezone utz : allUnicode) {
if (utz.deprecated()) continue; // skip deprecated time zones, we may not have a mapping and that is OK
final LinuxTimezone linuxForUnicode = LinuxTimezone.fromUnicode(utz);
assertNotNull("no LinuxTimezone found for utz="+json(utz, COMPACT_MAPPER), linuxForUnicode);
try {
final LinuxTimezone linuxForUnicode = LinuxTimezone.fromUnicode(utz);
if (linuxForUnicode == null) missing.add(utz);
} catch (Exception e) {
missing.add(utz);
}
}
assertTrue("no LinuxTimezone found for Unicode zones=" + json(missing, COMPACT_MAPPER), missing.isEmpty());
}
}

Notiek ielāde…
Atcelt
Saglabāt