ATLAS Offline Software
Loading...
Searching...
No Matches
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 COLLECTIONSVC_COLLECTIONDESCRIPTION_H
6#define COLLECTIONSVC_COLLECTIONDESCRIPTION_H
7
9
10#include <map>
11#include <vector>
12
13
14namespace pool {
15
16 class CollectionColumn;
17
27 {
28 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
62 // Redirect to the copy operator accepting interface reference
64 { operator=( (const ICollectionDescription&) rhs ); return *this; }
65
66 // Force the use of the user-defined copy operator (the default one leaks)
69
70 // Defaults should work for move.
72
78 virtual void setName( const std::string& name );
79
85 virtual void setType( const std::string& type );
86
92 virtual void setConnection( const std::string& connection );
93
99 virtual void setEventReferenceColumnName( const std::string& columnName );
100
110 const std::string& columnName,
111 const std::string& columnType,
112 int maxSize = 0,
113 bool sizeIsFixed = true );
114
121 const std::string& columnName);
122
123
125 virtual const std::string& name() const;
126
128 virtual const std::string& type() const;
129
131 virtual const std::string& connection() const;
132
137 virtual const std::string& eventReferenceColumnName() const;
138
142 virtual int numberOfTokenColumns() const;
143
150 virtual const ICollectionColumn& tokenColumn( int columnId ) const;
151
155 virtual int numberOfAttributeColumns() const;
156
163 virtual const ICollectionColumn& attributeColumn( int columnId ) const;
164
165 // set column ID, return the ID
166 virtual int setColumnId( const std::string& columnName, int id, const std::string& methodName );
167
168 protected:
169 // some helper methods for internal use:
170
172 virtual void copyFrom( const ICollectionDescription& rhs );
173
174 // clear all internal structures
175 virtual void clearAll();
176
177 // set or assign new column ID
178 // return the ID
179 virtual int setColumnId( pool::CollectionColumn *column, int id = -1 );
180
181 // rise an exception if the column aleready exists
182 virtual void checkNewColumnName( const std::string& name, const std::string& method ) const;
183
184 // this version includes the 'method name' in the error message
185 virtual pool::CollectionColumn* column( const std::string& columnName, const std::string& methodName );
186 virtual const pool::CollectionColumn* column( const std::string& columnName, const std::string& methodName ) const;
187
188 private:
190 std::string m_name;
191
193 std::string m_type;
194
196 std::string m_connection;
197
200
201 // Token column description objects
202 std::vector< pool::CollectionColumn* > m_tokenColumns;
203
205 std::vector< pool::CollectionColumn* > m_attributeColumns;
206
209 std::map< std::string, int > m_columnIdForColumnName;
210
211 typedef std::map< std::string, CollectionColumn* > ColumnByName;
214
217 };
218}
219
220#endif
221
An implementation of the ICollectionColumn interface for retrieving a description of a column of a co...
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)
virtual const pool::CollectionColumn * column(const std::string &columnName, const std::string &methodName) const
virtual const std::string & connection() const
Returns the connection to the database containing the collection.
CollectionDescription & operator=(const ICollectionDescription &rhs)
Assignment operator.
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.
virtual const ICollectionColumn & insertTokenColumn(const std::string &columnName)
Adds a new column of type pool::Token to the collection.
std::string m_name
Name of the collection.
virtual int numberOfAttributeColumns() const
Returns the number of Attribute columns in the collection.
virtual void copyFrom(const ICollectionDescription &rhs)
make this description a copy of 'rhs'
virtual void setConnection(const std::string &connection)
Sets the connection to the database containing the collection.
virtual ~CollectionDescription()
Default destructor.
virtual const ICollectionColumn & tokenColumn(int columnId) const
Returns a description object for a Token column of the collection, given the position of the column.
virtual const std::string & type() const
Returns the storage technology type of the collection.
std::map< std::string, int > m_columnIdForColumnName
Map of column ID numbers for column names IDs are unique in the collection.
CollectionDescription(const ICollectionDescription &rhs)
Copy constructor.
CollectionDescription(CollectionDescription &&)=default
virtual const ICollectionColumn & attributeColumn(int columnId) const
Returns a description object for an Attribute column of the collection, given the position of the col...
std::vector< pool::CollectionColumn * > m_attributeColumns
Attribute column description objects.
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.
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.
std::string m_type
Storage technology type of collection.
CollectionDescription(const CollectionDescription &rhs)
CollectionDescription & operator=(const CollectionDescription &rhs)
virtual int setColumnId(const std::string &columnName, int id, const std::string &methodName)
std::vector< pool::CollectionColumn * > m_tokenColumns
virtual const ICollectionColumn & insertColumn(const std::string &columnName, const std::string &columnType, int maxSize=0, bool sizeIsFixed=true)
Adds a new column to the collection.
virtual void setEventReferenceColumnName(const std::string &columnName)
Sets the name of the event reference Token column.
virtual void checkNewColumnName(const std::string &name, const std::string &method) const
virtual void setType(const std::string &type)
Sets the storage technology type of the collection.
virtual pool::CollectionColumn * column(const std::string &columnName, const std::string &methodName)
std::string m_eventReferenceColumnName
Name of event reference column.
An interface for retrieving a description of a column of a collection.
pool namespace
Definition libname.h:15