001package io.ebean.config.dbplatform;
002
003import java.sql.Types;
004
005/**
006 * The known DB types that are mapped.
007 * <p>
008 * This includes extra types such as UUID, JSON, JSONB and HSTORE.
009 * </p>
010 */
011public enum DbType {
012
013  BOOLEAN(Types.BOOLEAN),
014  BIT(Types.BIT),
015  INTEGER(Types.INTEGER),
016  BIGINT(Types.BIGINT),
017  SMALLINT(Types.SMALLINT),
018  TINYINT(Types.TINYINT),
019  REAL(Types.REAL),
020  //FLOAT(Types.FLOAT),
021  DOUBLE(Types.DOUBLE),
022  DECIMAL(Types.DECIMAL),
023  VARCHAR(Types.VARCHAR),
024  CHAR(Types.CHAR),
025  BLOB(Types.BLOB),
026  CLOB(Types.CLOB),
027  LONGVARBINARY(Types.LONGVARBINARY),
028  LONGVARCHAR(Types.LONGVARCHAR),
029  VARBINARY(Types.VARBINARY),
030  BINARY(Types.BINARY),
031  DATE(Types.DATE),
032  TIME(Types.TIME),
033  TIMESTAMP(Types.TIMESTAMP),
034
035  ARRAY(Types.ARRAY),
036
037  UUID(ExtraDbTypes.UUID),
038  INET(ExtraDbTypes.INET),
039  CIDR(ExtraDbTypes.CIDR),
040
041  POINT(ExtraDbTypes.POINT),
042  POLYGON(ExtraDbTypes.POLYGON),
043  LINESTRING(ExtraDbTypes.LINESTRING),
044  MULTIPOINT(ExtraDbTypes.MULTIPOINT),
045  MULTILINESTRING(ExtraDbTypes.MULTILINESTRING),
046  MULTIPOLYGON(ExtraDbTypes.MULTIPOLYGON),
047
048  HSTORE(ExtraDbTypes.HSTORE),
049  JSON(ExtraDbTypes.JSON),
050  JSONB(ExtraDbTypes.JSONB),
051  JSONCLOB(ExtraDbTypes.JSONClob),
052  JSONBLOB(ExtraDbTypes.JSONBlob),
053  JSONVARCHAR(ExtraDbTypes.JSONVarchar);
054
055  private final int id;
056
057  DbType(int id) {
058    this.id = id;
059  }
060
061  /**
062   * Return the JDBC java.sql.Types value.
063   */
064  public int id() {
065    return id;
066  }
067
068  /**
069   * Create a platform type without scale or precision.
070   */
071  public DbPlatformType createPlatformType() {
072    return new DbPlatformType(name().toLowerCase());
073  }
074}