Revert "Remove mysql and oracle resources for anna-ericsson project"
[anna.git] / include / anna / dbms.mysql / OracleTranslator.hpp
diff --git a/include/anna/dbms.mysql/OracleTranslator.hpp b/include/anna/dbms.mysql/OracleTranslator.hpp
new file mode 100644 (file)
index 0000000..95573e1
--- /dev/null
@@ -0,0 +1,54 @@
+// 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_mysql_OracleTranslator_hpp
+#define anna_dbms_mysql_OracleTranslator_hpp
+
+#include <anna/dbms/StatementTranslator.hpp>
+
+namespace anna {
+
+namespace dbms {
+
+namespace mysql {
+
+/**
+ * Ésta clase permite que sentencias, escritas originalmente para ser ejecutadas sobre
+ * Oracle (tm) puedan ser ejecutadas desde MySQL (tm) sin ningún tipo de problemas.
+ *
+ * Si este traductor se aplica sobre una sentencia SQL escrita originalmente para
+ * funcionar sobre MySQL el resultado será la misma sentencia.
+ *
+ * \see anna::dbms::Database::setStatementTranslator
+ */
+class OracleTranslator : public StatementTranslator {
+public:
+  /**
+   * Obtiene la instancia de este traductor de sentencias SQL.
+   */
+  static StatementTranslator* instantiate() throw() { return &st_this; }
+
+private:
+  char* a_buffer;
+  int a_size;
+
+  static OracleTranslator st_this;
+
+  OracleTranslator() : StatementTranslator("dbms::mysql::OracleTranslator"),
+    a_buffer(NULL), a_size(-1)
+  {;}
+
+  const char* apply(const char* statement) throw(RuntimeException);
+  void allocate(const char* statement) throw();
+};
+
+}
+}
+}
+
+#endif