Logo ROOT   6.10/09
Reference Guide
TSQLObjectData.h
Go to the documentation of this file.
1 // @(#)root/sql:$Id$
2 // Author: Sergey Linev 20/11/2005
3 
4 /*************************************************************************
5  * Copyright (C) 1995-2005, Rene Brun and Fons Rademakers. *
6  * All rights reserved. *
7  * *
8  * For the licensing terms see $ROOTSYS/LICENSE. *
9  * For the list of contributors see $ROOTSYS/README/CREDITS. *
10  *************************************************************************/
11 
12 #ifndef ROOT_TSQLObjectData
13 #define ROOT_TSQLObjectData
14 
15 #include "TObject.h"
16 
17 #include "TString.h"
18 
19 class TObjArray;
20 class TList;
21 class TSQLClassInfo;
22 class TSQLResult;
23 class TSQLRow;
24 class TSQLStatement;
25 
26 
27 class TSQLObjectInfo : public TObject {
28 
29 public:
30 
32  TSQLObjectInfo(Long64_t objid, const char* classname, Version_t version);
33  virtual ~TSQLObjectInfo();
34 
35  Long64_t GetObjId() const { return fObjId; }
36  const char* GetObjClassName() const { return fClassName.Data(); }
37  Version_t GetObjVersion() const { return fVersion; }
38 
39 protected:
43 
44  ClassDef(TSQLObjectInfo, 1) //Info (classname, version) about object in database
45 
46 };
47 
48 //=======================================================================
49 
50 class TSQLObjectData : public TObject {
51 
52 public:
54 
56  Long64_t objid,
57  TSQLResult* classdata,
58  TSQLRow* classrow,
59  TSQLResult* blobdata,
60  TSQLStatement* blobstmt);
61 
62  virtual ~TSQLObjectData();
63 
64  Long64_t GetObjId() const { return fObjId; }
65  TSQLClassInfo* GetInfo() const { return fInfo; }
66 
67  Bool_t LocateColumn(const char* colname, Bool_t isblob = kFALSE);
68  Bool_t IsBlobData() const { return fCurrentBlob || (fUnpack!=0); }
69  void ShiftToNextValue();
70 
71  void AddUnpack(const char* tname, const char* value);
72  void AddUnpackInt(const char* tname, Int_t value);
73 
74  const char* GetValue() const { return fLocatedValue; }
75  const char* GetLocatedField() const { return fLocatedField; }
76  const char* GetBlobPrefixName() const { return fBlobPrefixName; }
77  const char* GetBlobTypeName() const { return fBlobTypeName; }
78 
79  Bool_t VerifyDataType(const char* tname, Bool_t errormsg = kTRUE);
80  Bool_t PrepareForRawData();
81 
82 protected:
83  Bool_t ExtractBlobValues();
84  Bool_t ShiftBlobRow();
85 
86  Int_t GetNumClassFields();
87  const char* GetClassFieldName(Int_t n);
88 
98  const char* fLocatedField; //!
99  const char* fLocatedValue; //!
101  const char* fBlobPrefixName; ///<! name prefix in current blob row
102  const char* fBlobTypeName; ///<! name type (without prefix) in current blob row
104 
105  ClassDef(TSQLObjectData, 1) // Keeps the data requested from the SQL server for an object.
106 
107 };
108 
109 // ======================================================================
110 /**
111 \class TSQLObjectDataPool
112 \ingroup IO
113 XML object keeper class
114 */
115 
116 class TSQLObjectDataPool : public TObject {
117 
118 public:
121  virtual ~TSQLObjectDataPool();
122 
123  TSQLClassInfo* GetSqlInfo() const { return fInfo; }
124  TSQLResult* GetClassData() const { return fClassData; }
125  TSQLRow* GetObjectRow(Long64_t objid);
126 
127 protected:
128 
129  TSQLClassInfo* fInfo; ///<! classinfo, for which pool is created
130  TSQLResult* fClassData; ///<! results with request to selected table
131  Bool_t fIsMoreRows; ///<! indicates if class data has not yet read rows
132  TList* fRowsPool; ///<! pool of extrcted, but didnot used rows
133 
134  ClassDef(TSQLObjectDataPool,1) // XML object keeper class
135 
136 };
137 
138 #endif
Version_t fVersion
const char * fBlobPrefixName
! name prefix in current blob row
XML object keeper class.
An array of TObjects.
Definition: TObjArray.h:37
Info (classname, version) about object in database.
long long Long64_t
Definition: RtypesCore.h:69
const char * GetValue() const
virtual ~TSQLObjectInfo()
const char * GetObjClassName() const
short Version_t
Definition: RtypesCore.h:61
TSQLStatement * fBlobStmt
TSQLClassInfo * fInfo
! classinfo, for which pool is created
TSQLResult * fClassData
! results with request to selected table
Contains information about tables specific to one class and version.
Definition: TSQLClassInfo.h:44
Basic string class.
Definition: TString.h:129
int Int_t
Definition: RtypesCore.h:41
bool Bool_t
Definition: RtypesCore.h:59
const char * fLocatedValue
const char * fBlobTypeName
! name type (without prefix) in current blob row
Bool_t IsBlobData() const
TSQLClassInfo * fInfo
TSQLObjectData is used in TBufferSQL2 class in reading procedure.
const char * GetBlobTypeName() const
#define ClassDef(name, id)
Definition: Rtypes.h:297
TSQLResult * fBlobData
A doubly linked list.
Definition: TList.h:43
TSQLResult * GetClassData() const
Version_t GetObjVersion() const
TString fClassName
TObjArray * fUnpack
const char * GetBlobPrefixName() const
TSQLClassInfo * GetSqlInfo() const
const char * GetLocatedField() const
const Bool_t kFALSE
Definition: RtypesCore.h:92
TSQLResult * fClassData
TSQLClassInfo * GetInfo() const
TList * fRowsPool
! pool of extrcted, but didnot used rows
Long64_t GetObjId() const
Mother of all ROOT objects.
Definition: TObject.h:37
Bool_t fIsMoreRows
! indicates if class data has not yet read rows
TSQLRow * fClassRow
TSQLRow * fBlobRow
Long64_t GetObjId() const
const Bool_t kTRUE
Definition: RtypesCore.h:91
const Int_t n
Definition: legend1.C:16
const char * fLocatedField
const char * Data() const
Definition: TString.h:347