Package org.ehrbase.dao.access.jooq
Class FolderAccess
- java.lang.Object
-
- org.ehrbase.dao.access.support.DataAccess
-
- org.ehrbase.dao.access.jooq.FolderAccess
-
- All Implemented Interfaces:
Comparable<FolderAccess>,I_DomainAccess,I_FolderAccess,I_SimpleCRUD
public class FolderAccess extends DataAccess implements I_FolderAccess, Comparable<FolderAccess>
-
-
Field Summary
-
Fields inherited from interface org.ehrbase.dao.access.interfaces.I_DomainAccess
DBCP2_POOL, KEY_AUTO_RECONNECT, KEY_CONNECTION_MODE, KEY_DATABASE, KEY_DIALECT, KEY_HOST, KEY_INITIAL_CONNECTIONS, KEY_INTROSPECT_CACHE, KEY_KNOWLEDGE, KEY_LOG_ABANDONNED, KEY_LOGIN, KEY_MAX_ACTIVE, KEY_MAX_CONNECTION, KEY_MAX_IDLE, KEY_PASSWORD, KEY_PORT, KEY_REMOVE_ABANDONNED, KEY_REMOVE_ABANDONNED_TIMEOUT, KEY_SCHEMA, KEY_SET_MAX_PREPARED_STATEMENTS, KEY_SET_POOL_PREPARED_STATEMENTS, KEY_TEST_ON_BORROW, KEY_URL, KEY_WAIT_MS, PG_POOL
-
-
Constructor Summary
Constructors Constructor Description FolderAccess(I_DomainAccess domainAccess)ConstructorsFolderAccess(I_DomainAccess domainAccess, UUID ehrId, I_ContributionAccess contributionAccess)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static I_FolderAccessbuildNewFolderAccessHierarchy(I_DomainAccess domainAccess, com.nedap.archie.rm.directory.Folder folder, org.joda.time.DateTime timeStamp, UUID ehrId, I_ContributionAccess contributionAccess)Builds a folderAccess hierarchy recursively by iterating over all sub folders of given folder instance.static I_FolderAccessbuildPlainFolderAccess(I_DomainAccess domainAccess, com.nedap.archie.rm.directory.Folder folder, org.joda.time.DateTime dateTime, UUID ehrId, I_ContributionAccess contributionAccess)Builds the FolderAccess with the collection of subfolders empty.UUIDcommit()storeComposition a new entry in the DB, using a default transaction time
only implemented with "root" tables: ehr, contribution and composition!UUIDcommit(Timestamp transactionTime)storeComposition a new entry in the DBUUIDcommit(Timestamp transactionTime, UUID contributionId)Additional commit method to store a new entry of folder to the database and get all of inserted sub folders connected by one contribution which has been created before.intcompareTo(FolderAccess o)Integerdelete()delete the Versioned Object associated with the instance implementing this Data Access Interface.I_ContributionAccessgetContributionAccess()DataAccessgetDataAccess()com.nedap.archie.rm.datastructures.ItemStructuregetDetails()Get the details stored as a part of the givenFolderUUIDgetEhrId()Getters and Setters for the FolderRecord to storeStringgetFolderArchetypeNodeId()com.nedap.archie.rm.datastructures.ItemStructuregetFolderDetails()UUIDgetFolderId()StringgetFolderName()AbstractMap.SimpleEntry<OffsetDateTime,OffsetDateTime>getFolderSysPeriod()TimestampgetFolderSysTransaction()UUIDgetInContribution()List<com.nedap.archie.rm.support.identification.ObjectRef>getItems()Get the items references stored as a part of the givenFolderstatic IntegergetLastVersionNumber(I_DomainAccess domainAccess, UUID folderId)Returns the last version number of a given folder by counting all previous versions of a given folder id.static I_FolderAccessgetNewFolderAccessInstance(I_DomainAccess domainAccess, com.nedap.archie.rm.directory.Folder folder, org.joda.time.DateTime dateTime, UUID ehrId)Builds theI_FolderAccessfor persisting theFolderprovided as param.Map<UUID,I_FolderAccess>getSubfoldersList()Get the list of subfolders for theFolderthat corresponds to thisI_FolderAccessstatic booleanhasPreviousVersion(I_DomainAccess domainAccess, UUID folderId)Checks if there are existing entries for given folder uuid at the folder history table.booleanisFolderActive()static I_FolderAccessretrieveInstanceForExistingFolder(I_DomainAccess domainAccess, UUID folderId)Retrieve instance ofI_FolderAccesswith the information needed retrieve the folder and its sub-folders.voidsetContributionAccess(I_ContributionAccess contributionAccess)voidsetDetails(com.nedap.archie.rm.datastructures.ItemStructure details)Set the details stored as a part of the givenFoldervoidsetEhrId(UUID ehrId)voidsetFolderDetails(com.nedap.archie.rm.datastructures.ItemStructure folderDetails)voidsetFolderId(UUID folderId)voidsetFolderName(String folderName)voidsetFolderNArchetypeNodeId(String folderArchetypeNodeId)voidsetFolderSysPeriod(AbstractMap.SimpleEntry<OffsetDateTime,OffsetDateTime> folderSysPeriod)voidsetFolderSysTransaction(Timestamp folderSysTransaction)voidsetInContribution(UUID inContribution)voidsetIsFolderActive(boolean folderActive)voidsetSubfoldersList(Map<UUID,I_FolderAccess> subfolders)Booleanupdate()updateComposition the current entry using time now as the system transaction time
only implemented at root level object (contribution, composition, ehr).Booleanupdate(Boolean force)updateComposition the current entry using time now as the system transaction time
only implemented at root level object (contribution, composition, ehr).Booleanupdate(Timestamp transactionTime)Data Access and modification methodsBooleanupdate(Timestamp transactionTime, boolean force)updateComposition the current entry even if the record is not modified
intended to be used with temporal tables to ensure that a set of interdependent tables are updated in sync.-
Methods inherited from class org.ehrbase.dao.access.support.DataAccess
getConnection, getContext, getDialect, getIntrospectService, getKnowledgeManager, getServerConfig, releaseConnection
-
-
-
-
Constructor Detail
-
FolderAccess
public FolderAccess(I_DomainAccess domainAccess)
Constructors
-
FolderAccess
public FolderAccess(I_DomainAccess domainAccess, UUID ehrId, I_ContributionAccess contributionAccess)
-
-
Method Detail
-
update
public Boolean update(Timestamp transactionTime)
Data Access and modification methods- Specified by:
updatein interfaceI_SimpleCRUD- Returns:
-
update
public Boolean update(Timestamp transactionTime, boolean force)
Description copied from interface:I_SimpleCRUDupdateComposition the current entry even if the record is not modified
intended to be used with temporal tables to ensure that a set of interdependent tables are updated in sync. This approach is used to simplify versions retrieval.- Specified by:
updatein interfaceI_SimpleCRUD- Returns:
-
update
public Boolean update()
Description copied from interface:I_SimpleCRUDupdateComposition the current entry using time now as the system transaction time
only implemented at root level object (contribution, composition, ehr). depending on the implementation, records are updated only if one or more field(s) have been changed- Specified by:
updatein interfaceI_SimpleCRUD- Returns:
-
update
public Boolean update(Boolean force)
Description copied from interface:I_SimpleCRUDupdateComposition the current entry using time now as the system transaction time
only implemented at root level object (contribution, composition, ehr). depending on the implementation, records are updated only if one or more field(s) have been changed- Specified by:
updatein interfaceI_SimpleCRUD- Returns:
-
delete
public Integer delete()
Description copied from interface:I_SimpleCRUDdelete the Versioned Object associated with the instance implementing this Data Access Interface. Relies on ON DELETE CASCADE- Specified by:
deletein interfaceI_SimpleCRUD- Returns:
-
commit
public UUID commit()
Description copied from interface:I_SimpleCRUDstoreComposition a new entry in the DB, using a default transaction time
only implemented with "root" tables: ehr, contribution and composition!- Specified by:
commitin interfaceI_SimpleCRUD- Returns:
- the UUID of the newly created record
-
commit
public UUID commit(Timestamp transactionTime)
Description copied from interface:I_SimpleCRUDstoreComposition a new entry in the DB- Specified by:
commitin interfaceI_SimpleCRUD- Returns:
- the UUID of the newly created record
-
commit
public UUID commit(Timestamp transactionTime, UUID contributionId)
Additional commit method to store a new entry of folder to the database and get all of inserted sub folders connected by one contribution which has been created before.- Specified by:
commitin interfaceI_FolderAccess- Parameters:
transactionTime- - Timestamp which will be applied to all folder sys_transaction valuescontributionId- - ID of contribution for CREATE applied to all folders that will be created- Returns:
- UUID of the new created root folder
-
retrieveInstanceForExistingFolder
public static I_FolderAccess retrieveInstanceForExistingFolder(I_DomainAccess domainAccess, UUID folderId)
Retrieve instance ofI_FolderAccesswith the information needed retrieve the folder and its sub-folders.- Parameters:
domainAccess- providing the information about the DB connection.folderId-UUIDof theFolderto be fetched from the DB.- Returns:
- the
I_FolderAccessthat provides DB access to theFolderthat corresponds to the provided folderId param. - Throws:
Exception
-
getNewFolderAccessInstance
public static I_FolderAccess getNewFolderAccessInstance(I_DomainAccess domainAccess, com.nedap.archie.rm.directory.Folder folder, org.joda.time.DateTime dateTime, UUID ehrId)
Builds theI_FolderAccessfor persisting theFolderprovided as param.- Parameters:
domainAccess- providing the information about the DB connection.folder- to define theI_FolderAccessthat allows its DB access.dateTime- that will be set as transaction date when theFolderis persistedehrId- of theEhrthat references theFolderprovided as param.- Returns:
I_FolderAccesswith the information to persist the providedFolder
-
buildPlainFolderAccess
public static I_FolderAccess buildPlainFolderAccess(I_DomainAccess domainAccess, com.nedap.archie.rm.directory.Folder folder, org.joda.time.DateTime dateTime, UUID ehrId, I_ContributionAccess contributionAccess)
Builds the FolderAccess with the collection of subfolders empty.- Parameters:
domainAccess- providing the information about the DB connection.folder- to define a correspondingI_FolderAccessfor allowing its persistence.dateTime- that will be set as transaction date when theFolderis persistedehrId- of theEhrthat references thisFolder- Returns:
I_FolderAccesswith the information to persist the providedFolder
-
buildNewFolderAccessHierarchy
public static I_FolderAccess buildNewFolderAccessHierarchy(I_DomainAccess domainAccess, com.nedap.archie.rm.directory.Folder folder, org.joda.time.DateTime timeStamp, UUID ehrId, I_ContributionAccess contributionAccess)
Builds a folderAccess hierarchy recursively by iterating over all sub folders of given folder instance. This works for all folders, i.e. from root for an insert as well for a sub folder hierarchy for update.- Parameters:
domainAccess- - DB connection contextfolder- - Folder to create access fortimeStamp- - Current time for transaction auditehrId- - Corresponding EHRcontributionAccess- - Contribution instance for creation of all folders- Returns:
- FolderAccess instance for folder
-
getLastVersionNumber
public static Integer getLastVersionNumber(I_DomainAccess domainAccess, UUID folderId)
Returns the last version number of a given folder by counting all previous versions of a given folder id. If there are no previous versions in the history table the version number will be 1. Otherwise the current version equals the count of entries in the folder history table plus 1.- Parameters:
domainAccess- - Database connection access contextfolderId- - UUID of the folder to check for the last version- Returns:
- Latest version number for the folder
-
hasPreviousVersion
public static boolean hasPreviousVersion(I_DomainAccess domainAccess, UUID folderId)
Checks if there are existing entries for given folder uuid at the folder history table. If there are entries existing, the folder has been modified during previous actions and there are older versions existing.- Parameters:
domainAccess- - Database connection access contextfolderId- - UUID of folder to check- Returns:
- Folder has previous versions or not
-
getEhrId
public UUID getEhrId()
Getters and Setters for the FolderRecord to store
-
setEhrId
public void setEhrId(UUID ehrId)
-
getContributionAccess
public I_ContributionAccess getContributionAccess()
-
setContributionAccess
public void setContributionAccess(I_ContributionAccess contributionAccess)
-
setSubfoldersList
public void setSubfoldersList(Map<UUID,I_FolderAccess> subfolders)
-
getSubfoldersList
public Map<UUID,I_FolderAccess> getSubfoldersList()
Description copied from interface:I_FolderAccessGet the list of subfolders for theFolderthat corresponds to thisI_FolderAccess- Specified by:
getSubfoldersListin interfaceI_FolderAccess- Returns:
- Map
whose key is the UUID of the child Folder, and whose value is the I_FolderAccess for the childFolder.
-
setDetails
public void setDetails(com.nedap.archie.rm.datastructures.ItemStructure details)
Description copied from interface:I_FolderAccessSet the details stored as a part of the givenFolder- Specified by:
setDetailsin interfaceI_FolderAccess
-
getDetails
public com.nedap.archie.rm.datastructures.ItemStructure getDetails()
Description copied from interface:I_FolderAccessGet the details stored as a part of the givenFolder- Specified by:
getDetailsin interfaceI_FolderAccess- Returns:
- details of the
Folderthat corresponds to thisI_FolderAccess
-
getItems
public List<com.nedap.archie.rm.support.identification.ObjectRef> getItems()
Description copied from interface:I_FolderAccessGet the items references stored as a part of the givenFolder- Specified by:
getItemsin interfaceI_FolderAccess- Returns:
- items of the
Folderthat corresponds to thisI_FolderAccess
-
getFolderId
public UUID getFolderId()
- Specified by:
getFolderIdin interfaceI_FolderAccess
-
setFolderId
public void setFolderId(UUID folderId)
- Specified by:
setFolderIdin interfaceI_FolderAccess
-
getInContribution
public UUID getInContribution()
- Specified by:
getInContributionin interfaceI_FolderAccess
-
setInContribution
public void setInContribution(UUID inContribution)
- Specified by:
setInContributionin interfaceI_FolderAccess
-
getFolderName
public String getFolderName()
- Specified by:
getFolderNamein interfaceI_FolderAccess
-
setFolderName
public void setFolderName(String folderName)
- Specified by:
setFolderNamein interfaceI_FolderAccess
-
getFolderArchetypeNodeId
public String getFolderArchetypeNodeId()
- Specified by:
getFolderArchetypeNodeIdin interfaceI_FolderAccess
-
setFolderNArchetypeNodeId
public void setFolderNArchetypeNodeId(String folderArchetypeNodeId)
- Specified by:
setFolderNArchetypeNodeIdin interfaceI_FolderAccess
-
isFolderActive
public boolean isFolderActive()
- Specified by:
isFolderActivein interfaceI_FolderAccess
-
setIsFolderActive
public void setIsFolderActive(boolean folderActive)
- Specified by:
setIsFolderActivein interfaceI_FolderAccess
-
getFolderDetails
public com.nedap.archie.rm.datastructures.ItemStructure getFolderDetails()
- Specified by:
getFolderDetailsin interfaceI_FolderAccess
-
setFolderDetails
public void setFolderDetails(com.nedap.archie.rm.datastructures.ItemStructure folderDetails)
- Specified by:
setFolderDetailsin interfaceI_FolderAccess
-
setFolderSysTransaction
public void setFolderSysTransaction(Timestamp folderSysTransaction)
- Specified by:
setFolderSysTransactionin interfaceI_FolderAccess
-
getFolderSysTransaction
public Timestamp getFolderSysTransaction()
- Specified by:
getFolderSysTransactionin interfaceI_FolderAccess
-
getFolderSysPeriod
public AbstractMap.SimpleEntry<OffsetDateTime,OffsetDateTime> getFolderSysPeriod()
- Specified by:
getFolderSysPeriodin interfaceI_FolderAccess
-
setFolderSysPeriod
public void setFolderSysPeriod(AbstractMap.SimpleEntry<OffsetDateTime,OffsetDateTime> folderSysPeriod)
- Specified by:
setFolderSysPeriodin interfaceI_FolderAccess
-
getDataAccess
public DataAccess getDataAccess()
- Specified by:
getDataAccessin interfaceI_DomainAccess
-
compareTo
public int compareTo(FolderAccess o)
- Specified by:
compareToin interfaceComparable<FolderAccess>
-
-