X-Git-Url: http://juplo.de/gitweb/?p=hibernate4-maven-plugin;a=blobdiff_plain;f=src%2Fit%2Fmultimodule%2Fshared%2Fsrc%2Fmain%2Fjava%2Fch%2Fdvbern%2Fdemo%2Fpersistence%2FDemoPhysicalNamingStrategyImpl.java;fp=src%2Fit%2Fmultimodule%2Fshared%2Fsrc%2Fmain%2Fjava%2Fch%2Fdvbern%2Fdemo%2Fpersistence%2FDemoPhysicalNamingStrategyImpl.java;h=7984c7f32582067f2c072726ff6e3491361cb5f2;hp=0000000000000000000000000000000000000000;hb=5726d98865ea5257e5829355d8e4f9f42fbe0b53;hpb=f2db3594a18d7307235ebb4d38a570e5b04ea112 diff --git a/src/it/multimodule/shared/src/main/java/ch/dvbern/demo/persistence/DemoPhysicalNamingStrategyImpl.java b/src/it/multimodule/shared/src/main/java/ch/dvbern/demo/persistence/DemoPhysicalNamingStrategyImpl.java new file mode 100644 index 00000000..7984c7f3 --- /dev/null +++ b/src/it/multimodule/shared/src/main/java/ch/dvbern/demo/persistence/DemoPhysicalNamingStrategyImpl.java @@ -0,0 +1,36 @@ +package ch.dvbern.demo.persistence; + +import java.util.Locale; + +import org.hibernate.boot.model.naming.Identifier; +import org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl; +import org.hibernate.engine.jdbc.env.spi.JdbcEnvironment; + +public class DemoPhysicalNamingStrategyImpl extends PhysicalNamingStrategyStandardImpl { + + private static final long serialVersionUID = 7069586216789441113L; + + public static final DemoPhysicalNamingStrategyImpl INSTANCE = new DemoPhysicalNamingStrategyImpl(); + + @Override + public Identifier toPhysicalTableName(Identifier name, JdbcEnvironment context) { + return new Identifier(addUnderscores(name.getText()), name.isQuoted()); + } + + @Override + public Identifier toPhysicalColumnName(Identifier name, JdbcEnvironment context) { + return new Identifier(addUnderscores(name.getText()), name.isQuoted()); + } + + + protected static String addUnderscores(String name) { + final StringBuilder buf = new StringBuilder(name.replace('.', '_')); + for (int i = 1; i < buf.length() - 1; i++) { + if (Character.isLowerCase(buf.charAt(i - 1)) && Character.isUpperCase(buf.charAt(i)) + && Character.isLowerCase(buf.charAt(i + 1))) { + buf.insert(i++, '_'); + } + } + return buf.toString().toLowerCase(Locale.ROOT); + } +}