Beispiel #1
0
    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
Beispiel #2
0
    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()
Beispiel #3
0
    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