001package io.ebeaninternal.dbmigration.ddlgeneration.platform; 002 003import io.ebean.config.DatabaseConfig; 004import io.ebean.config.DbConstraintNaming; 005 006/** 007 * Base implementation for all histories, where we must maintain history table (trigger based, db2 and hana) 008 * 009 * @author Roland Praml, FOCONIS AG 010 * 011 */ 012public abstract class DbTableBasedHistoryDdl implements PlatformHistoryDdl.TableBased { 013 014 private DbConstraintNaming constraintNaming; 015 private String historySuffix; 016 protected PlatformDdl platformDdl; 017 018 @Override 019 public void configure(DatabaseConfig config, PlatformDdl platformDdl) { 020 this.platformDdl = platformDdl; 021 this.historySuffix = config.getHistoryTableSuffix(); 022 this.constraintNaming = config.getConstraintNaming(); 023 } 024 025 @Override 026 public String historyTableName(String baseTableName) { 027 return normalise(baseTableName, historySuffix); 028 } 029 030 protected String normalise(String tableName, String suffix) { 031 String normalized = quote(normalise(tableName) + suffix); 032 int lastPeriod = tableName.lastIndexOf('.'); 033 return tableName.substring(0, lastPeriod + 1) + normalized; 034 } 035 036 protected String normalise(String tableName) { 037 return constraintNaming.normaliseTable(tableName); 038 } 039 040 protected String quote(String dbName) { 041 return platformDdl.quote(dbName); 042 } 043 044}