![]() |
![]() |
00001 #include "CondCore/MetaDataService/interface/MetaDataSchemaUtility.h" 00002 #include "CondCore/MetaDataService/interface/MetaDataNames.h" 00003 #include "RelationalAccess/SchemaException.h" 00004 #include "RelationalAccess/ISchema.h" 00005 #include "RelationalAccess/ITable.h" 00006 #include "RelationalAccess/TableDescription.h" 00007 #include "RelationalAccess/ITablePrivilegeManager.h" 00008 #include "RelationalAccess/ICursor.h" 00009 #include "RelationalAccess/IQuery.h" 00010 #include "RelationalAccess/ITableDataEditor.h" 00011 #include "CoralBase/AttributeList.h" 00012 #include "CoralBase/AttributeSpecification.h" 00013 #include "CoralBase/Attribute.h" 00014 cond::MetaDataSchemaUtility::MetaDataSchemaUtility(cond::DbSession& coraldb):m_coraldb(coraldb){ 00015 } 00016 cond::MetaDataSchemaUtility::~MetaDataSchemaUtility(){} 00017 00018 void 00019 cond::MetaDataSchemaUtility::create(){ 00020 try{ 00021 coral::ISchema& schema=m_coraldb.nominalSchema(); 00022 coral::TableDescription description; 00023 description.setName( cond::MetaDataNames::metadataTable() ); 00024 description.insertColumn( cond::MetaDataNames::tagColumn(), coral::AttributeSpecification::typeNameForId( typeid(std::string)) ); 00025 description.insertColumn( cond::MetaDataNames::tokenColumn(), coral::AttributeSpecification::typeNameForId( typeid(std::string)) ); 00026 description.insertColumn( cond::MetaDataNames::timetypeColumn(), coral::AttributeSpecification::typeNameForId( typeid(int)) ); 00027 std::vector<std::string> cols; 00028 cols.push_back( cond::MetaDataNames::tagColumn() ); 00029 description.setPrimaryKey(cols); 00030 description.setNotNullConstraint( cond::MetaDataNames::tokenColumn() ); 00031 coral::ITable& table=schema.createTable(description); 00032 table.privilegeManager().grantToPublic( coral::ITablePrivilegeManager::Select); 00033 }catch( const coral::TableAlreadyExistingException& er ){ 00034 //must catch and ignore this exception!! 00035 //std::cout<<"table alreay existing, not creating a new one"<<std::endl; 00036 } 00037 } 00038 void 00039 cond::MetaDataSchemaUtility::drop(){ 00040 coral::ISchema& schema=m_coraldb.nominalSchema(); 00041 try{ 00042 schema.dropTable(cond::MetaDataNames::metadataTable()); 00043 }catch(coral::TableNotExistingException& er){ 00044 //must catch and ignore this exception!! 00045 //ok do nothing 00046 } 00047 }