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 += "
  1. location: %s
  2. " % (path if len(path) > 1 else ".") + descr += "
  3. format: %s
  4. " % (self.format) + descr += "
  5. nix format version: %s
  6. " % (str(self.version)) + descr += "
  7. file size: %.2f MB
  8. " % (self.size) + descr += "
    " + descr += "
  9. File contents
  10. " + descr += "
  11. blocks: %i
  12. " % self.block_count + descr += "
  13. groups: %i
  14. " % self.group_count + descr += "
  15. data arrays: %i
  16. " % self.data_array_count + descr += "
  17. data frames: %i
  18. " % self.data_frame_count + descr += "
  19. tags: %i
  20. " % self.tag_count + descr += "
    " + descr += "
  21. created at: %s
  22. " % (str(dt.datetime.fromtimestamp(self.created_at))) + descr += "
  23. updated at: %s
  24. " % (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):