001package org.itsallcode.jdbc.dialect; 002 003import java.time.LocalDate; 004import java.time.LocalTime; 005 006import org.itsallcode.jdbc.resultset.generic.ColumnMetaData; 007 008/** 009 * DB dialect for the H2 database. 010 */ 011public class H2Dialect extends AbstractDbDialect { 012 013 /** 014 * Create a new instance. 015 */ 016 public H2Dialect() { 017 super("jdbc:h2:"); 018 } 019 020 @Override 021 public ColumnValueExtractor createExtractor(final ColumnMetaData column) { 022 return switch (column.type().jdbcType()) { 023 case TIMESTAMP -> Extractors.timestampToUTCInstant(); 024 case TIMESTAMP_WITH_TIMEZONE -> Extractors.timestampToInstant(); 025 case CLOB -> Extractors.clobToString(); 026 case BLOB -> Extractors.blobToBytes(); 027 case TIME -> Extractors.forType(LocalTime.class); 028 case DATE -> Extractors.forType(LocalDate.class); 029 default -> Extractors.generic(); 030 }; 031 } 032 033 @Override 034 public <T> ColumnValueSetter<T> createSetter(final Class<T> type) { 035 return Setters.generic(); 036 } 037}