stec-platform
sqlbase.h
1 #ifndef SQLBASE_H
2 #define SQLBASE_H
3 
4 #include <platformu_global.h>
5 #include <QDateTime>
6 #include <QTime>
7 #include <QHash>
8 #include <QList>
9 #include <QMap>
10 #include <QObject>
11 #include <QObject>
12 #include <QPair>
13 #include <QSqlDatabase>
14 #include <QSqlError>
15 #include <QSqlQuery>
16 #include <QSqlRecord>
17 #include <QSqlTableModel>
18 #include <QSqlTableModel>
19 #include <QString>
20 #include <QVariant>
21 #include <QVariantList>
22 #include <QtCore>
23 
24 #include <publication.h>
25 #include <subscription.h>
26 
27 #include <vremthread.h>
28 #include "platformu_global.h"
29 
30 #define DATABASEDEVICE "SQLBase"
31 
32 
37 class PLATFORMUSHARED_EXPORT SQLBase : public QObject
38 {
39  Q_OBJECT
40 
41 public:
42 
43 #define MAX_RETRY_OPENDB 3
44 
45 typedef enum dbtype{ postgres = 0, mysql = 1, sqlite = 2 } DBType;
46 
47  struct SqlRow
48  {
49  QString tagname;
50  QString tablename;
51  };
52 
53  typedef QList<SqlRow> QSqlRowList;
54 
56  {
57  QDateTime timeOf;
58  QVariantList data;
59  };
60 
61  typedef QList<VremMYSqlRecord> QDataLoggerRecord;
62 
63 
64 
65 protected :
66 
68  QString databaseIP, databasePort, databaseName, databaseUser, databasePasswd;
69  QSqlDatabase db;
70  QSqlTableModel *sub_model, *key_model;
71  DRWLock<short> retry;
72  QMutex classLock;
73 
74  virtual void ReloadTables(void) = 0;
75  QSqlTableModel *newDbTable(QString tableName);
76 public:
77  SQLBase (QObject *parent = 0);
78  SQLBase (QString DatabaseIP, QString DatabasePort, QString DatabaseName, QString DatabaseUser,
79  QString DatabasePasswd, QObject *parent = 0);
80 
81  virtual ~SQLBase( );
82 
83  bool open();
84  QString OpenDatabase(QString DatabaseIP, QString DatabasePort, QString DatabaseName, QString DatabaseUser, QString DatabasePasswd);
85  void ScratchDataTable(QString DataTable);
86 
88  bool isOpen(void);
89 
90  QSqlDatabase &getDB(void);
91 
92  QList<SqlRow> getAllRows(void);
93  qint64 GetCurrentGMT(void);
94  qint64 GetGMTFromLocal( QDateTime time);
95  bool AddData( Subscription *sub);
96  bool AddData( Subscription *sub, QString dataTable);
97  bool AddDataBySub(QString subName, VremVArray va);
98 
99  QSqlTableModel *getSubMap(void );
100 
102  static QDateTime EarliestPossibleDate( void);
103 
106  virtual bool ClearAllData( QString dataTable) = 0;
107 
108  virtual QString OpenDatabase(void) = 0;
109 
111  virtual void ScratchSql(void) = 0;
112  virtual void ScratchSubscriber(QString subscriber) = 0;
113 
115  virtual QString TrendThis(QString subscription) = 0;
116 
117  virtual QString getSubFromTable( QString table) = 0;
118  virtual QString getTableFromSub( QString sub) = 0;
119  virtual QDataLoggerRecord GetDataRecordsFromTrendTable(QString table, QDateTime fromLocalTime, QDateTime toLocalTime) = 0;
120  virtual VremMYSqlRecord GetLastDataRecordsFromTrendTable(QString table, QDateTime fromLocalTime, QDateTime toLocalTime) = 0;
121  virtual VremMYSqlRecord GetLastDataRecordsFromTrendTable(QString table, QDateTime toLocalTime) = 0;
122  virtual VremMYSqlRecord GetLastDataRecordsFromTrendTable(QString table) = 0;
123  virtual bool DeleteDataRecordsFromTrendTable(QString table, QDateTime beforeLocalTime) = 0;
124  virtual bool AddData( QString dataTable, const VremVArray &instance1) = 0;
125  virtual bool ChangeProperties(QString subscriber, VremVArray propertys) = 0;
126  virtual VremVArray GetProperties( QString subscription) = 0;
127 
128  void AddDataBySubscriptionName( QString &name, VremVArray &data);
129  virtual DBType getDBType() = 0;
130 
131  QHash<QString,QString> getAllTracking( void);
132 
133 
134 signals:
135  void SignalValuesAdded( QString Table, QDateTime time);
136 
137 public slots:
138  void SlotAddDataBySubscriptionName( QString name, VremVArray data)
139  {
140  AddDataBySubscriptionName( name, data);
141  }
142 
143 };
144 
145 #endif // SQLBASE_H
The PublicationRegistration Multiverse Cloud.
Definition: publicationregistration.h:29
The SQLBase class.
Definition: sqlbase.h:38
virtual void ScratchSql(void)=0
starts a new database
virtual bool ClearAllData(QString dataTable)=0
virtual QString TrendThis(QString subscription)=0
returns the table name for this trend, creates the trend if not there
The Subscription class A platform subscriber must use or inheit this class.
Definition: subscription.h:43
Definition: sqlbase.h:48
Definition: sqlbase.h:56