CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
Sequences.cc
Go to the documentation of this file.
1 #include "Sequences.h"
2 #include "IDatabaseSchema.h"
3 
5  m_lastIds(),
6  m_schema( schema){
7 }
8 
10 }
11 
12 int ora::Sequences::getNextId( const std::string& sequenceName, bool sinchronize ){
13  int next = 0;
14  std::map<std::string,int>::iterator iS = m_lastIds.find( sequenceName );
15  if( iS == m_lastIds.end() ){
16  bool found = m_schema.sequenceTable().getLastId( sequenceName, next );
17  if( ! found ) {
18  m_schema.sequenceTable().add( sequenceName );
19  } else {
20  next += 1;
21  }
22  m_lastIds.insert( std::make_pair( sequenceName, next ));
23  } else {
24  next = ++iS->second;
25  }
26 
27  if( sinchronize){
28  m_schema.sequenceTable().sinchronize( sequenceName, next );
29  }
30  return next;
31 }
32 
33 void ora::Sequences::sinchronize( const std::string& sequenceName ){
34  std::map<std::string,int>::iterator iS = m_lastIds.find( sequenceName );
35  if( iS != m_lastIds.end() ){
36  int lastOnDb = 0;
37  m_schema.sequenceTable().getLastId( sequenceName, lastOnDb );
38  if( lastOnDb < iS->second ) m_schema.sequenceTable().sinchronize( sequenceName, iS->second );
39  m_lastIds.erase( sequenceName );
40  }
41 }
42 
44  for( std::map<std::string,int>::iterator iS = m_lastIds.begin();
45  iS != m_lastIds.end(); iS++ ){
46  int lastOnDb = 0;
47  m_schema.sequenceTable().getLastId( iS->first, lastOnDb );
48  if( lastOnDb < iS->second ) m_schema.sequenceTable().sinchronize( iS->first, iS->second );
49  }
50  clear();
51 }
52 
53 void ora::Sequences::erase( const std::string& sequenceName ){
54  m_schema.sequenceTable().erase( sequenceName );
55 }
56 
58  m_lastIds.clear();
59 }
60 
61 ora::NamedSequence::NamedSequence( const std::string& sequenceName, ora::IDatabaseSchema& dbSchema ):
62  m_name( sequenceName ),
63  m_sequences( dbSchema ){
64 }
65 
67 }
68 
69 int ora::NamedSequence::getNextId( bool sinchronize ){
70  return m_sequences.getNextId( m_name, sinchronize );
71 }
72 
74  m_sequences.sinchronize( m_name );
75 }
76 
78  m_sequences.erase( m_name );
79 }
80 
82  m_sequences.clear();
83 }
84 
Sequences(IDatabaseSchema &dbSchema)
Definition: Sequences.cc:4
NamedSequence(const std::string &sequenceName, IDatabaseSchema &dbSchema)
Definition: Sequences.cc:61
virtual ~NamedSequence()
Definition: Sequences.cc:66
void erase(const std::string &sequenceName)
Definition: Sequences.cc:53
virtual ~Sequences()
Definition: Sequences.cc:9
int getNextId(bool sinchronize=false)
Definition: Sequences.cc:69
U second(std::pair< T, U > const &p)
void sinchronize(const std::string &sequenceName)
Definition: Sequences.cc:33
void sinchronizeAll()
Definition: Sequences.cc:43
int getNextId(const std::string &sequenceName, bool sinchronize=false)
Definition: Sequences.cc:12
void clear()
Definition: Sequences.cc:57