[jOOQ/jOOQ#8808] Only qualify sequence class references when required

The `Sequences` class will now only have fully qualified references to
the sequence classes when there is a name conflict between the schema
and any of its sequences.
This commit is contained in:
Knut Wannheden 2019-06-26 15:57:20 +02:00
parent 1a3d5d0252
commit 3dbcccb65a

View File

@ -4643,12 +4643,15 @@ public class JavaGenerator extends AbstractGenerator {
else
out.println("public class Sequences {");
boolean qualifySequenceClassReferences = containsConflictingDefinition(schema, database.getSequences(schema));
for (SequenceDefinition sequence : database.getSequences(schema)) {
final String seqTypeFull = getJavaType(sequence.getType(resolver()));
final String seqType = out.ref(seqTypeFull);
final String seqId = getStrategy().getJavaIdentifier(sequence);
final String seqName = sequence.getOutputName();
final String schemaId = getStrategy().getFullJavaIdentifier(schema);
final String schemaId = qualifySequenceClassReferences ? getStrategy().getFullJavaIdentifier(schema)
: out.ref(getStrategy().getFullJavaIdentifier(schema), 2);
final String typeRef = getJavaTypeReference(sequence.getDatabase(), sequence.getType(resolver()));
if (!printDeprecationIfUnknownType(out, seqTypeFull))
@ -4666,6 +4669,14 @@ public class JavaGenerator extends AbstractGenerator {
watch.splitInfo("Sequences generated");
}
private boolean containsConflictingDefinition(SchemaDefinition schema, List<? extends Definition> definitions) {
final String unqualifiedSchemaId = getStrategy().getJavaIdentifier(schema);
for (Definition def : definitions)
if (unqualifiedSchemaId.equals(getStrategy().getJavaIdentifier(def)))
return true;
return false;
}
protected void generateCatalog(CatalogDefinition catalog) {
JavaWriter out = newJavaWriter(getFile(catalog));
log.info("");