Overview of Logical Record types¶
There are two main types of logical records: Explicitly Formatted Logical Records (EFLRs) and Indirectly Formatted Logical Records (IFLRs).
The Storage Unit Label, the first record in the file,
could also be viewed as a logical record. However, due to functional discrepancies,
in the library, it does not inherit from the base LogicalRecord
class; on the other hand,
it is implemented such that it can mock one and can be used alongside with actual LogicalRecord
objects.
An overview of the types of logical records is shown below.
Logical Record types diagram¶
---
---
classDiagram
LogicalRecord <|-- EFLRSet
LogicalRecord <|-- IFLR
IFLR <|-- FrameData
IFLR <|-- NoFormatFrameData
EFLRSet o-- "1..*" EFLRItem
EFLRItem --> EFLRSet
class LogicalRecord{
+Enum logical_record_type
+bytes lr_type_struct
+bool is_eflr
+represent_as_bytes()
}
class EFLRSet{
+type item_type
+str eflr_name
+re.Pattern eflr_name_pattern
+str set_type
+str set_name
+int origin_reference
+int n_items
+clear_eflr_item_list()
+clear_set_instance_dict()
+register_item()
+get_all_eflr_items()
+get_or_make_set()
+get_all_sets()
}
class EFLRItem{
+type parent_eflr_class
+str name
+EFLRSet parent
+int origin_reference
+int copy_number
+dict attributes
+bytes obname
+make_item_body_bytes()
+set_attributes()
}
class StorageUnitLabel{
+str storage_unit_structure
+str dlis_version
+int max_record_length_limit
+int max_record_length
+int sequence_number
+str set_identifier
+represent_as_bytes()
}