package org.dayatang.datasource4saas.dscreator;
import org.dayatang.configuration.Configuration;
/**
* 租户数据库映射策略。
*
* @author yyang (<a href="mailto:gdyangyu@gmail.com">gdyangyu@gmail.com</a>)
*
*/
public enum TenantDbMappingStrategy {
SCHEMA {
@Override
public void process(DbInfo dbInfo, String tenant, Configuration dbTenantMappings) {
dbInfo.setUsername(dbTenantMappings.getString(tenant));
}
},
DBNAME {
@Override
public void process(DbInfo dbInfo, String tenant, Configuration dbTenantMappings) {
dbInfo.setDbname(dbTenantMappings.getString(tenant));
}
},
HOST {
@Override
public void process(DbInfo dbInfo, String tenant, Configuration dbTenantMappings) {
dbInfo.setHost(dbTenantMappings.getString(tenant));
}
},
PORT {
@Override
public void process(DbInfo dbInfo, String tenant, Configuration dbTenantMappings) {
dbInfo.setPort(dbTenantMappings.getString(tenant));
}
},
INSTANCE {
@Override
public void process(DbInfo dbInfo, String tenant, Configuration dbTenantMappings) {
dbInfo.setInstance(dbTenantMappings.getString(tenant));
}
};
public static TenantDbMappingStrategy of(String value) {
for (TenantDbMappingStrategy each : TenantDbMappingStrategy.values()) {
if (each.name().equalsIgnoreCase(value)) {
return each;
}
}
throw new IllegalStateException("Tenant DB mapping strategy '" + value + "' not existsDataSourceOfTenant!");
}
public abstract void process(DbInfo dbInfo, String tenant, Configuration dbTenantMappings);
}