ATLAS Offline Software
CollectionDescription.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef COLLECTIONBASE_COLLECTIONDESCRIPTION_H
6 #define COLLECTIONBASE_COLLECTIONDESCRIPTION_H
7 
9 
10 #include <map>
11 #include <vector>
12 
13 
14 namespace pool {
15 
16  class CollectionColumn;
17 
27  {
28  public:
40  CollectionDescription( const std::string& name,
41  const std::string& type,
42  const std::string& connection = "",
43  const std::string& eventReferenceColumnName = "" );
44 
52 
55 
62 
63  // Redirect to the copy operator accepting interface reference
65  { operator=( (const ICollectionDescription&) rhs ); return *this; }
66 
67  // Force the use of the user-defined copy operator (the default one leaks)
69  { operator=( (const ICollectionDescription&) rhs ); return *this; }
70 
71  // Defaults should work for move.
73 
79  virtual void setName( const std::string& name );
80 
86  virtual void setType( const std::string& type );
87 
93  virtual void setConnection( const std::string& connection );
94 
100  virtual void setEventReferenceColumnName( const std::string& columnName );
101 
111  const std::string& columnName,
112  const std::string& columnType,
113  const std::string& annotation = "",
114  int maxSize = 0,
115  bool sizeIsFixed = true );
116 
123  const std::string& columnName,
124  const std::string& annotation = "");
125 
126 
128  virtual const std::string& name() const;
129 
131  virtual const std::string& type() const;
132 
134  virtual const std::string& connection() const;
135 
140  virtual const std::string& eventReferenceColumnName() const;
141 
145  virtual int numberOfTokenColumns() const;
146 
153  virtual const ICollectionColumn& tokenColumn( int columnId ) const;
154 
158  virtual int numberOfAttributeColumns() const;
159 
166  virtual const ICollectionColumn& attributeColumn( int columnId ) const;
167 
168  // set column ID, return the ID
169  virtual int setColumnId( const std::string& columnName, int id, const std::string& methodName );
170 
171  protected:
172  // some helper methods for internal use:
173 
175  virtual void copyFrom( const ICollectionDescription& rhs );
176 
177  // clear all internal structures
178  virtual void clearAll();
179 
180  // set or assign new column ID
181  // return the ID
182  virtual int setColumnId( pool::CollectionColumn *column, int id = -1 );
183 
184  // rise an exception if the column aleready exists
185  virtual void checkNewColumnName( const std::string& name, const std::string& method ) const;
186 
187  // check if the column contains tokens
188  virtual bool isTokenColumn( const std::string& columnName, const std::string& method ) const;
189 
190  // this version includes the 'method name' in the error message
191  virtual pool::CollectionColumn* column( const std::string& columnName, const std::string& methodName );
192  virtual const pool::CollectionColumn* column( const std::string& columnName, const std::string& methodName ) const;
193 
194  private:
196  std::string m_name;
197 
199  std::string m_type;
200 
202  std::string m_connection;
203 
206 
207  // Token column description objects
208  std::vector< pool::CollectionColumn* > m_tokenColumns;
209 
211  std::vector< pool::CollectionColumn* > m_attributeColumns;
212 
215  std::map< std::string, int > m_columnIdForColumnName;
216 
217  typedef std::map< std::string, CollectionColumn* > ColumnByName;
220 
223  };
224 }
225 
226 #endif
227 
RunTileTBRec.method
method
Definition: RunTileTBRec.py:73
pool::CollectionDescription::insertColumn
virtual const ICollectionColumn & insertColumn(const std::string &columnName, const std::string &columnType, const std::string &annotation="", int maxSize=0, bool sizeIsFixed=true)
Adds a new column to the collection.
pool::CollectionDescription::m_tokenColumns
std::vector< pool::CollectionColumn * > m_tokenColumns
Definition: CollectionDescription.h:208
pool::CollectionDescription::setConnection
virtual void setConnection(const std::string &connection)
Sets the connection to the database containing the collection.
pool::CollectionDescription::insertTokenColumn
virtual const ICollectionColumn & insertTokenColumn(const std::string &columnName, const std::string &annotation="")
Adds a new column of type pool::Token to the collection.
pool::CollectionDescription::m_connection
std::string m_connection
Connection to database containing collection.
Definition: CollectionDescription.h:202
pool
pool namespace
Definition: libname.h:15
pool::CollectionDescription::name
virtual const std::string & name() const
Returns the name of the collection and the top level collection fragment.
pool::CollectionDescription::m_name
std::string m_name
Name of the collection.
Definition: CollectionDescription.h:196
pool::CollectionDescription::column
virtual const pool::CollectionColumn * column(const std::string &columnName, const std::string &methodName) const
pool::CollectionDescription::operator=
CollectionDescription & operator=(const ICollectionDescription &rhs)
Assignment operator.
pool::CollectionDescription::m_columnIdForColumnName
std::map< std::string, int > m_columnIdForColumnName
Map of column ID numbers for column names IDs are unique in the collection.
Definition: CollectionDescription.h:215
pool::CollectionDescription::setEventReferenceColumnName
virtual void setEventReferenceColumnName(const std::string &columnName)
Sets the name of the event reference Token column.
pool::CollectionDescription::isTokenColumn
virtual bool isTokenColumn(const std::string &columnName, const std::string &method) const
pool::CollectionDescription::CollectionDescription
CollectionDescription(const std::string &name, const std::string &type, const std::string &connection="", const std::string &eventReferenceColumnName="")
Constructor that takes as input the minimum amount of properties needed to describe the collection.
pool::CollectionDescription::m_attributeColumns
std::vector< pool::CollectionColumn * > m_attributeColumns
Attribute column description objects.
Definition: CollectionDescription.h:211
pool::CollectionDescription::eventReferenceColumnName
virtual const std::string & eventReferenceColumnName() const
Returns the name reserved for the event reference Token column.
pool::CollectionDescription::operator=
CollectionDescription & operator=(const CollectionDescription &rhs)
Definition: CollectionDescription.h:64
pool::CollectionDescription::setColumnId
virtual int setColumnId(const std::string &columnName, int id, const std::string &methodName)
pool::CollectionDescription::m_tokenColumnForColumnName
ColumnByName m_tokenColumnForColumnName
Map of Token CollectionColumn objects using column names as keys.
Definition: CollectionDescription.h:219
pool::CollectionDescription
Definition: CollectionDescription.h:27
pool::CollectionColumn
Definition: CollectionColumn.h:24
pool::CollectionDescription::CollectionDescription
CollectionDescription(const CollectionDescription &rhs)
pool::ICollectionColumn
Definition: ICollectionColumn.h:19
pool::CollectionDescription::attributeColumn
virtual const ICollectionColumn & attributeColumn(int columnId) const
Returns a description object for an Attribute column of the collection, given the position of the col...
pool::CollectionDescription::connection
virtual const std::string & connection() const
Returns the connection to the database containing the collection.
pool::CollectionDescription::checkNewColumnName
virtual void checkNewColumnName(const std::string &name, const std::string &method) const
pool::CollectionDescription::clearAll
virtual void clearAll()
pool::CollectionDescription::setType
virtual void setType(const std::string &type)
Sets the storage technology type of the collection.
pool::CollectionDescription::m_eventReferenceColumnName
std::string m_eventReferenceColumnName
Name of event reference column.
Definition: CollectionDescription.h:205
pool::CollectionDescription::CollectionDescription
CollectionDescription(CollectionDescription &&)=default
pool::CollectionDescription::numberOfTokenColumns
virtual int numberOfTokenColumns() const
Returns the number of Token columns (including the event reference column if it is used)
pool::CollectionDescription::column
virtual pool::CollectionColumn * column(const std::string &columnName, const std::string &methodName)
pool::CollectionDescription::m_attributeColumnForColumnName
ColumnByName m_attributeColumnForColumnName
Map of Attribute CollectionColumn objects using column names as keys.
Definition: CollectionDescription.h:222
pool::CollectionDescription::setName
virtual void setName(const std::string &name)
Sets the name of the collection.
pool::CollectionDescription::tokenColumn
virtual const ICollectionColumn & tokenColumn(int columnId) const
Returns a description object for a Token column of the collection, given the position of the column.
pool::CollectionDescription::numberOfAttributeColumns
virtual int numberOfAttributeColumns() const
Returns the number of Attribute columns in the collection.
pool::CollectionDescription::copyFrom
virtual void copyFrom(const ICollectionDescription &rhs)
make this description a copy of 'rhs'
pool::CollectionDescription::type
virtual const std::string & type() const
Returns the storage technology type of the collection.
ICollectionDescription.h
pool::CollectionDescription::ColumnByName
std::map< std::string, CollectionColumn * > ColumnByName
Definition: CollectionDescription.h:217
pool::CollectionDescription::~CollectionDescription
virtual ~CollectionDescription()
Default destructor.
pool::CollectionDescription::m_type
std::string m_type
Storage technology type of collection.
Definition: CollectionDescription.h:199
pool::ICollectionDescription
Definition: ICollectionDescription.h:23
pool::CollectionDescription::CollectionDescription
CollectionDescription(const ICollectionDescription &rhs)
Copy constructor.
pool::CollectionDescription::setColumnId
virtual int setColumnId(pool::CollectionColumn *column, int id=-1)