package squill.mgen.naming; import java.util.Properties; /** * Naming strategy to be used when an optional namingoverride property file is * defined. It looks to the property file first and in case nothing was found it * delegates the naming to another strategy */ public class PropertyOverrideNamingStrategy implements NamingStrategy { private final NamingStrategy delegate; private final Properties dbToJavaProps; public PropertyOverrideNamingStrategy(NamingStrategy result, Properties dbToJavaProps) { this.delegate = result; this.dbToJavaProps = dbToJavaProps; } public String getFieldName(String dbTableName, String dbColumnName) { String dbFullColumnName = key(dbTableName, dbColumnName); if (dbToJavaProps.containsKey(dbFullColumnName)) { return dbToJavaProps.getProperty(dbFullColumnName); } return delegate.getFieldName(dbTableName, dbColumnName); } private String key(final String dbTableName, final String dbColumnName) { return dbTableName.concat(".").concat(dbColumnName); } public String getTypeName(String dbTableName) { if (dbToJavaProps.containsKey(dbTableName)) { return dbToJavaProps.getProperty(dbTableName); } return delegate.getTypeName(dbTableName); } }