CMS 3D CMS Logo

Public Member Functions | Private Member Functions | Private Attributes | Friends

ODFEPedestalOffsetInfo Class Reference

#include <ODFEPedestalOffsetInfo.h>

Inheritance diagram for ODFEPedestalOffsetInfo:
IODConfig IDBObject

List of all members.

Public Member Functions

int fetchID () throw (std::runtime_error)
int fetchNextId () throw (std::runtime_error)
int getId () const
std::string getTable ()
int getVersion () const
 ODFEPedestalOffsetInfo ()
void setId (int id)
void setParameters (std::map< std::string, std::string > my_keys_map)
void setVersion (int id)
 ~ODFEPedestalOffsetInfo ()

Private Member Functions

void clear ()
void fetchData (ODFEPedestalOffsetInfo *result) throw (std::runtime_error)
void fetchLastData (ODFEPedestalOffsetInfo *result) throw (std::runtime_error)
void prepareWrite () throw (std::runtime_error)
void writeDB () throw (std::runtime_error)

Private Attributes

int m_ID
int m_version

Friends

class EcalCondDBInterface

Detailed Description

Definition at line 9 of file ODFEPedestalOffsetInfo.h.


Constructor & Destructor Documentation

ODFEPedestalOffsetInfo::ODFEPedestalOffsetInfo ( )

Definition at line 12 of file ODFEPedestalOffsetInfo.cc.

References NULL.

ODFEPedestalOffsetInfo::~ODFEPedestalOffsetInfo ( )

Definition at line 31 of file ODFEPedestalOffsetInfo.cc.

{
}

Member Function Documentation

void ODFEPedestalOffsetInfo::clear ( void  ) [private]

Definition at line 25 of file ODFEPedestalOffsetInfo.cc.

                                  {

}
void ODFEPedestalOffsetInfo::fetchData ( ODFEPedestalOffsetInfo result) throw (std::runtime_error) [private]

Definition at line 134 of file ODFEPedestalOffsetInfo.cc.

References ExpressReco_HICollisions_FallBack::e, and query::result.

{
  this->checkConnection();
  result->clear();
  if(result->getId()==0 && (result->getConfigTag()=="") ){
    throw(std::runtime_error("ODFEPedestalOffsetInfo::fetchData(): no Id defined for this ODFEPedestalOffsetInfo "));
  }

  try {
    if(result->getId()!=0) { 
      m_readStmt->setSQL("SELECT * FROM " + getTable() +   
                         " where  rec_id = :1 ");
      m_readStmt->setInt(1, result->getId());
    } else if (result->getConfigTag()!="") {
      m_readStmt->setSQL("SELECT * FROM " + getTable() +   
                         " where  tag=:1 AND version=:2 " );
      m_readStmt->setString(1, result->getConfigTag());
      m_readStmt->setInt(2, result->getVersion());
    } else {
      // we should never pass here 
      throw(std::runtime_error("ODFEPedestalOffsetInfo::fetchData(): no Id defined for this record "));
    }

    ResultSet* rset = m_readStmt->executeQuery();

    rset->next();

    // 1 is the id and 2 is the config tag and 3 is the version

    result->setId(rset->getInt(1));
    result->setConfigTag(rset->getString(2));
    result->setVersion(rset->getInt(3));

  } catch (SQLException &e) {
    throw(std::runtime_error("ODFEPedestalOffsetInfo::fetchData():  "+e.getMessage()));
  }
}
int ODFEPedestalOffsetInfo::fetchID ( ) throw (std::runtime_error)

Definition at line 195 of file ODFEPedestalOffsetInfo.cc.

References ExpressReco_HICollisions_FallBack::e.

{
  // Return from memory if available
  if (m_ID!=0) {
    return m_ID;
  }

  this->checkConnection();

  try {
    Statement* stmt = m_conn->createStatement();
    stmt->setSQL("SELECT rec_id FROM "+ getTable()+
                 "WHERE  tag=:1 and version=:2 " );

    stmt->setString(1, getConfigTag() );
    stmt->setInt(2, getVersion() );

    ResultSet* rset = stmt->executeQuery();

    if (rset->next()) {
      m_ID = rset->getInt(1);
    } else {
      m_ID = 0;
    }
    m_conn->terminateStatement(stmt);
  } catch (SQLException &e) {
    throw(std::runtime_error("ODFEPedestalOffsetInfo::fetchID:  "+e.getMessage()));
  }

  return m_ID;
}
void ODFEPedestalOffsetInfo::fetchLastData ( ODFEPedestalOffsetInfo result) throw (std::runtime_error) [private]

Definition at line 173 of file ODFEPedestalOffsetInfo.cc.

References ExpressReco_HICollisions_FallBack::e, and query::result.

{
  this->checkConnection();
  result->clear();
  try {

    m_readStmt->setSQL("SELECT * FROM " + getTable() +   
                       " where  rec_id = ( select max(rec_id) from "+ getTable() +" ) " );
    ResultSet* rset = m_readStmt->executeQuery();

    rset->next();

    result->setId(rset->getInt(1));
    result->setConfigTag(rset->getString(2));
    result->setVersion(rset->getInt(3));

  } catch (SQLException &e) {
    throw(std::runtime_error("ODFEPedestalOffsetInfo::fetchData():  "+e.getMessage()));
  }
}
int ODFEPedestalOffsetInfo::fetchNextId ( ) throw (std::runtime_error)

Definition at line 37 of file ODFEPedestalOffsetInfo.cc.

References ExpressReco_HICollisions_FallBack::e, and query::result.

                                                                 {

  int result=0;
  try {
    this->checkConnection();

    m_readStmt = m_conn->createStatement(); 
    m_readStmt->setSQL("select COND2CONF_INFO_SQ.NextVal from DUAL ");
    ResultSet* rset = m_readStmt->executeQuery();
    while (rset->next ()){
      result= rset->getInt(1);
    }
    result++;
    m_conn->terminateStatement(m_readStmt);
    return result; 

  } catch (SQLException &e) {
    throw(std::runtime_error("ODFEPedestalOffsetInfo::fetchNextId():  "+e.getMessage()));
  }

}
int ODFEPedestalOffsetInfo::getId ( ) const [inline]

Definition at line 19 of file ODFEPedestalOffsetInfo.h.

References m_ID.

{ return m_ID; }
std::string ODFEPedestalOffsetInfo::getTable ( ) [inline, virtual]

Implements IODConfig.

Definition at line 16 of file ODFEPedestalOffsetInfo.h.

{ return "PEDESTAL_OFFSETS_INFO"; }
int ODFEPedestalOffsetInfo::getVersion ( ) const [inline]

Definition at line 24 of file ODFEPedestalOffsetInfo.h.

References m_version.

{ return m_version; }
void ODFEPedestalOffsetInfo::prepareWrite ( ) throw (std::runtime_error) [private, virtual]

Implements IODConfig.

Definition at line 59 of file ODFEPedestalOffsetInfo.cc.

References ExpressReco_HICollisions_FallBack::e, and CastorDbASCIIIO::getId().

{
  this->checkConnection();

  int next_id=0;
  if(getId()==0){
    next_id=fetchNextId();
  }

  try {
    m_writeStmt = m_conn->createStatement();
    m_writeStmt->setSQL("INSERT INTO "+getTable()+" ( rec_id, tag, version) " 
                        " VALUES ( :1, :2, :3 ) " );

    m_writeStmt->setInt(1, next_id);
    m_ID=next_id;

  } catch (SQLException &e) {
    throw(std::runtime_error("ODFEPedestalOffsetInfo::prepareWrite():  "+e.getMessage()));
  }

}
void ODFEPedestalOffsetInfo::setId ( int  id) [inline]

Definition at line 18 of file ODFEPedestalOffsetInfo.h.

References ExpressReco_HICollisions_FallBack::id, and m_ID.

{ m_ID = id; }
void ODFEPedestalOffsetInfo::setParameters ( std::map< std::string, std::string >  my_keys_map)
void ODFEPedestalOffsetInfo::setVersion ( int  id) [inline]

Definition at line 23 of file ODFEPedestalOffsetInfo.h.

References ExpressReco_HICollisions_FallBack::id, and m_version.

{ m_version = id; }
void ODFEPedestalOffsetInfo::writeDB ( ) throw (std::runtime_error) [private]

Definition at line 98 of file ODFEPedestalOffsetInfo.cc.

References gather_cfg::cout, and ExpressReco_HICollisions_FallBack::e.

{
  this->checkConnection();
  this->checkPrepare();

  try {

    // number 1 is the id 
    m_writeStmt->setString(2, this->getConfigTag());
    m_writeStmt->setInt(3, this->getVersion());

    m_writeStmt->executeUpdate();


  } catch (SQLException &e) {
    throw(std::runtime_error("ODFEPedestalOffsetInfo::writeDB():  "+e.getMessage()));
  }


  // Now get the ID
  if (!this->fetchID()) {
    throw(std::runtime_error("ODFEPedestalOffsetInfo::writeDB:  Failed to write"));
  } else {
    int old_version=this->getVersion();
    m_readStmt = m_conn->createStatement(); 
    this->fetchData (this);
    m_conn->terminateStatement(m_readStmt);
    if(this->getVersion()!=old_version) std::cout << "ODFEPedestalOffsetInfo>>WARNING version is "<< getVersion()<< endl; 
  }



}

Friends And Related Function Documentation

friend class EcalCondDBInterface [friend]

Reimplemented from IDBObject.

Definition at line 11 of file ODFEPedestalOffsetInfo.h.


Member Data Documentation

Definition at line 43 of file ODFEPedestalOffsetInfo.h.

Referenced by getId(), and setId().

Definition at line 44 of file ODFEPedestalOffsetInfo.h.

Referenced by getVersion(), and setVersion().