ATLAS Offline Software
Loading...
Searching...
No Matches
CollectionDescription.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef COLLECTIONSVC_COLLECTIONDESCRIPTION_H
6#define COLLECTIONSVC_COLLECTIONDESCRIPTION_H
7
8#include "StorageSvc/DbType.h"
9
10#include <map>
11#include <string>
12#include <vector>
13
14
15namespace pool {
16
17 class CollectionColumn;
18
28 {
29 public:
39 CollectionDescription( const std::string& name,
40 const DbType& type,
41 const std::string& connection = "" );
42
49
52
59
60 // Force the use of the user-defined copy operator (the default one leaks)
63
64 // Defaults should work for move.
66
72 virtual void setName( const std::string& name );
73
79 virtual void setType( const DbType& type );
80
86 virtual void setConnection( const std::string& connection );
87
95 const std::string& columnName,
96 const std::string& columnType );
97
104 const std::string& columnName);
105
106
108 virtual const std::string& name() const;
109
111 virtual const DbType& type() const;
112
114 virtual const std::string& connection() const;
115
120 virtual const std::string& eventReferenceColumnName() const;
121
125 virtual int numberOfTokenColumns() const;
126
133 virtual const CollectionColumn& tokenColumn( int columnId ) const;
134
138 virtual int numberOfAttributeColumns() const;
139
146 virtual const CollectionColumn& attributeColumn( int columnId ) const;
147
148 // set column ID, return the ID
149 virtual int setColumnId( const std::string& columnName, int id );
150
151 protected:
152 // some helper methods for internal use:
153
155 virtual void copyFrom( const CollectionDescription& rhs );
156
157 // clear all internal structures
158 virtual void clearAll();
159
160 // set or assign new column ID
161 // return the ID
162 virtual int setColumnId( pool::CollectionColumn *column, int id = -1 );
163
164 // rise an exception if the column aleready exists
165 virtual void checkNewColumnName( const std::string& name ) const;
166
167 // get column by name
168 virtual pool::CollectionColumn* column( const std::string& columnName );
169
170 private:
172 std::string m_name;
173
176
178 std::string m_connection;
179
182
183 // Token column description objects
184 std::vector< pool::CollectionColumn* > m_tokenColumns;
185
187 std::vector< pool::CollectionColumn* > m_attributeColumns;
188
191 std::map< std::string, int > m_columnIdForColumnName;
192
193 typedef std::map< std::string, CollectionColumn* > ColumnByName;
196
199 };
200}
201
202#endif
An implementation for retrieving a description of a column of a collection.
virtual const std::string & name() const
Returns the name of the collection and the top level collection fragment.
virtual int setColumnId(pool::CollectionColumn *column, int id=-1)
virtual int numberOfTokenColumns() const
Returns the number of Token columns (including the event reference column if it is used)
CollectionDescription(const std::string &name, const DbType &type, const std::string &connection="")
Constructor that takes as input the minimum amount of properties needed to describe the collection.
virtual const std::string & connection() const
Returns the connection to the database containing the collection.
virtual const std::string & eventReferenceColumnName() const
Returns the name reserved for the event reference Token column.
ColumnByName m_attributeColumnForColumnName
Map of Attribute CollectionColumn objects using column names as keys.
DbType m_type
Storage technology type of collection.
std::string m_name
Name of the collection.
virtual int numberOfAttributeColumns() const
Returns the number of Attribute columns in the collection.
virtual const CollectionColumn & tokenColumn(int columnId) const
Returns a description object for a Token column of the collection, given the position of the column.
virtual const CollectionColumn & insertColumn(const std::string &columnName, const std::string &columnType)
Adds a new column to the collection.
virtual void setConnection(const std::string &connection)
Sets the connection to the database containing the collection.
virtual int setColumnId(const std::string &columnName, int id)
virtual ~CollectionDescription()
Default destructor.
std::map< std::string, int > m_columnIdForColumnName
Map of column ID numbers for column names IDs are unique in the collection.
virtual const DbType & type() const
Returns the storage technology type of the collection.
CollectionDescription(CollectionDescription &&)=default
virtual const CollectionColumn & insertTokenColumn(const std::string &columnName)
Adds a new column of type pool::Token to the collection.
std::vector< pool::CollectionColumn * > m_attributeColumns
Attribute column description objects.
virtual const CollectionColumn & attributeColumn(int columnId) const
Returns a description object for an Attribute column of the collection, given the position of the col...
std::string m_connection
Connection to database containing collection.
std::map< std::string, CollectionColumn * > ColumnByName
ColumnByName m_tokenColumnForColumnName
Map of Token CollectionColumn objects using column names as keys.
virtual void setName(const std::string &name)
Sets the name of the collection.
virtual void setType(const DbType &type)
Sets the storage technology type of the collection.
CollectionDescription(const CollectionDescription &rhs)
Copy constructor.
CollectionDescription & operator=(const CollectionDescription &rhs)
Assignment operator.
std::vector< pool::CollectionColumn * > m_tokenColumns
virtual void copyFrom(const CollectionDescription &rhs)
make this description a copy of 'rhs'
virtual pool::CollectionColumn * column(const std::string &columnName)
virtual void checkNewColumnName(const std::string &name) const
std::string m_eventReferenceColumnName
Name of event reference column.
pool namespace
Definition libname.h:15