27 #include "../../common/STLUtils.h"
28 #include "../../common/Translator.h"
29 #include "../Exception.h"
37 #include <boost/foreach.hpp>
38 #include <boost/format.hpp>
42 std::map<std::string, DataSourceInfoPtr>::const_iterator it =
m_datasources.find(
id);
50 throw Exception(
TE_TR(
"Can not insert a NULL data source into the manager!"));
52 if (m_datasources.find(ds->getId()) == m_datasources.end())
54 std::string conInfo = ds->getConnInfoAsString();
56 std::map<std::string, DataSourceInfoPtr>::const_iterator dsInfoIt = m_datasources.begin();
57 while (dsInfoIt != m_datasources.end())
59 std::string dsConInfo = dsInfoIt->second->getConnInfoAsString();
61 if (conInfo == dsConInfo)
66 m_datasources[ds->getId()] = ds;
73 std::map<std::string, DataSourceInfoPtr>::iterator it = m_datasources.find(
id);
75 if(it == m_datasources.end())
76 throw Exception((boost::format(
TE_TR(
"There isn't a data source with the given id (%1%) in data source manager!")) %
id).str());
78 m_datasources.erase(it);
83 std::map<std::string, DataSourceInfoPtr>::iterator it = m_datasources.begin();
85 while(it!=m_datasources.end())
86 if(it->second->getType() == dsTypeName)
87 m_datasources.erase(it++);
95 std::map<std::string, DataSourceInfoPtr>::const_iterator it = m_datasources.begin();
96 std::map<std::string, DataSourceInfoPtr>::const_iterator itend = m_datasources.end();
100 if(it->second->getType() == dsTypeName)
101 datasources.push_back(it->second);
109 std::map<std::string, DataSourceInfoPtr>::const_iterator dsInfoIt = m_datasources.begin();
110 while (dsInfoIt != m_datasources.end())
112 std::string dsConInfo = dsInfoIt->second->getConnInfoAsString();
114 if (connInfo == dsConInfo)
115 return dsInfoIt->second;
124 return m_datasources.size();
129 return m_datasources.begin();
134 return m_datasources.begin();
139 return m_datasources.end();
144 return m_datasources.end();
std::map< std::string, DataSourceInfoPtr >::iterator iterator
bool add(const DataSourceInfoPtr &ds)
std::map< std::string, DataSourceInfoPtr >::const_iterator const_iterator
void getByType(const std::string &dsTypeName, std::vector< DataSourceInfoPtr > &datasources) const
#define TE_TR(message)
It marks a string in order to get translated.
DataSourceInfoPtr get(const std::string &id) const
A singleton to keep all the registered data sources.
DataSourceInfoPtr getByConnInfo(std::string connInfo)
const_iterator end() const
A conteiner class for keeping information about a data source.
void remove(const std::string &id)
void removeByType(const std::string &dsTypeName)
std::map< std::string, DataSourceInfoPtr > m_datasources
const_iterator begin() const
boost::shared_ptr< DataSourceInfo > DataSourceInfoPtr