Purpose:
DKDDOBase is the base class used to represent a Dynamic Data Object (DDO).
Dynamic Data Object is the main class used to transfer data in and out of persistent store. It is a self-describing data object, flexible enough for representing data that originated from heterogeneous stores. Currently, DDO is used to represent data objects from about a dozen or more disparate data sources.
A DDO is essentially a container for data-items, such as EmployeeNo, Name, Address, VideoClip, myPicture, etc. Sometimes data-items are referred to as attributes. A data-item has a name, several properties, and one or more values. The name is usually a string, like "EmployeeNo", "myPicture", etc. Properties describe the characteristics of this data-item, for example, its basic type, like integer, string, decimal, etc. Non basic types are also supported, such as a reference to other data objects, a reference to a collection of strings, shorts, and other types. Other useful properties include the following:
Depending on the underlying back-end datastore support, properties can be persistent, that is, they can be saved in the persistent store, or they can be transient, only represented in memory. In addition to properties of a data-item, the DDO itself can have properties applicable to the whole DDO, like DDO type. The DDO class provides methods for adding data-items and properties, getting and setting properties, and more importantly, getting and setting data-item values.
Data-items are flexible and can be used to represent data from different groups or domains. To avoid naming conflicts between groups, the DDO class supports namespace for data-item names. Content Manager supports DK_CM_NAMESPACE_ATTR, DK_CM_NAMESPACE_LINK, and DK_CM_NAMESPACE_CHILD namespaces, for organizing attribute, link and child data-item names.
Important: Names are case sensitive, and data-items and property positions start from 1, not from 0.
A DDO has a persistent identifier (PID), which is used for locating the data object in the persistent store during retrieve, update and delete operations. A PID contains information about the datastore name, datastore type or entity name, and the address of the data object itself according to the underlying persistent store. See the DKPid class for details.
The DDO implementation is based on the OMG Persistent Object Services (POS) specification available at http://cgi.omg.org/docs/formatl/97-12-12.pdf
DKDDOBase is a subclass of dkDataObject. See also DKDDO (Dynamic Data Object)
Heirarchy:
dkDataObjectBase dkDataObject DKDDOBase DKDDO
Class summary:
typedef unsigned short ushort; class DKDDOBase : public dkDataObject { public: DKDDOBase(ushort initialSize = DK_DDO_INITIAL_SIZE); DKDDOBase(const char* objectType, ushort initialSize = DK_DDO_INITIAL_SIZE); DKDDOBase(const DKPid& pid, ushort initialSize = DK_DDO_INITIAL_SIZE); virtual DKDDOBase(); virtual short protocol() const; virtual DKString getObjectType() const; virtual void setObjectType(const char * toObjectType); virtual DKBoolean updatable() const; virtual ushort addData(const char* dataName = 0); virtual ushort addDataProperty(ushort data_id const char* propertyName, const DKAny& propertyValue); virtual ushort dataCount() const; virtual ushort dataPropertyCount(ushort data_id) const; virtual void setDataProperty(ushort data_id, ushort property_id, const DKAny& property_value); virtual DKAny getDataProperty(ushort data_id, ushort property_id) const; virtual void setDataPropertyName(ushort data_id, ushort property_id, const char * property_name); virtual DKString getDataPropertyName(ushort data_id, ushort property_id) const; virtual void setData(ushort data_id, const DKAny& data_value); virtual DKAny getData(ushort data_id); virtual void setDataName(ushort data_id, const char * data_name ); virtual DKString getDataName(ushort data_id) const; virtual ushort dataId(const char * data_name ) const; virtual ushort dataPropertyId(ushort data_id, const char * property_name) const; virtual void setNull(ushort data_id); virtual DKBoolean isNull(ushort data_id) const; virtual DKBoolean isDataSet(ushort data_id) const; virtual DKBoolean isDataPropertySet(ushort data_id, ushort property_id) const; virtual DKAny getDataByName(const char * data_name); virtual DKAny getDataPropertyByName(ushort data_id, const char* property_name) const; virtual DKAny getDataPropertyByName(const char * data_name, const char * property_name) const; // properties of this DDO virtual ushort addProperty (const char * property_name = 0); virtual ushort addProperty (const char * property_name, const DKAny& property_value); virtual ushort propertyCount () const; virtual void setProperty (ushort property_id, const DKAny& property_value); virtual DKAny getProperty (ushort property_id) const; virtual void setPropertyName (ushort property_id, const char * property_name); virtual DKString getPropertyName (ushort property_id) const; virtual ushort propertyId (const char * property_name) const; virtual DKAny getPropertyByName (const char * property_name) const; virtual DKBoolean isPropertySet (ushort property_id) const; };
Members:
DKDDOBase(ushort initialSize = DK_DDO_INITIAL_SIZE); DKDDOBase(const char* objectType, ushort initialSize = DK_DDO_INITIAL_SIZE); DKDDOBase(const DKPid& pid, ushort initialSize = DK_DDO_INITIAL_SIZE);
A DDOBase object can be created by calling the constructor with or without supplying any parameter, or by copying information from another DDOBase.
Exceptions
virtual ushort addProperty(const char * property_name = 0);
Exceptions
virtual ushort addProperty(const char * property_name, const DKAny& property_value);
Exceptions
virtual ushort dataCount ( ) const;
Exceptions
virtual ushort dataPropertyCount (ushort data_id) const;
Exceptions
virtual void setDataProperty (ushort data_id, ushort property_id, const DKAny& propertyValue);
Exceptions
virtual DKAny getDataProperty (ushort data_id, ushort property_id) const;
Exceptions
virtual void setDataPropertyName (ushort data_id, ushort property_id, const char * property_name);
Exceptions
virtual DKString getDataPropertyName(ushort data_id, ushort property_id) const;
Exceptions
virtual void setData (ushort data_id, const DKAny& dataValue);
Exceptions
virtual DKAny getData (ushort data_id);
Exceptions
virtual void setDataName (ushort data_id , const char * data_name);
Exceptions
virtual DKString getDataName (ushort data_id) const;
Exceptions
virtual ushort dataId (const char * data_name) const;
Exceptions
virtual ushort dataPropertyId (ushort data_id, const char * property_name) const;
Exceptions
virtual void setNull (ushort data_id);
Exceptions
virtual DKBoolean isNull (ushort data_id) const;
Exceptions
virtual DKBoolean isDataSet (ushort data_id) const;
Exceptions
virtual DKBoolean isDataPropertySet (ushort data_id, ushort property_id) const;
Exceptions
virtual DKAny getDataByName (const char * data_name);
Exceptions
virtual DKAny getDataPropertyByName(ushort data_id, const char* property_name) const; virtual DKAny getDataPropertyByName(const char * data_name, const char * property_name)const;
virtual DKString getObjectType() const;
virtual void setObjectType (const char * aObjectType);
Exceptions
virtual ushort addProperty(const char * property_name = 0);
Exceptions
virtual ushort propertyCount() const;
Exceptions
virtual void setProperty (ushort property_id, const DKAny& property_value );
Exceptions
virtual DKAny getProperty (ushort property_id) const;
Exceptions
virtual void setPropertyName (ushort property_id, const char * property_name);
Exceptions
virtual DKString getPropertyName (ushort property_id) const;
Exceptions
virtual ushort propertyId (const char * property_name) const;
Exceptions
virtual DKAny getPropertyByName (const char * property_name) const;
Exceptions
virtual DKBoolean isPropertySet (ushort property_id) const;
virtual short protocol() const;
Exceptions:
DKUsageError -- The following are possible error messages:
(c) Copyright International Business Machines Corporation 1996, 2003. IBM Corp. All rights reserved.