[#5627] Added runtime information about a UDT being "SQL usable"

This commit is contained in:
lukaseder 2016-10-31 15:35:59 +01:00
parent cc86c920d4
commit e9cd04e2e7
3 changed files with 19 additions and 3 deletions

View File

@ -1527,7 +1527,7 @@ public class JavaGenerator extends AbstractGenerator {
}
if (scala) {
out.println("class %s extends %s[%s](\"%s\", null)[[before= with ][separator= with ][%s]] {", className, UDTImpl.class, recordType, udt.getOutputName(), interfaces);
out.println("class %s extends %s[%s](\"%s\", null, %s)[[before= with ][separator= with ][%s]] {", className, UDTImpl.class, recordType, udt.getOutputName(), udt.getPackage() == null, interfaces);
}
else {
out.println("public class %s extends %s<%s>[[before= implements ][%s]] {", className, UDTImpl.class, recordType, interfaces);
@ -1589,7 +1589,7 @@ public class JavaGenerator extends AbstractGenerator {
else {
out.tab(1).javadoc(NO_FURTHER_INSTANCES_ALLOWED);
out.tab(1).println("private %s() {", className);
out.tab(2).println("super(\"%s\", null);", udt.getOutputName());
out.tab(2).println("super(\"%s\", null, %s);", udt.getOutputName(), udt.getPackage() == null);
out.tab(1).println("}");
}

View File

@ -160,7 +160,12 @@ public interface UDT<R extends UDTRecord<R>> extends QueryPart {
R newRecord();
/**
* The UDT's data type as known to the database
* The UDT's data type as known to the database.
*/
DataType<R> getDataType();
/**
* Whether this data type can be used from SQL statements.
*/
boolean isSQLUsable();
}

View File

@ -71,12 +71,18 @@ public class UDTImpl<R extends UDTRecord<R>> extends AbstractQueryPart implement
private final Schema schema;
private final String name;
private final Fields<R> fields;
private final boolean isSQLUsable;
private transient DataType<R> type;
public UDTImpl(String name, Schema schema) {
this(name, schema, true);
}
protected UDTImpl(String name, Schema schema, boolean isSQLUsable) {
this.fields = new Fields<R>();
this.name = name;
this.schema = schema;
this.isSQLUsable = isSQLUsable;
}
@Override
@ -165,6 +171,11 @@ public class UDTImpl<R extends UDTRecord<R>> extends AbstractQueryPart implement
throw new UnsupportedOperationException();
}
@Override
public final boolean isSQLUsable() {
return isSQLUsable;
}
@Override
public final R newRecord() {
return DSL.using(new DefaultConfiguration()).newRecord(this);