diff --git a/file_handler.py b/file_handler.py
index dce1c6e..209befe 100644
--- a/file_handler.py
+++ b/file_handler.py
@@ -14,6 +14,51 @@ class ItemDescriptor():
self.definition = definition
self.value = value
self.entity_type = entity_type
+class FileDescriptor():
+ def __init__(self, filename, format, version, created_at, updated_at, size) -> None:
+ super().__init__()
+ self.name = filename
+ self.size = None
+ self.format = format
+ self.version = version
+ self.created_at = created_at
+ self.updated_at = updated_at
+ self.size = size
+ self.block_count = 0
+ self.data_array_count = 0
+ self.tag_count = 0
+ self.group_count = 0
+ self.data_frame_count = 0
+
+ def toHtml(self):
+ def namAndPath(filename):
+ parts = filename.split(os.sep)
+ name = parts[-1]
+ path = ""
+ if len(parts) > 1:
+ path = os.sep.join(parts[:-1])
+ return name, path
+
+ name, path = namAndPath(self.name)
+ descr = "
%s
" % name
+ descr += ""
+ descr += "- location: %s
" % (path if len(path) > 1 else ".")
+ descr += "- format: %s
" % (self.format)
+ descr += "- nix format version: %s
" % (str(self.version))
+ descr += "- file size: %.2f MB
" % (self.size)
+ descr += "
"
+ descr += "- File contents
"
+ descr += "- blocks: %i
" % self.block_count
+ descr += "- groups: %i
" % self.group_count
+ descr += "- data arrays: %i
" % self.data_array_count
+ descr += "- data frames: %i
" % self.data_frame_count
+ descr += "- tags: %i
" % self.tag_count
+ descr += "
"
+ descr += "- created at: %s
" % (str(dt.datetime.fromtimestamp(self.created_at)))
+ descr += "- updated at: %s
" % (str(dt.datetime.fromtimestamp(self.updated_at)))
+ descr += "
"
+ descr += ""
+ return descr
class NodeType(Enum):
@@ -86,6 +131,16 @@ class FileHandler(metaclass=Singleton):
try:
self._nix_file = nix.File.open(filename, nix.FileMode.ReadOnly)
self._filename = filename
+ self._file_descriptor = FileDescriptor(self.filename, self._nix_file.format, self._nix_file.version,
+ self._nix_file.created_at, self._nix_file.updated_at, os.path.getsize(self.filename)/1e+6)
+ self.file_descriptor.block_count = len(self._nix_file.blocks)
+ for b in self._nix_file.blocks:
+ self.file_descriptor.data_array_count += len(b.data_arrays)
+ self.file_descriptor.group_count += len(b.groups)
+ self.file_descriptor.tag_count += len(b.tags)
+ self.file_descriptor.tag_count += len(b.multi_tags)
+ if hasattr(b, "data_frames"):
+ self.file_descriptor.data_frame_count += len(b.data_frames)
return True, "Successfully opened file %s." % filename.split(os.sep)[-1]
except RuntimeError as e:
return False, "Failed to open file %s! \n Error message is: %s" % (filename, e)
@@ -100,9 +155,11 @@ class FileHandler(metaclass=Singleton):
self._file_requests = []
self._entity_buffer.clear()
+ @property
def file_descriptor(self):
return ItemDescriptor()
+ return self._file_descriptor
@property
def is_valid(self):