00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef RESOURCEPOOL_ORACLE_ORACLEEXCEPTIONFACTORY_HH
00027 #define RESOURCEPOOL_ORACLE_ORACLEEXCEPTIONFACTORY_HH
00028
00029 #ifndef RESOURCEPOOL_ORACLE_ORACLEEXCEPTION_HH
00030 #include "OracleException.hh"
00031 #endif
00032
00033 #ifndef RESOURCEPOOL_ORACLE_OCIHANDLE_HH
00034 #include "OCIHandle.hh"
00035 #endif
00036
00037 #include "ResourcePool/SQL/SQLStatement.hh"
00038
00039 #include <sstream>
00040
00041 namespace fatalmind {
00042
00043 class OracleExceptionFactory {
00044 public:
00045
00046
00047
00048 static void throwit(const std::string& op
00049 , const std::string& fac
00050 , const int errornumber
00051 , const std::string& msg
00052 , const SQL::SQLStatement& sqlstm
00053 );
00054 static void throwit(
00055 const std::string& op
00056 , const oracle::OCIEnvHandle& env
00057 , sword ret
00058 , const SQL::SQLStatement& sqlstm
00059 );
00060 static void throwit(
00061 const std::string& op
00062 , const oracle::OCIErrorHandle& err
00063 , sword ret
00064 , const SQL::SQLStatement& sqlstm
00065 );
00066 static void throwit(
00067 const std::string& op
00068 , const oracleHandles&
00069 , sword ret
00070 , const SQL::SQLStatement& sqlstm
00071 );
00072
00073
00074
00075 static void throwit(const std::string& oper
00076 , const dvoid* errhp
00077 , sword ret
00078 , ub4 type
00079 , const SQL::SQLStatement& sqlstm
00080 );
00081
00089 OracleExceptionFactory(
00090 const std::string& oper
00091 , const dvoid* errhp
00092 , sword ret
00093 , ub4 type
00094 , const SQL::SQLStatement& sqlstm
00095 );
00096
00097 OracleExceptionFactory(
00098 const std::string& op
00099 , const OCIError* errhp
00100 , sword ret
00101 , const SQL::SQLStatement& sqlstm
00102 );
00103
00104
00105 const std::string getErrorString() const;
00106
00107
00108
00109 const std::string& getErrorCode() const {
00110 return errorcode;
00111 };
00112
00113 int getErrorNumber() const {
00114 return errornumber;
00115 }
00116
00117
00118 void throwit() const;
00119
00120 private:
00121 void setFromOCI(const std::string& oper, const dvoid* errhp, ub4 type, sword ret);
00122 static inline std::string setErrorCode(int errorcode);
00123
00124 std::string state;
00125 std::string msg;
00126 SQL::SQLStatement sqlstm;
00127 int errornumber;
00128 std::string errorcode;
00129 };
00130
00131 }
00132
00133 #endif