diff options
-rw-r--r-- | slicer/db/sqlSelectDeserializer.cpp | 80 | ||||
-rw-r--r-- | slicer/db/sqlSource.cpp | 84 | ||||
-rw-r--r-- | slicer/db/sqlSource.h | 35 |
3 files changed, 120 insertions, 79 deletions
diff --git a/slicer/db/sqlSelectDeserializer.cpp b/slicer/db/sqlSelectDeserializer.cpp index 96c58c1..d4198b5 100644 --- a/slicer/db/sqlSelectDeserializer.cpp +++ b/slicer/db/sqlSelectDeserializer.cpp @@ -1,6 +1,6 @@ #include "sqlSelectDeserializer.h" +#include "sqlSource.h" #include <boost/algorithm/string/predicate.hpp> -#include <boost/numeric/conversion/cast.hpp> namespace Slicer { NoRowsReturned::NoRowsReturned() : std::runtime_error("No rows returned") { } @@ -9,84 +9,6 @@ namespace Slicer { UnsupportedModelType::UnsupportedModelType() : std::invalid_argument("Unspported model type") { } - class SqlSource : public Slicer::ValueSource, - public Slicer::TValueSource<boost::posix_time::time_duration>, - public Slicer::TValueSource<boost::posix_time::ptime> - { - public: - SqlSource(const DB::Column & c) : - column(c) - { - } - - bool isNull() const - { - return column.isNull(); - } - - void set(boost::posix_time::ptime & b) const override - { - column >> b; - } - - void set(boost::posix_time::time_duration & b) const override - { - column >> b; - } - - void set(bool & b) const override - { - column >> b; - } - - void set(Ice::Byte & b) const override - { - int64_t cb; - column >> cb; - b = boost::numeric_cast<Ice::Byte>(cb); - } - - void set(Ice::Short & b) const override - { - int64_t cb; - column >> cb; - b = boost::numeric_cast<Ice::Byte>(cb); - } - - void set(Ice::Int & b) const override - { - int64_t cb; - column >> cb; - b = boost::numeric_cast<Ice::Int>(cb); - } - - void set(Ice::Long & b) const override - { - column >> b; - } - - void set(Ice::Float & b) const override - { - double cb; - column >> cb; - b = boost::numeric_cast<Ice::Float>(cb); - } - - void set(Ice::Double & b) const override - { - column >> b; - } - - void set(std::string & b) const override - { - column >> b; - } - - private: - const DB::Column & column; - }; - typedef IceUtil::Handle<SqlSource> SqlSourcePtr; - SqlSelectDeserializer::SqlSelectDeserializer(DB::SelectCommand & c, IceUtil::Optional<std::string> tc) : cmd(c), typeIdColName(tc) diff --git a/slicer/db/sqlSource.cpp b/slicer/db/sqlSource.cpp new file mode 100644 index 0000000..0a3b684 --- /dev/null +++ b/slicer/db/sqlSource.cpp @@ -0,0 +1,84 @@ +#include "sqlSource.h" +#include <boost/numeric/conversion/cast.hpp> + +namespace Slicer { + SqlSource::SqlSource(const DB::Column & c) : + column(c) + { + } + + bool + SqlSource::isNull() const + { + return column.isNull(); + } + + void + SqlSource::set(boost::posix_time::ptime & b) const + { + column >> b; + } + + void + SqlSource::set(boost::posix_time::time_duration & b) const + { + column >> b; + } + + void + SqlSource::set(bool & b) const + { + column >> b; + } + + void + SqlSource::set(Ice::Byte & b) const + { + int64_t cb; + column >> cb; + b = boost::numeric_cast<Ice::Byte>(cb); + } + + void + SqlSource::set(Ice::Short & b) const + { + int64_t cb; + column >> cb; + b = boost::numeric_cast<Ice::Byte>(cb); + } + + void + SqlSource::set(Ice::Int & b) const + { + int64_t cb; + column >> cb; + b = boost::numeric_cast<Ice::Int>(cb); + } + + void + SqlSource::set(Ice::Long & b) const + { + column >> b; + } + + void + SqlSource::set(Ice::Float & b) const + { + double cb; + column >> cb; + b = boost::numeric_cast<Ice::Float>(cb); + } + + void + SqlSource::set(Ice::Double & b) const + { + column >> b; + } + + void + SqlSource::set(std::string & b) const + { + column >> b; + } +} + diff --git a/slicer/db/sqlSource.h b/slicer/db/sqlSource.h new file mode 100644 index 0000000..bf728dc --- /dev/null +++ b/slicer/db/sqlSource.h @@ -0,0 +1,35 @@ +#ifndef SLICER_DB_SQLSOURCE_H +#define SLICER_DB_SQLSOURCE_H + +#include <slicer/modelParts.h> +#include <column.h> +#include <boost/date_time/posix_time/ptime.hpp> + +namespace Slicer { + class SqlSource : public Slicer::ValueSource, + public Slicer::TValueSource<boost::posix_time::time_duration>, + public Slicer::TValueSource<boost::posix_time::ptime> + { + public: + SqlSource(const DB::Column & c); + + bool isNull() const; + void set(boost::posix_time::ptime & b) const override; + void set(boost::posix_time::time_duration & b) const override; + void set(bool & b) const override; + void set(Ice::Byte & b) const override; + void set(Ice::Short & b) const override; + void set(Ice::Int & b) const override; + void set(Ice::Long & b) const override; + void set(Ice::Float & b) const override; + void set(Ice::Double & b) const override; + void set(std::string & b) const override; + + private: + const DB::Column & column; + }; + typedef IceUtil::Handle<SqlSource> SqlSourcePtr; +} + +#endif + |