src/StreamRelationalReader.h
branchv_0
changeset 17 ec750c536705
parent 16 9b8139bb0519
child 18 e11f1ad20826
equal deleted inserted replaced
16:9b8139bb0519 17:ec750c536705
    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 }