File: IDbAdapter.h

package info (click to toggle)
codelite 17.0.0%2Bdfsg-4
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 136,244 kB
  • sloc: cpp: 491,547; ansic: 280,393; php: 10,259; sh: 8,930; lisp: 7,664; vhdl: 6,518; python: 6,020; lex: 4,920; yacc: 3,123; perl: 2,385; javascript: 1,715; cs: 1,193; xml: 1,110; makefile: 804; cobol: 741; sql: 709; ruby: 620; f90: 566; ada: 534; asm: 464; fortran: 350; objc: 289; tcl: 258; java: 157; erlang: 61; pascal: 51; ml: 49; awk: 44; haskell: 36
file content (132 lines) | stat: -rw-r--r-- 4,925 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
//
// copyright            : (C) 2014 Eran Ifrah
// file name            : IDbAdapter.h
//
// -------------------------------------------------------------------------
// A
//              _____           _      _     _ _
//             /  __ \         | |    | |   (_) |
//             | /  \/ ___   __| | ___| |    _| |_ ___
//             | |    / _ \ / _  |/ _ \ |   | | __/ _ )
//             | \__/\ (_) | (_| |  __/ |___| | ||  __/
//              \____/\___/ \__,_|\___\_____/_|\__\___|
//
//                                                  F i l e
//
//    This program is free software; you can redistribute it and/or modify
//    it under the terms of the GNU General Public License as published by
//    the Free Software Foundation; either version 2 of the License, or
//    (at your option) any later version.
//
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////

#ifndef IDBADAPTER_H
#define IDBADAPTER_H
#include <wx/wx.h>
#include "smart_ptr.h"
#include <wx/dynarray.h>
#include <wx/dblayer/include/DatabaseLayer.h>
#include "IDbType.h"
//#include "columncol.h"
//#include "tablecol.h"
//#include "databasecol.h"
class DbConnection;
class Database;
class Table;
class View;
class IDbType;


typedef SmartPtr<DatabaseLayer> DatabaseLayerPtr;

/*! \brief Basic virtual class for creating universal interface between different database servers. */
class IDbAdapter
{

public:
    enum TYPE {
        atUNKNOWN = 0,
        atSQLITE,
        atMYSQL,
        atPOSTGRES
    };
    
    IDbAdapter()
        : m_adapterType(atUNKNOWN)
    {
    }

    virtual ~IDbAdapter() {}
    
    /*! \brief Return opened DatabaseLayer for selected database. If dbName is empty, DatabaseLayer will be opend without defalut database. */
    virtual DatabaseLayerPtr GetDatabaseLayer(const wxString& dbName) = 0;

    /*! \brief Return true if dbAdapter is connected. DEPRECATED!!! */
    virtual bool IsConnected() = 0;

    /*! \brief Clone DbAdapter and return new object */
    virtual IDbAdapter* Clone() = 0;

    /*! \brief Return true if adapter settings are set and adapter can connect to the database */
    virtual bool CanConnect() = 0;

    /*! \brief Function connect databases to the DbConnection */
    virtual void GetDatabases(DbConnection* dbCon) = 0;

    /*! \brief Function connect tables to the Database */
    virtual void GetTables(Database* db, bool includeViews) = 0;

    /*! \brief Function connect views to the Database */
    virtual void GetViews(Database* db) = 0;

    /*! \brief Function connect columns to the DBETable */
    virtual bool GetColumns(Table* pTab) = 0;


    /*! \brief Return wxString with USE DB statement for dbName */
    virtual wxString GetUseDb(const wxString& dbName) = 0;
    /*! \brief Return wxString with defalut SELECT for defined table and db */
    virtual wxString GetDefaultSelect(const wxString& dbName, const wxString& tableName) = 0;
    virtual wxString GetDefaultSelect(const wxString& cols, const wxString& dbName, const wxString& tableName) = 0;
    /*! \brief Return Create table sql statement */
    virtual wxString GetCreateTableSql(Table* tab, bool dropTable) = 0;
    /*! \brief Return Create view sql statement */
    virtual wxString GetCreateViewSql(View* view, bool dropView) = 0;
    /*! \brief Return Create update table SQL statement for adding constraints */
    virtual wxString GetAlterTableConstraintSql(Table* tab) = 0;
    /*! \brief Return Create database SQL statement. */
    virtual wxString GetCreateDatabaseSql(const wxString& dbName) = 0;
    /*! \brief Return Drop table SQL statement. */
    virtual wxString GetDropTableSql(Table* pTab) = 0;
    /*! \brief Return Drop view SQL statement. */
    virtual wxString GetDropViewSql(View* pView) = 0;
    /*! \brief Return Drop database SQL statement. */
    virtual wxString GetDropDatabaseSql(Database* pDb) = 0;

    virtual void CloseConnection() = 0;

    /*! \brief Return IDbType by name string */
    virtual IDbType* GetDbTypeByName(const wxString& typeName) = 0;
    /*! \brief Return IDbType by name universal name */
    virtual IDbType* GetDbTypeByUniversalName(IDbType::UNIVERSAL_TYPE type) = 0;
    /*! \brief Return wxArrayString of possible db types */
    virtual wxArrayString* GetDbTypes () = 0;

    /*! \brief Convert IDbType to the special db type. (!!! Old type is deleted !!!) */
    virtual IDbType* ConvertType (IDbType* pType) = 0;
    /*! \brief Return wxArrayString of possible db types */
    virtual void ConvertTable(Table* pTab) = 0;

    const TYPE& GetAdapterType() const {
        return m_adapterType;
    }

protected:
    TYPE m_adapterType;

};

#endif // IDBADAPTER_H