Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
CollectionDescription.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 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 
12 
13 namespace pool {
14 
15  class CollectionColumn;
16 
26  {
27  public:
39  CollectionDescription( const std::string& name,
40  const std::string& type,
41  const std::string& connection = "",
42  const std::string& eventReferenceColumnName = "" );
43 
51 
54 
61 
68  { operator=( (const ICollectionDescription&) rhs ); return *this; }
69 
75  bool operator==( const CollectionDescription& rhs ) const;
76 
82  bool operator!=( const CollectionDescription& rhs ) const;
83 
89  virtual bool equals( const ICollectionDescription& rhs ) const;
90 
97  virtual bool isSubsetOf( const ICollectionDescription& rhs ) const;
98 
104  virtual void setName( const std::string& name );
105 
111  virtual void setType( const std::string& type );
112 
118  virtual void setConnection( const std::string& connection );
119 
125  virtual void setEventReferenceColumnName( const std::string& columnName );
126 
136  const std::string& columnName,
137  const std::string& columnType,
138  const std::string& annotation = "",
139  int maxSize = 0,
140  bool sizeIsFixed = true );
141 
151  const std::string& columnName,
152  const std::type_info& columnType,
153  const std::string& annotation = "",
154  int maxSize = 0,
155  bool sizeIsFixed = true );
156 
163  const std::string& columnName,
164  const std::string& annotation = "");
165 
166 
169  const std::string& columnName,
170  const std::string& annotation );
171 
172 
178  virtual void dropColumn( const std::string& columnName );
179 
186  virtual void renameColumn( const std::string& oldName, const std::string& newName );
187 
197  virtual void changeColumnType( const std::string& columnName,
198  const std::string& newType,
199  int maxSize = 0,
200  bool sizeIsFixed = true );
201 
211  virtual void changeColumnType( const std::string& columnName,
212  const std::type_info& newType,
213  int maxSize = 0,
214  bool sizeIsFixed = true );
215 
217  virtual const std::string& name() const;
218 
220  virtual const std::string& type() const;
221 
223  virtual const std::string& connection() const;
224 
229  virtual const std::string& eventReferenceColumnName() const;
230 
235  virtual bool hasEventReferenceColumn() const;
236 
241  virtual int numberOfColumns() const;
242 
249  virtual const ICollectionColumn& column( const std::string& columnName ) const;
250 
252  virtual const ICollectionColumn* columnPtr( const std::string& columnName ) const;
253 
257  virtual int numberOfTokenColumns() const;
258 
265  virtual const ICollectionColumn& tokenColumn( const std::string& columnName ) const;
266 
273  virtual const ICollectionColumn& tokenColumn( int columnId ) const;
274 
278  virtual int numberOfAttributeColumns() const;
279 
286  virtual const ICollectionColumn& attributeColumn( const std::string& columnName ) const;
287 
294  virtual const ICollectionColumn& attributeColumn( int columnId ) const;
295 
297  const std::vector< pool::CollectionColumn* >& tokenColumns() const { return m_tokenColumns; }
298 
300  const std::vector< pool::CollectionColumn* >& attributeColumns() const { return m_attributeColumns; }
301 
302  // set column ID, return the ID
303  virtual int setColumnId( const std::string& columnName, int id, const std::string& methodName );
304 
305  protected:
306  // some helper methods for internal use:
307 
309  virtual void copyFrom( const ICollectionDescription& rhs );
310 
311  // clear all internal structures
312  virtual void clearAll();
313 
314  // set or assign new column ID
315  // return the ID
316  virtual int setColumnId( pool::CollectionColumn *column, int id = -1 );
317 
318  // rise an exception if the column aleready exists
319  virtual void checkNewColumnName( const std::string& name, const std::string& method ) const;
320 
321  // check if the column contains tokens
322  virtual bool isTokenColumn( const std::string& columnName, const std::string& method ) const;
323 
324  // this version includes the 'method name' in the error message
325  virtual pool::CollectionColumn* column( const std::string& columnName, const std::string& methodName );
326  virtual const pool::CollectionColumn* column( const std::string& columnName, const std::string& methodName ) const;
327 
328  public:
330  virtual void printOut() const;
331 
332 
333  private:
335  std::string m_name;
336 
338  std::string m_type;
339 
341  std::string m_connection;
342 
345 
346  // Token column description objects
347  std::vector< pool::CollectionColumn* > m_tokenColumns;
348 
350  std::vector< pool::CollectionColumn* > m_attributeColumns;
351 
354  std::map< std::string, int > m_columnIdForColumnName;
355 
356  typedef std::map< std::string, CollectionColumn* > ColumnByName;
359 
362  };
363 }
364 
365 #endif
366 
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::column
virtual const ICollectionColumn & column(const std::string &columnName) const
Returns a description object for a column of the collection, given the name of the column.
pool::CollectionDescription::m_tokenColumns
std::vector< pool::CollectionColumn * > m_tokenColumns
Definition: CollectionDescription.h:347
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:341
pool::CollectionDescription::dropColumn
virtual void dropColumn(const std::string &columnName)
Removes a column from the collection description.
pool::CollectionDescription::changeColumnType
virtual void changeColumnType(const std::string &columnName, const std::string &newType, int maxSize=0, bool sizeIsFixed=true)
Changes the data type of a column in the collection description.
pool
pool namespace
Definition: libname.h:15
pool::CollectionDescription::attributeColumn
virtual const ICollectionColumn & attributeColumn(const std::string &columnName) const
Returns a description object for an Attribute column of the collection, given the name of the column.
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:335
pool::CollectionDescription::hasEventReferenceColumn
virtual bool hasEventReferenceColumn() const
Indicates whether the top level collection fragment contains the event reference column and is theref...
pool::CollectionDescription::column
virtual const pool::CollectionColumn * column(const std::string &columnName, const std::string &methodName) const
pool::CollectionDescription::tokenColumn
virtual const ICollectionColumn & tokenColumn(const std::string &columnName) const
Returns a description object for a Token column of the collection, given the name of the column.
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:354
pool::CollectionDescription::setEventReferenceColumnName
virtual void setEventReferenceColumnName(const std::string &columnName)
Sets the name of the event reference Token column.
pool::CollectionDescription::insertColumn
virtual const ICollectionColumn & insertColumn(const std::string &columnName, const std::type_info &columnType, const std::string &annotation="", int maxSize=0, bool sizeIsFixed=true)
Adds a new column to the collection.
pool::CollectionDescription::isTokenColumn
virtual bool isTokenColumn(const std::string &columnName, const std::string &method) const
pool::CollectionDescription::annotateColumn
virtual const ICollectionColumn & annotateColumn(const std::string &columnName, const std::string &annotation)
add annotation to column
pool::CollectionDescription::tokenColumns
const std::vector< pool::CollectionColumn * > & tokenColumns() const
Returns the Token column description objects.
Definition: CollectionDescription.h:297
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:350
pool::CollectionDescription::numberOfColumns
virtual int numberOfColumns() const
Returns the number of columns (including the event reference column if it is used) in the collection.
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)
Assignment operator.
Definition: CollectionDescription.h:67
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:358
pool::CollectionDescription
Definition: CollectionDescription.h:26
pool::CollectionColumn
Definition: CollectionColumn.h:24
pool::CollectionDescription::operator!=
bool operator!=(const CollectionDescription &rhs) const
Inequality operator.
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::printOut
virtual void printOut() const
print out the description (debugging)
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.
MakeNewFileFromOldAndSubstitution.newName
dictionary newName
Definition: ICHEP2016/MakeNewFileFromOldAndSubstitution.py:95
pool::CollectionDescription::columnPtr
virtual const ICollectionColumn * columnPtr(const std::string &columnName) const
return pointer to Column or NULL if it's not found (will not throw exceptions)
pool::CollectionDescription::m_eventReferenceColumnName
std::string m_eventReferenceColumnName
Name of event reference column.
Definition: CollectionDescription.h:344
pool::CollectionDescription::attributeColumns
const std::vector< pool::CollectionColumn * > & attributeColumns() const
Returns the Attribute column description objects.
Definition: CollectionDescription.h:300
pool::CollectionDescription::numberOfTokenColumns
virtual int numberOfTokenColumns() const
Returns the number of Token columns (including the event reference column if it is used)
pool::CollectionDescription::changeColumnType
virtual void changeColumnType(const std::string &columnName, const std::type_info &newType, int maxSize=0, bool sizeIsFixed=true)
Changes the data type of a column in the collection description.
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:361
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::equals
virtual bool equals(const ICollectionDescription &rhs) const
Check if both Descriptions have the same columns.
pool::CollectionDescription::type
virtual const std::string & type() const
Returns the storage technology type of the collection.
ICollectionDescription.h
pool::CollectionDescription::operator==
bool operator==(const CollectionDescription &rhs) const
Equality operator.
pool::CollectionDescription::isSubsetOf
virtual bool isSubsetOf(const ICollectionDescription &rhs) const
Check if all columns from this Description are present in the rhs Description and if they have the sa...
pool::CollectionDescription::renameColumn
virtual void renameColumn(const std::string &oldName, const std::string &newName)
Renames a column of the collection description.
pool::CollectionDescription::ColumnByName
std::map< std::string, CollectionColumn * > ColumnByName
Definition: CollectionDescription.h:356
pool::CollectionDescription::~CollectionDescription
virtual ~CollectionDescription()
Default destructor.
pool::CollectionDescription::m_type
std::string m_type
Storage technology type of collection.
Definition: CollectionDescription.h:338
pool::ICollectionDescription
Definition: ICollectionDescription.h:25
pool::CollectionDescription::CollectionDescription
CollectionDescription(const ICollectionDescription &rhs)
Copy constructor.
pool::CollectionDescription::setColumnId
virtual int setColumnId(pool::CollectionColumn *column, int id=-1)