Package io.deephaven.enterprise.database
Class DatabaseTableAccessAclBase<Options,PreTable extends Table,PostTable extends Table>
java.lang.Object
io.deephaven.enterprise.database.DatabaseTableAccessAclBase<Options,PreTable,PostTable>
- Type Parameters:
Options- the option typePreTable- the table type returned fromtableImpl(Object)PostTable- the table type returned frompostAclTableApply(IntermediateResults)
- All Implemented Interfaces:
Database.DatabaseTableAccess<Options>,TableAccess<Options>
- Direct Known Subclasses:
IcebergTableAccess
public abstract non-sealed class DatabaseTableAccessAclBase<Options,PreTable extends Table,PostTable extends Table>
extends Object
implements Database.DatabaseTableAccess<Options>
A base table access implementation that applies relevant access controls and logs audit events for
Database.-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic interfaceprotected static final recordIntermediate results.protected static final recordDatabaseTableAccessAclBase.PreAndPostTable<Pre extends Table,Post extends Table> Pre and post ACL table results. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected abstract StringExtract the audit event access string from the type-specificoptions.abstract booleanisRefreshing(Options options) Extract if the table should be refreshing from the type-specificoptions.protected abstract StringExtract the namespace from the type-specificoptions.protected abstract PostTableProvides a hook for implementations to apply a post-ACL table filter or transformation.protected final DatabaseTableAccessAclBase.PreAndPostTable<PreTable,PostTable> preAndPostTable(Options options) Fetch aTablefor the specifiedoptions.protected final SchemaGet the schema for the givennamespaceandtableName.final PostTableFetch aTablefor the specifiedoptions.protected abstract PreTableThe entrypoint for implementations to fetch an intermediateTable, which will subsequently have ACLs applied be being exposed to the user.protected abstract StringExtract the table name from the type-specificoptions.
-
Constructor Details
-
DatabaseTableAccessAclBase
-
-
Method Details
-
namespace
Extract the namespace from the type-specificoptions.- Parameters:
options- the options- Returns:
- the namespace
-
tableName
Extract the table name from the type-specificoptions.- Parameters:
options- the options- Returns:
- the table name
-
isRefreshing
Extract if the table should be refreshing from the type-specificoptions.- Specified by:
isRefreshingin interfaceDatabase.DatabaseTableAccess<Options>- Parameters:
options- the options- Returns:
- if the table should be refreshing
-
event
Extract the audit event access string from the type-specificoptions.- Parameters:
options- the options- Returns:
- the audit event access string
-
tableImpl
The entrypoint for implementations to fetch an intermediateTable, which will subsequently have ACLs applied be being exposed to the user. Called fromtable(Object).- Parameters:
options- the options- Returns:
- the base table
-
postAclTableApply
protected abstract PostTable postAclTableApply(DatabaseTableAccessAclBase.IntermediateResults<Options, PreTable> intermediate) Provides a hook for implementations to apply a post-ACL table filter or transformation. The default implementations should returnDatabaseTableAccessAclBase.IntermediateResults.aclOrPre(). Called fromtable(Object).- Parameters:
intermediate- the intermediate results- Returns:
- the table
-
table
Fetch aTablefor the specifiedoptions. Will invoketableImpl(Object); then apply any ACLS and log audit events; and then invokepostAclTableApply(IntermediateResults).- Specified by:
tablein interfaceDatabase.DatabaseTableAccess<Options>- Specified by:
tablein interfaceTableAccess<Options>- Parameters:
options- the options- Returns:
- the table
-
preAndPostTable
protected final DatabaseTableAccessAclBase.PreAndPostTable<PreTable,PostTable> preAndPostTable(@NotNull Options options) Fetch aTablefor the specifiedoptions. Will invoketableImpl(Object); then apply any ACLS and log audit events; and then invokepostAclTableApply(IntermediateResults). Implementations may use this instead oftable(Object)when there is some internal functionality that can only be achieved from theDatabaseTableAccessAclBase.PreAndPostTable.preAcl.- Parameters:
options- the options- Returns:
- the pre and post table
-
schemaFor
Get the schema for the givennamespaceandtableName.- Parameters:
namespace- the namespacetableName- the table name- Returns:
- the schema
-