36 enum class RecfileLineType { |
36 enum class RecfileLineType { |
37 METADATA, |
37 METADATA, |
38 DATA, |
38 DATA, |
39 SEPARATOR, |
39 SEPARATOR, |
40 COMMENT, |
40 COMMENT, |
|
41 END, |
41 }; |
42 }; |
42 |
43 |
43 class RecfileHandler { |
44 class RecfileHandler { |
44 private: |
45 private: |
45 RelationalWriter* writer; |
46 RelationalWriter* writer; |
|
47 |
|
48 void metadata(const string_t& name, const string_t& value) { |
|
49 std::wcerr << L"metadata(" << name << L", " << value << L");" << std::endl; // TODO: remove debug |
|
50 } |
|
51 |
|
52 void data(const string_t& name, const string_t& value) { |
|
53 std::wcerr << L"data(" << name << L", " << value << L");" << std::endl; // TODO: remove debug |
|
54 } |
|
55 |
|
56 void comment(const string_t& value) { |
|
57 std::wcerr << L"comment(" << value << L");" << std::endl; // TODO: remove debug |
|
58 } |
|
59 |
|
60 void separator() { |
|
61 std::wcerr << L"separator()" << std::endl; // TODO: remove debug |
|
62 } |
|
63 |
|
64 void end() { |
|
65 std::wcerr << L"end()" << std::endl; // TODO: remove debug |
|
66 } |
|
67 |
46 public: |
68 public: |
47 |
69 |
48 RecfileHandler(RelationalWriter* writer) : writer(writer) { |
70 RecfileHandler(RelationalWriter* writer) : writer(writer) { |
49 } |
71 } |
50 |
72 |
51 virtual ~RecfileHandler() { |
73 virtual ~RecfileHandler() { |
52 } |
74 } |
53 |
75 |
54 void logicalLine(RecfileLineType type, const string_t& name = L"", const string_t& value = L"") { |
76 void logicalLine(RecfileLineType type, const string_t& name = L"", const string_t& value = L"") { |
55 std::wcerr << L"logicalLine(" << (int) type << L", " << name << L", " << value << L");" << std::endl; // TODO: remove debug |
|
56 // TODO: writer->startRelation() |
77 // TODO: writer->startRelation() |
57 // TODO: writer->writeAttribute() |
78 // TODO: writer->writeAttribute() |
|
79 switch (type) { |
|
80 case RecfileLineType::METADATA: return metadata(name, value); |
|
81 case RecfileLineType::DATA: return data(name, value); |
|
82 case RecfileLineType::COMMENT: return comment(value); |
|
83 case RecfileLineType::SEPARATOR: return separator(); |
|
84 case RecfileLineType::END: return end(); |
|
85 } |
58 } |
86 } |
59 |
87 |
60 }; |
88 }; |
61 |
89 |
62 enum class ParserState { |
90 enum class ParserState { |