+++ /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 //
-
-
-#ifndef anna_dbms_StatementTranslator_hpp
-#define anna_dbms_StatementTranslator_hpp
-
-#include <anna/core/RuntimeException.hpp>
-
-namespace anna {
-
-namespace dbms {
-
-class Database;
-
-/**
- * Clase que ajustar de forma transparente las diferencias de tratamiento que tiene las
- * sentencias SQL en los distintos motores de base de datos. De esta forma una aplicación
- * originariamente escrita para un determinado RDBMS no tendrá que hacer ningún cambio
- * en las sentencias SQL al cambiar a otro RDBMS.
- *
- * Por ejemplo para indicar los parámetros de entrada en Oracle se indica con un
- * literal precedido de ':' o '&'. Con lo que la sentencia podría quedar como:
- * \code
- * insert into foo (field1, field2) values (:f1, :f2)
- * \endcode
- *
- * En PosgreSQL (tambien sorpotado en Oracle) quedaría algo así:
- * \code
- * insert into foo (field1, field2) values (&f1, &f2)
- * \endcode
- *
- * Mientras que en MySQL la expresión debería ser como:
- * \code
- * insert into foo (field1, field2) values (?, ?);
- * \endcode
- *
- * \see anna::dbms::Database::setStatementTranslator
- */
-class StatementTranslator {
- /**
- * Devuelve el nombre lógico de este traductor.
- * \return el nombre lógico de este traductor.
- */
- const char* getName() const throw() { return a_name; }
-
-protected:
- /**
- * Constructor.
- * \param name Nombre lógico del traductor.
- */
- explicit StatementTranslator(const char* name) : a_name(name) {;}
-
- /**
- * Se invoca automáticamente desde anna::dbms::Database::createStatement si la
- * instancia de la base de datos tiene asociada alguna instancia heredada de esta clase.
- *
- * Ã\89ste metodo sólo se invoca una vez para cada una de las sentencias definidas sobre
- * la base de datos, por lo que la traducción de sentencias SQL tiene un consumo despreciable
- * con respecto al tiempo total del proceso.
- *
- * \param statement Sentencia SQL original.
- * \return La sentencia SQL correspondiente con la original, pero tratada para que
- * pueda ser interpretada correctamente por el motor de base de datos sobre el que
- * se va a ejecutar.
- */
- virtual const char* apply(const char* statement) throw(RuntimeException) = 0;
-
-private:
- const char* a_name;
-
- StatementTranslator(const StatementTranslator&);
-
- friend class Database;
-};
-
-}
-}
-
-#endif
-
-