From 7e1374a004b3157e298f9302742fbe0d979312bf Mon Sep 17 00:00:00 2001 From: aleks-f Date: Sun, 16 Dec 2012 22:06:03 -0600 Subject: [PATCH] remove unecessary toLower() make SessionFactory map keys case insensitive nad remove unnecessary toLower() calls --- Data/ODBC/src/SessionImpl.cpp | 4 ++-- Data/SQLite/src/SessionImpl.cpp | 2 +- Data/include/Poco/Data/SessionFactory.h | 14 ++++++++++++-- Data/include/Poco/Data/SessionImpl.h | 2 +- Data/include/Poco/Data/TypeHandler.h | 2 +- Data/samples/RowFormatter/src/RowFormatter.cpp | 12 ++++++------ Data/src/SessionFactory.cpp | 6 +++--- 7 files changed, 26 insertions(+), 16 deletions(-) diff --git a/Data/ODBC/src/SessionImpl.cpp b/Data/ODBC/src/SessionImpl.cpp index a7b743d2d..74a82957b 100644 --- a/Data/ODBC/src/SessionImpl.cpp +++ b/Data/ODBC/src/SessionImpl.cpp @@ -55,7 +55,7 @@ SessionImpl::SessionImpl(const std::string& connect, bool autoBind, bool autoExtract): Poco::Data::AbstractSessionImpl(connect, loginTimeout), - _connector(toLower(Connector::KEY)), + _connector(Connector::KEY), _maxFieldSize(maxFieldSize), _autoBind(autoBind), _autoExtract(autoExtract), @@ -73,7 +73,7 @@ SessionImpl::SessionImpl(const std::string& connect, bool enforceCapability, bool autoBind, bool autoExtract): Poco::Data::AbstractSessionImpl(connect), - _connector(toLower(Connector::KEY)), + _connector(Connector::KEY), _maxFieldSize(maxFieldSize), _autoBind(autoBind), _autoExtract(autoExtract), diff --git a/Data/SQLite/src/SessionImpl.cpp b/Data/SQLite/src/SessionImpl.cpp index 07252d0cf..91bbb0029 100644 --- a/Data/SQLite/src/SessionImpl.cpp +++ b/Data/SQLite/src/SessionImpl.cpp @@ -60,7 +60,7 @@ const std::string SessionImpl::ABORT_TRANSACTION("ROLLBACK"); SessionImpl::SessionImpl(const std::string& fileName, std::size_t loginTimeout): Poco::Data::AbstractSessionImpl(fileName, loginTimeout), - _connector(toLower(Connector::KEY)), + _connector(Connector::KEY), _pDB(0), _connected(false), _isTransaction(false) diff --git a/Data/include/Poco/Data/SessionFactory.h b/Data/include/Poco/Data/SessionFactory.h index c546f2391..680ebe008 100644 --- a/Data/include/Poco/Data/SessionFactory.h +++ b/Data/include/Poco/Data/SessionFactory.h @@ -45,6 +45,7 @@ #include "Poco/Data/Session.h" #include "Poco/Mutex.h" #include "Poco/SharedPtr.h" +#include "Poco/String.h" #include @@ -71,6 +72,7 @@ class Data_API SessionFactory /// Session ses("SQLite", "dummy.db"); { public: + static SessionFactory& instance(); /// returns the static instance of the singleton. @@ -92,7 +94,7 @@ public: Session create(const std::string& uri, std::size_t timeout = Session::LOGIN_TIMEOUT_DEFAULT); /// Creates a Session for the given URI (must be in key:///connectionString format). - /// Throws an Poco:Data::UnknownDataBaseException if no Connector is registered for the key. + /// Throws a Poco:Data::UnknownDataBaseException if no Connector is registered for the key. private: SessionFactory(); @@ -107,7 +109,15 @@ private: SessionInfo(Connector* pSI); }; - typedef std::map Connectors; + struct ILT + { + bool operator() (const std::string& s1, const std::string& s2) const + { + return Poco::icompare(s1, s2) < 0; + } + }; + + typedef std::map Connectors; Connectors _connectors; Poco::FastMutex _mutex; }; diff --git a/Data/include/Poco/Data/SessionImpl.h b/Data/include/Poco/Data/SessionImpl.h index 81c515474..292d01305 100644 --- a/Data/include/Poco/Data/SessionImpl.h +++ b/Data/include/Poco/Data/SessionImpl.h @@ -227,7 +227,7 @@ inline std::size_t SessionImpl::getLoginTimeout() const inline std::string SessionImpl::uri(const std::string& connector, const std::string& connectionString) { - return format("%s:///%s", toLower(connector), connectionString); + return format("%s:///%s", connector, connectionString); } diff --git a/Data/include/Poco/Data/TypeHandler.h b/Data/include/Poco/Data/TypeHandler.h index 3a94b6352..c3e5032bf 100644 --- a/Data/include/Poco/Data/TypeHandler.h +++ b/Data/include/Poco/Data/TypeHandler.h @@ -103,7 +103,7 @@ class TypeHandler: public AbstractTypeHandler /// poco_assert_dbg (pBinder != 0); /// TypeHandler::bind(pos++, obj.getLastName(), pBinder, dir); /// TypeHandler::bind(pos++, obj.getFirstName(), pBinder, dir); - /// TypeHandler::bind(pos++, obj.getAge(), pBinder); + /// TypeHandler::bind(pos++, obj.getAge(), pBinder, dir); /// } /// /// static void prepare(std::size_t pos, const Person& obj, AbstractPreparator* pPreparator) diff --git a/Data/samples/RowFormatter/src/RowFormatter.cpp b/Data/samples/RowFormatter/src/RowFormatter.cpp index f2b93cb19..37da2ac10 100644 --- a/Data/samples/RowFormatter/src/RowFormatter.cpp +++ b/Data/samples/RowFormatter/src/RowFormatter.cpp @@ -118,12 +118,12 @@ int main(int argc, char** argv) // insert some rows DateTime hd(1956, 3, 1); session << "INSERT INTO Simpsons VALUES('Homer Simpson', 'Springfield', 42, ?)", use(hd), now; - DateTime md(1954, 10, 1); - session << "INSERT INTO Simpsons VALUES('Marge Simpson', 'Springfield', 38, ?)", use(md), now; - DateTime bd(1980, 4, 1); - session << "INSERT INTO Simpsons VALUES('Bart Simpson', 'Springfield', 12, ?)", use(bd), now; - DateTime ld(1982, 5, 9); - session << "INSERT INTO Simpsons VALUES('Lisa Simpson', 'Springfield', 10, ?)", use(ld), now; + hd.assign(1954, 10, 1); + session << "INSERT INTO Simpsons VALUES('Marge Simpson', 'Springfield', 38, ?)", use(hd), now; + hd.assign(1980, 4, 1); + session << "INSERT INTO Simpsons VALUES('Bart Simpson', 'Springfield', 12, ?)", use(hd), now; + hd.assign(1982, 5, 9); + session << "INSERT INTO Simpsons VALUES('Lisa Simpson', 'Springfield', 10, ?)", use(hd), now; // create a statement and print the column names and data as HTML table HTMLTableFormatter tf; diff --git a/Data/src/SessionFactory.cpp b/Data/src/SessionFactory.cpp index 23fa393ed..b957bef04 100644 --- a/Data/src/SessionFactory.cpp +++ b/Data/src/SessionFactory.cpp @@ -65,7 +65,7 @@ void SessionFactory::add(Connector* pIn) Poco::FastMutex::ScopedLock lock(_mutex); SessionInfo info(pIn); std::pair res = - _connectors.insert(std::make_pair(toLower(pIn->name()), info)); + _connectors.insert(std::make_pair(pIn->name(), info)); if (!res.second) res.first->second.cnt++; } @@ -73,7 +73,7 @@ void SessionFactory::add(Connector* pIn) void SessionFactory::remove(const std::string& key) { Poco::FastMutex::ScopedLock lock(_mutex); - Connectors::iterator it = _connectors.find(toLower(key)); + Connectors::iterator it = _connectors.find(key); poco_assert (_connectors.end() != it); --(it->second.cnt); @@ -86,7 +86,7 @@ Session SessionFactory::create(const std::string& key, std::size_t timeout) { Poco::FastMutex::ScopedLock lock(_mutex); - Connectors::iterator it = _connectors.find(toLower(key)); + Connectors::iterator it = _connectors.find(key); poco_assert (_connectors.end() != it); return Session(it->second.ptrSI->createSession(connectionString, timeout));