|
MythTV
0.26-pre
|
00001 // -*- Mode: c++ -*- 00002 00003 #ifndef MYTHSTORAGE_H 00004 #define MYTHSTORAGE_H 00005 00006 // Qt headers 00007 #include <QString> 00008 00009 // MythTV headers 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 /*destination*/) { } 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 /*destination*/) { } 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
1.7.6.1