Main Page   Namespace List   Class Hierarchy   Compound List   File List   Namespace Members   Compound Members   File Members  

CdbBdbSMetaDataP Class Reference

A self-consistent collection of meta-data information for persistent conditions. More...

Inheritance diagram for CdbBdbSMetaDataP:

BdbPersObj List of all members.

Public Member Functions

 CdbBdbSMetaDataP (const BdbTime &theMinValidityTime=BdbTime::minusInfinity, const BdbTime &theMaxValidityTime=BdbTime::plusInfinity, const BdbTime &theMinInsertionTime=BdbTime::minusInfinity)
 Normal & default constructor.

virtual ~CdbBdbSMetaDataP ()
BdbTime minValidity () const
BdbTime maxValidity () const
BdbTime minInsertion () const
BdbTime maxInsertion () const
 BdbRef (CdbBdbSOiCollectionP) originaIntervalsCollection() const
BdbTime modified () const
 When the metadata object was modified last time.

CdbStatus close (const BdbTime &theMaxInsertionTime, const char *theNewRevisionName=0, const BdbTime &theNewRevisionCreationTime=BdbTime::minusInfinity, const char *theNewRevisionDescription=0)
 Close the metadata.

CdbStatus insert (const CdbBdbSOi &theInterval)
 Insert an interval.

CdbStatus rebuild (CdbBdbSRebuildAction *theRebuildAction, const BdbTime &theBeginTime=BdbTime::minusInfinity, const BdbTime &theEndTime=BdbTime::plusInfinity)
 Rebuild the meta-data.

CdbStatus repoint (CdbBdbObjectClone &theObjectCloningTool, CdbBdbCache< ooRef(ooObj)> &theTranslationDictionary)
 Repoint OID-s in metadata into cloned objects.

CdbStatus findByRevision (const BdbTime &theRevisionId, const BdbTime &theValidityTime, CdbBdbSOi &theOriginalInterval, BdbTime &theBeginOfVisiblePeriod, BdbTime &theEndOfVisiblePeriod) const
 Find an interval using revision identifier and validity time.

CdbStatus findByRevision (const char *theRevisionName, const BdbTime &theValidityTime, CdbBdbSOi &theOriginalInterval, BdbTime &theBeginOfVisiblePeriod, BdbTime &theEndOfVisiblePeriod) const
 Find an interval using revision name and validity time.

CdbStatus findByInsertion (const BdbTime &theInsertionTime, const BdbTime &theValidityTime, CdbBdbSOi &theOriginalInterval, BdbTime &theBeginOfDurationPeriod, BdbTime &theEndOfDurationPeriod) const
 Find an interval using insertion time and validity time.

CdbStatus findRevision (const BdbTime &theId, BdbRef(CdbBdbSRevisionP)&theRef) const
 Find a revision in the collection by the revision identifier.

CdbStatus findRevision (const char *theName, BdbRef(CdbBdbSRevisionP)&theRef) const
 Find a revision in the collection by its name.

CdbStatus createRevision (const BdbTime &theId, const char *theName, const BdbTime &theCreationTime, const char *theDescription)
 Create new revision.

CdbStatus revisionIdIterator (CdbItr< BdbTime > &theItr) const
 Set an iterator for revisions identifiers.

CdbStatus revisionNameIterator (CdbItr< const char * > &theItr) const
 Set an iterator for revisions names.

CdbStatus objectIterator (CdbItr< CdbBdbSCi > &theItr, const BdbTime &theRevisionId, const BdbTime &theBeginTime=BdbTime::minusInfinity, const BdbTime &theEndTime=BdbTime::plusInfinity) const
 Get an instance of an iterator for objects.

CdbStatus objectIterator (CdbItr< CdbBdbSCi > &theItr, const char *theName, const BdbTime &theBeginTime=BdbTime::minusInfinity, const BdbTime &theEndTime=BdbTime::plusInfinity) const
 Get an instance of an iterator for "combined intervals".


Detailed Description

A self-consistent collection of meta-data information for persistent conditions.

This is a persistent class.

Definition at line 27 of file CdbBdbSMetaDataP.ddl.


Constructor & Destructor Documentation

CdbBdbSMetaDataP::CdbBdbSMetaDataP const BdbTime   theMinValidityTime = BdbTime::minusInfinity,
const BdbTime   theMaxValidityTime = BdbTime::plusInfinity,
const BdbTime   theMinInsertionTime = BdbTime::minusInfinity
 

Normal & default constructor.

The parameters of the constructor specify a window for stored intervals at the 2-D space of the "insertion" and "validity" dimensions. This window is "open" on the top to allow new insertions.

The meta-data is "open" for insertion of new intervals as long as stored intervals fit into the window.

Definition at line 670 of file CdbBdbSMetaDataP.cc.

CdbBdbSMetaDataP::~CdbBdbSMetaDataP   [virtual]
 

Definition at line 684 of file CdbBdbSMetaDataP.cc.


Member Function Documentation

CdbBdbSMetaDataP::BdbRef CdbBdbSOiCollectionP    const
 

Referenced by close(), createRevision(), findByRevision(), objectIterator(), rebuild(), and repoint().

CdbStatus CdbBdbSMetaDataP::close const BdbTime   theMaxInsertionTime,
const char *    theNewRevisionName = 0,
const BdbTime   theNewRevisionCreationTime = BdbTime::minusInfinity,
const char *    theNewRevisionDescription = 0
 

Close the metadata.

This operation will dissallow any subsequent insertions into it. The value passed through the method's parameter plays the role of the new upper limit of the 2-D window. This limit should not be equal to "+Infinity".

This operation will also create a new revision with the identifier equal to the current value of the "modification" time, unless there is one in the collection of revisions. Optional revision parameters can also be passed to the procedure. However these parameters are the mandatory ones if a new revision is going to be created.

Definition at line 728 of file CdbBdbSMetaDataP.cc.

References BdbRef(), createRevision(), CdbStatus::Error, BdbTime::minusInfinity, and CdbStatus::Success.

CdbStatus CdbBdbSMetaDataP::createRevision const BdbTime   theId,
const char *    theName,
const BdbTime   theCreationTime,
const char *    theDescription
 

Create new revision.

New revision gets created with specified identifier and the name.

NOTE #1: The metadata object should not be closed yet NOTE #2: The revision identifier can't be neither "-Inifinity" nor the "+Infinity" one. NOTE #3: There should not be any revision with equal or newer revision identifier. NOTE #4: The name must not be a null string. NOTE #5: There should not be any revision with equal or newer revision identifier. NOTE #6: The "id" time of a revision must fit into the 2-D window of the meta-data object.

Parameters:
theId  the revision identifier
theName  the revision name
theCreationTime  the revision creation time
theDescription  the revision description

Definition at line 1512 of file CdbBdbSMetaDataP.cc.

References BdbRef(), CdbStatus::Error, and CdbStatus::Success.

Referenced by close().

CdbStatus CdbBdbSMetaDataP::findByInsertion const BdbTime   theInsertionTime,
const BdbTime   theValidityTime,
CdbBdbSOi   theOriginalInterval,
BdbTime   theBeginOfDurationPeriod,
BdbTime   theEndOfDurationPeriod
const
 

Find an interval using insertion time and validity time.

The parameters of the request must fit into the 2-D window of the metadata object.

This method upon its completion will return the following information:

  • the information about the "original" interval as it was stored.
  • the "duration" period of the "original" interval at the "insertion" time dimension.

This method may return "CdbStatus::NotFound" if the parameters of the query are correct, but if there is no information about an interval in question in the database.

NOTE: The concept of the 'visible' interval as it's defined above does not work for this scenario of finding objects. Instead clients are given the 'original' validity of a found object and its duration period in the insertion time. So it's up to the logic of a client's application how to use this information.

One scenario would be that client treated the 'original' validity interval as the 'visible' one as long as the corresponding insertion time fits into the limits of the 'duration' interval.

Parameters:
theInsertionTime  the insertion time
theValidityTime  the point in the "validity" dimension
theOriginalInterval  the value of an interval to be set up upon completion
theBeginOfDurationPeriod  ...in the "insertion" time dimension
theEndOfDurationPeriod  ...in the "insertion" time dimension

Definition at line 1371 of file CdbBdbSMetaDataP.cc.

References CdbBdbSOi::begin, CdbBdbSOi::end, CdbStatus::Error, and CdbStatus::Success.

CdbStatus CdbBdbSMetaDataP::findByRevision const char *    theRevisionName,
const BdbTime   theValidityTime,
CdbBdbSOi   theOriginalInterval,
BdbTime   theBeginOfVisiblePeriod,
BdbTime   theEndOfVisiblePeriod
const
 

Find an interval using revision name and validity time.

See previous method for the comments.

Parameters:
theRevisionName  the revision name
theValidityTime  the point in the "validity" dimension
theOriginalInterval  the value of an interval to be set up upon completion
theBeginOfVisiblePeriod  ...in the "validity" time dimension
theEndOfVisiblePeriod  ...in the "validity" time dimension

Definition at line 1323 of file CdbBdbSMetaDataP.cc.

References BdbRef(), CdbStatus::Error, findByRevision(), BdbTime::plusInfinity, and CdbStatus::Success.

CdbStatus CdbBdbSMetaDataP::findByRevision const BdbTime   theRevisionId,
const BdbTime   theValidityTime,
CdbBdbSOi   theOriginalInterval,
BdbTime   theBeginOfVisiblePeriod,
BdbTime   theEndOfVisiblePeriod
const
 

Find an interval using revision identifier and validity time.

The parameters of the request must fit into the 2-D window of the metadata object.

This method upon its completion will return the following information:

  • the information about the "original" interval as it was stored.
  • the "visible" period of the "original" interval at the "validity" dimension of the specified revision.

This method may return "CdbStatus::NotFound" if the parameters of the query are correct, but if there is no information about an interval in question in the database.

SPECIAL RULES FOR THE 'VISIBLE' INTERVAL:

  • The "visible" period is _always_ returned even if the return status is not successfull.

  • In case of CdbStatus::NotFound it'sthe 'visible' validity interval of a 'hole' where there is no object.

  • And in other cases it's a validity interval of MetaData object itself.
Parameters:
theRevisionId  the revision identifier ("insertion" time dimension)
theValidityTime  the point in the "validity" dimension
theOriginalInterval  the value of an interval to be set up upon completion
theBeginOfVisiblePeriod  ...in the "validity" time dimension
theEndOfVisiblePeriod  ...in the "validity" time dimension

Definition at line 1213 of file CdbBdbSMetaDataP.cc.

References BdbRef(), CdbBdbSTimeLineInterval< V >::begin, CdbBdbSTimeLineInterval< V >::end, CdbStatus::Error, CdbStatus::NotFound, BdbTime::plusInfinity, CdbStatus::Success, and CdbBdbSTimeLineInterval< V >::value.

Referenced by findByRevision().

CdbStatus CdbBdbSMetaDataP::findRevision const char *    theName,
BdbRef(CdbBdbSRevisionP)&    theRef
const
 

Find a revision in the collection by its name.

The name passed as a parameter should not be 0 pointer. If "" is passed then the topmost revision (if any) will be returned.

In addition to usual (Success or Error) completion status values, this one can also return CdbStatus::NotFound if the revision was not found.

Parameters:
theName  the revision name
theRef  the revision reference to be set up upon completion

Definition at line 1473 of file CdbBdbSMetaDataP.cc.

References CdbStatus::NotFound, and CdbStatus::Success.

CdbStatus CdbBdbSMetaDataP::findRevision const BdbTime   theId,
BdbRef(CdbBdbSRevisionP)&    theRef
const
 

Find a revision in the collection by the revision identifier.

Remember, that "revision id" is a point in the "insertion" time dimension when a revison was created. If BdbTime::plusInfinity is passed then the topmost revision (if any) will be returned.

In addition to usual (Success or Error) completion status values, this one can also return CdbStatus::NotFound if the revision was not found.

Parameters:
theId  the revision identifier
theRef  the revision reference to be set up upon completion

Definition at line 1436 of file CdbBdbSMetaDataP.cc.

References CdbStatus::NotFound, BdbTime::plusInfinity, and CdbStatus::Success.

Referenced by objectIterator().

CdbStatus CdbBdbSMetaDataP::insert const CdbBdbSOi   theInterval
 

Insert an interval.

NOTE #1: The stored interval must point onto a non-zero condition object. NOTE #2: The "insertion" time of an interval must fit into the 2-D window of the meta-data object. NOTE #3: The cross-section in the "validity" dimension between the passed interval and the 2-D window of the metadata must not be of zero length. NOTE #4: The stored interval will get the truncated length in the "validity" dimension if it does not fit into the 2-D window (see previous note).

Definition at line 808 of file CdbBdbSMetaDataP.cc.

References CdbBdbSOi::begin, CdbBdbSOi::end, CdbStatus::Error, CdbBdbSOi::inserted, and CdbStatus::Success.

Referenced by rebuild().

BdbTime CdbBdbSMetaDataP::maxInsertion   const
 

Definition at line 710 of file CdbBdbSMetaDataP.cc.

BdbTime CdbBdbSMetaDataP::maxValidity   const
 

Definition at line 698 of file CdbBdbSMetaDataP.cc.

BdbTime CdbBdbSMetaDataP::minInsertion   const
 

Definition at line 704 of file CdbBdbSMetaDataP.cc.

BdbTime CdbBdbSMetaDataP::minValidity   const
 

Definition at line 692 of file CdbBdbSMetaDataP.cc.

BdbTime CdbBdbSMetaDataP::modified   const
 

When the metadata object was modified last time.

This operation returns a point in the "insertion" time dimension when the object was modified. This time falls into the insertion time range of the metadata object.

The value of this time is initialized to the lower border (minInsertion) of the metadata object upon its (object's) construction. Then it's updated with the insertion time of every single original interval stored,

The value can also be modified to be equal to the newely created revisions identifiers if these values are greater than the current value of the modification time.

NOTE: Revisions can be created "back in time". For those revisions the modification time is not updated.

And finally, when the metadata object gets closed the so called "final" revision is created with its identifier equal to the value of the modification time. Therefore the value of the modification time can be used to look for this revision.

Definition at line 722 of file CdbBdbSMetaDataP.cc.

CdbStatus CdbBdbSMetaDataP::objectIterator CdbItr< CdbBdbSCi > &    theItr,
const char *    theName,
const BdbTime   theBeginTime = BdbTime::minusInfinity,
const BdbTime   theEndTime = BdbTime::plusInfinity
const
 

Get an instance of an iterator for "combined intervals".

Provides a complementary solution to the above defined method in case when a revision name is only known.

Parameters:
theName  the revision name
theBeginTime  the starting point
theEndTime  the ending point

Definition at line 1708 of file CdbBdbSMetaDataP.cc.

References BdbRef(), CdbStatus::Error, findRevision(), and CdbStatus::Success.

CdbStatus CdbBdbSMetaDataP::objectIterator CdbItr< CdbBdbSCi > &    theItr,
const BdbTime   theRevisionId,
const BdbTime   theBeginTime = BdbTime::minusInfinity,
const BdbTime   theEndTime = BdbTime::plusInfinity
const
 

Get an instance of an iterator for objects.

The iterator will deliver information about registered conditon objects how they are seen from specified revision. The objects are described by mean of the "combined intervals", including both the original information about an objects as well as its visible validity as it's seen from the revision.

The intervals delivered via this iterator are ordered (from -Infinity towards +Infinity) in the validity time dimension.

The first interval delivered by the iterator will _include_ the specified begin time. The last one will _exclude_ the specified end time. In other words the end time will be beyond that last interval.

Validity limits passed to the method must be within the "validity window" of a metadata object. Formally these requirements can be described as the logical "AND" of the following 3 statements:

window.begin <= begin < window.end window.begin < end <= window.end begin < end

If these rules are not observed then error status will be returned.

See also:
CdbBdbSCi
Parameters:
theRevisionId  the revision identifier
theBeginTime  the starting point
theEndTime  the ending point

Definition at line 1668 of file CdbBdbSMetaDataP.cc.

References BdbRef(), CdbStatus::Error, findRevision(), and CdbStatus::Success.

CdbStatus CdbBdbSMetaDataP::rebuild CdbBdbSRebuildAction   theRebuildAction,
const BdbTime   theBeginTime = BdbTime::minusInfinity,
const BdbTime   theEndTime = BdbTime::plusInfinity
 

Rebuild the meta-data.

This operation rebuilds the metadata using its current list of original intervals. A user supplied "action" object is called for each original interval. A non-const reference to the interval is passed to the action object. The action object can modify the interval so that it (the modified interval) will be used (and stored) instead of the original one.

The scope of the operation can be limited in the insertion time dimension through two parameters. The action object can only be called for original intervals in the specified range. Other intervals will be copied "as is". Specifying minus/plus infinity as the corresponding limit would mean "no limit". The semantic of this limiting interval is as usually: [begin,end).

NOTE #1: The operation is not allowed for a metadata having a non-topmost revision.

NOTE #2: The operation is not allowed for the "closed" metadata.

NOTE #3: The ownership over the action object is not transferred into the method.

See also:
CdbBdbSRebuildAction

Definition at line 900 of file CdbBdbSMetaDataP.cc.

References CdbBdbSRebuildAction::ACTION_COPY, CdbBdbSRebuildAction::ACTION_ERROR, CdbBdbSRebuildAction::ActionType, BdbRef(), CdbStatus::Error, BdbTime::getGmtNsec(), BdbTime::getGmtSec(), insert(), CdbBdbSOi::inserted, CdbItr< T >::next(), BdbTime::plusInfinity, revisionIdIterator(), CdbStatus::Success, CdbBdbSRebuildAction::userAction(), and CdbItr< T >::value().

CdbStatus CdbBdbSMetaDataP::repoint CdbBdbObjectClone   theObjectCloningTool,
CdbBdbCache< ooRef(ooObj)> &    theTranslationDictionary
 

Repoint OID-s in metadata into cloned objects.

This operations will go through a list of 'original' intervaks, invoke the passed object clone tool to clone user defined objects and repoint metadata onto cloned objects.

NONE #1: The operation will not affect (neither modify nor destroy them) the old objects.

NOTE #2: The operation is also allowed for the "closed" metadata.

NOTE #3: The ownership over the cloning tool is not transferred into the method.

Upon its completion the method will also fill up a dictionary. The dictionary will have translations for the repointed OID-s. The dictionary's key is an OID os an old object and the corresponding value is the OID of a new object replacing the old one.

NOTE #4: The translation dictionary is not reset by the method. It's just updated..

Parameters:
theObjectCloningTool  the tool for cloning
theTranslationDictionary  the dictionary to be filled up

Definition at line 1100 of file CdbBdbSMetaDataP.cc.

References CdbBdbCache< Object >::addObject(), BdbRef(), CdbBdbObjectClone::clone(), CdbStatus::Error, CdbBdbCache< Object >::findObject(), ooRef(), and CdbStatus::Success.

CdbStatus CdbBdbSMetaDataP::revisionIdIterator CdbItr< BdbTime > &    theItr const
 

Set an iterator for revisions identifiers.

NOTE #1: The topmost revision if present will also beincluded into the sequence. NOTE #2: Revisions will be sorted by the values of identifiers.

Definition at line 1599 of file CdbBdbSMetaDataP.cc.

References CdbStatus::Success.

Referenced by rebuild().

CdbStatus CdbBdbSMetaDataP::revisionNameIterator CdbItr< const char * > &    theItr const
 

Set an iterator for revisions names.

NOTE #1: The topmost revision if present will also beincluded into the sequence. NOTE #2: Revisions will be sorted by the values of identifiers.

Definition at line 1610 of file CdbBdbSMetaDataP.cc.

References CdbStatus::Success.


The documentation for this class was generated from the following files:
Generated on Mon Dec 5 18:22:19 2005 for CDB by doxygen1.3-rc3