00001
00002
00003 #ifndef MYTHSTORAGE_H
00004 #define MYTHSTORAGE_H
00005
00006
00007 #include <QString>
00008
00009
00010 #include "mythbaseexp.h"
00011 #include "mythdbcon.h"
00012
00013 class StorageUser
00014 {
00015 public:
00016 virtual void SetDBValue(const QString&) = 0;
00017 virtual QString GetDBValue(void) const = 0;
00018 virtual ~StorageUser() { }
00019 };
00020
00021 class MBASE_PUBLIC Storage
00022 {
00023 public:
00024 Storage() { }
00025 virtual ~Storage() { }
00026
00027 virtual void Load(void) = 0;
00028 virtual void Save(void) = 0;
00029 virtual void Save(QString ) { }
00030 virtual bool IsSaveRequired(void) const { return true; };
00031 virtual void SetSaveRequired(void) { };
00032 };
00033
00034 class MBASE_PUBLIC DBStorage : public Storage
00035 {
00036 public:
00037 DBStorage(StorageUser *_user, QString _table, QString _column) :
00038 user(_user), tablename(_table), columnname(_column) { }
00039
00040 virtual ~DBStorage() { }
00041
00042 protected:
00043 QString GetColumnName(void) const { return columnname; }
00044 QString GetTableName(void) const { return tablename; }
00045
00046 StorageUser *user;
00047 QString tablename;
00048 QString columnname;
00049 };
00050
00051 class MBASE_PUBLIC SimpleDBStorage : public DBStorage
00052 {
00053 public:
00054 SimpleDBStorage(StorageUser *_user,
00055 QString _table, QString _column) :
00056 DBStorage(_user, _table, _column) { initval.clear(); }
00057 virtual ~SimpleDBStorage() { }
00058
00059 virtual void Load(void);
00060 virtual void Save(void);
00061 virtual void Save(QString destination);
00062 virtual bool IsSaveRequired(void) const;
00063 virtual void SetSaveRequired(void);
00064
00065 protected:
00066 virtual QString GetWhereClause(MSqlBindings &bindings) const = 0;
00067 virtual QString GetSetClause(MSqlBindings &bindings) const;
00068
00069 protected:
00070 QString initval;
00071 };
00072
00073 class MBASE_PUBLIC GenericDBStorage : public SimpleDBStorage
00074 {
00075 public:
00076 GenericDBStorage(StorageUser *_user,
00077 QString _table, QString _column,
00078 QString _keycolumn, QString _keyvalue = QString::null) :
00079 SimpleDBStorage(_user, _table, _column),
00080 keycolumn(_keycolumn), keyvalue(_keyvalue) {}
00081 virtual ~GenericDBStorage() { }
00082
00083 void SetKeyValue(const QString val) { keyvalue = val; }
00084 void SetKeyValue(long long val) { keyvalue = QString::number(val); }
00085
00086 protected:
00087 virtual QString GetWhereClause(MSqlBindings &bindings) const;
00088 virtual QString GetSetClause(MSqlBindings &bindings) const;
00089
00090 protected:
00091 QString keycolumn;
00092 QString keyvalue;
00093 };
00094
00095 class MBASE_PUBLIC TransientStorage : public Storage
00096 {
00097 public:
00098 TransientStorage() { }
00099 virtual ~TransientStorage() { }
00100
00101 virtual void Load(void) { }
00102 virtual void Save(void) { }
00103 virtual void Save(QString ) { }
00104 };
00105
00106 class MBASE_PUBLIC HostDBStorage : public SimpleDBStorage
00107 {
00108 public:
00109 HostDBStorage(StorageUser *_user, const QString &name);
00110
00111 protected:
00112 virtual QString GetWhereClause(MSqlBindings &bindings) const;
00113 virtual QString GetSetClause(MSqlBindings &bindings) const;
00114
00115 protected:
00116 QString settingname;
00117 };
00118
00119 class MBASE_PUBLIC GlobalDBStorage : public SimpleDBStorage
00120 {
00121 public:
00122 GlobalDBStorage(StorageUser *_user, const QString &name);
00123
00124 protected:
00125 virtual QString GetWhereClause(MSqlBindings &bindings) const;
00126 virtual QString GetSetClause(MSqlBindings &bindings) const;
00127
00128 protected:
00129 QString settingname;
00130 };
00131
00133
00134 #endif // MYTHSTORAGE_H