--- a/include/relpipe/reader/Factory.h Sat Aug 25 19:10:24 2018 +0200
+++ b/include/relpipe/reader/Factory.h Mon Aug 27 00:06:14 2018 +0200
@@ -2,6 +2,8 @@
#include <iostream>
+#include "RelationalReader.h"
+
namespace relpipe {
namespace reader {
--- a/include/relpipe/reader/RelationalReader.h Sat Aug 25 19:10:24 2018 +0200
+++ b/include/relpipe/reader/RelationalReader.h Mon Aug 27 00:06:14 2018 +0200
@@ -4,6 +4,9 @@
#include "typedefs.h"
#include "TypeId.h"
+#include "handlers/RelationalReaderBaseHandler.h"
+#include "handlers/RelationalReaderStringHandler.h"
+#include "handlers/RelationalReaderValueHandler.h"
namespace relpipe {
namespace reader {
@@ -20,6 +23,12 @@
*/
virtual string_t toTypeCode(const TypeId typeId) = 0;
+ virtual void addHandler(handlers::RelationalReaderStringHadler* handler) = 0;
+
+ virtual void addHandler(handlers::RelationalReaderValueHadler* handler) = 0;
+
+ virtual void process() = 0;
+
};
}
--- a/src/StreamRelationalReader.h Sat Aug 25 19:10:24 2018 +0200
+++ b/src/StreamRelationalReader.h Mon Aug 27 00:06:14 2018 +0200
@@ -29,6 +29,8 @@
types::IntegerDataTypeReader integerReader;
types::StringDataTypeReader stringReader;
std::vector<DataTypeReaderBase*> readers = {&booleanReader, &integerReader, &stringReader};
+ std::vector<handlers::RelationalReaderStringHadler*> stringHandlers;
+ std::vector<handlers::RelationalReaderValueHadler*> valueHandlers;
/**
* count of columns in the current table
@@ -55,6 +57,41 @@
throw RelpipeReaderException(L"Unsupported data type: " + static_cast<integer_t> (typeId));
}
+ void addHandler(handlers::RelationalReaderStringHadler* handler) override {
+ stringHandlers.push_back(handler);
+ }
+
+ void addHandler(handlers::RelationalReaderValueHadler* handler) override {
+ valueHandlers.push_back(handler);
+ }
+
+ void process() override {
+ for (int i = 0; i < stringHandlers.size(); i++) {
+ // FIXME: parse and call methods
+ stringHandlers[i]->startRelation(L"TODO: table",{
+ {L"a", TypeId::STRING},
+ {L"b", TypeId::STRING},
+ {L"c", TypeId::STRING}
+ });
+ }
+
+ for (int i = 0; i < valueHandlers.size(); i++) {
+ // FIXME: parse and call methods
+ valueHandlers[i]->startRelation(L"TODO: table value",{
+ {L"av", TypeId::STRING},
+ {L"bv", TypeId::STRING},
+ {L"cv", TypeId::STRING}
+ });
+ }
+
+ // FIXME: parse and call methods
+ for (int row = 0; row < 3; row++) {
+ for (int i = 0; i < stringHandlers.size(); i++) stringHandlers[i]->attribute(L"x");
+
+ }
+
+ }
+
};
}