#include <DbiResultKey.h>
Public Member Functions | |
| DbiResultKey (const DbiResultKey *that=0) | |
| DbiResultKey (std::string tableName, std::string rowName, UInt_t seqno, VldTimeStamp ts) | |
| ..................................................................... | |
| virtual | ~DbiResultKey () |
| std::string | AsString () const |
| Float_t | Compare (const DbiResultKey *that) const |
| Int_t | GetNumVrecs () const |
| std::string | GetTableRowName () const |
| Bool_t | IsEqualTo (const DbiResultKey *that) const |
| void | AddVRecKey (UInt_t seqno, VldTimeStamp ts) |
Static Public Member Functions | |
| const DbiResultKey * | GetEmptyKey () |
Private Attributes | |
| std::string | fTableName |
| Name of database table. | |
| std::string | fRowName |
| Name of row objects. | |
| std::list< DbiResultKey::VRecKey > | fVRecKeys |
| Key for individual DbiValidityRec. | |
| Int_t | fNumVRecKeys |
| Optimisation: list::size() is slow! | |
Static Private Attributes | |
| DbiResultKey | fgEmptyKey |
DatabaseInterface
Contact: n.west1@physics.ox.ac.uk
Definition at line 34 of file DbiResultKey.h.
|
|
Definition at line 35 of file DbiResultKey.cxx. 00035 : 00036 fNumVRecKeys(0) 00037 { 00038 // 00039 // 00040 // Purpose: Default constructor 00041 // 00042 00043 LEA_CTOR //Leak Checker 00044 00045 MSG("Dbi", Msg::kVerbose) << "Creating DbiResultKey" << endl; 00046 if ( that ) *this = *that; 00047 }
|
|
||||||||||||||||||||
|
.....................................................................
Definition at line 51 of file DbiResultKey.cxx. References AddVRecKey(), LEA_CTOR, and MSG. 00054 : 00055 fTableName(tableName), 00056 fRowName(rowName), 00057 fNumVRecKeys(0) 00058 { 00059 // 00060 // 00061 // Purpose: Standard constructor 00062 // 00063 // Contact: N. West 00064 // 00065 // Specification:- 00066 // ============= 00067 // 00068 // o Create DbiResultKey. 00069 00070 LEA_CTOR //Leak Checker 00071 00072 MSG("Dbi", Msg::kVerbose) << "Creating DbiResultKey" << endl; 00073 00074 this->AddVRecKey(seqno,ts); 00075 }
|
|
|
Definition at line 79 of file DbiResultKey.cxx. 00079 {
00080 //
00081 //
00082 // Purpose: Destructor
00083 //
00084 // Contact: N. West
00085 //
00086 // Specification:-
00087 // =============
00088 //
00089 // o Destroy DbiResultKey
00090
00091 LEA_DTOR //Leak Checker
00092
00093 MSG("Dbi", Msg::kVerbose) << "Destroying DbiResultKey" << endl;
00094
00095 }
|
|
||||||||||||
|
Definition at line 99 of file DbiResultKey.cxx. References fVRecKeys. Referenced by DbiResultAgg::CreateKey(), and DbiResultKey(). 00099 {
00100 //
00101 //
00102 // Purpose: Add a DbiValidityRec key.
00103 //
00104
00105 fVRecKeys.push_back(VRecKey(seqno,ts));
00106 ++fNumVRecKeys;
00107
00108 }
|
|
|
Definition at line 112 of file DbiResultKey.cxx. References VldTimeStamp::AsString(), fNumVRecKeys, fTableName, and fVRecKeys. Referenced by DbiRecord::AdoptKey(), and DbiRecord::DeleteKey(). 00112 {
00113 //
00114 //
00115 // Purpose: Return a string that summarises this key giving:-
00116 // 1) The table and row names.
00117 // 2) The number of validity records (aggregates)
00118 // 3) The range of SEQNOs
00119 // 4) The range of CREATIONDATEs.
00120
00121 ostringstream os;
00122 os << "Table:" << fTableName << " row:" << fRowName;
00123 if ( fVRecKeys.empty() ) os << " No vrecs";
00124 else {
00125 os << ". " << fNumVRecKeys << " vrec";
00126 if ( fNumVRecKeys > 1 ) os << "s (seqno min..max;creationdate min..max):";
00127 else os << " (seqno;creationdate):";
00128 os << " ";
00129 std::list<VRecKey>::const_iterator itr = fVRecKeys.begin();
00130 std::list<VRecKey>::const_iterator itrEnd = fVRecKeys.end();
00131 UInt_t seqnoMin = itr->SeqNo;
00132 UInt_t seqnoMax = seqnoMin;
00133 VldTimeStamp tsMin = itr->CreationDate;
00134 VldTimeStamp tsMax = tsMin;
00135 ++itr;
00136 while ( itr != itrEnd ) {
00137 UInt_t seqno = itr->SeqNo;
00138 VldTimeStamp ts = itr->CreationDate;
00139 if ( seqno < seqnoMin ) seqnoMin = seqno;
00140 if ( seqno > seqnoMax ) seqnoMax = seqno;
00141 if ( ts < tsMin ) tsMin = ts;
00142 if ( ts > tsMax ) tsMax = ts;
00143 ++itr;
00144 }
00145 os << seqnoMin;
00146 if ( seqnoMin < seqnoMax ) os << ".." << seqnoMax;
00147 os << ";" << tsMin.AsString("s");
00148 if ( tsMin < tsMax ) os << ".." << tsMax.AsString("s");
00149 }
00150 return string(os.str());
00151
00152 }
|
|
|
Definition at line 155 of file DbiResultKey.cxx. References fRowName, fTableName, fVRecKeys, GetNumVrecs(), and MSG. Referenced by DbiRecord::CompareTableRowKeys(), and IsEqualTo(). 00155 {
00156 //
00157 //
00158 // Purpose: Compare 2 DbiResultKeys
00159 //
00160 // Return: = -2. Table names don't match.
00161 // = -1. Table names match but row names don't
00162 // i.e. contain different DbiTableRow sub-classes.
00163 // >= f Table and row names match and fraction f of the
00164 // SEQNOs have same creation date.
00165 // So f = 1. = perfect match.
00166
00167 // Program Notes:-
00168 // =============
00169
00170 // None.
00171
00172 // Check in table and row names.
00173 if ( fTableName != that->fTableName ) return -2.;
00174 if ( fRowName != that->fRowName ) return -1.;
00175
00176 // Pick the key with the most entries and compare the other to it.
00177
00178 MSG("Dbi",Msg::kDebug) << "Comparing " << *this << " to "
00179 << *that << endl;
00180
00181 const DbiResultKey* keyBig = this;
00182 const DbiResultKey* keySmall = that;
00183 if ( that->GetNumVrecs() > this->GetNumVrecs() ) {
00184 keyBig = that;
00185 keySmall = this;
00186 }
00187 int numVrecs = keyBig->GetNumVrecs();
00188 if ( numVrecs == 0 ) return 0.;
00189
00190 std::map<UInt_t,VldTimeStamp> seqnoToCreationDate;
00191 std::list<DbiResultKey::VRecKey>::const_iterator itrEnd = keyBig->fVRecKeys.end();
00192 for ( std::list<DbiResultKey::VRecKey>::const_iterator itr = keyBig->fVRecKeys.begin();
00193 itr != itrEnd;
00194 ++itr ) seqnoToCreationDate[itr->SeqNo] = itr->CreationDate;
00195 float match = 0;
00196 itrEnd = keySmall->fVRecKeys.end();
00197 for ( std::list<DbiResultKey::VRecKey>::const_iterator itr = keySmall->fVRecKeys.begin();
00198 itr != itrEnd;
00199 ++itr ) {
00200 MSG("Dbi",Msg::kDebug) << "Comparing seqno " << itr->SeqNo << " with creation date " << itr->CreationDate
00201 << " to " << seqnoToCreationDate[itr->SeqNo] << endl;
00202 if ( seqnoToCreationDate[itr->SeqNo] == itr->CreationDate ) ++match;
00203 }
00204 MSG("Dbi",Msg::kDebug) << "Match results: " << match << " out of " << numVrecs << endl;
00205
00206 return match/numVrecs;
00207
00208 }
|
|
|
Definition at line 53 of file DbiResultKey.h. Referenced by DbiResultPtr< T >::GetKey(), and DbiResult::GetKey(). 00053 { return &fgEmptyKey; }
|
|
|
Definition at line 54 of file DbiResultKey.h. Referenced by Compare(). 00054 { return fNumVRecKeys; }
|
|
|
Definition at line 212 of file DbiResultKey.cxx. References fTableName. Referenced by DbiRecord::AddTableRowNames(), and DbiRecord::CompareTableRowKeys(). 00212 {
00213 //
00214 //
00215 // Purpose: Return TableName::RowName
00216
00217 ostringstream os;
00218 os << fTableName << "::" << fRowName;
00219 return os.str();
00220
00221 }
|
|
|
Definition at line 56 of file DbiResultKey.h. References Compare(). Referenced by PEGainCalScheme::DoReset(), PEGainAggCalScheme::DoReset(), MBSpillAccessor::SeekClosest(), BDSpillAccessor::SeekClosest(), and BDSwicMaskAccessor::SetSpillTime(). 00056 {
00057 return this->Compare(that) == 1.; }
|
|
|
Definition at line 19 of file DbiResultKey.cxx. |
|
|
Optimisation: list::size() is slow!
Definition at line 87 of file DbiResultKey.h. Referenced by AsString(). |
|
|
Name of row objects.
Definition at line 81 of file DbiResultKey.h. Referenced by Compare(). |
|
|
Name of database table.
Definition at line 78 of file DbiResultKey.h. Referenced by AsString(), Compare(), and GetTableRowName(). |
|
|
Key for individual DbiValidityRec.
Definition at line 84 of file DbiResultKey.h. Referenced by AddVRecKey(), AsString(), and Compare(). |
1.3.9.1