X-Git-Url: https://juplo.de/gitweb/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fde%2Fjuplo%2Fjpa%2Fconverters%2FTimeConversions.java;fp=src%2Fmain%2Fjava%2Fde%2Fjuplo%2Fjpa%2Fconverters%2FTimeConversions.java;h=03dfd8811ba4d68a900ce679112039e025530edd;hb=1870491f00f6d583d6ebe9270bf69e13633c1bf7;hp=0000000000000000000000000000000000000000;hpb=cb60647c2cebf283e75e571c3b33a5bd733c080b;p=jpa-converters diff --git a/src/main/java/de/juplo/jpa/converters/TimeConversions.java b/src/main/java/de/juplo/jpa/converters/TimeConversions.java new file mode 100644 index 0000000..03dfd88 --- /dev/null +++ b/src/main/java/de/juplo/jpa/converters/TimeConversions.java @@ -0,0 +1,114 @@ +package de.juplo.jpa.converters; + +import java.time.Instant; +import java.time.ZoneId; +import java.time.ZoneOffset; + + +/** + * + * @author Kai Moritz + */ +public class TimeConversions +{ + private static ZoneIdStrategy zoneStrategy = + new SystemDefaultZoneIdStrategy(); + private static ZoneOffsetStrategy offsetStrategy = + new SystemDefaultZoneOffsetStrategy(); + + + public static ZoneId getZoneId() + { + return zoneStrategy.getZoneId(); + } + + public static ZoneOffset getZoneOffset() + { + return offsetStrategy.getZoneOffset(); + } + + + public static void setZoneIdStrategy(ZoneIdStrategy strategy) + { + if (strategy == null) + throw new IllegalArgumentException("Strategy must not be null!"); + zoneStrategy = strategy; + } + + public static void setZoneOffsetStrategy(ZoneOffsetStrategy strategy) + { + if (strategy == null) + throw new IllegalArgumentException("Strategy must not be null!"); + offsetStrategy = strategy; + } + + + public interface ZoneIdStrategy + { + public ZoneId getZoneId(); + } + + public interface ZoneOffsetStrategy + { + public ZoneOffset getZoneOffset(); + } + + + public static class SystemDefaultZoneIdStrategy + implements + ZoneIdStrategy + { + @Override + public ZoneId getZoneId() + { + return ZoneId.systemDefault(); + } + } + + public static class SystemDefaultZoneOffsetStrategy + implements + ZoneOffsetStrategy + { + @Override + public ZoneOffset getZoneOffset() + { + return ZoneOffset.systemDefault().getRules().getOffset(Instant.now()); + } + } + + public static class FixedZoneIdStrategy + implements + ZoneIdStrategy + { + private final ZoneId zone; + + public FixedZoneIdStrategy(ZoneId zone) + { + this.zone = zone; + } + + @Override + public ZoneId getZoneId() + { + return zone; + } + } + + public static class FixedZoneOffsetStrategy + implements + ZoneOffsetStrategy + { + private final ZoneOffset offset; + + public FixedZoneOffsetStrategy(ZoneOffset offset) + { + this.offset = offset; + } + + @Override + public ZoneOffset getZoneOffset() + { + return offset; + } + } +}