#include <dmprovider/SchemaRowIDJoin.h>
Inheritance diagram for BSchemaRowIDJoin:
This class provides a simple client-side join of two schema tables. It results in a new table node with an entry for each of the entries in the join table, which are then mapped back to a corresponding row id in the primary through joinIDCol. In other words, it supports a 1:N relationship between the primary:join, using Data Manager row IDs to map between them.
There are a number of limitations with the current implementation:
Bookkeeping | |
Creation, destruction, locking, etc. | |
BSchemaRowIDJoin (const SContext &context, const sptr< BSchemaTableNode > &primary, const sptr< BSchemaTableNode > &join, const SString &joinIDCol, const SString &primaryColumnName=SString()) | |
Create a new node containing a join between two BSchemaTableNode objects. | |
SContext | Context () |
Disambiguate. | |
virtual SValue | Inspect (const sptr< IBinder > &caller, const SValue &which, uint32_t flags) |
Make INode and IIterable accessible. | |
virtual lock_status_t | Lock () const |
Disambiguate. | |
status_t | StatusCheck () const |
Return initialization status -- B_OK if all is well, else an error code. | |
virtual void | Unlock () const |
Disambiguate. | |
virtual | ~BSchemaRowIDJoin () |
Clean up all resources. | |
Public Member Functions | |
Data Model Implementation | |
Provide default implementation based on new capabilities. | |
virtual status_t | LookupEntry (const SString &entry, uint32_t flags, SValue *node) |
Implement by parsing name into primary and join row names and then calling NodeForLocked(). | |
sptr< RowNode > | NodeForLocked (const sptr< BSchemaTableNode::RowNode > &priNode, const sptr< BSchemaTableNode::RowNode > &joinNode) |
Return INode object for a particular table row ID. | |
Object Generation | |
virtual sptr< GenericIterator > | NewGenericIterator (const SValue &args) |
Create and return a new iterator object. | |
virtual sptr< RowNode > | NewRowNodeLocked (const sptr< BSchemaTableNode::RowNode > &priNode, const sptr< BSchemaTableNode::RowNode > &joinNode) |
Called when a new row object needs to be created. | |
Configuration | |
Functions for customizing how the join is exposed. | |
SString | RowMimeTypeLocked () const |
Retrieve the MIME type of entries (row nodes). | |
virtual void | SetMimeType (const SString &value) |
By default, clients are not allowed to modify the MIME type. | |
status_t | StoreRowMimeTypeLocked (const SString &mimeType) |
Set the MIME type that all entries (row nodes) will report. | |
Friends | |
class | JoinIterator |
class | RowNode |
Classes | |
class | JoinIterator |
Iterator over a BSchemaTableNode. More... | |
struct | node_key |
class | RowNode |
Node object generated for a row in a BSchemaRowIDJoin. More... |
|
Create a new node containing a join between two BSchemaTableNode objects.
|
|
Clean up all resources.
|
|
Disambiguate.
|
|
Make INode and IIterable accessible.
Reimplemented from BnIterable. |
|
Disambiguate.
Reimplemented from BGenericIterable. |
|
Implement by parsing name into primary and join row names and then calling NodeForLocked().
Implements BGenericNode. |
|
Create and return a new iterator object. Derived classes need to implement this to return their own GenericIterator subclass. Implements BGenericIterable. |
|
Called when a new row object needs to be created. The default implementation instantiates and returns a new IndexedDatum object. |
|
Return INode object for a particular table row ID.
|
|
Retrieve the MIME type of entries (row nodes).
|
|
By default, clients are not allowed to modify the MIME type. To use the normal BMetaDataNode implementation, override this to call directly to BGenericNode::SetMimeType(). To change the MIME type yourself, you can call SetMimeTypeLocked(). Reimplemented from BGenericNode. |
|
Return initialization status -- B_OK if all is well, else an error code.
|
|
Set the MIME type that all entries (row nodes) will report.
|
|
Disambiguate.
Reimplemented from BGenericIterable. |
|
|
|
|