001package io.ebeaninternal.dbmigration.ddlgeneration; 002 003import io.ebean.config.DatabaseConfig; 004import io.ebeaninternal.dbmigration.ddlgeneration.platform.BaseTableDdl; 005import io.ebeaninternal.dbmigration.ddlgeneration.platform.PlatformDdl; 006import io.ebeaninternal.dbmigration.migration.AddColumn; 007import io.ebeaninternal.dbmigration.migration.AddHistoryTable; 008import io.ebeaninternal.dbmigration.migration.AddTableComment; 009import io.ebeaninternal.dbmigration.migration.AddUniqueConstraint; 010import io.ebeaninternal.dbmigration.migration.AlterColumn; 011import io.ebeaninternal.dbmigration.migration.AlterForeignKey; 012import io.ebeaninternal.dbmigration.migration.AlterTable; 013import io.ebeaninternal.dbmigration.migration.ChangeSet; 014import io.ebeaninternal.dbmigration.migration.CreateIndex; 015import io.ebeaninternal.dbmigration.migration.CreateTable; 016import io.ebeaninternal.dbmigration.migration.DropColumn; 017import io.ebeaninternal.dbmigration.migration.DropHistoryTable; 018import io.ebeaninternal.dbmigration.migration.DropIndex; 019import io.ebeaninternal.dbmigration.migration.DropTable; 020 021import java.util.List; 022 023/** 024 * 025 */ 026public class BaseDdlHandler implements DdlHandler { 027 028 protected final TableDdl tableDdl; 029 030 public BaseDdlHandler(DatabaseConfig config, PlatformDdl platformDdl) { 031 this(config, platformDdl, new BaseTableDdl(config, platformDdl)); 032 } 033 034 protected BaseDdlHandler(DatabaseConfig config, PlatformDdl platformDdl, TableDdl tableDdl) { 035 this.tableDdl = tableDdl; 036 } 037 038 @Override 039 public void generate(DdlWrite writer, ChangeSet changeSet) { 040 041 List<Object> changeSetChildren = changeSet.getChangeSetChildren(); 042 for (Object change : changeSetChildren) { 043 if (change instanceof CreateTable) { 044 generate(writer, (CreateTable) change); 045 } 046 } 047 for (Object change : changeSetChildren) { 048 if (change instanceof CreateTable) { 049 // ignore 050 } else if (change instanceof DropTable) { 051 generate(writer, (DropTable) change); 052 } else if (change instanceof AlterTable) { 053 generate(writer, (AlterTable) change); 054 } else if (change instanceof AddTableComment) { 055 generate(writer, (AddTableComment) change); 056 } else if (change instanceof CreateIndex) { 057 generate(writer, (CreateIndex) change); 058 } else if (change instanceof DropIndex) { 059 generate(writer, (DropIndex) change); 060 } else if (change instanceof AddColumn) { 061 generate(writer, (AddColumn) change); 062 } else if (change instanceof DropColumn) { 063 generate(writer, (DropColumn) change); 064 } else if (change instanceof AlterColumn) { 065 generate(writer, (AlterColumn) change); 066 } else if (change instanceof AddHistoryTable) { 067 generate(writer, (AddHistoryTable) change); 068 } else if (change instanceof DropHistoryTable) { 069 generate(writer, (DropHistoryTable) change); 070 } else if (change instanceof AddUniqueConstraint) { 071 generate(writer, (AddUniqueConstraint) change); 072 } else if (change instanceof AlterForeignKey) { 073 generate(writer, (AlterForeignKey) change); 074 } else { 075 throw new IllegalArgumentException("Unsupported change: " + change); 076 } 077 } 078 } 079 080 @Override 081 public void generateProlog(DdlWrite writer) { 082 tableDdl.generateProlog(writer); 083 } 084 085 @Override 086 public void generateEpilog(DdlWrite writer) { 087 tableDdl.generateEpilog(writer); 088 } 089 090 @Override 091 public void generate(DdlWrite writer, CreateTable createTable) { 092 tableDdl.generate(writer, createTable); 093 } 094 095 @Override 096 public void generate(DdlWrite writer, DropTable dropTable) { 097 tableDdl.generate(writer, dropTable); 098 } 099 100 @Override 101 public void generate(DdlWrite writer, AlterTable alterTable) { 102 tableDdl.generate(writer, alterTable); 103 } 104 105 @Override 106 public void generate(DdlWrite writer, AddTableComment addTableComment) { 107 tableDdl.generate(writer, addTableComment); 108 } 109 110 @Override 111 public void generate(DdlWrite writer, AddColumn addColumn) { 112 tableDdl.generate(writer, addColumn); 113 } 114 115 @Override 116 public void generate(DdlWrite writer, DropColumn dropColumn) { 117 tableDdl.generate(writer, dropColumn); 118 } 119 120 @Override 121 public void generate(DdlWrite writer, AlterColumn alterColumn) { 122 tableDdl.generate(writer, alterColumn); 123 } 124 125 @Override 126 public void generate(DdlWrite writer, AddHistoryTable addHistoryTable) { 127 tableDdl.generate(writer, addHistoryTable); 128 } 129 130 @Override 131 public void generate(DdlWrite writer, DropHistoryTable dropHistoryTable) { 132 tableDdl.generate(writer, dropHistoryTable); 133 } 134 135 @Override 136 public void generate(DdlWrite writer, CreateIndex createIndex) { 137 tableDdl.generate(writer, createIndex); 138 } 139 140 @Override 141 public void generate(DdlWrite writer, DropIndex dropIndex) { 142 tableDdl.generate(writer, dropIndex); 143 } 144 145 @Override 146 public void generate(DdlWrite writer, AddUniqueConstraint constraint) { 147 tableDdl.generate(writer, constraint); 148 } 149 150 @Override 151 public void generate(DdlWrite writer, AlterForeignKey alterForeignKey) { 152 tableDdl.generate(writer, alterForeignKey); 153 } 154}