Revert "Remove mysql and oracle resources for anna-ericsson project"
[anna.git] / include / anna / dbms / LongBlock.hpp
diff --git a/include/anna/dbms/LongBlock.hpp b/include/anna/dbms/LongBlock.hpp
new file mode 100644 (file)
index 0000000..d0cb9c0
--- /dev/null
@@ -0,0 +1,122 @@
+// 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_LongBlock_hpp
+#define anna_dbms_LongBlock_hpp
+
+#include <string>
+
+#include <anna/core/RuntimeException.hpp>
+#include <anna/core/DataBlock.hpp>
+
+#include <anna/dbms/Data.hpp>
+
+namespace anna {
+
+namespace dbms {
+
+/**
+   Bloque de datos usado como entrada y/o salida de las sentencias SQL.
+
+   A diferencia del tipo de datos ShortBlock, en principio, no tiene ninguna limitacion
+   en cuanto a la longitud del campo que vamos a tratar. Por contra, dependiendo del motor
+   de base de datos que vayamos a usar puede tener un tratamiento especial a la hora de
+   grabarlo en la base de datos.
+
+   \see ShortBlock
+*/
+class LongBlock : public Data {
+public:
+  /**
+     Constructor.
+     \param isNulleable Indica si el dato puede tomar valores nulos.
+  */
+  explicit LongBlock(const bool isNulleable = false) :
+    Data(Type::LongBlock, 0, isNulleable),
+    a_value(true) {
+    Data::setBuffer((void*) NULL);
+  }
+
+  /**
+     Constructor copia.
+     \param other Instancia de la que copiar.
+  */
+  LongBlock(const LongBlock& other) :
+    Data(other),
+    a_value(true) {
+    a_value = other.a_value;
+  }
+
+  /**
+     Destructor.
+  */
+  virtual ~LongBlock() {;}
+
+  /**
+     Devuelve el tamao actual de este dato.
+     \return El tamao actual de este dato.
+  */
+  int getSize() const throw() { return a_value.getSize(); }
+
+  /**
+     Devuelve el contenido de la este bloque de memoria.
+     \return  Devuelve el contenido de la este bloque de memoria.
+     \warning Si el metodo Data::isNull devolvio \em true el resultado de este metodo no esta definido.
+  */
+  const anna::DataBlock& getValue() const throw() { return a_value; }
+
+  /**
+     Devuelve el contenido de la este bloque de memoria.
+     \return  Devuelve el contenido de la este bloque de memoria.
+     \warning Si el metodo Data::isNull devolvio \em true el resultado de este metodo no esta definido.
+  */
+  anna::DataBlock& getValue() throw() { return a_value; }
+
+  /**
+     Operador de asignacin.
+     \param other Bloque del que copiar.
+     \return La instancia de este bloque de memoria.
+  */
+  LongBlock& operator = (const LongBlock& other) throw(RuntimeException);
+
+  /**
+     Operador de asignacin.
+     \param value Valor que queremos a asignar.
+     \return La instancia de esta cadena.
+  */
+  LongBlock& operator = (const anna::DataBlock& value) throw(RuntimeException);
+
+  /**
+     Operador de conversion.
+     \return El anna::DataBlock asociado a esta instancia.
+  */
+  operator anna::DataBlock& () throw() { return a_value; }
+
+  /**
+     Operador de conversion.
+     \return El anna::DataBlock asociado a esta instancia.
+  */
+  operator const anna::DataBlock& () const throw() { return a_value; }
+
+  /**
+     Devuelve una cadena con la informacion referente a esta instancia.
+     \return Una cadena con la informacion referente a esta instancia.
+  */
+  std::string asString() const throw();
+
+protected:
+  anna::DataBlock a_value;
+
+  void do_clear() throw() { a_value.clear(); }
+};
+
+}
+}
+
+#endif
+