CMS 3D CMS Logo

Public Member Functions | Static Public Member Functions | Private Attributes

ora::OraMainTable Class Reference

#include <OraDatabaseSchema.h>

Inheritance diagram for ora::OraMainTable:
ora::IMainTable ora::IDatabaseTable

List of all members.

Public Member Functions

void create ()
void drop ()
bool exists ()
bool getParameters (std::map< std::string, std::string > &destination)
 OraMainTable (coral::ISchema &dbSchema)
std::string schemaVersion ()
virtual ~OraMainTable ()

Static Public Member Functions

static std::string parameterNameColumn ()
static std::string parameterValueColumn ()
static std::string tableName ()
static std::string version ()

Private Attributes

coral::ISchema & m_schema

Detailed Description

Definition at line 10 of file OraDatabaseSchema.h.


Constructor & Destructor Documentation

ora::OraMainTable::OraMainTable ( coral::ISchema &  dbSchema) [explicit]

Definition at line 36 of file OraDatabaseSchema.cc.

                                                     :
  m_schema( dbSchema ){
}
ora::OraMainTable::~OraMainTable ( ) [virtual]

Definition at line 40 of file OraDatabaseSchema.cc.

                              {
}

Member Function Documentation

void ora::OraMainTable::create ( ) [virtual]

Implements ora::IDatabaseTable.

Definition at line 67 of file OraDatabaseSchema.cc.

References asciidump::table, ora::throwException(), BeamSplash_cfg::version, and ora::IMainTable::versionParameterName().

                            {
  if( m_schema.existsTable( tableName() )){
    throwException( "ORA database main table already exists in this schema.",
                    "OraMainTable::create");
  }
  
  coral::TableDescription descr( "OraDb" );
  descr.setName( tableName() );
  descr.insertColumn( parameterNameColumn(),
                      coral::AttributeSpecification::typeNameForType<std::string>() );
  descr.insertColumn( parameterValueColumn(),
                      coral::AttributeSpecification::typeNameForType<std::string>() );
  descr.setNotNullConstraint( parameterNameColumn() );
  descr.setNotNullConstraint( parameterValueColumn() );
  descr.setPrimaryKey( std::vector<std::string>( 1, parameterNameColumn() ) );

  coral::ITable& table = m_schema.createTable( descr );
  table.privilegeManager().grantToPublic( coral::ITablePrivilegeManager::Select );

  coral::AttributeList dataToInsert;
  dataToInsert.extend<std::string>( parameterNameColumn());
  dataToInsert.extend<std::string>( parameterValueColumn());
  dataToInsert[ parameterNameColumn() ].data<std::string>() = IMainTable::versionParameterName();
  dataToInsert[ parameterValueColumn() ].data<std::string>() = version();
  table.dataEditor().insertRow( dataToInsert );
}
void ora::OraMainTable::drop ( ) [virtual]

Implements ora::IDatabaseTable.

Definition at line 94 of file OraDatabaseSchema.cc.

                          {
  m_schema.dropIfExistsTable( tableName() );
}
bool ora::OraMainTable::exists ( ) [virtual]

Implements ora::IDatabaseTable.

Definition at line 63 of file OraDatabaseSchema.cc.

Referenced by ora::OraDatabaseSchema::existsMainTable().

                            {
  return m_schema.existsTable( tableName() );
}
bool ora::OraMainTable::getParameters ( std::map< std::string, std::string > &  destination) [virtual]

Implements ora::IMainTable.

Definition at line 43 of file OraDatabaseSchema.cc.

References o2o::query, and runTheMatrix::ret.

                                                                      {
  bool ret = false;
  coral::ITable& mainTable = m_schema.tableHandle( tableName() );
  std::auto_ptr<coral::IQuery> query(mainTable.newQuery());
  coral::ICursor& cursor = query->execute();
  while ( cursor.next() ) {
    ret = true;
    const coral::AttributeList& row = cursor.currentRow();
    std::string paramName = row[ parameterNameColumn()].data< std::string >();
    std::string paramValue = row[ parameterValueColumn()].data< std::string >();
    dest.insert( std::make_pair( paramName, paramValue ) );
  }
  return ret;
}
std::string ora::OraMainTable::parameterNameColumn ( ) [static]

Definition at line 26 of file OraDatabaseSchema.cc.

                                              {
  static std::string s_column("PARAMETER_NAME");
  return s_column;
}
std::string ora::OraMainTable::parameterValueColumn ( ) [static]

Definition at line 31 of file OraDatabaseSchema.cc.

                                               {
  static std::string s_column("PARAMETER_VALUE");
  return s_column;
}
std::string ora::OraMainTable::schemaVersion ( ) [virtual]

Implements ora::IMainTable.

Definition at line 58 of file OraDatabaseSchema.cc.

References BeamSplash_cfg::version.

                                        {
  // could be replaced by a call to getParameters in case of needs to distinguish between ora db schema versions...
  return version();
}
std::string ora::OraMainTable::tableName ( ) [static]

Definition at line 21 of file OraDatabaseSchema.cc.

                                    {
  static std::string s_name("ORA_DB");
  return s_name;
}
std::string ora::OraMainTable::version ( ) [static]

Definition at line 16 of file OraDatabaseSchema.cc.

                                  {
  static std::string s_version("V1.0");
  return s_version;
}

Member Data Documentation

coral::ISchema& ora::OraMainTable::m_schema [private]

Definition at line 26 of file OraDatabaseSchema.h.