MythTV  0.26-pre
mythstorage.h
Go to the documentation of this file.
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
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends