#1714: apply recommended changes with removing get methods and using the properties directly

This commit is contained in:
Czar Echavez
2023-08-07 16:20:55 +01:00
parent 554619e4b4
commit a4c193cd34
8 changed files with 96 additions and 122 deletions

View File

@@ -10,7 +10,7 @@ class SimComponent(BaseModel):
"""Extension of pydantic BaseModel with additional methods that must be defined by all classes in the simulator."""
uuid: str
"The component UUID."
"""The component UUID."""
def __init__(self, **kwargs):
if not kwargs.get("uuid"):

View File

@@ -31,7 +31,7 @@ class FileSystem(SimComponent):
def create_file(
self,
file_name: str,
file_size: Optional[float] = None,
size: Optional[float] = None,
file_type: Optional[FileSystemFileType] = None,
folder: Optional[FileSystemFolder] = None,
folder_uuid: Optional[str] = None,
@@ -39,14 +39,14 @@ class FileSystem(SimComponent):
"""
Creates a FileSystemFile and adds it to the list of files.
If no file_size or file_type are provided, one will be chosen randomly.
If no size or file_type are provided, one will be chosen randomly.
If no folder_uuid or folder is provided, a new folder will be created.
:param: file_name: The file name
:type: file_name: str
:param: file_size: The size the file takes on disk.
:type: file_size: Optional[float]
:param: size: The size the file takes on disk.
:type: size: Optional[float]
:param: file_type: The type of the file
:type: Optional[FileSystemFileType]
@@ -69,17 +69,17 @@ class FileSystem(SimComponent):
folder = self.get_folder_by_id(folder_uuid)
if folder is not None:
file = FileSystemFile(item_name=file_name, item_size=file_size, file_type=file_type)
file = FileSystemFile(name=file_name, size=size, file_type=file_type)
folder.add_file(file=file)
else:
# check if a "root" folder exists
folder = self.get_folder_by_name("root")
if folder is None:
# create a root folder
folder = FileSystemFolder(item_name="root")
folder = FileSystemFolder(name="root")
# add file to root folder
file = FileSystemFile(item_name=file_name, item_size=file_size, file_type=file_type)
file = FileSystemFile(name=file_name, size=size, file_type=file_type)
folder.add_file(file)
self.folders[folder.uuid] = folder
return file
@@ -94,7 +94,7 @@ class FileSystem(SimComponent):
:param: folder_name: The name of the folder
:type: folder_name: str
"""
folder = FileSystemFolder(item_name=folder_name)
folder = FileSystemFolder(name=folder_name)
self.folders[folder.uuid] = folder
return folder
@@ -185,7 +185,7 @@ class FileSystem(SimComponent):
def get_file_by_id(self, file_id: str) -> FileSystemFile:
"""Checks if the file exists in any file system folders."""
for key in self.folders:
file = self.folders[key].get_file(file_id=file_id)
file = self.folders[key].get_file_by_id(file_id=file_id)
if file is not None:
return file
@@ -197,7 +197,7 @@ class FileSystem(SimComponent):
"""
matching_folder = None
for key in self.folders:
if self.folders[key].get_folder_name() == folder_name:
if self.folders[key].name == folder_name:
matching_folder = self.folders[key]
break
return matching_folder

View File

@@ -15,17 +15,17 @@ class FileSystemFile(FileSystemItem):
"""
Initialise FileSystemFile class.
:param item_name: The name of the file.
:type item_name: str
:param name: The name of the file.
:type name: str
:param file_type: The FileSystemFileType of the file
:type file_type: Optional[FileSystemFileType]
:param item_size: The size of the FileSystemItem
:type item_size: Optional[float]
:param size: The size of the FileSystemItem
:type size: Optional[float]
"""
# set random file type if none provided
if kwargs.get("item_name") is None:
if kwargs.get("name") is None:
raise Exception("File name not provided.")
# set random file type if none provided
@@ -33,23 +33,11 @@ class FileSystemFile(FileSystemItem):
kwargs["file_type"] = choice(list(FileSystemFileType))
# set random file size if none provided
if kwargs.get("item_size") is None:
kwargs["item_size"] = float(randint(1, file_type_sizes_KB[kwargs["file_type"]]))
if kwargs.get("size") is None:
kwargs["size"] = float(randint(1, file_type_sizes_KB[kwargs["file_type"]]))
super().__init__(**kwargs)
def get_file_name(self) -> str:
"""Returns the name of the file."""
return self.item_name
def get_file_size(self) -> float:
"""Returns the size of the file system item."""
return self.item_size
def get_file_type(self) -> FileSystemFileType:
"""Returns the FileSystemFileType of the file."""
return self.file_type
def describe_state(self) -> Dict:
"""
Get the current state of the FileSystemFile as a dict.

View File

@@ -16,31 +16,18 @@ class FileSystemFolder(FileSystemItem):
is_quarantined: bool = False
"""Flag that marks the folder as quarantined if true."""
def get_folder_name(self) -> str:
"""Returns the item_name of the folder."""
return self.item_name
def get_folder_size(self) -> float:
"""Returns the item_size of the folder."""
return self.item_size
def get_files(self) -> Dict:
"""Returns the files dictionary."""
return self.files
def get_file(self, file_id: str) -> FileSystemFile:
def get_file_by_id(self, file_id: str) -> FileSystemFile:
"""Return a FileSystemFile with the matching id."""
return self.files[file_id]
return self.files.get(file_id)
def add_file(self, file: FileSystemFile):
"""Adds a file to the folder list."""
if file is None or not isinstance(file, FileSystemFile):
raise Exception(f"Invalid file: {file}")
self.item_size += file.get_file_size()
# add to list
self.files[file.uuid] = file
self.size += file.size
def remove_file(self, file: Optional[FileSystemFile]):
"""
@@ -57,8 +44,7 @@ class FileSystemFolder(FileSystemItem):
if self.files.get(file.uuid):
del self.files[file.uuid]
# remove folder size from folder
self.item_size -= file.get_file_size()
self.size -= file.size
else:
_LOGGER.debug(f"File with UUID {file.uuid} was not found.")

View File

@@ -6,11 +6,11 @@ from primaite.simulator.core import SimComponent
class FileSystemItem(SimComponent):
"""Abstract base class for FileSystemItems used in the file system simulation."""
item_size: float = 0
"""The size the item takes up on disk."""
name: str
"""The name of the FileSystemItem."""
item_name: str
"""The name of the file system item."""
size: float = 0
"""The size the item takes up on disk."""
def describe_state(self) -> Dict:
"""Returns the state of the FileSystemItem."""