src/Configuration.h
branchv_0
changeset 8 8730e2d0db0e
parent 7 ff69af3c67a3
child 15 917b8fbd29b9
equal deleted inserted replaced
7:ff69af3c67a3 8:8730e2d0db0e
    23 
    23 
    24 namespace relpipe {
    24 namespace relpipe {
    25 namespace in {
    25 namespace in {
    26 namespace xmltable {
    26 namespace xmltable {
    27 
    27 
       
    28 enum class Mode {
       
    29 	STRING,
       
    30 	BOOLEAN,
       
    31 	// TODO: support also XML number, when we have a rational or decimal numbers in Relational pipes
       
    32 	RAW_XML,
       
    33 	LINE_NUMBER,
       
    34 	XPATH
       
    35 };
       
    36 
       
    37 class XmlElementSkeleton {
       
    38 public:
       
    39 	relpipe::writer::string_t name;
       
    40 	relpipe::writer::string_t uri;
       
    41 	relpipe::writer::string_t prefix;
       
    42 
       
    43 	XmlElementSkeleton() {
       
    44 	}
       
    45 
       
    46 	XmlElementSkeleton(relpipe::writer::string_t name, relpipe::writer::string_t uri = L"", relpipe::writer::string_t prefix = L"") : name(name), uri(uri), prefix(prefix) {
       
    47 	}
       
    48 
       
    49 	virtual ~XmlElementSkeleton() {
       
    50 	}
       
    51 };
       
    52 
    28 class AttributeRecipe {
    53 class AttributeRecipe {
    29 public:
    54 public:
    30 
    55 
    31 	virtual ~AttributeRecipe() {
    56 	virtual ~AttributeRecipe() {
    32 	}
    57 	}
    33 
    58 
    34 	relpipe::writer::string_t name;
    59 	relpipe::writer::string_t name;
    35 	relpipe::writer::TypeId type;
    60 	relpipe::writer::TypeId type;
    36 	relpipe::writer::string_t xpath;
    61 	relpipe::writer::string_t xpath;
       
    62 	Mode mode = Mode::STRING;
       
    63 	XmlElementSkeleton rawXmlNodeListWrapper;
       
    64 	XmlElementSkeleton rawXmlAttributeWrapper;
       
    65 
    37 };
    66 };
    38 
    67 
    39 class RelationConfiguration {
    68 class RelationConfiguration {
    40 public:
    69 public:
    41 
    70 
    44 
    73 
    45 	relpipe::writer::string_t relation;
    74 	relpipe::writer::string_t relation;
    46 	relpipe::writer::boolean_t nameIsXPath = false;
    75 	relpipe::writer::boolean_t nameIsXPath = false;
    47 	relpipe::writer::string_t xpath;
    76 	relpipe::writer::string_t xpath;
    48 	std::vector<AttributeRecipe> attributes;
    77 	std::vector<AttributeRecipe> attributes;
    49 	
    78 
       
    79 	// Defaults/templates for AttributeRecipe:	
       
    80 	Mode mode = Mode::STRING;
       
    81 	XmlElementSkeleton rawXmlNodeListWrapper;
       
    82 	XmlElementSkeleton rawXmlAttributeWrapper = {L"attribute"};
    50 };
    83 };
    51 
    84 
    52 class Configuration {
    85 class Configuration {
    53 public:
    86 public:
    54 	std::vector<RelationConfiguration> relationConfigurations;
    87 	std::vector<RelationConfiguration> relationConfigurations;