src/RecfileCommand.h
branchv_0
changeset 2 2390e2949a36
parent 1 8dfb42e5c088
child 3 891fe13d7397
equal deleted inserted replaced
1:8dfb42e5c088 2:2390e2949a36
    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 {
   153 					default:
   181 					default:
   154 						throw RelpipeWriterException(L"Unknown ParserState: " + std::to_wstring((int) state) + L" in RecfileParser."); // TODO: better exception
   182 						throw RelpipeWriterException(L"Unknown ParserState: " + std::to_wstring((int) state) + L" in RecfileParser."); // TODO: better exception
   155 				}
   183 				}
   156 			}
   184 			}
   157 			emitLogicalLine(type, name, value);
   185 			emitLogicalLine(type, name, value);
       
   186 			handler.logicalLine(RecfileLineType::END);
   158 		}
   187 		}
   159 	};
   188 	};
   160 
   189 
   161 public:
   190 public:
   162 
   191