+++ /dev/null
-// 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 <ctype.h>
-
-#include <anna/config/defines.hpp>
-
-#include <anna/dbms.mysql/OracleTranslator.hpp>
-
-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;
-}
-