Mercurial > hg > monetdb-java
view src/main/java/nl/cwi/monetdb/embedded/mapping/MonetDBToJavaMapping.java @ 57:7c3a84de7605 embedded
More cleanup, finished null values mappings.
author | Pedro Ferreira <pedro.ferreira@monetdbsolutions.com> |
---|---|
date | Tue, 22 Nov 2016 12:13:34 +0100 (2016-11-22) |
parents | 6617eaf808cb |
children | 86967be24645 |
line wrap: on
line source
/* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * * Copyright 2016 MonetDB B.V. */ package nl.cwi.monetdb.embedded.mapping; import java.math.BigDecimal; import java.math.BigInteger; import java.net.Inet4Address; import java.net.URL; import java.sql.Date; import java.sql.Time; import java.sql.Timestamp; import java.util.EnumMap; import java.util.HashMap; import java.util.UUID; /** * A Java enum representing the mappings between MonetDB data types and Java classes. * * @author <a href="mailto:pedro.ferreira@monetdbsolutions.com">Pedro Ferreira</a> */ public enum MonetDBToJavaMapping { /* PLEASE Don't change these enum values order!! */ Boolean(Boolean.class), Char(String.class), Varchar(String.class), Clob(String.class), Oid(Long.class), Tinyint(Byte.class), Smallint(Short.class), Int(Integer.class), Wrd(Long.class), Bigint(Long.class), Hugeint(BigInteger.class), Decimal(BigDecimal.class), Real(Float.class), Double(Double.class), MonthInterval(Integer.class), SecondInterval(Long.class), Time(Time.class), TimeTz(Time.class), Date(Date.class), Timestamp(Timestamp.class), TimestampTz(Timestamp.class), Blob(MonetDBEmbeddedBlob.class), Geometry(MonetDBEmbeddedBlob.class), GeometryA(MonetDBEmbeddedBlob.class), URL(URL.class), Inet(Inet4Address.class), JSON(MonetDBEmbeddedBlob.class), UUID(UUID.class); /** * The mapping between MonetDB data types and enum values. */ private static final HashMap<String, MonetDBToJavaMapping> MonetDBMappings; /** * The mapping between MonetDB data types and enum values. */ private static final EnumMap<MonetDBToJavaMapping, Class<?>> AppendMappings; static { MonetDBMappings = new HashMap<>(); MonetDBMappings.put("boolean", Boolean); MonetDBMappings.put("char", Char); MonetDBMappings.put("varchar", Varchar); MonetDBMappings.put("clob", Clob); MonetDBMappings.put("oid", Oid); MonetDBMappings.put("tinyint", Tinyint); MonetDBMappings.put("smallint", Smallint); MonetDBMappings.put("int", Int); MonetDBMappings.put("wrd", Wrd); MonetDBMappings.put("bigint", Bigint); MonetDBMappings.put("hugeint", Hugeint); MonetDBMappings.put("decimal", Decimal); MonetDBMappings.put("real", Real); MonetDBMappings.put("double", Double); MonetDBMappings.put("month_interval", MonthInterval); MonetDBMappings.put("sec_interval", SecondInterval); MonetDBMappings.put("time", Time); MonetDBMappings.put("timetz", TimeTz); MonetDBMappings.put("date", Date); MonetDBMappings.put("timestamp", Timestamp); MonetDBMappings.put("timestamptz", TimestampTz); MonetDBMappings.put("blob", Blob); MonetDBMappings.put("geometry", Geometry); MonetDBMappings.put("geometrya", GeometryA); MonetDBMappings.put("url", URL); MonetDBMappings.put("inet", Inet); MonetDBMappings.put("json", JSON); MonetDBMappings.put("uuid", UUID); AppendMappings = new EnumMap<>(MonetDBToJavaMapping.class); AppendMappings.put(Boolean, boolean[].class); AppendMappings.put(Char, String[].class); AppendMappings.put(Varchar, String[].class); AppendMappings.put(Clob, String[].class); AppendMappings.put(Oid, long[].class); AppendMappings.put(Tinyint, byte[].class); AppendMappings.put(Smallint, short[].class); AppendMappings.put(Int, int[].class); AppendMappings.put(Wrd, long[].class); AppendMappings.put(Bigint, long[].class); AppendMappings.put(Hugeint, BigInteger[].class); AppendMappings.put(Decimal, BigDecimal[].class); AppendMappings.put(Real, float[].class); AppendMappings.put(Double, double[].class); AppendMappings.put(MonthInterval, int[].class); AppendMappings.put(SecondInterval, long[].class); AppendMappings.put(Time, Time[].class); AppendMappings.put(TimeTz, Time[].class); AppendMappings.put(Date, Date[].class); AppendMappings.put(Timestamp, Timestamp[].class); AppendMappings.put(TimestampTz, Timestamp[].class); AppendMappings.put(Blob, MonetDBEmbeddedBlob[].class); AppendMappings.put(Geometry, MonetDBEmbeddedBlob[].class); AppendMappings.put(GeometryA, MonetDBEmbeddedBlob[].class); AppendMappings.put(URL, URL[].class); AppendMappings.put(Inet, Inet4Address[].class); AppendMappings.put(JSON, MonetDBEmbeddedBlob[].class); AppendMappings.put(UUID, UUID[].class); } /** * Get the corresponding MonetDBToJavaMapping from MonetDB internal data type. * * @param sqlName The MonetDB's data type SQL name * @return A MonetDBToJavaMapping enum value, or null if it has no mapping */ public static MonetDBToJavaMapping GetJavaMappingFromMonetDBString(String sqlName) { return MonetDBMappings.get(sqlName); } /** * Get the corresponding MonetDBToJavaMapping from MonetDB internal data type. * * @param value A MonetDBToJavaMapping entry * @return The corresponding Java array class or null if no mapping */ public static Class<?> GetArrayMappingFromEnumValue(MonetDBToJavaMapping value) { return AppendMappings.get(value); } /** * The corresponding Java class for the enum value. */ private final Class<?> javaClass; MonetDBToJavaMapping(Class<?> javaClass) { this.javaClass = javaClass; } /** * Gets the corresponding Java class for the enum value. * * @return The corresponding Java class for the enum value */ @SuppressWarnings("unchecked") public <T> Class<T> getJavaClass() { return (Class<T>) this.javaClass; } }