src/relpipe-tr-sql.cpp
branchv_0
changeset 13 19580b27ade2
parent 10 7da7173d84b0
child 15 0ecde5272f8e
equal deleted inserted replaced
12:0b38339b871b 13:19580b27ade2
    17 
    17 
    18 #include <cstdio>
    18 #include <cstdio>
    19 #include <cstdlib>
    19 #include <cstdlib>
    20 #include <memory>
    20 #include <memory>
    21 #include <functional>
    21 #include <functional>
       
    22 #include <regex>
    22 
    23 
    23 #include <relpipe/cli/CLI.h>
    24 #include <relpipe/cli/CLI.h>
    24 #include <relpipe/cli/RelpipeCLIException.h>
    25 #include <relpipe/cli/RelpipeCLIException.h>
    25 
    26 
    26 #include <relpipe/reader/Factory.h>
    27 #include <relpipe/reader/Factory.h>
    48 	int resultCode = CLI::EXIT_CODE_UNEXPECTED_ERROR;
    49 	int resultCode = CLI::EXIT_CODE_UNEXPECTED_ERROR;
    49 
    50 
    50 	try {
    51 	try {
    51 		CLIParser cliParser;
    52 		CLIParser cliParser;
    52 		Configuration configuration = cliParser.parse(cli.arguments());
    53 		Configuration configuration = cliParser.parse(cli.arguments());
    53 		std::shared_ptr<reader::RelationalReader> reader(reader::Factory::create(std::cin));
    54 
    54 		std::shared_ptr<writer::RelationalWriter> writer(writer::Factory::create(std::cout));
    55 		if (std::regex_match(cli.programName(), std::wregex(L"^(.*/)?relpipe-in-sql$"))) {
    55 		SqlHandler handler(writer.get(), configuration);
    56 			// relpipe-in-sql:
    56 		reader->addHandler(&handler);
    57 			std::shared_ptr<writer::RelationalWriter> writer(writer::Factory::create(std::cout));
    57 		reader->process();
    58 			SqlHandler handler(writer.get(), configuration);
       
    59 			handler.endOfPipe();
       
    60 		} else {
       
    61 			// relpipe-tr-sql:
       
    62 			std::shared_ptr<reader::RelationalReader> reader(reader::Factory::create(std::cin));
       
    63 			std::shared_ptr<writer::RelationalWriter> writer(writer::Factory::create(std::cout));
       
    64 			SqlHandler handler(writer.get(), configuration);
       
    65 			reader->addHandler(&handler);
       
    66 			reader->process();
       
    67 		}
    58 
    68 
    59 		resultCode = CLI::EXIT_CODE_SUCCESS;
    69 		resultCode = CLI::EXIT_CODE_SUCCESS;
    60 
    70 
    61 	} catch (RelpipeCLIException& e) {
    71 	} catch (RelpipeCLIException& e) {
    62 		fwprintf(stderr, L"Caught CLI exception: %ls\n", e.getMessge().c_str());
    72 		fwprintf(stderr, L"Caught CLI exception: %ls\n", e.getMessge().c_str());