X-Git-Url: https://git.teslayout.com/public/public/public/?a=blobdiff_plain;f=include%2Fanna%2Fdbms%2FStatementTranslator.hpp;fp=include%2Fanna%2Fdbms%2FStatementTranslator.hpp;h=0000000000000000000000000000000000000000;hb=a3b95648bd76140ef55e0b5941d423eee6c3856f;hp=8610aaa27d1a33d13cfe128125834cc624b10104;hpb=94fc4366adedbf26ca6ef3104f88d41fa85f5a72;p=anna.git diff --git a/include/anna/dbms/StatementTranslator.hpp b/include/anna/dbms/StatementTranslator.hpp deleted file mode 100644 index 8610aaa..0000000 --- a/include/anna/dbms/StatementTranslator.hpp +++ /dev/null @@ -1,86 +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 // - - -#ifndef anna_dbms_StatementTranslator_hpp -#define anna_dbms_StatementTranslator_hpp - -#include - -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. - * - * Éste 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 - -