Writes a data element.
133 "STLContainerWriter::write");
138 throwException(
"Object id elements provided are not matching with the mapped id columns.",
139 "STLContainerWriter::write");
150 if ( ! firstMember ) {
151 throwException(
"Could not find the data member \"first\" for the class \"" +
152 iteratorReturnType.
cppName() +
"\"",
153 "STLContainerWriter::write" );
156 if ( ! secondMember ) {
157 throwException(
"Could not retrieve the data member \"second\" for the class \"" +
158 iteratorReturnType.
cppName() +
"\"",
159 "STLContainerWriter::write" );
168 if ( containerSize == 0 )
return;
170 size_t startElementIndex =
m_arrayHandler->startElementIndex( data );
171 std::auto_ptr<IArrayIteratorHandler> iteratorHandler(
m_arrayHandler->iterate( data ) );
175 for (
size_t iIndex = startElementIndex; iIndex < containerSize; ++iIndex ) {
180 dataBuff[ columns[0] ].data<
int>() = oid;
181 for(
size_t i = 1;
i < columns.size();
i++ ){
185 void* objectReference = iteratorHandler->object();
186 void* componentData = objectReference;
189 void* keyData =
static_cast< char*
>( objectReference ) + firstMember.
offset();
193 componentData =
static_cast< char*
>( objectReference ) + secondMember.
offset();
198 bulkInsert.processNextIteration();
201 iteratorHandler->increment();
void * address(const void *topLevelAddress) const
std::vector< int > m_recordId
std::auto_ptr< IRelationalWriter > m_keyWriter
TypeWithDict templateArgumentAt(size_t index) const
MemberWithDict dataMemberByName(std::string const &) const
coral::AttributeList & data()
std::string cppName() const
MultiRecordInsertOperation * m_insertOperation
std::auto_ptr< IRelationalWriter > m_dataWriter
const std::vector< std::string > & columnNames() const
edm::TypeWithDict m_objectType
void throwException(const std::string &message, const std::string &methodName) __attribute__((noreturn))
InsertCache & setUp(int rowCacheSize)
MappingElement & m_mappingElement
std::auto_ptr< IArrayHandler > m_arrayHandler