X-Git-Url: https://git.teslayout.com/public/public/public/?a=blobdiff_plain;f=source%2Fdbms.mysql%2FOracleTranslator.cpp;fp=source%2Fdbms.mysql%2FOracleTranslator.cpp;h=0000000000000000000000000000000000000000;hb=a3b95648bd76140ef55e0b5941d423eee6c3856f;hp=4db0d52062a4b2eea694d8e35ec462d3939a289b;hpb=94fc4366adedbf26ca6ef3104f88d41fa85f5a72;p=anna.git diff --git a/source/dbms.mysql/OracleTranslator.cpp b/source/dbms.mysql/OracleTranslator.cpp deleted file mode 100644 index 4db0d52..0000000 --- a/source/dbms.mysql/OracleTranslator.cpp +++ /dev/null @@ -1,94 +0,0 @@ -// ANNA - Anna is Not Nothingness Anymore // -// // -// (c) Copyright 2005-2015 Eduardo Ramos Testillano & Francisco Ruiz Rayo // -// // -// See project site at http://redmine.teslayout.com/projects/anna-suite // -// See accompanying file LICENSE or copy at http://www.teslayout.com/projects/public/anna.LICENSE // - - -#include - -#include - -#include - -using namespace std; -using namespace anna; -using namespace anna::dbms; - -mysql::OracleTranslator mysql::OracleTranslator::st_this; - -/* - * Pone las sentencias SQL escritas para Oracle en el formato que necesita el - * MySQL. - * - * La sentencia Oracle podría ser algo así como: - * insert into foo (a, b, c) values (:x, :y, :zzzz) - * update goo set xx=&value where yy=:zzz - * - * Y Debería quedar algo así: - * insert into foo (a, b, c) values (?,?,?) - * update goo set xx=? where yy=? - */ -const char* mysql::OracleTranslator::apply(const char* statement) -throw(RuntimeException) { - bool makeit = false; - - if(anna_strchr(statement, ':') != NULL) - makeit = true; - else if(anna_strchr(statement, '&') != NULL) - makeit = true; - - if(makeit == false) - return statement; - - allocate(statement); - enum { Copying, Filtering }; - int mode(Copying); - char* w = a_buffer; - char character; - - while((character = *statement) != 0) { - switch(mode) { - case Copying: - - if(character == ':' || character == '&') { - *w ++ = '?'; - mode = Filtering; - } else - *w ++ = character; - - break; - case Filtering: - - if(character == ',' || character == ')' || isspace(character) || iscntrl(character)) { - *w ++ = character; - mode = Copying; - } - - break; - } - - statement ++; - } - - *w = 0; - return a_buffer; -} - -void mysql::OracleTranslator::allocate(const char* statement) -throw() { - const int size = anna_strlen(statement); - - if(size > a_size) { - if(a_size > 0) { - delete a_buffer; - a_buffer = NULL; - } - - a_buffer = new char [a_size = size + 1]; - } - - a_buffer [0] = 0; -} -