00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124
00125
00126
00127
00128
00129
00130
00131
00132
00133
#ifndef StDbTable_HH
00134
#define StDbTable_HH
00135
00136
#include "StDbNode.hh"
00137
#include "StDbTime.h"
00138
00139
#include "StTableDescriptorI.h"
00140
00141
#include "StDbStoreInfo.hh"
00142
#include <string.h>
00143
00144
class StDbBufferI;
00145
class StDbBuffer;
00146
class typeAcceptor;
00147
00148
#ifdef __ROOT__
00149
#include "TROOT.h"
00150
#endif
00151
00152 class StDbTable :
public StDbNode {
00153
00154
protected:
00155
00156 char*
mflavor;
00157 bool mdefaultFlavor;
00158 unsigned int mprodTime;
00159
00161 StDbTime mbeginTime;
00162 StDbTime mendTime;
00163 StDbTime mendStoreTime;
00164
00165
00166 char*
mstructName;
00167 char*
melementName;
00168 bool mIsBaseLine;
00169 bool mIsBinary;
00170 bool mIsIndexed;
00171 char*
mdataTable;
00172
00173 int mschemaID;
00174 int*
melementID;
00175
00177 StDbStoreInfo mstoredData;
00178
00180 bool mhasDescriptor;
00181 StTableDescriptorI*
mdescriptor;
00182
00184 char*
mdata;
00185 int mrows;
00186 int mrowNumber;
00187 bool mhasData;
00188 int mrowsRequested;
00189 unsigned int*
mtimeVals;
00190
00191
virtual void ReadElement(
char*& ptr,
char* name,
int length, StTypeE type,
StDbBuffer* buff);
00192
virtual void WriteElement(
char* ptr,
char* name,
int length, StTypeE type,
StDbBuffer* buff);
00193
virtual void PassOutElement(
char* ptr,
char* name,
int length, StTypeE type,
typeAcceptor* accept);
00194
virtual void PassInElement(
char* ptr,
char* name,
int length, StTypeE type,
typeAcceptor* accept);
00195
virtual void getElementSpecs(
int elementNum,
char*& c,
char*& name,
unsigned int& length,StTypeE& type);
00196
00197
bool createMemory();
00198
bool createMemory(
int nrows);
00199
char*
duplicateData();
00200
void init();
00201
void printNoDataReturned(
const char* elementName);
00202
00203
00204
public:
00205
00206
StDbTable(
const char* tableName);
00207
StDbTable(
const char* tableName,
int schemaID);
00208
StDbTable(
StDbTable& table);
00209
00210 virtual ~StDbTable(){
if(
melementID)
delete []
melementID;
00211
if(
mdescriptor)
delete mdescriptor;
00212
if(
mdata)
delete []
mdata;
00213
if(
mdataTable)
delete []
mdataTable;
00214
if(
mstructName)
delete []
mstructName;
00215
if(
melementName)
delete []
melementName;
00216
if(
mtimeVals)
delete []
mtimeVals;
00217
if(
mflavor)
delete []
mflavor;
00218 };
00219
00220
virtual bool IsTable() const;
00221 virtual
void setNodeInfo(
StDbNode* node);
00222 virtual
unsigned int getTableSize() const;
00223 virtual
char* getCstructName();
00224 virtual
char* printCstructName();
00225 virtual
void setCstructName(const
char* name);
00226 virtual
void setDataTable(const
char* name);
00227 virtual
char* getDataTable();
00228 virtual
char* printDataTable();
00229
00230
00231
00232
00233 virtual
char* getFlavor();
00234 virtual
char* printFlavor();
00235 virtual
void setFlavor(const
char* flavor);
00236 virtual
bool defaultFlavor() const;
00237 virtual
void setDefaultFlavor();
00238
00239 virtual
unsigned int getProdTime();
00240 virtual
void setProdTime(
unsigned int ptime);
00241
00242 virtual
unsigned int getEndTime() const ;
00243 virtual
char* getEndDateTime();
00244 virtual
void setEndTime(
unsigned int time);
00245 virtual
void setEndTime(const
char* time);
00246
00247 virtual
unsigned int getBeginTime() const ;
00248 virtual
char* getBeginDateTime();
00249 virtual
void setBeginTime(
unsigned int time) ;
00250 virtual
void setBeginTime(const
char* time);
00251
00252 virtual
unsigned int getEndStoreTime() const;
00253 virtual
char* getEndStoreDateTime();
00254 virtual
void setEndStoreTime(
unsigned int time);
00255 virtual
void setEndStoreTime(const
char* time);
00256
00257 virtual
int* getElementID(
int& nrows);
00258 virtual
int getRowID(
int rowNumber) const ;
00259 virtual
char* getElementName();
00260 virtual
char* printElementName();
00261 virtual
void setElementName(const
char* ename);
00262 virtual
void setElementID(
int* elements,
int nrows);
00263
00264 virtual
void setBaseLine(
bool baseLine);
00265 virtual
void setIndexed(
bool indexed);
00266 virtual
void setBinary(
bool abinary);
00267 virtual
bool IsBaseLine() const;
00268 virtual
bool IsIndexed() const;
00269 virtual
bool IsBinary() const;
00270
00271 virtual
int getSchemaID() const ;
00272 virtual
void setSchemaID(
int id) ;
00273
00274
00275 virtual
void addWrittenRows(
int* dataID,
int numRows,
bool canRollBack=false);
00276 virtual
int* getWrittenRows(
int& numRows);
00277 virtual
void commitData();
00278 virtual
void clearStoreInfo();
00279 virtual
unsigned int* getTimeValues();
00280 virtual
unsigned int getMaxTime();
00281 virtual
void setTimeValues(
unsigned int* timeValues);
00282
00283
00284
00285
00286 virtual
StTableDescriptorI* getDescriptorCpy() const;
00287 virtual
StTableDescriptorI* getDescriptor();
00288 virtual
void setDescriptor(
StTableDescriptorI* descriptor);
00289 virtual
bool hasDescriptor() const;
00290
void checkDescriptor();
00291
00292
00293
00294 virtual
StDbTable* Clone();
00295 virtual
char* GetTable();
00296 virtual
void* GetTableCpy();
00297 virtual
void SetTable(
char* data,
int nrows,
int* idList=0);
00298 virtual
void AddRows(
char* data,
int nrows);
00299
00300 virtual
int GetNRows() const;
00301 virtual
void setRowNumber(
int row=0);
00302 virtual
bool hasData() const;
00303 virtual
void* getDataValue(const
char* name,
int rowNumber=0);
00304
00305
00306 virtual
int getRowLimit() const;
00307 virtual
void setRowLimit(
int nrows);
00308 virtual
void addNRows(
int newRows);
00309
00311 virtual
void addNElements(
int* elements,
int newRows);
00312 virtual
void resizeNumRows(
int nrows);
00313 virtual
void resizeElementID(
int numRows);
00314
00315
00316 virtual
void StreamAccessor(
typeAcceptor* accept,
bool isReading);
00317 virtual
void dbStreamer(
typeAcceptor* accept,
bool isReading);
00318 virtual
void StreamAccessor(
StDbBufferI* buff,
bool isReading);
00319 virtual
void dbStreamer(
StDbBufferI* buff,
bool isReading);
00320 virtual
void dbStreamerWrite(
StDbBufferI* buff);
00321 virtual
void dbTableStreamer(
StDbBufferI* buff, const
char* name,
bool isReading);
00322 #ifdef __ROOT__
00323 ClassDef(
StDbTable,0)
00324 #endif
00325 };
00326
00327 inline
bool StDbTable::IsTable()
const {
return true; };
00328 inline unsigned int StDbTable::getTableSize()
const {
00329
if(
mhasDescriptor && !
mdescriptor->
getTrowSize())
return mdescriptor->
getTotalSizeInBytes();
00330
if(
mhasDescriptor)
return mdescriptor->
getTrowSize();
00331
return 0;
00332 }
00333 inline char*
StDbTable::printCstructName() {
return mstructName; }
00334 inline char*
StDbTable::printDataTable() {
return mdataTable; }
00335 inline char*
StDbTable::printFlavor() {
return mflavor; }
00336 inline bool StDbTable::defaultFlavor()
const {
return mdefaultFlavor;}
00337 inline void StDbTable::setProdTime(
unsigned int ptime) {
mprodTime=ptime; }
00338 inline unsigned int StDbTable::getProdTime() {
return mprodTime; }
00339 inline unsigned int StDbTable::getEndTime()
const {
return mendTime.
munixTime; }
00340 inline char*
StDbTable::getEndDateTime() {
return mendTime.
mdateTime; }
00341 inline void StDbTable::setEndTime(
unsigned int time){
mendTime.
munixTime=time;}
00342 inline void StDbTable::setEndTime(
const char* time){
mendTime.
setDateTime(time);}
00343 inline unsigned int StDbTable::getBeginTime()
const {
return mbeginTime.
munixTime; }
00344 inline char*
StDbTable::getBeginDateTime() {
return mbeginTime.
mdateTime; }
00345 inline void StDbTable::setBeginTime(
unsigned int time){
mbeginTime.
munixTime = time; }
00346 inline void StDbTable::setBeginTime(
const char* time){
mbeginTime.
setDateTime(time); }
00347 inline unsigned int StDbTable::getEndStoreTime()
const {
return mendStoreTime.
munixTime; }
00348 inline char*
StDbTable::getEndStoreDateTime() {
return mendStoreTime.
mdateTime; }
00349 inline void StDbTable::setEndStoreTime(
unsigned int time) {
mendStoreTime.
munixTime = time; }
00350 inline void StDbTable::setEndStoreTime(
const char* time){
mendStoreTime.
setDateTime(time); }
00351 inline int*
StDbTable::getElementID(
int& nrows) { nrows =
mrows;
return melementID; }
00352
00353 inline int StDbTable::getRowID(
int rowNumber)
const {
00354
if(rowNumber<
mrows)
return melementID[rowNumber];
00355
return 0;
00356 }
00357 inline unsigned int*
StDbTable::getTimeValues(){
return mtimeVals; }
00358 inline void StDbTable::setTimeValues(
unsigned int* timeValues){
00359
if(
mtimeVals)
delete []
mtimeVals;
00360
mtimeVals=timeValues;
00361 }
00362 inline unsigned int StDbTable::getMaxTime() {
00363
unsigned int retVal=0;
00364
for(
int i=0; i<mrows;i++)if(mtimeVals[i]>retVal)retVal=
mtimeVals[i];
00365
return retVal;
00366 }
00367 inline char*
StDbTable::printElementName() {
return melementName; }
00368 inline int StDbTable::getSchemaID()
const {
return mschemaID; }
00369 inline void StDbTable::setSchemaID(
int id) {
mschemaID =
id; }
00370 inline StTableDescriptorI*
StDbTable::getDescriptor() {
return mdescriptor; }
00371 inline bool StDbTable::hasDescriptor()
const {
return mhasDescriptor; }
00372 inline StDbTable*
StDbTable::Clone() {
return (
new StDbTable(*
this));}
00373 inline int StDbTable::GetNRows()
const {
return mrows; }
00374 inline void StDbTable::setRowLimit(
int nrows) {
mrowsRequested=nrows; };
00375 inline int StDbTable::getRowLimit()
const {
return mrowsRequested; };
00376 inline void StDbTable::setRowNumber(
int row){
if(row <
mrows)
mrowNumber = row;}
00377 inline bool StDbTable::hasData()
const {
return mhasData; };
00378 inline void StDbTable::setBinary(
bool abinary) {
mIsBinary=abinary; }
00379 inline void StDbTable::setBaseLine(
bool baseLine) {
mIsBaseLine=baseLine; }
00380 inline void StDbTable::setIndexed(
bool indexed) {
mIsIndexed=indexed; }
00381 inline bool StDbTable::IsBinary()
const {
return mIsBinary; }
00382 inline bool StDbTable::IsBaseLine()
const {
return mIsBaseLine; }
00383 inline bool StDbTable::IsIndexed()
const {
return mIsIndexed; }
00384
00385
#endif