27 std::istream &input; |
27 std::istream &input; |
28 types::BooleanDataTypeReader booleanReader; |
28 types::BooleanDataTypeReader booleanReader; |
29 types::IntegerDataTypeReader integerReader; |
29 types::IntegerDataTypeReader integerReader; |
30 types::StringDataTypeReader stringReader; |
30 types::StringDataTypeReader stringReader; |
31 std::vector<DataTypeReaderBase*> readers = {&booleanReader, &integerReader, &stringReader}; |
31 std::vector<DataTypeReaderBase*> readers = {&booleanReader, &integerReader, &stringReader}; |
|
32 std::vector<handlers::RelationalReaderStringHadler*> stringHandlers; |
|
33 std::vector<handlers::RelationalReaderValueHadler*> valueHandlers; |
32 |
34 |
33 /** |
35 /** |
34 * count of columns in the current table |
36 * count of columns in the current table |
35 */ |
37 */ |
36 integer_t columnCount; |
38 integer_t columnCount; |
53 string_t toTypeCode(const TypeId typeId) override { |
55 string_t toTypeCode(const TypeId typeId) override { |
54 for (DataTypeReaderBase* reader : readers) if (reader->supports(typeId)) return reader->getTypeCode(); |
56 for (DataTypeReaderBase* reader : readers) if (reader->supports(typeId)) return reader->getTypeCode(); |
55 throw RelpipeReaderException(L"Unsupported data type: " + static_cast<integer_t> (typeId)); |
57 throw RelpipeReaderException(L"Unsupported data type: " + static_cast<integer_t> (typeId)); |
56 } |
58 } |
57 |
59 |
|
60 void addHandler(handlers::RelationalReaderStringHadler* handler) override { |
|
61 stringHandlers.push_back(handler); |
|
62 } |
|
63 |
|
64 void addHandler(handlers::RelationalReaderValueHadler* handler) override { |
|
65 valueHandlers.push_back(handler); |
|
66 } |
|
67 |
|
68 void process() override { |
|
69 for (int i = 0; i < stringHandlers.size(); i++) { |
|
70 // FIXME: parse and call methods |
|
71 stringHandlers[i]->startRelation(L"TODO: table",{ |
|
72 {L"a", TypeId::STRING}, |
|
73 {L"b", TypeId::STRING}, |
|
74 {L"c", TypeId::STRING} |
|
75 }); |
|
76 } |
|
77 |
|
78 for (int i = 0; i < valueHandlers.size(); i++) { |
|
79 // FIXME: parse and call methods |
|
80 valueHandlers[i]->startRelation(L"TODO: table value",{ |
|
81 {L"av", TypeId::STRING}, |
|
82 {L"bv", TypeId::STRING}, |
|
83 {L"cv", TypeId::STRING} |
|
84 }); |
|
85 } |
|
86 |
|
87 // FIXME: parse and call methods |
|
88 for (int row = 0; row < 3; row++) { |
|
89 for (int i = 0; i < stringHandlers.size(); i++) stringHandlers[i]->attribute(L"x"); |
|
90 |
|
91 } |
|
92 |
|
93 } |
|
94 |
58 }; |
95 }; |
59 |
96 |
60 } |
97 } |
61 } |
98 } |