1 package ch.dvbern.demo.persistence;
3 import java.util.Locale;
5 import org.hibernate.boot.model.naming.Identifier;
6 import org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl;
7 import org.hibernate.engine.jdbc.env.spi.JdbcEnvironment;
9 public class DemoPhysicalNamingStrategyImpl extends PhysicalNamingStrategyStandardImpl {
11 private static final long serialVersionUID = 7069586216789441113L;
13 public static final DemoPhysicalNamingStrategyImpl INSTANCE = new DemoPhysicalNamingStrategyImpl();
16 public Identifier toPhysicalTableName(Identifier name, JdbcEnvironment context) {
17 return new Identifier(addUnderscores(name.getText()), name.isQuoted());
21 public Identifier toPhysicalColumnName(Identifier name, JdbcEnvironment context) {
22 return new Identifier(addUnderscores(name.getText()), name.isQuoted());
26 protected static String addUnderscores(String name) {
27 final StringBuilder buf = new StringBuilder(name.replace('.', '_'));
28 for (int i = 1; i < buf.length() - 1; i++) {
29 if (Character.isLowerCase(buf.charAt(i - 1)) && Character.isUpperCase(buf.charAt(i))
30 && Character.isLowerCase(buf.charAt(i + 1))) {
34 return buf.toString().toLowerCase(Locale.ROOT);