in modello-plugins/modello-plugin-jpox/src/main/java/org/apache/archiva/redback/components/modello/jpox/JPoxJdoMappingModelloGenerator.java [518:625]
private String getTableName( ModelClass modelClass, JPoxClassMetadata classMetadata )
throws ModelloException
{
JPoxModelMetadata modelMetadata = (JPoxModelMetadata) modelClass.getModel().getMetadata( JPoxModelMetadata.ID );
boolean hasPrefix = StringUtils.isNotEmpty( modelMetadata.getTablePrefix() );
boolean hasAlternateName = StringUtils.isNotEmpty( classMetadata.getTable() );
String prefix = "";
if ( hasPrefix )
{
prefix = modelMetadata.getTablePrefix().trim();
}
String tableName = null;
if ( hasAlternateName )
{
tableName = prefix + classMetadata.getTable();
}
else
{
tableName = prefix + modelClass.getName();
}
if ( sqlReservedWords.isKeyword( tableName ) )
{
StringBuffer emsg = new StringBuffer();
/* ----------------------------------------------------------------
* SQL Reserved Word Violation: 'ROLES'
* Context: TABLE NAME
*/
emsg.append( EOL ).append( ERROR_LINE ).append( EOL );
emsg.append( " SQL Reserved Word Violation: " ).append( tableName ).append( EOL );
emsg.append( " Context: TABLE NAME" ).append( EOL );
emsg.append( " " ).append( EOL );
/* In Model:
* <model jpox.table-prefix="">
* <class jpox.table="">
* <name>JdoRole</name>
* </class>
* </model>
*/
emsg.append( " In Model:" ).append( EOL );
emsg.append( " <model" );
if ( hasPrefix )
{
emsg.append( " jpox.table-prefix=\"" ).append( modelMetadata.getTablePrefix() ).append( "\"" );
}
emsg.append( ">" ).append( EOL );
emsg.append( " <class" );
if ( hasAlternateName )
{
emsg.append( " jpox.table=\"" ).append( classMetadata.getTable() ).append( "\"" );
}
emsg.append( ">" ).append( EOL );
emsg.append( " <name>" ).append( modelClass.getName() ).append( "</name>" ).append( EOL );
emsg.append( " </class>" ).append( EOL );
emsg.append( " </model>" ).append( EOL );
emsg.append( " " ).append( EOL );
/* Violation Source(s): Oracle (WARNING)
* SQL 99 (ERROR)
*
* Severity: ERROR - You must change this name for maximum
* compatibility amoungst JDBC SQL Servers.
*
* Severity: WARNING - You are encouraged to change this name
* for maximum compatibility amoungst JDBC SQL Servers.
*/
boolean hasError = appendKeywordSourceViolations( tableName, emsg );
/* Suggestions: 1) Use a different prefix in
* <model jpox.table-prefix="DIFFERENT_">
* 2) Use a different alternate table name using
* <class jpox.table="DIFFERENT">
* 3) Use a different class name in
* <class>
* <name>DIFFERENT</name>
* </class>
* ----------------------------------------------------------------
*/
emsg.append( " Suggestions: 1) Use a different prefix in" ).append( EOL );
emsg.append( " <model jpox.table-prefix=\"DIFFERENT_\">" ).append( EOL );
emsg.append( " 2) Use a different alternate table name using" ).append( EOL );
emsg.append( " <class jpox.table=\"DIFFERENT\">" ).append( EOL );
emsg.append( " 3) Use a different class name in" ).append( EOL );
emsg.append( " <class>" ).append( EOL );
emsg.append( " <name>DIFFERENT</name>" ).append( EOL );
emsg.append( " </class>" ).append( EOL );
emsg.append( ERROR_LINE );
// Determine possible exception.
if ( hasError || modelMetadata.getReservedWordStrictness().equals( JPoxModelMetadata.WARNING ) )
{
throw new ModelloException( emsg.toString() );
}
// No exception. use it. But log it.
getLogger().warn( emsg.toString() );
}
return tableName;
}