![]() |
![]() |
#include <OraDatabaseSchema.h>
Public Member Functions | |
void | addContainer (int id, const std::string &containerName, const std::string &className) |
void | create () |
void | decrementNumberOfObjects (int id) |
void | drop () |
bool | exists () |
bool | getContainerData (std::map< std::string, ContainerHeaderData > &destination) |
void | incrementNumberOfObjects (int id) |
OraContainerHeaderTable (coral::ISchema &dbSchema) | |
void | removeContainer (int id) |
void | updateNumberOfObjects (const std::map< int, unsigned int > &numberOfObjectsForContainerIds) |
virtual | ~OraContainerHeaderTable () |
Static Public Member Functions | |
static std::string | classNameColumn () |
static std::string | containerIdColumn () |
static std::string | containerNameColumn () |
static std::string | numberOfObjectsColumn () |
static std::string | tableName () |
Private Member Functions | |
void | updateContainer (int id, const std::string &setClause) |
Private Attributes | |
coral::ISchema & | m_schema |
Definition at line 88 of file OraDatabaseSchema.h.
ora::OraContainerHeaderTable::OraContainerHeaderTable | ( | coral::ISchema & | dbSchema | ) | [explicit] |
Definition at line 385 of file OraDatabaseSchema.cc.
: m_schema(dbSchema){ }
ora::OraContainerHeaderTable::~OraContainerHeaderTable | ( | ) | [virtual] |
Definition at line 389 of file OraDatabaseSchema.cc.
{ }
void ora::OraContainerHeaderTable::addContainer | ( | int | id, |
const std::string & | containerName, | ||
const std::string & | className | ||
) | [virtual] |
Implements ora::IContainerHeaderTable.
Definition at line 416 of file OraDatabaseSchema.cc.
{ coral::AttributeList dataToInsert; unsigned int numberOfObjects = 0; dataToInsert.extend<int>( containerIdColumn()); dataToInsert.extend<std::string>( containerNameColumn()); dataToInsert.extend<std::string>( classNameColumn()); dataToInsert.extend<unsigned int>( numberOfObjectsColumn()); dataToInsert[ containerIdColumn() ].data<int>() = containerId; dataToInsert[ containerNameColumn() ].data<std::string>() = containerName; dataToInsert[ classNameColumn() ].data<std::string>() = className; dataToInsert[ numberOfObjectsColumn() ].data<unsigned int>() = numberOfObjects; coral::ITable& containerTable = m_schema.tableHandle( tableName() ); containerTable.dataEditor().insertRow( dataToInsert ); }
std::string ora::OraContainerHeaderTable::classNameColumn | ( | ) | [static] |
Definition at line 375 of file OraDatabaseSchema.cc.
{ static std::string s_column("CLASS_NAME"); return s_column; }
std::string ora::OraContainerHeaderTable::containerIdColumn | ( | ) | [static] |
Definition at line 364 of file OraDatabaseSchema.cc.
Referenced by ora::OraClassVersionTable::create().
{ static std::string s_column("CONTAINER_ID"); return s_column; }
std::string ora::OraContainerHeaderTable::containerNameColumn | ( | ) | [static] |
Definition at line 370 of file OraDatabaseSchema.cc.
{ static std::string s_column("CONTAINER_NAME"); return s_column; }
void ora::OraContainerHeaderTable::create | ( | ) | [virtual] |
Implements ora::IDatabaseTable.
Definition at line 494 of file OraDatabaseSchema.cc.
References asciidump::table, and ora::throwException().
{ if( m_schema.existsTable( tableName() )){ throwException( "ORA database container header table already exists in this schema.", "OraContainerHeaderTable::create"); } coral::TableDescription descr( "OraDb" ); descr.setName( tableName() ); descr.insertColumn( containerIdColumn(), coral::AttributeSpecification::typeNameForType<int>() ); descr.insertColumn( containerNameColumn(), coral::AttributeSpecification::typeNameForType<std::string>() ); descr.insertColumn( classNameColumn(), coral::AttributeSpecification::typeNameForType<std::string>() ); descr.insertColumn( numberOfObjectsColumn(), coral::AttributeSpecification::typeNameForType<unsigned int>() ); descr.setNotNullConstraint( containerIdColumn() ); descr.setNotNullConstraint( containerNameColumn() ); descr.setNotNullConstraint( classNameColumn() ); descr.setNotNullConstraint( numberOfObjectsColumn() ); descr.setPrimaryKey( std::vector<std::string>( 1, containerIdColumn() ) ); descr.setUniqueConstraint( containerNameColumn() ); coral::ITable& table = m_schema.createTable( descr ); table.privilegeManager().grantToPublic( coral::ITablePrivilegeManager::Select ); }
void ora::OraContainerHeaderTable::decrementNumberOfObjects | ( | int | id | ) | [virtual] |
Implements ora::IContainerHeaderTable.
Definition at line 460 of file OraDatabaseSchema.cc.
{ std::stringstream setClause; setClause << numberOfObjectsColumn() << " = " <<numberOfObjectsColumn() << " - 1"; return updateContainer( containerId, setClause.str() ); }
void ora::OraContainerHeaderTable::drop | ( | ) | [virtual] |
Implements ora::IDatabaseTable.
Definition at line 520 of file OraDatabaseSchema.cc.
bool ora::OraContainerHeaderTable::exists | ( | ) | [virtual] |
Implements ora::IDatabaseTable.
Definition at line 490 of file OraDatabaseSchema.cc.
bool ora::OraContainerHeaderTable::getContainerData | ( | std::map< std::string, ContainerHeaderData > & | destination | ) | [virtual] |
Implements ora::IContainerHeaderTable.
void ora::OraContainerHeaderTable::incrementNumberOfObjects | ( | int | id | ) | [virtual] |
Implements ora::IContainerHeaderTable.
Definition at line 454 of file OraDatabaseSchema.cc.
{ std::stringstream setClause; setClause << numberOfObjectsColumn() << " = " <<numberOfObjectsColumn() << " + 1"; return updateContainer( containerId, setClause.str() ); }
std::string ora::OraContainerHeaderTable::numberOfObjectsColumn | ( | ) | [static] |
Definition at line 380 of file OraDatabaseSchema.cc.
{ static std::string s_column("NUMBER_OF_OBJECTS"); return s_column; }
void ora::OraContainerHeaderTable::removeContainer | ( | int | id | ) | [virtual] |
Implements ora::IContainerHeaderTable.
Definition at line 433 of file OraDatabaseSchema.cc.
{ std::stringstream whereClause; whereClause << containerIdColumn() << "= :" <<containerIdColumn(); coral::AttributeList whereData; whereData.extend< int >( containerIdColumn() ); whereData.begin()->data< int >() = id; coral::ITable& containerTable = m_schema.tableHandle( tableName() ); containerTable.dataEditor().deleteRows(whereClause.str(),whereData); }
std::string ora::OraContainerHeaderTable::tableName | ( | ) | [static] |
Definition at line 358 of file OraDatabaseSchema.cc.
Referenced by ora::OraClassVersionTable::create().
{ static std::string s_name("ORA_CONTAINER"); return s_name; }
void ora::OraContainerHeaderTable::updateContainer | ( | int | id, |
const std::string & | setClause | ||
) | [private] |
Definition at line 443 of file OraDatabaseSchema.cc.
{ std::stringstream whereClause; whereClause << containerIdColumn() << "= :" <<containerIdColumn(); coral::AttributeList updateData; updateData.extend<int>( containerIdColumn() ); updateData.begin()->data<int>() = containerId; coral::ITable& containerTable = m_schema.tableHandle( tableName() ); containerTable.dataEditor().updateRows(setClause,whereClause.str(),updateData); }
void ora::OraContainerHeaderTable::updateNumberOfObjects | ( | const std::map< int, unsigned int > & | numberOfObjectsForContainerIds | ) | [virtual] |
Implements ora::IContainerHeaderTable.
Definition at line 466 of file OraDatabaseSchema.cc.
{ if( numberOfObjectsForContainerIds.size() ){ std::stringstream whereClause; whereClause << containerIdColumn() << "= :" <<containerIdColumn(); std::stringstream setClause; setClause << numberOfObjectsColumn() << " = :" <<numberOfObjectsColumn(); coral::AttributeList updateData; updateData.extend<unsigned int>( numberOfObjectsColumn() ); updateData.extend<int>( containerIdColumn() ); coral::ITable& containerTable = m_schema.tableHandle( tableName() ); std::auto_ptr<coral::IBulkOperation> bulkUpdate( containerTable.dataEditor().bulkUpdateRows( setClause.str(), whereClause.str(), updateData,(int)numberOfObjectsForContainerIds.size())); for( std::map<int,unsigned int>::const_iterator iCont = numberOfObjectsForContainerIds.begin(); iCont != numberOfObjectsForContainerIds.end(); ++iCont ){ updateData[containerIdColumn()].data<int>() = iCont->first; updateData[numberOfObjectsColumn()].data<unsigned int>() = iCont->second; bulkUpdate->processNextIteration(); } bulkUpdate->flush(); } }
coral::ISchema& ora::OraContainerHeaderTable::m_schema [private] |
Definition at line 112 of file OraDatabaseSchema.h.