00001
00002
00003 #ifndef MYTHSTORAGE_H
00004 #define MYTHSTORAGE_H
00005
00006
00007 #include <qstring.h>
00008 #include <qdeepcopy.h>
00009
00010
00011 #include "mythexp.h"
00012 #include "mythdbcon.h"
00013
00014 class Setting;
00015
00016 class MPUBLIC Storage
00017 {
00018 public:
00019 Storage() { }
00020 virtual ~Storage() { }
00021
00022 virtual void load(void) = 0;
00023 virtual void save(void) = 0;
00024 virtual void save(QString ) { }
00025 };
00026
00027 class MPUBLIC DBStorage : public Storage
00028 {
00029 public:
00030 DBStorage(Setting *_setting, QString _table, QString _column) :
00031 setting(_setting), table(QDeepCopy<QString>(_table)),
00032 column(QDeepCopy<QString>(_column)) { }
00033
00034 virtual ~DBStorage() { }
00035
00036 protected:
00037 QString getColumn(void) const { return QDeepCopy<QString>(column); }
00038 QString getTable(void) const { return QDeepCopy<QString>(table); }
00039
00040 Setting *setting;
00041 QString table;
00042 QString column;
00043 };
00044
00045 class MPUBLIC SimpleDBStorage : public DBStorage
00046 {
00047 public:
00048 SimpleDBStorage(Setting *_setting,
00049 QString _table, QString _column) :
00050 DBStorage(_setting, _table, _column) {}
00051 virtual ~SimpleDBStorage() { }
00052
00053 virtual void load(void);
00054 virtual void save(void);
00055 virtual void save(QString destination);
00056
00057 protected:
00058 virtual QString whereClause(MSqlBindings&) = 0;
00059 virtual QString setClause(MSqlBindings& bindings);
00060 };
00061
00062 class MPUBLIC TransientStorage : public Storage
00063 {
00064 public:
00065 TransientStorage() { }
00066 virtual ~TransientStorage() { }
00067
00068 virtual void load(void) { }
00069 virtual void save(void) { }
00070 };
00071
00072 class MPUBLIC HostDBStorage : public SimpleDBStorage
00073 {
00074 public:
00075 HostDBStorage(Setting *_setting, QString name);
00076
00077 protected:
00078 virtual QString whereClause(MSqlBindings &bindings);
00079 virtual QString setClause(MSqlBindings &bindings);
00080 };
00081
00082 class MPUBLIC GlobalDBStorage : public SimpleDBStorage
00083 {
00084 public:
00085 GlobalDBStorage(Setting *_setting, QString name);
00086
00087 protected:
00088 virtual QString whereClause(MSqlBindings &bindings);
00089 virtual QString setClause(MSqlBindings &bindings);
00090 };
00091
00093
00094 #endif // MYTHSTORAGE_H