/*
* Hibernate, Relational Persistence for Idiomatic Java
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/
package org.hibernate.test.annotations.namingstrategy;
import org.hibernate.boot.model.naming.Identifier;
import org.hibernate.boot.model.naming.ImplicitForeignKeyNameSource;
import org.hibernate.boot.model.naming.ImplicitIndexNameSource;
import org.hibernate.boot.model.naming.ImplicitNamingStrategyJpaCompliantImpl;
import org.hibernate.boot.model.naming.ImplicitUniqueKeyNameSource;
@SuppressWarnings("serial")
public class LongIdentifierNamingStrategy
extends ImplicitNamingStrategyJpaCompliantImpl {
@Override
public Identifier determineForeignKeyName(ImplicitForeignKeyNameSource source) {
return limitIdentifierName(super.determineForeignKeyName( source ));
}
@Override
public Identifier determineUniqueKeyName(ImplicitUniqueKeyNameSource source) {
return limitIdentifierName(super.determineUniqueKeyName( source ));
}
@Override
public Identifier determineIndexName(ImplicitIndexNameSource source) {
return limitIdentifierName(super.determineIndexName( source ));
}
public Identifier limitIdentifierName(Identifier identifier) {
String text = identifier.getText();
if(text.length() > 30) {
return new Identifier( text.substring( 0, 30 ), identifier.isQuoted() );
}
return identifier;
}
}