00001
00002
00003 #ifndef _LIBGDAMM_SERVERPROVIDER_H
00004 #define _LIBGDAMM_SERVERPROVIDER_H
00005
00006
00007 #include <glibmm.h>
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 #include <libgdamm/command.h>
00033 #include <libgdamm/datamodelindex.h>
00034 #include <libgdamm/client.h>
00035 #include <libgdamm/serveroperation.h>
00036 #include <libgdamm/query.h>
00037 #include <libgdamm/datahandler.h>
00038
00039
00040 #include <libgdamm/blob.h>
00041
00042 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00043 typedef struct _GdaServerProvider GdaServerProvider;
00044 typedef struct _GdaServerProviderClass GdaServerProviderClass;
00045 #endif
00046
00047
00048 namespace Gnome
00049 {
00050
00051 namespace Gda
00052 { class ServerProvider_Class; }
00053
00054 }
00055 namespace Gnome
00056 {
00057
00058 namespace Gda
00059 {
00060
00061
00062 class Connection;
00063
00064
00070 enum ServerOperationType
00071 {
00072 SERVER_OPERATION_CREATE_DB,
00073 SERVER_OPERATION_DROP_DB,
00074 SERVER_OPERATION_CREATE_TABLE,
00075 SERVER_OPERATION_DROP_TABLE,
00076 SERVER_OPERATION_RENAME_TABLE,
00077 SERVER_OPERATION_ADD_COLUMN,
00078 SERVER_OPERATION_DROP_COLUMN,
00079 SERVER_OPERATION_CREATE_INDEX,
00080 SERVER_OPERATION_DROP_INDEX,
00081 SERVER_OPERATION_NB
00082 };
00083
00084 }
00085
00086 }
00087
00088
00089 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00090 namespace Glib
00091 {
00092
00093 template <>
00094 class Value<Gnome::Gda::ServerOperationType> : public Glib::Value_Enum<Gnome::Gda::ServerOperationType>
00095 {
00096 public:
00097 static GType value_type() G_GNUC_CONST;
00098 };
00099
00100 }
00101 #endif
00102
00103
00104 namespace Gnome
00105 {
00106
00107 namespace Gda
00108 {
00109
00110
00111
00112 typedef GdaServerProviderInfo ServerProviderInfo;
00113
00114
00115
00116 class ServerProvider : public Glib::Object
00117 {
00118
00119 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00120
00121 public:
00122 typedef ServerProvider CppObjectType;
00123 typedef ServerProvider_Class CppClassType;
00124 typedef GdaServerProvider BaseObjectType;
00125 typedef GdaServerProviderClass BaseClassType;
00126
00127 private: friend class ServerProvider_Class;
00128 static CppClassType serverprovider_class_;
00129
00130 private:
00131
00132 ServerProvider(const ServerProvider&);
00133 ServerProvider& operator=(const ServerProvider&);
00134
00135 protected:
00136 explicit ServerProvider(const Glib::ConstructParams& construct_params);
00137 explicit ServerProvider(GdaServerProvider* castitem);
00138
00139 #endif
00140
00141 public:
00142 virtual ~ServerProvider();
00143
00144 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00145 static GType get_type() G_GNUC_CONST;
00146 static GType get_base_type() G_GNUC_CONST;
00147 #endif
00148
00150 GdaServerProvider* gobj() { return reinterpret_cast<GdaServerProvider*>(gobject_); }
00151
00153 const GdaServerProvider* gobj() const { return reinterpret_cast<GdaServerProvider*>(gobject_); }
00154
00156 GdaServerProvider* gobj_copy();
00157
00158 private:
00159
00160
00164 Glib::ustring get_version() const;
00165
00174 bool open_connection(const Glib::RefPtr<Connection>& cnc, GdaQuarkList *params, const Glib::ustring& username, const Glib::ustring& password);
00175
00176
00179 bool close_connection(const Glib::RefPtr<Connection>& cnc);
00180
00181
00184 Glib::ustring get_server_version(const Glib::RefPtr<Connection>& cnc) const;
00185
00191 Glib::ustring get_database(const Glib::RefPtr<Connection>& cnc) const;
00192
00199 bool change_database(const Glib::RefPtr<Connection>& cnc, const Glib::ustring& name);
00200
00201
00202
00203
00209 const ServerProviderInfo* get_info(const Glib::RefPtr<Connection>& cnc) const;
00210
00211
00212
00220 bool supports_operation(const Glib::RefPtr<Connection>& cnc, ServerOperationType type, const Glib::RefPtr<ParameterList>& options) const;
00221
00222
00236 #ifdef GLIBMM_EXCEPTIONS_ENABLED
00237 Glib::RefPtr<ServerOperation> create_operation (const Glib::RefPtr<Connection>& cnc,ServerOperationType type, const Glib::RefPtr<ParameterList>& options);
00238 #else
00239 Glib::RefPtr<ServerOperation> create_operation(const Glib::RefPtr<Connection>& cnc, ServerOperationType type, const Glib::RefPtr<ParameterList>& options, std::auto_ptr<Glib::Error>& error);
00240 #endif //GLIBMM_EXCEPTIONS_ENABLED
00241
00242
00250 #ifdef GLIBMM_EXCEPTIONS_ENABLED
00251 Glib::ustring render_operation(const Glib::RefPtr<Connection>& cnc, const Glib::RefPtr<ServerOperation>& op);
00252 #else
00253 Glib::ustring render_operation(const Glib::RefPtr<Connection>& cnc, const Glib::RefPtr<ServerOperation>& op, std::auto_ptr<Glib::Error>& error);
00254 #endif //GLIBMM_EXCEPTIONS_ENABLED
00255
00256
00263 #ifdef GLIBMM_EXCEPTIONS_ENABLED
00264 bool perform_operation(const Glib::RefPtr<Connection>& cnc, const Glib::RefPtr<ServerOperation>& op);
00265 #else
00266 bool perform_operation(const Glib::RefPtr<Connection>& cnc, const Glib::RefPtr<ServerOperation>& op, std::auto_ptr<Glib::Error>& error);
00267 #endif //GLIBMM_EXCEPTIONS_ENABLED
00268
00269
00270
00271
00272
00299 Glib::ListHandle< Glib::RefPtr<DataModel> > execute_command(const Glib::RefPtr<Connection>& cnc, const Command& cmd, const Glib::RefPtr<ParameterList>& params);
00300
00301
00306 #ifdef GLIBMM_EXCEPTIONS_ENABLED
00307 bool begin_transaction(const Glib::RefPtr<Connection>& cnc, const Glib::ustring& name, TransactionIsolation level);
00308 #else
00309 bool begin_transaction(const Glib::RefPtr<Connection>& cnc, const Glib::ustring& name, TransactionIsolation level, std::auto_ptr<Glib::Error>& error);
00310 #endif //GLIBMM_EXCEPTIONS_ENABLED
00311
00312
00317 #ifdef GLIBMM_EXCEPTIONS_ENABLED
00318 bool commit_transaction(const Glib::RefPtr<Connection>& cnc, const Glib::ustring& name);
00319 #else
00320 bool commit_transaction(const Glib::RefPtr<Connection>& cnc, const Glib::ustring& name, std::auto_ptr<Glib::Error>& error);
00321 #endif //GLIBMM_EXCEPTIONS_ENABLED
00322
00323
00328 #ifdef GLIBMM_EXCEPTIONS_ENABLED
00329 bool rollback_transaction(const Glib::RefPtr<Connection>& cnc, const Glib::ustring& name);
00330 #else
00331 bool rollback_transaction(const Glib::RefPtr<Connection>& cnc, const Glib::ustring& name, std::auto_ptr<Glib::Error>& error);
00332 #endif //GLIBMM_EXCEPTIONS_ENABLED
00333
00334
00341 #ifdef GLIBMM_EXCEPTIONS_ENABLED
00342 bool add_savepoint(const Glib::RefPtr<Connection>& cnc, const Glib::ustring& name);
00343 #else
00344 bool add_savepoint(const Glib::RefPtr<Connection>& cnc, const Glib::ustring& name, std::auto_ptr<Glib::Error>& error);
00345 #endif //GLIBMM_EXCEPTIONS_ENABLED
00346
00347
00354 #ifdef GLIBMM_EXCEPTIONS_ENABLED
00355 bool rollback_savepoint(const Glib::RefPtr<Connection>& cnc, const Glib::ustring& name);
00356 #else
00357 bool rollback_savepoint(const Glib::RefPtr<Connection>& cnc, const Glib::ustring& name, std::auto_ptr<Glib::Error>& error);
00358 #endif //GLIBMM_EXCEPTIONS_ENABLED
00359
00360
00367 #ifdef GLIBMM_EXCEPTIONS_ENABLED
00368 bool delete_savepoint(const Glib::RefPtr<Connection>& cnc, const Glib::ustring& name);
00369 #else
00370 bool delete_savepoint(const Glib::RefPtr<Connection>& cnc, const Glib::ustring& name, std::auto_ptr<Glib::Error>& error);
00371 #endif //GLIBMM_EXCEPTIONS_ENABLED
00372
00373
00376 bool supports_feature(const Glib::RefPtr<Connection>& cnc, ConnectionFeature feature) const;
00377
00378
00379
00389 #ifdef GLIBMM_EXCEPTIONS_ENABLED
00390 Glib::RefPtr<DataModel> get_schema(const Glib::RefPtr<Connection>& cnc, ConnectionSchema schema, const Glib::RefPtr<ParameterList>& params);
00391 #else
00392 Glib::RefPtr<DataModel> get_schema(const Glib::RefPtr<Connection>& cnc, ConnectionSchema schema, const Glib::RefPtr<ParameterList>& params, std::auto_ptr<Glib::Error>& error);
00393 #endif //GLIBMM_EXCEPTIONS_ENABLED
00394
00395
00405 #ifdef GLIBMM_EXCEPTIONS_ENABLED
00406 Glib::RefPtr<const DataModel> get_schema(const Glib::RefPtr<Connection>& cnc, ConnectionSchema schema, const Glib::RefPtr<ParameterList>& params) const;
00407 #else
00408 Glib::RefPtr<const DataModel> get_schema(const Glib::RefPtr<Connection>& cnc, ConnectionSchema schema, const Glib::RefPtr<ParameterList>& params, std::auto_ptr<Glib::Error>& error) const;
00409 #endif //GLIBMM_EXCEPTIONS_ENABLED
00410
00411
00412
00413 Glib::RefPtr<DataModel> get_schema(const Glib::RefPtr<Connection>& cnc, ConnectionSchema schema);
00414 Glib::RefPtr<const DataModel> get_schema(const Glib::RefPtr<Connection>& cnc, ConnectionSchema schema) const;
00415
00416
00422 Glib::ustring value_to_sql_string(const Glib::RefPtr<Connection>& cnc, const Value& from) const;
00423
00424
00434 Glib::ustring get_last_insert_id(const Glib::RefPtr<Connection>& cnc, const Glib::RefPtr<DataModel>& recset) const;
00435
00436
00443 Glib::ustring escape_string(const Glib::RefPtr<Connection>& cnc, const Glib::ustring& str);
00444
00450 Glib::ustring unescape_string(const Glib::RefPtr<Connection>& cnc, const Glib::ustring& str);
00451
00477 Glib::RefPtr<Gda::Object> execute_query(const Glib::RefPtr<Connection>& cnc, const Glib::RefPtr<Query>& query, const Glib::RefPtr<ParameterList>& options);
00478
00479
00485 Glib::RefPtr<DataHandler> get_data_handler_dbms(const Glib::RefPtr<Connection>& cnc, const Glib::ustring& for_type);
00486
00492 Glib::RefPtr<const DataHandler> get_data_handler_dbms(const Glib::RefPtr<Connection>& cnc, const Glib::ustring& for_type) const;
00493
00494
00495
00496
00497
00498
00499 public:
00500
00501 public:
00502
00503 #ifdef GLIBMM_VFUNCS_ENABLED
00504 #endif //GLIBMM_VFUNCS_ENABLED
00505
00506 protected:
00507
00508 #ifdef GLIBMM_VFUNCS_ENABLED
00509 #endif //GLIBMM_VFUNCS_ENABLED
00510
00511
00512 #ifdef GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
00513 #endif //GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
00514
00515
00516 };
00517
00518 }
00519 }
00520
00521
00522 namespace Glib
00523 {
00529 Glib::RefPtr<Gnome::Gda::ServerProvider> wrap(GdaServerProvider* object, bool take_copy = false);
00530 }
00531
00532
00533 #endif
00534