Class FHIRPayloadPersistenceBlobImpl
- java.lang.Object
 - 
- org.linuxforhealth.fhir.persistence.blob.FHIRPayloadPersistenceBlobImpl
 
 
- 
- All Implemented Interfaces:
 FHIRPayloadPersistence
public class FHIRPayloadPersistenceBlobImpl extends java.lang.Object implements FHIRPayloadPersistence
Implementation to store and retrieve FHIR payload data using Azure Blob. 
- 
- 
Field Summary
Fields Modifier and Type Field Description static booleanPAYLOAD_COMPRESSED 
- 
Constructor Summary
Constructors Constructor Description FHIRPayloadPersistenceBlobImpl()Public constructor 
- 
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voiddeletePayload(java.lang.String resourceType, int resourceTypeId, java.lang.String logicalId, java.lang.Integer version, java.lang.String resourcePayloadKey)Delete the payload item.protected BlobManagedContainergetBlobManagedContainer()Get a tenant-specific connection<T extends Resource>
TreadResource(java.lang.Class<T> resourceType, java.lang.String rowResourceTypeName, int resourceTypeId, java.lang.String logicalId, int version, java.lang.String resourcePayloadKey, java.util.List<java.lang.String> elements)Retrieve the payload data for the given resourceTypeId, logicalId and version.<T extends Resource>
java.util.concurrent.CompletableFuture<ResourceResult<? extends Resource>>readResourceAsync(java.lang.Class<T> resourceType, java.lang.String rowResourceTypeName, int resourceTypeId, java.lang.String logicalId, int version, java.lang.String resourcePayloadKey, java.time.Instant lastUpdated, java.util.List<java.lang.String> elements)Async retrieval of the payload data for the given resourceTypeId, logicalId and version.PayloadPersistenceResponsestorePayload(java.lang.String resourceType, int resourceTypeId, java.lang.String logicalId, int version, java.lang.String resourcePayloadKey, Resource resource)Store the payload. 
 - 
 
- 
- 
Field Detail
- 
PAYLOAD_COMPRESSED
public static final boolean PAYLOAD_COMPRESSED
- See Also:
 - Constant Field Values
 
 
 - 
 
- 
Method Detail
- 
getBlobManagedContainer
protected BlobManagedContainer getBlobManagedContainer()
Get a tenant-specific connection 
- 
storePayload
public PayloadPersistenceResponse storePayload(java.lang.String resourceType, int resourceTypeId, java.lang.String logicalId, int version, java.lang.String resourcePayloadKey, Resource resource) throws FHIRPersistenceException
Description copied from interface:FHIRPayloadPersistenceStore the payload. The business key is the tuple {resourceTypeId, logicalId, version} This data is stored directly, and should ideally be compressed.- Specified by:
 storePayloadin interfaceFHIRPayloadPersistence- Parameters:
 resourceType- the type name of the resourceresourceTypeId- the database id assigned to this resource typelogicalId- the logical id of the resourceversion- the version of the resourceresourcePayloadKey- the unique key used to tie this to the RDBMS recordresource- the resource to store- Returns:
 - the payload key details and future result status.
 - Throws:
 FHIRPersistenceException
 
- 
readResource
public <T extends Resource> T readResource(java.lang.Class<T> resourceType, java.lang.String rowResourceTypeName, int resourceTypeId, java.lang.String logicalId, int version, java.lang.String resourcePayloadKey, java.util.List<java.lang.String> elements) throws FHIRPersistenceException
Description copied from interface:FHIRPayloadPersistenceRetrieve the payload data for the given resourceTypeId, logicalId and version. Synchronous.- Specified by:
 readResourcein interfaceFHIRPayloadPersistence- Parameters:
 resourceType- the expected resource type classrowResourceTypeName- the resource type name of the resource read from the database (matching the resourceTypeId)resourceTypeId- the unique int identifier for the resource type namelogicalId- the logical identifier of the desired resourceversion- the specific version of the desired resourceresourcePayloadKey- the resource payload key connecting the entry to the RDBMS recordelements- to filter elements within the resource - can be null- Returns:
 - the fhirResourcePayload exactly as it was provided to 
#storePayload(String, int, String, int, String, byte[]) - Throws:
 FHIRPersistenceException
 
- 
readResourceAsync
public <T extends Resource> java.util.concurrent.CompletableFuture<ResourceResult<? extends Resource>> readResourceAsync(java.lang.Class<T> resourceType, java.lang.String rowResourceTypeName, int resourceTypeId, java.lang.String logicalId, int version, java.lang.String resourcePayloadKey, java.time.Instant lastUpdated, java.util.List<java.lang.String> elements) throws FHIRPersistenceException
Description copied from interface:FHIRPayloadPersistenceAsync retrieval of the payload data for the given resourceTypeId, logicalId and version.- Specified by:
 readResourceAsyncin interfaceFHIRPayloadPersistencelastUpdated- the last modification time of the resource in the RDBMS record- Returns:
 - Throws:
 FHIRPersistenceException
 
- 
deletePayload
public void deletePayload(java.lang.String resourceType, int resourceTypeId, java.lang.String logicalId, java.lang.Integer version, java.lang.String resourcePayloadKey) throws FHIRPersistenceExceptionDescription copied from interface:FHIRPayloadPersistenceDelete the payload item. This may be called to clean up after a failed transaction or by the reconciliation process when it finds an orphaned record. when performing a hard delete on a resource.- Specified by:
 deletePayloadin interfaceFHIRPayloadPersistenceversion- the version id, or null for all versionsresourcePayloadKey- the key to make sure the entry matches the RDBMS record- Throws:
 FHIRPersistenceException
 
 - 
 
 -