#!/usr/bin/python3.5
# -*-coding:Utf-8 -*

#==============================================================================
# TENET: config
#------------------------------------------------------------------------------
# Class grouping the configuration data 
#==============================================================================

#==============================================================================
# Importing required modules
#==============================================================================

from lxml import etree


#==============================================================================
# Default Values
#==============================================================================

# Dev Tests
req_100 = "CCTP-SRSA-IP-20210831-R100/"
req_200 = "CCTP-SRSA-IP-20210831-R200/"
req_300 = "CCTP-SRSA-IP-20210831-R300/"
req_1100 = "CCTP-SRSA-IP-20210831-R1100/"
corpus_40 = "CCTP-SRSA-IP-20210831/"
corpus_ERTMS = "ERTMS/"
corpus_PEV = "PEV-RSE-Approach/"


#==============================================================================
# Class
#==============================================================================

class Config:
    """Configuration data for Tenet process """

    
    def __init__(self, config_file, source_corpus, source_ref, target_ref):
        
        # -- Config XML Tree
        config_tree = etree.parse(config_file)
        
        # -- Source and Target
        self.source_corpus = source_corpus
        self.source_ref = source_ref
        self.target_ref = target_ref

        # -- Working directories
        c_dir = config_tree.xpath("directory")[0]
        self.config_dir = c_dir.get("config")
        self.frame_dir = c_dir.get("frame")
        self.corpus_dir = c_dir.get("corpus")
        self.cts_dir = c_dir.get("cts")
        self.output_dir = c_dir.get("output")
        
        # -- Config File Definition
        c_file = config_tree.xpath("file")[0]
        self.schema_file = self.config_dir + c_file.get("schema")
        self.semantic_net_file = self.config_dir + c_file.get("semantic_net")
        self.dash_file = self.config_dir + c_file.get("dash")
        self.config_param_file = self.config_dir + c_file.get("config_param")
        self.cts_file = self.config_dir + c_file.get("cts")
        
        # -- Reference
        c_ref = config_tree.xpath("reference")[0]
        self.base_uri = c_ref.get("default_base_uri")
        self.onto_suffix = c_ref.get("default_ontology_suffix")
        
        # -- Source File Definition
        self.source_sentence_files = self.corpus_dir + self.source_corpus
        self.source_sentence_files += '**/*.ttl'
        
        # -- Target File Definition
        self.frame_ontology_file = self.frame_dir + self.target_ref
        self.frame_ontology_file += self.onto_suffix
        self.output_file = self.output_dir + self.source_ref + ".ttl"
            
            
    # TODO: fonction to print
            
    
#==============================================================================
# Test
#==============================================================================

if __name__ == '__main__':
    default_config_file = "../config.xml"
    config = Config(default_config_file, req_100, "R100", "system")
    print(config.__dict__)