eigene Abstrakte Klasse für alle Config basierten Abfragen eingeführt
This commit is contained in:
+34
-30
@@ -5,8 +5,8 @@ from configparser import ConfigParser
|
||||
"""
|
||||
Diese Lib verwaltet alle Config dateien (als .cfg oder als .json) von CreoMigrate
|
||||
"""
|
||||
class GeneralConfig:
|
||||
"""Klasse mit generellen Methoden für alle Config Objekte"""
|
||||
class JsonBasedConfig:
|
||||
"""Klasse mit generellen Methoden für alle Config Objekte mit json files"""
|
||||
def __init__(self, config_dir, config_file):
|
||||
"""merke dir den Pfad zu den Configdateien"""
|
||||
self.config_path = os.path.join(config_dir, config_file)
|
||||
@@ -20,12 +20,8 @@ class GeneralConfig:
|
||||
"""nimm den Json String zur Initialisierung des Objektes"""
|
||||
return json.loads(json_str)
|
||||
|
||||
def from_cfg_str(self, cfg_str, config):
|
||||
"""nimm den Json String zur Initialisierung des Objektes"""
|
||||
config.read_string(cfg_str)
|
||||
|
||||
|
||||
class TOSGroupsConfig(GeneralConfig):
|
||||
class TOSGroupsConfig(JsonBasedConfig):
|
||||
"""Auslesen der Config Angaben zu den TOS Gruppen"""
|
||||
|
||||
def __init__(self, config_dir='.', config_file='TOS-Gruppen.json'):
|
||||
@@ -76,7 +72,7 @@ class TOSGroupsConfig(GeneralConfig):
|
||||
self.tos_hierarchy = super().from_json(json_str)
|
||||
|
||||
|
||||
class MaterialTransConfig(GeneralConfig):
|
||||
class MaterialTransConfig(JsonBasedConfig):
|
||||
"""Auslesen der Config zu allen Materialangaben"""
|
||||
|
||||
def __init__(self, config_dir='.', config_file='Materialübersetzung.json'):
|
||||
@@ -104,10 +100,35 @@ class MaterialTransConfig(GeneralConfig):
|
||||
return self.materials[mat]
|
||||
|
||||
|
||||
class WerkstoffeConfig(GeneralConfig):
|
||||
|
||||
class IniBasedConfig:
|
||||
"""Klasse mit generellen Methoden für alle Config Objekte mit .cfg/.ini files"""
|
||||
def __init__(self, config_dir, config_file):
|
||||
"""merke dir den Pfad zu den Configdateien"""
|
||||
self.config_path = os.path.join(config_dir, config_file)
|
||||
self.isInitalized = False
|
||||
self.config = ConfigParser(allow_no_value=True)
|
||||
self.config.optionxform = lambda option: option # preserve case for letters
|
||||
|
||||
def from_cfg_str(self, cfg_str):
|
||||
"""nimm den config String zur Initialisierung des Objektes"""
|
||||
self.config.read_string(cfg_str)
|
||||
self.isInitalized = True
|
||||
|
||||
def load_cfg_from_file(self):
|
||||
"""lade das config file vom gegeben Pfad"""
|
||||
self.config.read(self.config_path)
|
||||
self.isInitalized = True
|
||||
|
||||
def isInitalized(self):
|
||||
return self.isInitalized
|
||||
|
||||
def get_section_options(self, section_name):
|
||||
return self.config.options(section_name)
|
||||
|
||||
class WerkstoffeConfig(IniBasedConfig):
|
||||
"""Auslesen der Config zu allen Werkstoffen"""
|
||||
def __init__(self, config_dir='.', config_file='Werkstoff.cfg'):
|
||||
self.wkstoff_config_parser = None
|
||||
super().__init__(config_dir, config_file)
|
||||
|
||||
def get_werkstoffe_of_type(self, wtype):
|
||||
@@ -121,26 +142,9 @@ class WerkstoffeConfig(GeneralConfig):
|
||||
siehe Hersteller
|
||||
|
||||
"""
|
||||
if not self.wkstoff_config_parser:
|
||||
self.load_cfg_from_file()
|
||||
return self.wkstoff_config_parser.options(wtype)
|
||||
|
||||
def from_json(self, json_str):
|
||||
pass
|
||||
|
||||
def from_cfg_str(self, cfg_str):
|
||||
"""if you have to deal with a .cfg file """
|
||||
config = ConfigParser(allow_no_value=True)
|
||||
config.optionxform = lambda option: option # preserve case for letters
|
||||
self.wkstoff_config_parser = config
|
||||
super().from_cfg_str(cfg_str, self.wkstoff_config_parser)
|
||||
|
||||
def load_cfg_from_file(self):
|
||||
"""lade das config file vom gegeben Pfad"""
|
||||
config = ConfigParser(allow_no_value=True)
|
||||
config.optionxform = lambda option: option # preserve case for letters
|
||||
config.read(self.config_path)
|
||||
self.wkstoff_config_parser = config
|
||||
if not super().isInitalized():
|
||||
super().load_cfg_from_file()
|
||||
return super().get_section_options(wtype)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
||||
Reference in New Issue
Block a user