001package io.ebeaninternal.server.deploy.generatedproperty; 002 003import io.ebean.bean.EntityBean; 004import io.ebeaninternal.server.deploy.BeanProperty; 005 006/** 007 * Support java.time types as GeneratedProperty. 008 */ 009public class GeneratedInsertJavaTime { 010 011 public static abstract class Base implements GeneratedProperty, GeneratedWhenCreated { 012 013 @Override 014 public boolean includeInUpdate() { 015 return false; 016 } 017 018 @Override 019 public boolean includeInAllUpdates() { 020 return false; 021 } 022 023 @Override 024 public boolean includeInInsert() { 025 return true; 026 } 027 028 @Override 029 public boolean isDDLNotNullable() { 030 return true; 031 } 032 033 @Override 034 public Object getUpdateValue(BeanProperty prop, EntityBean bean, long now) { 035 return prop.getValue(bean); 036 } 037 } 038 039 /** 040 * Instant support. 041 */ 042 public static class InstantDT extends Base { 043 044 @Override 045 public Object getInsertValue(BeanProperty prop, EntityBean bean, long now) { 046 return JavaTimeUtils.toInstant(now); 047 } 048 } 049 050 /** 051 * LocalDateTime support. 052 */ 053 public static class LocalDT extends Base { 054 055 @Override 056 public Object getInsertValue(BeanProperty prop, EntityBean bean, long now) { 057 return JavaTimeUtils.toLocalDateTime(now); 058 } 059 } 060 061 /** 062 * OffsetDateTime support. 063 */ 064 public static class OffsetDT extends Base { 065 066 @Override 067 public Object getInsertValue(BeanProperty prop, EntityBean bean, long now) { 068 return JavaTimeUtils.toOffsetDateTime(now); 069 } 070 071 } 072 073 /** 074 * ZonedDateTime support. 075 */ 076 public static class ZonedDT extends Base { 077 078 @Override 079 public Object getInsertValue(BeanProperty prop, EntityBean bean, long now) { 080 return JavaTimeUtils.toZonedDateTime(now); 081 } 082 083 } 084 085}