def configure_factory_properties(self, language, property_definition_str): """ Configures ConfigModelFactory type mapping from the provided configuration formatted strings @param property_definition_str: The string containing information about class definitions @type property_definition_str: String @return: Modified shared instance of ConfigModelFactory @rtype: ConfigModelFactory """ parser = get_parser(language) property_definitions_raw = parser.loads(property_definition_str) # Convert dictionaries to class definitions and property definitions property_factory = PropertyDefinitionLoader.get_instance() property_definitions = property_factory.get_properties(property_definitions_raw) # Get the current factory factory = config_model.ConfigModelFactory.get_instance() factory.add_property_definitions(property_definitions) return factory
def load_factory_from_config(self, language, guiding_configuration): """ Loads a single configuration to drive the creation of a ConfigModelFactory @param guiding_configuration: Encoded string with configuration containing other configuration files to use @type guiding_configuration: String @return: Modified shared instance of ConfigModelFactory @rtype: ConfigModelFactory """ parser = get_parser(language) overall_configuration = parser.loads(guiding_configuration) # Check for desired properties if not "classes" in overall_configuration: raise ValueError("No classes configuration specified") if not "properties" in overall_configuration: raise ValueError("No properties configuration specified") # Find directories class_definition_dir = overall_configuration["classes"] properties_definition_dir = overall_configuration["properties"] # Load files # WARNING: language name passed as file extension (yaml -> .yaml) for filename in self.__get_files_from_dir(class_definition_dir, language): with open(filename) as f: self.configure_factory_classes(language, f.read()) for filename in self.__get_files_from_dir(properties_definition_dir, language): with open(filename) as f: self.configure_factory_properties(language, f.read()) # Create factory return config_model.ConfigModelFactory.get_instance()
def configure_factory_classes(self, language, class_definition_str): """ Configures ConfigModelFactory models from the provided configuration formatted strings @param language: The language the config files are written in @type language: String @param class_definition_str: The string containing information about class definitions @type class_definition_str: String @return: Modified shared instance of ConfigModelFactory @rtype: ConfigModelFactory """ parser = get_parser(language) class_definitions_raw = parser.loads(class_definition_str) # Convert dictionaries to class definitions and property definitions class_factory = ClassDefinitionFactory.get_instance() class_defintions = class_factory.get_classes(class_definitions_raw) # Get the current factory factory = config_model.ConfigModelFactory.get_instance() factory.add_class_definitions(class_defintions) return factory