interface + dummy implementation v_0
authorFrantišek Kučera <franta-hg@frantovo.cz>
Mon, 27 Aug 2018 00:06:14 +0200
branchv_0
changeset 17 ec750c536705
parent 16 9b8139bb0519
child 18 e11f1ad20826
interface + dummy implementation
include/relpipe/reader/Factory.h
include/relpipe/reader/RelationalReader.h
src/StreamRelationalReader.h
--- 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");
+
+		}
+
+	}
+
 };
 
 }