6a72d20d88a7f848532ce34eb77bd8b617781f30
[anna.git] / DatabaseException.hpp
1 // ANNA - Anna is Not Nothingness Anymore                                                         //
2 //                                                                                                //
3 // (c) Copyright 2005-2015 Eduardo Ramos Testillano & Francisco Ruiz Rayo                         //
4 //                                                                                                //
5 // See project site at http://redmine.teslayout.com/projects/anna-suite                           //
6 // See accompanying file LICENSE or copy at http://www.teslayout.com/projects/public/anna.LICENSE //
7
8
9 #ifndef anna_dbms_DatabaseException_hpp
10 #define anna_dbms_DatabaseException_hpp
11
12 #include <anna/core/Exception.hpp>
13
14 #include <anna/dbms/ResultCode.hpp>
15
16 namespace anna {
17
18 namespace dbms {
19
20 /**
21    Exception ocurrida al acceder a algun servicio de la base de datos.
22 */
23 class DatabaseException : public Exception {
24 public:
25   /**
26      Constructor.
27
28      @param resultCode Clase utilizada para transferir codigo de error entre el gestor de base de datos
29      y nuestro programa. Entre otra informacion contiene el error ocurrido en la ultima operacion realizada.
30      @param fromFile Fichero en el que se provoco la situacion de error.
31      @param fromLine Linea del fichero en la que se provoco la situacion de error.
32   */
33   DatabaseException(const ResultCode& resultCode, const char* fromFile, const int fromLine) :
34     Exception(resultCode.getErrorText(), "DatabaseException", fromFile, fromLine),
35     a_resultCode(resultCode) {}
36
37   /**
38      Constructor.
39
40      @param logicalName Nombre logico del elemento que genera la excepcion.
41      @param resultCode Clase utilizada para transferir codigo de error entre el gestor de base de datos
42      y nuestro programa. Entre otra informacion contiene el error ocurrido en la ultima operacion realizada.
43      @param fromFile Fichero en el que se provoco la situacion de error.
44      @param fromLine Linea del fichero en la que se provoco la situacion de error.
45   */
46   DatabaseException(const std::string& logicalName, const ResultCode& resultCode, const char* fromFile, const int fromLine) :
47     Exception("", "DatabaseException", fromFile, fromLine),
48     a_resultCode(resultCode) {
49     std::string aux(logicalName);
50     aux += ": ";
51     aux += resultCode.getErrorText();
52     setText(aux.c_str());
53   }
54
55   /**
56      Destructor.
57   */
58   virtual ~DatabaseException() {;}
59
60   /**
61      Devuelve el resultado de base de datos asociado a la excepcion
62
63      @return El resultado de base de datos asociado a la excepcion
64   */
65   const ResultCode& getResultCode() const { return a_resultCode; }
66
67 private:
68   const ResultCode a_resultCode;
69 };
70
71 }
72 }
73
74
75 #endif
76