/search.css" rel="stylesheet" type="text/css"/> /search.js">
| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

In This Package:

DbiTableMetaData.h
Go to the documentation of this file.
00001 #ifndef DBITABLEMETADATA_H
00002 #define DBITABLEMETADATA_H
00003 
00004 
00008 
00029 #include <string>
00030 using std::string;
00031 #include <vector>
00032 
00033 #include "DatabaseInterface/DbiFieldType.h"
00034 
00035 class DbiTableMetaData
00036 {
00037 
00038   friend class DbiDBProxy;  //See ctor program notes.
00039 
00040 public:
00041 
00042 // Constructors and destructors.
00043            DbiTableMetaData(const string& tableName = "Unknown");
00044   virtual ~DbiTableMetaData();
00045 
00046 // State testing member functions
00047 
00049   string Sql(Dbi::DbTypes dbType = Dbi::kMySQL) const;
00050 
00051   string TableName() const { return fTableName; }
00052   Bool_t HasRowCounter() const {return  this->NumCols() >=2 && this->ColName(2) == "ROW_COUNTER"; }
00053   UInt_t NumCols() const { return fNumCols;}
00054  
00055 // Column attribute getters (columns number starts from 1 NOT zero)
00056 
00057  const DbiFieldType& ColFieldType(Int_t colNum) const    { return GetAttributes(colNum).Type;}
00058               UInt_t ColFieldConcept(Int_t colNum) const { return GetAttributes(colNum).Concept;} 
00059               Bool_t ColIsNullable(Int_t colNum) const   { return GetAttributes(colNum).IsNullable;} 
00060               Bool_t ColMustDelimit(Int_t colNum) const  { return GetAttributes(colNum).MustDelimit;} 
00061               string ColName(Int_t colNum) const         { return GetAttributes(colNum).Name;} 
00062 
00063 // State changing member functions
00064 
00066       void SetFromSql(const string& sql);
00067 
00068 protected:  
00069 
00070       void Clear();
00071 
00072 // Column attribute setters (columns number starts from 1 NOT zero)
00073 
00074       void SetColIsNullable(Int_t colNum, Bool_t isNullable = true) { SetAttributes(colNum).IsNullable = isNullable;}
00075       void SetColName(const string& name, Int_t colNum)             { SetAttributes(colNum).Name = name;}
00076       void SetColFieldType(const DbiFieldType& type, Int_t colNum);
00077 
00078  private:
00079 
00081   static string GetToken(const char*& strPtr);
00082 
00084   enum { MAXCOL = 1000};
00085 
00086   void ExpandTo(UInt_t colNum);
00087 
00089  struct ColumnAttributes {
00090    ColumnAttributes() { this->SetDefault(); }
00091    void SetDefault() {
00092      Name        = "Unknown";
00093      Concept     = Dbi::kUnknown;
00094      MustDelimit = false;
00095      IsNullable  = false;
00096      Type        = Dbi::kUnknown;
00097    }
00098    string Name;
00099    Int_t Concept;
00100    Bool_t MustDelimit;
00101    Bool_t IsNullable;
00102    DbiFieldType Type;
00103  }; 
00104 
00106   static ColumnAttributes fgDummy;
00107 
00108 
00110   const ColumnAttributes& GetAttributes(Int_t colNum) const;
00111 
00113   ColumnAttributes& SetAttributes(Int_t colNum);
00114 
00115 // Data members
00116 
00118   std::vector<ColumnAttributes> fColAttr; 
00119 
00121   UInt_t fNumCols;         
00122 
00124   string fTableName;
00125 
00126 // Removed: ClassDef(DbiTableMetaData,0)     //TableMetaData for database table 
00127 
00128 };
00129 
00130 
00131 #endif  // DBITABLEMETADATA_H
| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

Generated on Fri May 16 2014 09:56:45 for DatabaseInterface by doxygen 1.7.4