001package io.ebeaninternal.dbmigration.ddlgeneration; 002 003import io.ebean.config.dbplatform.DatabasePlatform; 004import io.ebeaninternal.dbmigration.ddlgeneration.platform.ClickHouseDdl; 005import io.ebeaninternal.dbmigration.ddlgeneration.platform.CockroachDdl; 006import io.ebeaninternal.dbmigration.ddlgeneration.platform.DB2Ddl; 007import io.ebeaninternal.dbmigration.ddlgeneration.platform.H2Ddl; 008import io.ebeaninternal.dbmigration.ddlgeneration.platform.HanaColumnStoreDdl; 009import io.ebeaninternal.dbmigration.ddlgeneration.platform.HsqldbDdl; 010import io.ebeaninternal.dbmigration.ddlgeneration.platform.MariaDbDdl; 011import io.ebeaninternal.dbmigration.ddlgeneration.platform.MySqlDdl; 012import io.ebeaninternal.dbmigration.ddlgeneration.platform.NuoDbDdl; 013import io.ebeaninternal.dbmigration.ddlgeneration.platform.OracleDdl; 014import io.ebeaninternal.dbmigration.ddlgeneration.platform.PlatformDdl; 015import io.ebeaninternal.dbmigration.ddlgeneration.platform.Postgres9Ddl; 016import io.ebeaninternal.dbmigration.ddlgeneration.platform.PostgresDdl; 017import io.ebeaninternal.dbmigration.ddlgeneration.platform.SQLiteDdl; 018import io.ebeaninternal.dbmigration.ddlgeneration.platform.SqlServerDdl; 019 020/** 021 * Builds platform specific DDL handler. 022 */ 023public class PlatformDdlBuilder { 024 025 /** 026 * Return platform specific DDL handler. 027 */ 028 public static PlatformDdl create(DatabasePlatform platform) { 029 030 switch (platform.getPlatform()) { 031 case H2: 032 return new H2Ddl(platform); 033 case DB2: 034 return new DB2Ddl(platform); 035 case MARIADB: 036 return new MariaDbDdl(platform); 037 case MYSQL55: 038 case MYSQL: 039 return new MySqlDdl(platform); 040 case HSQLDB: 041 return new HsqldbDdl(platform); 042 case NUODB: 043 return new NuoDbDdl(platform); 044 case ORACLE: 045 case ORACLE11: 046 return new OracleDdl(platform); 047 case SQLITE: 048 return new SQLiteDdl(platform); 049 case POSTGRES9: 050 return new Postgres9Ddl(platform); 051 case POSTGRES: 052 return new PostgresDdl(platform); 053 case COCKROACH: 054 return new CockroachDdl(platform); 055 case SQLSERVER16: 056 case SQLSERVER17: 057 case SQLSERVER: 058 return new SqlServerDdl(platform); 059 case HANA: 060 return new HanaColumnStoreDdl(platform); 061 case CLICKHOUSE: 062 return new ClickHouseDdl(platform); 063 default: 064 return new PlatformDdl(platform); 065 } 066 } 067}