3
0

configuration.py 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. """
  2. Copyright (c) Contributors to the Open 3D Engine Project.
  3. For complete copyright and license terms please see the LICENSE at the root of this distribution.
  4. SPDX-License-Identifier: Apache-2.0 OR MIT
  5. """
  6. from __future__ import annotations
  7. import logging
  8. from typing import List
  9. from model import error_messages
  10. from utils import file_utils
  11. logger = logging.getLogger(__name__)
  12. class Configuration(object):
  13. """
  14. Data structure to store the global configuration for resource mapping tool
  15. """
  16. def __init__(self) -> None:
  17. self._config_directory: str = ""
  18. self._config_files: List[str] = []
  19. self._account_id: str = ""
  20. self._region: str = ""
  21. def __str__(self) -> str:
  22. return self._print_format()
  23. def __repr__(self) -> str:
  24. return self._print_format()
  25. def _print_format(self) -> str:
  26. return (f"ConfigFileDirectory:{self._config_directory},ConfigFiles:{self._config_files}"
  27. f"AccountId:{self._account_id},Region:{self._region}")
  28. @property
  29. def config_directory(self) -> str:
  30. return self._config_directory
  31. @config_directory.setter
  32. def config_directory(self, new_config_directory: str) -> None:
  33. if file_utils.check_path_exists(new_config_directory):
  34. self._config_directory = new_config_directory
  35. else:
  36. raise FileNotFoundError(error_messages.FILE_NOT_FOUND_ERROR_MESSAGE.format(new_config_directory))
  37. @property
  38. def config_files(self) -> List[str]:
  39. return self._config_files
  40. @config_files.setter
  41. def config_files(self, new_config_files: List[str]) -> None:
  42. self._config_files.clear()
  43. self._config_files.extend(new_config_files)
  44. @property
  45. def account_id(self) -> str:
  46. return self._account_id
  47. @account_id.setter
  48. def account_id(self, new_account_id: str) -> None:
  49. self._account_id = new_account_id
  50. @property
  51. def region(self) -> str:
  52. return self._region
  53. @region.setter
  54. def region(self, new_region: str) -> None:
  55. self._region = new_region
  56. class ConfigurationBuilder(object):
  57. """
  58. The ConfigurationBuilder class provides a builder pattern for Configuration
  59. """
  60. def __init__(self) -> None:
  61. self._configuration: Configuration = Configuration()
  62. def build(self) -> Configuration:
  63. configuration: Configuration = self._configuration
  64. self.reset()
  65. return configuration
  66. def build_account_id(self, account_id_value: str) -> ConfigurationBuilder:
  67. self._configuration.account_id = account_id_value
  68. return self
  69. def build_config_files(self, config_files_value: List[str]) -> ConfigurationBuilder:
  70. self._configuration.config_files = config_files_value
  71. return self
  72. def build_config_directory(self, config_directory_value: str) -> ConfigurationBuilder:
  73. self._configuration.config_directory = config_directory_value
  74. return self
  75. def build_region(self, region_value: str) -> ConfigurationBuilder:
  76. self._configuration.region = region_value
  77. return self
  78. def reset(self) -> None:
  79. self._configuration = Configuration()