[jOOQ/jOOQ#16135] Add the invisibleColumnsAsHidden flag
This commit is contained in:
parent
ecc9576125
commit
3eaf3b1729
@ -603,6 +603,7 @@ public class GenerationTool {
|
||||
database.setIncludeSystemSequences(TRUE.equals(d.isIncludeSystemSequences()));
|
||||
database.setIncludeSystemUDTs(TRUE.equals(d.isIncludeSystemUDTs()));
|
||||
database.setIncludeInvisibleColumns(!FALSE.equals(d.isIncludeInvisibleColumns()));
|
||||
database.setInvisibleColumnsAsHidden(!FALSE.equals(d.isInvisibleColumnsAsHidden()));
|
||||
database.setIncludePrimaryKeys(!FALSE.equals(d.isIncludePrimaryKeys()));
|
||||
database.setIncludeRoutines(!FALSE.equals(d.isIncludeRoutines()));
|
||||
database.setIncludeDomains(!FALSE.equals(d.isIncludeDomains()));
|
||||
|
||||
@ -206,7 +206,7 @@ public class XMLGenerator extends AbstractGenerator {
|
||||
column.setNumericPrecision(type.getPrecision());
|
||||
column.setNumericScale(type.getScale());
|
||||
column.setOrdinalPosition(co.getPosition());
|
||||
column.setHidden(co.isHidden());
|
||||
column.setHidden(type.isHidden());
|
||||
column.setReadonly(co.isReadonly());
|
||||
|
||||
if (type.isComputed()) {
|
||||
|
||||
@ -197,6 +197,7 @@ public abstract class AbstractDatabase implements Database {
|
||||
private boolean includeExcludeColumns = false;
|
||||
private boolean includeExcludePackageRoutines = false;
|
||||
private boolean includeInvisibleColumns = true;
|
||||
private boolean invisibleColumnsAsHidden = true;
|
||||
private boolean includeXMLSchemaCollections = true;
|
||||
private boolean includeTables = true;
|
||||
private boolean includeEmbeddables = true;
|
||||
@ -1181,6 +1182,16 @@ public abstract class AbstractDatabase implements Database {
|
||||
return includeInvisibleColumns;
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void setInvisibleColumnsAsHidden(boolean invisibleColumnsAsHidden) {
|
||||
this.invisibleColumnsAsHidden = invisibleColumnsAsHidden;
|
||||
}
|
||||
|
||||
@Override
|
||||
public final boolean getInvisibleColumnsAsHidden() {
|
||||
return invisibleColumnsAsHidden;
|
||||
}
|
||||
|
||||
@Override
|
||||
public final boolean getIncludeTables() {
|
||||
return includeTables;
|
||||
|
||||
@ -824,6 +824,20 @@ public interface Database extends AutoCloseable {
|
||||
*/
|
||||
boolean getIncludeInvisibleColumns();
|
||||
|
||||
/**
|
||||
* Whether invisible columns should be marked as {@link DataType#hidden()}.
|
||||
* <p>
|
||||
* This feature is available in the commercial distribution only.
|
||||
*/
|
||||
void setInvisibleColumnsAsHidden(boolean invisibleColumnsAsHidden);
|
||||
|
||||
/**
|
||||
* Whether invisible columns should be marked as {@link DataType#hidden()}.
|
||||
* <p>
|
||||
* This feature is available in the commercial distribution only.
|
||||
*/
|
||||
boolean getInvisibleColumnsAsHidden();
|
||||
|
||||
/**
|
||||
* Whether zero-scale decimal types should be treated as their most
|
||||
* appropriate, corresponding integer type.
|
||||
|
||||
@ -85,7 +85,7 @@ public class DefaultColumnDefinition
|
||||
boolean readonly,
|
||||
String comment
|
||||
) {
|
||||
this(table, name, position, type, identity, false, readonly, comment);
|
||||
this(table, name, position, type, identity, type.isHidden(), readonly, comment);
|
||||
}
|
||||
|
||||
public DefaultColumnDefinition(
|
||||
|
||||
@ -56,6 +56,7 @@ import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.IntStream;
|
||||
|
||||
import org.jooq.Field;
|
||||
import org.jooq.Name;
|
||||
import org.jooq.Param;
|
||||
import org.jooq.Record;
|
||||
@ -70,6 +71,8 @@ import org.jooq.meta.h2.H2Database.ElementType;
|
||||
import org.jooq.meta.h2.H2Database.ElementTypeLookupKey;
|
||||
import org.jooq.meta.hsqldb.information_schema.Tables;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
/**
|
||||
* H2 table definition
|
||||
*
|
||||
@ -102,6 +105,7 @@ public class H2TableDefinition extends AbstractTableDefinition {
|
||||
List<ColumnDefinition> result = new ArrayList<>();
|
||||
|
||||
H2Database db = (H2Database) getDatabase();
|
||||
Field<Boolean> visible = COLUMNS.IS_VISIBLE.coerce(BOOLEAN);
|
||||
|
||||
|
||||
// [#252] While recursing on ELEMENT_TYPES to detect multi dimensional
|
||||
@ -131,7 +135,8 @@ public class H2TableDefinition extends AbstractTableDefinition {
|
||||
Tables.COLUMNS.IS_IDENTITY.eq(inline("YES")).as(Tables.COLUMNS.IS_IDENTITY),
|
||||
COLUMNS.DOMAIN_SCHEMA,
|
||||
COLUMNS.DOMAIN_NAME,
|
||||
Tables.COLUMNS.DTD_IDENTIFIER
|
||||
Tables.COLUMNS.DTD_IDENTIFIER,
|
||||
visible
|
||||
)
|
||||
.from(COLUMNS)
|
||||
.where(COLUMNS.TABLE_SCHEMA.equal(getSchema().getName()))
|
||||
@ -165,7 +170,7 @@ public class H2TableDefinition extends AbstractTableDefinition {
|
||||
if (et == null)
|
||||
et = new ElementType(record.get(COLUMNS.TYPE_NAME), record.get(COLUMNS.CHARACTER_MAXIMUM_LENGTH), record.get(COLUMNS.NUMERIC_PRECISION), record.get(COLUMNS.NUMERIC_SCALE), null, 0);
|
||||
|
||||
DataTypeDefinition type = new DefaultDataTypeDefinition(
|
||||
DefaultDataTypeDefinition type = new DefaultDataTypeDefinition(
|
||||
getDatabase(),
|
||||
typeSchema == null ? getSchema() : typeSchema,
|
||||
et.dataType() + IntStream.range(0, et.dimension()).mapToObj(i -> " ARRAY").collect(Collectors.joining()),
|
||||
@ -177,6 +182,11 @@ public class H2TableDefinition extends AbstractTableDefinition {
|
||||
userType
|
||||
).generatedAlwaysAs(isComputed ? record.get(Tables.COLUMNS.GENERATION_EXPRESSION) : null);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
result.add(new DefaultColumnDefinition(
|
||||
getDatabase().getTable(getSchema(), getName()),
|
||||
record.get(COLUMNS.COLUMN_NAME),
|
||||
|
||||
@ -105,6 +105,8 @@ public class Database implements Serializable, XMLAppendable
|
||||
protected Boolean includeSystemUDTs = false;
|
||||
@XmlElement(defaultValue = "true")
|
||||
protected Boolean includeInvisibleColumns = true;
|
||||
@XmlElement(defaultValue = "true")
|
||||
protected Boolean invisibleColumnsAsHidden = true;
|
||||
@XmlElement(defaultValue = "")
|
||||
@XmlJavaTypeAdapter(StringAdapter.class)
|
||||
protected String recordVersionFields = "";
|
||||
@ -1159,6 +1161,34 @@ public class Database implements Serializable, XMLAppendable
|
||||
this.includeInvisibleColumns = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* This flag indicates whether invisible columns should marked as {@link org.jooq.DataType#hidden()} in output produced by this database.
|
||||
* <p>
|
||||
* This feature is available in the commercial distribution only.
|
||||
*
|
||||
* @return
|
||||
* possible object is
|
||||
* {@link Boolean }
|
||||
*
|
||||
*/
|
||||
public Boolean isInvisibleColumnsAsHidden() {
|
||||
return invisibleColumnsAsHidden;
|
||||
}
|
||||
|
||||
/**
|
||||
* This flag indicates whether invisible columns should marked as {@link org.jooq.DataType#hidden()} in output produced by this database.
|
||||
* <p>
|
||||
* This feature is available in the commercial distribution only.
|
||||
*
|
||||
* @param value
|
||||
* allowed object is
|
||||
* {@link Boolean }
|
||||
*
|
||||
*/
|
||||
public void setInvisibleColumnsAsHidden(Boolean value) {
|
||||
this.invisibleColumnsAsHidden = value;
|
||||
}
|
||||
|
||||
/**
|
||||
* All table and view columns that are used as "version" fields for optimistic locking.
|
||||
* <p>
|
||||
@ -2544,6 +2574,17 @@ public class Database implements Serializable, XMLAppendable
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* This flag indicates whether invisible columns should marked as {@link org.jooq.DataType#hidden()} in output produced by this database.
|
||||
* <p>
|
||||
* This feature is available in the commercial distribution only.
|
||||
*
|
||||
*/
|
||||
public Database withInvisibleColumnsAsHidden(Boolean value) {
|
||||
setInvisibleColumnsAsHidden(value);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* All table and view columns that are used as "version" fields for optimistic locking.
|
||||
* <p>
|
||||
@ -3152,6 +3193,7 @@ public class Database implements Serializable, XMLAppendable
|
||||
builder.append("includeSystemSequences", includeSystemSequences);
|
||||
builder.append("includeSystemUDTs", includeSystemUDTs);
|
||||
builder.append("includeInvisibleColumns", includeInvisibleColumns);
|
||||
builder.append("invisibleColumnsAsHidden", invisibleColumnsAsHidden);
|
||||
builder.append("recordVersionFields", recordVersionFields);
|
||||
builder.append("recordTimestampFields", recordTimestampFields);
|
||||
builder.append("syntheticObjects", syntheticObjects);
|
||||
@ -3528,6 +3570,15 @@ public class Database implements Serializable, XMLAppendable
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if (invisibleColumnsAsHidden == null) {
|
||||
if (other.invisibleColumnsAsHidden!= null) {
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
if (!invisibleColumnsAsHidden.equals(other.invisibleColumnsAsHidden)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if (recordVersionFields == null) {
|
||||
if (other.recordVersionFields!= null) {
|
||||
return false;
|
||||
@ -3930,6 +3981,7 @@ public class Database implements Serializable, XMLAppendable
|
||||
result = ((prime*result)+((includeSystemSequences == null)? 0 :includeSystemSequences.hashCode()));
|
||||
result = ((prime*result)+((includeSystemUDTs == null)? 0 :includeSystemUDTs.hashCode()));
|
||||
result = ((prime*result)+((includeInvisibleColumns == null)? 0 :includeInvisibleColumns.hashCode()));
|
||||
result = ((prime*result)+((invisibleColumnsAsHidden == null)? 0 :invisibleColumnsAsHidden.hashCode()));
|
||||
result = ((prime*result)+((recordVersionFields == null)? 0 :recordVersionFields.hashCode()));
|
||||
result = ((prime*result)+((recordTimestampFields == null)? 0 :recordTimestampFields.hashCode()));
|
||||
result = ((prime*result)+((syntheticObjects == null)? 0 :syntheticObjects.hashCode()));
|
||||
|
||||
@ -154,7 +154,7 @@ public class MySQLTableDefinition extends AbstractTableDefinition {
|
||||
}
|
||||
}
|
||||
|
||||
DataTypeDefinition type = new DefaultDataTypeDefinition(
|
||||
DefaultDataTypeDefinition type = new DefaultDataTypeDefinition(
|
||||
getDatabase(),
|
||||
getSchema(),
|
||||
dataType,
|
||||
@ -168,6 +168,11 @@ public class MySQLTableDefinition extends AbstractTableDefinition {
|
||||
.generatedAlwaysAs(generated ? record.get(COLUMNS.GENERATION_EXPRESSION) : null)
|
||||
.generationOption(generationOption);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
result.add(new DefaultColumnDefinition(
|
||||
getDatabase().getTable(getSchema(), getName()),
|
||||
record.get(COLUMNS.COLUMN_NAME),
|
||||
|
||||
@ -1246,6 +1246,13 @@ public class PostgresDatabase extends AbstractDatabase implements ResultQueryDat
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@ -42,6 +42,7 @@ import static org.jooq.impl.DSL.any;
|
||||
import static org.jooq.impl.DSL.coalesce;
|
||||
import static org.jooq.impl.DSL.concat;
|
||||
import static org.jooq.impl.DSL.count;
|
||||
import static org.jooq.impl.DSL.falseCondition;
|
||||
import static org.jooq.impl.DSL.field;
|
||||
import static org.jooq.impl.DSL.greatest;
|
||||
import static org.jooq.impl.DSL.inline;
|
||||
@ -146,6 +147,8 @@ public class PostgresTableDefinition extends AbstractTableDefinition {
|
||||
Field<String> serialColumnDefault = inline("nextval('%_seq'::regclass)");
|
||||
Field<String> generationExpression = COLUMNS.GENERATION_EXPRESSION;
|
||||
Field<String> attgenerated = database.is12() ? PG_ATTRIBUTE.ATTGENERATED : inline("s");
|
||||
Condition columnHidden = falseCondition();
|
||||
|
||||
|
||||
|
||||
|
||||
@ -166,6 +169,7 @@ public class PostgresTableDefinition extends AbstractTableDefinition {
|
||||
? isIdentity10.or(count().filterWhere(isIdentity10).over().eq(inline(0)).and(isSerial))
|
||||
: isSerial;
|
||||
|
||||
|
||||
for (Record record : create().select(
|
||||
COLUMNS.COLUMN_NAME,
|
||||
COLUMNS.ORDINAL_POSITION,
|
||||
@ -184,7 +188,8 @@ public class PostgresTableDefinition extends AbstractTableDefinition {
|
||||
when(COLUMNS.DATA_TYPE.eq(inline("ARRAY")), substring(PG_TYPE.TYPNAME, inline(2)))
|
||||
.else_(COLUMNS.UDT_NAME)
|
||||
).as(COLUMNS.UDT_NAME),
|
||||
PG_DESCRIPTION.DESCRIPTION)
|
||||
PG_DESCRIPTION.DESCRIPTION,
|
||||
columnHidden)
|
||||
.from(COLUMNS)
|
||||
.join(PG_ATTRIBUTE)
|
||||
.on(PG_ATTRIBUTE.ATTNAME.eq(COLUMNS.COLUMN_NAME))
|
||||
@ -209,7 +214,7 @@ public class PostgresTableDefinition extends AbstractTableDefinition {
|
||||
if (schemaName != null)
|
||||
typeSchema = getDatabase().getSchema(schemaName);
|
||||
|
||||
DataTypeDefinition type = new DefaultDataTypeDefinition(
|
||||
DefaultDataTypeDefinition type = new DefaultDataTypeDefinition(
|
||||
getDatabase(),
|
||||
typeSchema,
|
||||
record.get(COLUMNS.DATA_TYPE),
|
||||
@ -232,6 +237,11 @@ public class PostgresTableDefinition extends AbstractTableDefinition {
|
||||
: null
|
||||
);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
ColumnDefinition column = new DefaultColumnDefinition(
|
||||
getDatabase().getTable(getSchema(), getName()),
|
||||
record.get(COLUMNS.COLUMN_NAME),
|
||||
|
||||
@ -93,7 +93,7 @@ public class XMLTableDefinition extends AbstractTableDefinition {
|
||||
|
||||
SchemaDefinition schema = getDatabase().getSchema(column.getTableSchema());
|
||||
|
||||
DataTypeDefinition type = new DefaultDataTypeDefinition(
|
||||
DefaultDataTypeDefinition type = new DefaultDataTypeDefinition(
|
||||
getDatabase(),
|
||||
schema,
|
||||
column.getDataType(),
|
||||
@ -110,7 +110,8 @@ public class XMLTableDefinition extends AbstractTableDefinition {
|
||||
: "VIRTUAL".equalsIgnoreCase(column.getGenerationOption())
|
||||
? VIRTUAL
|
||||
: null
|
||||
: null);
|
||||
: null)
|
||||
.hidden(column.isHidden());
|
||||
|
||||
result.add(new DefaultColumnDefinition(
|
||||
this,
|
||||
|
||||
@ -1113,7 +1113,9 @@ This feature is available in the commercial distribution only.]]></jxb:javadoc><
|
||||
</element>
|
||||
|
||||
<element name="invisibleColumnsAsHidden" type="boolean" default="true" minOccurs="0" maxOccurs="1">
|
||||
<annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This flag indicates whether invisible columns should marked as {@link org.jooq.DataType#hidden()} in output produced by this database]]></jxb:javadoc></jxb:property></appinfo></annotation>
|
||||
<annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This flag indicates whether invisible columns should marked as {@link org.jooq.DataType#hidden()} in output produced by this database.
|
||||
<p>
|
||||
This feature is available in the commercial distribution only.]]></jxb:javadoc></jxb:property></appinfo></annotation>
|
||||
</element>
|
||||
|
||||
<element name="recordVersionFields" type="string" default="" minOccurs="0" maxOccurs="1">
|
||||
|
||||
@ -329,7 +329,7 @@ final class InformationSchemaExport {
|
||||
result.getViews().add(iv);
|
||||
}
|
||||
|
||||
Field<?>[] fields = t.fields();
|
||||
Field<?>[] fields = t.fieldsIncludingHidden().fields();
|
||||
for (int i = 0; i < fields.length; i++) {
|
||||
Field<?> f = fields[i];
|
||||
DataType<?> type = f.getDataType();
|
||||
|
||||
Loading…
Reference in New Issue
Block a user