![]() |
![]() |
#include <PrimitiveStreamer.h>
Public Member Functions | |
void | bindDataForRead (void *data) |
void | bindDataForUpdate (const void *data) |
bool | buildDataElement (DataElement &dataElement, IRelationalData &relationalData) |
PrimitiveStreamerBase (const Reflex::Type &objectType, MappingElement &mapping) | |
virtual | ~PrimitiveStreamerBase () |
Private Attributes | |
std::string | m_columnName |
DataElement * | m_dataElement |
Reflex::Type | m_objectType |
IRelationalData * | m_relationalData |
Definition at line 13 of file PrimitiveStreamer.h.
ora::PrimitiveStreamerBase::PrimitiveStreamerBase | ( | const Reflex::Type & | objectType, |
MappingElement & | mapping | ||
) |
Definition at line 11 of file PrimitiveStreamer.cc.
References ora::MappingElement::columnNames(), and m_columnName.
: m_objectType( objectType ), m_columnName(""), m_dataElement( 0 ), m_relationalData( 0 ){ if( mapping.columnNames().size() ){ m_columnName = mapping.columnNames()[0]; } }
ora::PrimitiveStreamerBase::~PrimitiveStreamerBase | ( | ) | [virtual] |
Definition at line 23 of file PrimitiveStreamer.cc.
{ }
void ora::PrimitiveStreamerBase::bindDataForRead | ( | void * | data | ) |
Definition at line 59 of file PrimitiveStreamer.cc.
References ora::throwException().
{ if( ! m_dataElement ){ throwException( "The streamer has not been built.", "PrimitiveStreamerBase::bindDataForRead"); } void* dataElementAddress = m_dataElement->address( data ); coral::Attribute& relDataElement = m_relationalData->data()[ m_columnName ]; relDataElement.copyValueToAddress( dataElementAddress ); }
void ora::PrimitiveStreamerBase::bindDataForUpdate | ( | const void * | data | ) |
Definition at line 43 of file PrimitiveStreamer.cc.
References ora::throwException().
{ if( ! m_dataElement ){ throwException( "The streamer has not been built.", "PrimitiveStreamerBase::bindDataForUpdate"); } void* dataElementAddress = m_dataElement->address( data ); coral::Attribute& relDataElement = m_relationalData->data()[ m_columnName ]; relDataElement.setValueFromAddress( dataElementAddress ); if(!relDataElement.isValidData()){ throwException("Data provided for column \""+ relDataElement.specification().name()+ "\" is not valid for RDBMS storage.", "PrimitiveStreamerBase::bindDataForUpdate"); } }
bool ora::PrimitiveStreamerBase::buildDataElement | ( | DataElement & | dataElement, |
IRelationalData & | relationalData | ||
) |
Definition at line 26 of file PrimitiveStreamer.cc.
References ora::IRelationalData::addData(), ora::ClassUtils::isTypeString(), and ora::throwException().
{ if( m_columnName.empty() ){ throwException( "Column name not found ", "PrimitiveStreamerBase::buildDataElement"); } m_dataElement = &dataElement; const std::type_info* attrType = &m_objectType.TypeInfo(); if(m_objectType.IsEnum()) attrType = &typeid(int); if(ClassUtils::isTypeString( m_objectType )) attrType = &typeid(std::string); relationalData.addData( m_columnName, *attrType ); m_relationalData = &relationalData; return true; }
std::string ora::PrimitiveStreamerBase::m_columnName [private] |
Definition at line 30 of file PrimitiveStreamer.h.
Referenced by PrimitiveStreamerBase().
Definition at line 31 of file PrimitiveStreamer.h.
Reflex::Type ora::PrimitiveStreamerBase::m_objectType [private] |
Definition at line 29 of file PrimitiveStreamer.h.
Definition at line 32 of file PrimitiveStreamer.h.