[#5783] KeepNamesGeneratorStrategy generates wrong Keys.java

This commit is contained in:
lukaseder 2017-01-16 17:14:02 +01:00
parent 388410f3a3
commit 5e4565f001
3 changed files with 58 additions and 27 deletions

View File

@ -252,4 +252,42 @@ public abstract class AbstractGeneratorStrategy implements GeneratorStrategy {
return result;
}
/**
* [#4168] [#5783] Some identifiers must not be modified by custom strategies.
*/
final String getFixedJavaIdentifier(Definition definition) {
// [#1473] Identity identifiers should not be renamed by custom strategies
if (definition instanceof IdentityDefinition)
return "IDENTITY_" + getJavaIdentifier(((IdentityDefinition) definition).getColumn().getContainer());
// [#2032] Intercept default Catalog
else if (definition instanceof CatalogDefinition && ((CatalogDefinition) definition).isDefaultCatalog())
return "DEFAULT_CATALOG";
// [#2089] Intercept default schema
else if (definition instanceof SchemaDefinition && ((SchemaDefinition) definition).isDefaultSchema())
return "DEFAULT_SCHEMA";
else
return null;
}
/**
* [#4168] [#5783] Some class names must not be modified by custom strategies.
*/
final String getFixedJavaClassName(Definition definition) {
// [#2032] Intercept default catalog
if (definition instanceof CatalogDefinition && ((CatalogDefinition) definition).isDefaultCatalog())
return "DefaultCatalog";
// [#2089] Intercept default schema
else if (definition instanceof SchemaDefinition && ((SchemaDefinition) definition).isDefaultSchema())
return "DefaultSchema";
else
return null;
}
}

View File

@ -96,20 +96,12 @@ public class DefaultGeneratorStrategy extends AbstractGeneratorStrategy {
@Override
public String getJavaIdentifier(Definition definition) {
String identifier = getFixedJavaIdentifier(definition);
// [#1473] Identity identifiers should not be renamed by custom strategies
if (definition instanceof IdentityDefinition)
return "IDENTITY_" + getJavaIdentifier(((IdentityDefinition) definition).getColumn().getContainer());
// [#2032] Intercept default Catalog
else if (definition instanceof CatalogDefinition && ((CatalogDefinition) definition).isDefaultCatalog())
return "DEFAULT_CATALOG";
// [#2089] Intercept default schema
else if (definition instanceof SchemaDefinition && ((SchemaDefinition) definition).isDefaultSchema())
return "DEFAULT_SCHEMA";
return definition.getOutputName().toUpperCase();
if (identifier != null)
return identifier;
else
return definition.getOutputName().toUpperCase();
}
@Override
@ -139,18 +131,12 @@ public class DefaultGeneratorStrategy extends AbstractGeneratorStrategy {
@Override
public String getJavaClassName(Definition definition, Mode mode) {
String name = getFixedJavaClassName(definition);
// [#2032] Intercept default catalog
if (definition instanceof CatalogDefinition && ((CatalogDefinition) definition).isDefaultCatalog()) {
return "DefaultCatalog";
}
// [#2089] Intercept default schema
else if (definition instanceof SchemaDefinition && ((SchemaDefinition) definition).isDefaultSchema()) {
return "DefaultSchema";
}
return getJavaClassName0(definition, mode);
if (name != null)
return name;
else
return getJavaClassName0(definition, mode);
}
@Override

View File

@ -114,7 +114,12 @@ class GeneratorStrategyWrapper extends AbstractGeneratorStrategy {
@Override
public String getJavaIdentifier(Definition definition) {
String identifier = convertToIdentifier(delegate.getJavaIdentifier(definition), language);
String identifier = getFixedJavaIdentifier(definition);
if (identifier != null)
return identifier;
identifier = convertToIdentifier(delegate.getJavaIdentifier(definition), language);
// [#1212] Don't trust custom strategies and disambiguate identifiers here
if (definition instanceof ColumnDefinition ||
@ -288,11 +293,13 @@ class GeneratorStrategyWrapper extends AbstractGeneratorStrategy {
@Override
public String getJavaClassName(Definition definition, Mode mode) {
String name = getFixedJavaClassName(definition);
if (name != null)
return name;
// [#1150] Intercept Mode.RECORD calls for tables
if (definition instanceof TableDefinition && !generator.generateRecords() && mode == Mode.RECORD) {
if (definition instanceof TableDefinition && !generator.generateRecords() && mode == Mode.RECORD)
return Record.class.getSimpleName();
}
String className;