Class BaseObject
- java.lang.Object
-
- org.linuxforhealth.fhir.database.utils.model.BaseObject
-
- All Implemented Interfaces:
IDatabaseObject
- Direct Known Subclasses:
AlterSequenceStartWith
,AlterTableAddColumn
,AlterTableIdentityCache
,CreateIndex
,FunctionDef
,NopObject
,ObjectGroup
,ProcedureDef
,Sequence
,Table
,View
public abstract class BaseObject extends java.lang.Object implements IDatabaseObject
BaseObject
-
-
Field Summary
Fields Modifier and Type Field Description protected java.util.List<Migration>
migrations
protected int
version
-
Constructor Summary
Constructors Constructor Description BaseObject(java.lang.String schemaName, java.lang.String objectName, DatabaseObjectType objectType, int version)
Public constructorBaseObject(java.lang.String schemaName, java.lang.String objectName, DatabaseObjectType objectType, int version, java.util.List<Migration> migrations)
Public constructor
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addDependencies(java.util.Collection<IDatabaseObject> obj)
Add the given collection of dependencies to our setvoid
addDependency(IDatabaseObject obj)
Add the given obj as a dependency of this (obj must be created before this, or dropped after this)void
addPrivilege(java.lang.String groupName, Privilege p)
Add the privilege to the named privilege groupvoid
addTag(java.lang.String tagName, java.lang.String tagValue)
Add the tag name/value to the tag map for this objectvoid
addTags(java.util.Map<java.lang.String,java.lang.String> tags)
Add the given tags to our tag mapvoid
applyDistributionRules(ISchemaAdapter target, int pass)
Apply any distribution rules associated with the object (usually a table)void
applyTx(ISchemaAdapter target, SchemaApplyContext context, ITransactionProvider tp, IVersionHistoryService vhs)
Apply the DDL, but within its own transactionvoid
applyVersion(ISchemaAdapter target, SchemaApplyContext context, IVersionHistoryService vhs)
Apply the change, but only if it has a newer version than we already have recorded in the databaseITaskGroup
collect(ITaskCollector tc, ISchemaAdapter target, SchemaApplyContext context, ITransactionProvider tp, IVersionHistoryService vhs)
Collect the tasks into a dependency tree so that they can be executed concurrently (but in the right order)boolean
equals(java.lang.Object other)
void
fetchDependenciesTo(java.util.Collection<IDatabaseObject> out)
Fetch dependencies from this into the given out listjava.lang.String
getName()
Return the unique name for this objectjava.lang.String
getObjectName()
DatabaseObjectType
getObjectType()
The type enum of this objectjava.lang.String
getQualifiedName()
java.lang.String
getSchemaName()
java.util.Map<java.lang.String,java.lang.String>
getTags()
Get the map of tags associated with this object.java.lang.String
getTypeNameVersion()
Get the qualified name for this object: objectType:objectName:objectVersionint
getVersion()
Getter for the schema version number this object applies tovoid
grant(ISchemaAdapter target, java.lang.String groupName, java.lang.String toUser)
Grant the given privileges to the userprotected void
grantGroupPrivileges(ISchemaAdapter target, java.util.Set<Privilege> group, java.lang.String toUser)
Internal method which can be override by different object types which may need to call a different grant method on the adapterint
hashCode()
java.lang.String
toString()
void
visit(java.util.function.Consumer<IDatabaseObject> c)
Visit this object, calling the consumer for itself, or its children if any-
Methods inherited from interface org.linuxforhealth.fhir.database.utils.model.IDatabaseObject
apply, apply, drop, visit, visitReverse
-
-
-
-
Field Detail
-
version
protected final int version
-
migrations
protected final java.util.List<Migration> migrations
-
-
Constructor Detail
-
BaseObject
public BaseObject(java.lang.String schemaName, java.lang.String objectName, DatabaseObjectType objectType, int version)
Public constructor- Parameters:
schemaName
-objectName
-objectType
-version
-
-
BaseObject
public BaseObject(java.lang.String schemaName, java.lang.String objectName, DatabaseObjectType objectType, int version, java.util.List<Migration> migrations)
Public constructor- Parameters:
schemaName
-objectName
-objectType
-version
-
-
-
Method Detail
-
getVersion
public int getVersion()
Description copied from interface:IDatabaseObject
Getter for the schema version number this object applies to- Specified by:
getVersion
in interfaceIDatabaseObject
- Returns:
-
getObjectType
public DatabaseObjectType getObjectType()
Description copied from interface:IDatabaseObject
The type enum of this object- Specified by:
getObjectType
in interfaceIDatabaseObject
- Returns:
-
hashCode
public int hashCode()
- Overrides:
hashCode
in classjava.lang.Object
-
getSchemaName
public java.lang.String getSchemaName()
-
getObjectName
public java.lang.String getObjectName()
-
getQualifiedName
public java.lang.String getQualifiedName()
-
getTypeNameVersion
public java.lang.String getTypeNameVersion()
Description copied from interface:IDatabaseObject
Get the qualified name for this object: objectType:objectName:objectVersion- Specified by:
getTypeNameVersion
in interfaceIDatabaseObject
- Returns:
-
addTags
public void addTags(java.util.Map<java.lang.String,java.lang.String> tags)
Add the given tags to our tag map- Parameters:
tags
-
-
addTag
public void addTag(java.lang.String tagName, java.lang.String tagValue)
Description copied from interface:IDatabaseObject
Add the tag name/value to the tag map for this object- Specified by:
addTag
in interfaceIDatabaseObject
-
equals
public boolean equals(java.lang.Object other)
- Overrides:
equals
in classjava.lang.Object
-
addDependency
public void addDependency(IDatabaseObject obj)
Add the given obj as a dependency of this (obj must be created before this, or dropped after this)- Parameters:
obj
-
-
addDependencies
public void addDependencies(java.util.Collection<IDatabaseObject> obj)
Add the given collection of dependencies to our set- Specified by:
addDependencies
in interfaceIDatabaseObject
- Parameters:
obj
-
-
fetchDependenciesTo
public void fetchDependenciesTo(java.util.Collection<IDatabaseObject> out)
Description copied from interface:IDatabaseObject
Fetch dependencies from this into the given out list- Specified by:
fetchDependenciesTo
in interfaceIDatabaseObject
-
getName
public java.lang.String getName()
Return the unique name for this object- Specified by:
getName
in interfaceIDatabaseObject
- Returns:
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
collect
public ITaskGroup collect(ITaskCollector tc, ISchemaAdapter target, SchemaApplyContext context, ITransactionProvider tp, IVersionHistoryService vhs)
Description copied from interface:IDatabaseObject
Collect the tasks into a dependency tree so that they can be executed concurrently (but in the right order)- Specified by:
collect
in interfaceIDatabaseObject
-
applyTx
public void applyTx(ISchemaAdapter target, SchemaApplyContext context, ITransactionProvider tp, IVersionHistoryService vhs)
Description copied from interface:IDatabaseObject
Apply the DDL, but within its own transaction- Specified by:
applyTx
in interfaceIDatabaseObject
- Parameters:
target
- the target database we apply tocontext
- the context used to modify how the schema objects are appliedtp
- of thread-specific transactionsvhs
- the service interface for adding this object to the version history table
-
applyVersion
public void applyVersion(ISchemaAdapter target, SchemaApplyContext context, IVersionHistoryService vhs)
Description copied from interface:IDatabaseObject
Apply the change, but only if it has a newer version than we already have recorded in the database- Specified by:
applyVersion
in interfaceIDatabaseObject
vhs
- the service used to manage the version history table
-
getTags
public java.util.Map<java.lang.String,java.lang.String> getTags()
Description copied from interface:IDatabaseObject
Get the map of tags associated with this object. Used to find things in the PhysicalDataModel- Specified by:
getTags
in interfaceIDatabaseObject
- Returns:
-
grant
public void grant(ISchemaAdapter target, java.lang.String groupName, java.lang.String toUser)
Description copied from interface:IDatabaseObject
Grant the given privileges to the user- Specified by:
grant
in interfaceIDatabaseObject
-
grantGroupPrivileges
protected void grantGroupPrivileges(ISchemaAdapter target, java.util.Set<Privilege> group, java.lang.String toUser)
Internal method which can be override by different object types which may need to call a different grant method on the adapter- Parameters:
target
-group
-toUser
-
-
addPrivilege
public void addPrivilege(java.lang.String groupName, Privilege p)
Add the privilege to the named privilege group- Parameters:
groupName
-p
-
-
visit
public void visit(java.util.function.Consumer<IDatabaseObject> c)
Description copied from interface:IDatabaseObject
Visit this object, calling the consumer for itself, or its children if any- Specified by:
visit
in interfaceIDatabaseObject
-
applyDistributionRules
public void applyDistributionRules(ISchemaAdapter target, int pass)
Description copied from interface:IDatabaseObject
Apply any distribution rules associated with the object (usually a table)- Specified by:
applyDistributionRules
in interfaceIDatabaseObject
- Parameters:
target
- the target database we apply the operation topass
- multiple pass number
-
-