From: <den...@us...> - 2010-02-07 02:14:50
|
Revision: 117 http://stdair.svn.sourceforge.net/stdair/?rev=117&view=rev Author: denis_arnaud Date: 2010-02-07 02:14:43 +0000 (Sun, 07 Feb 2010) Log Message: ----------- [DB] Now fully support database storage (with a simple example for airline names). Modified Paths: -------------- trunk/stdair/stdair/bom/AirlineStruct.cpp trunk/stdair/stdair/bom/AirlineStruct.hpp trunk/stdair/stdair/core/Makefile.am trunk/stdair/stdair/service/DBSessionManager.cpp Added Paths: ----------- trunk/stdair/stdair/dbadaptor/ trunk/stdair/stdair/dbadaptor/DbaAbstract.cpp trunk/stdair/stdair/dbadaptor/DbaAbstract.hpp trunk/stdair/stdair/dbadaptor/DbaAirline.cpp trunk/stdair/stdair/dbadaptor/DbaAirline.hpp trunk/stdair/stdair/dbadaptor/Makefile.am trunk/stdair/stdair/dbadaptor/sources.mk Modified: trunk/stdair/stdair/bom/AirlineStruct.cpp =================================================================== --- trunk/stdair/stdair/bom/AirlineStruct.cpp 2010-02-06 17:57:52 UTC (rev 116) +++ trunk/stdair/stdair/bom/AirlineStruct.cpp 2010-02-07 02:14:43 UTC (rev 117) @@ -13,7 +13,6 @@ // //////////////////////////////////////////////////////////////////// AirlineStruct::AirlineStruct () { - assert (false); } // //////////////////////////////////////////////////////////////////// Modified: trunk/stdair/stdair/bom/AirlineStruct.hpp =================================================================== --- trunk/stdair/stdair/bom/AirlineStruct.hpp 2010-02-06 17:57:52 UTC (rev 116) +++ trunk/stdair/stdair/bom/AirlineStruct.hpp 2010-02-07 02:14:43 UTC (rev 117) @@ -58,12 +58,13 @@ // //////////// Constructors & Destructor /////////////// /** Main constructor. */ AirlineStruct (const AirlineCode_T&, const std::string& iAirlineName); + /** Default constructor. */ + AirlineStruct (); + /** Default copy constructor. */ + AirlineStruct (const AirlineStruct&); /** Destructor. */ ~AirlineStruct (); - /** Default copy constructor. */ - AirlineStruct (const AirlineStruct&); - /** Default constructor, not to be used. */ - AirlineStruct (); + private: // ///////////////////// Attributes ////////////////////// Modified: trunk/stdair/stdair/core/Makefile.am =================================================================== --- trunk/stdair/stdair/core/Makefile.am 2010-02-06 17:57:52 UTC (rev 116) +++ trunk/stdair/stdair/core/Makefile.am 2010-02-07 02:14:43 UTC (rev 117) @@ -16,10 +16,12 @@ libstdair_la_LIBADD = \ $(top_builddir)/stdair/basic/libbas.la \ $(top_builddir)/stdair/bom/libbom.la \ + $(top_builddir)/stdair/dbadaptor/libdba.la \ $(top_builddir)/stdair/factory/libfac.la \ $(top_builddir)/stdair/service/libsvc.la libstdair_la_LDFLAGS = \ - $(BOOST_DATE_TIME_LIB) $(BOOST_PROGRAM_OPTIONS_LIB) $(BOOST_FILESYSTEM_LIB) \ + $(BOOST_DATE_TIME_LIB) $(BOOST_PROGRAM_OPTIONS_LIB) \ + $(BOOST_FILESYSTEM_LIB) \ -version-info $(GENERIC_LIBRARY_VERSION) # Property changes on: trunk/stdair/stdair/dbadaptor ___________________________________________________________________ Added: svn:ignore + .deps .libs Makefile.in Makefile Added: trunk/stdair/stdair/dbadaptor/DbaAbstract.cpp =================================================================== --- trunk/stdair/stdair/dbadaptor/DbaAbstract.cpp (rev 0) +++ trunk/stdair/stdair/dbadaptor/DbaAbstract.cpp 2010-02-07 02:14:43 UTC (rev 117) @@ -0,0 +1,9 @@ +// ////////////////////////////////////////////////////////////////////// +// Import section +// ////////////////////////////////////////////////////////////////////// +// StdAir +#include <stdair/dbadaptor/DbaAbstract.hpp> + +namespace stdair { + +} Added: trunk/stdair/stdair/dbadaptor/DbaAbstract.hpp =================================================================== --- trunk/stdair/stdair/dbadaptor/DbaAbstract.hpp (rev 0) +++ trunk/stdair/stdair/dbadaptor/DbaAbstract.hpp 2010-02-07 02:14:43 UTC (rev 117) @@ -0,0 +1,76 @@ +#ifndef __STDAIR_DBA_DBAABSTRACT_HPP +#define __STDAIR_DBA_DBAABSTRACT_HPP + +// ////////////////////////////////////////////////////////////////////// +// Import section +// ////////////////////////////////////////////////////////////////////// +// STL +#include <iosfwd> + +namespace stdair { + + /** Base class for the Database Adaptor (DBA) layer. */ + class DbaAbstract { + public: + + /** Destructor. */ + virtual ~DbaAbstract() {} + + /** Dump a Business Object into an output stream. + @param ostream& the output stream. */ + virtual void toStream (std::ostream& ioOut) const {} + + /** Read a Business Object from an input stream. + @param istream& the input stream. */ + virtual void fromStream (std::istream& ioIn) {} + + protected: + /** Protected Default Constructor to ensure this class is abtract. */ + DbaAbstract() {} + }; +} + +/** + Piece of code given by Nicolai M. Josuttis, Section 13.12.1 "Implementing + Output Operators" (p653) of his book "The C++ Standard Library: A Tutorial + and Reference", published by Addison-Wesley. +*/ +template <class charT, class traits> +inline +std::basic_ostream<charT, traits>& +operator<< (std::basic_ostream<charT, traits>& ioOut, + const stdair::DbaAbstract& iDba) { + /** + string stream: + - with same format + - without special field width + */ + std::basic_ostringstream<charT,traits> ostr; + ostr.copyfmt (ioOut); + ostr.width (0); + + // Fill string stream + iDba.toStream (ostr); + + // Print string stream + ioOut << ostr.str(); + + return ioOut; +} + +/** + Piece of code given by Nicolai M. Josuttis, Section 13.12.1 "Implementing + Output Operators" (pp655-657) of his book "The C++ Standard Library: + A Tutorial and Reference", published by Addison-Wesley. +*/ +template <class charT, class traits> +inline +std::basic_istream<charT, traits>& +operator>> (std::basic_istream<charT, traits>& ioIn, + stdair::DbaAbstract& ioDba) { + // Fill Dba object with input stream + ioDba.fromStream (ioIn); + return ioIn; +} + +#endif // __STDAIR_DBA_DBAABSTRACT_HPP Added: trunk/stdair/stdair/dbadaptor/DbaAirline.cpp =================================================================== --- trunk/stdair/stdair/dbadaptor/DbaAirline.cpp (rev 0) +++ trunk/stdair/stdair/dbadaptor/DbaAirline.cpp 2010-02-07 02:14:43 UTC (rev 117) @@ -0,0 +1,42 @@ +// ////////////////////////////////////////////////////////////////////// +// Import section +// ////////////////////////////////////////////////////////////////////// +// STL +#include <exception> +#include <string> +// Stdair +#include <stdair/bom/AirlineStruct.hpp> +#include <stdair/dbadaptor/DbaAirline.hpp> +#include <stdair/service/Logger.hpp> + +namespace soci { + + // ////////////////////////////////////////////////////////////////////// + void type_conversion<stdair::AirlineStruct>:: + from_base (values const& iAirlineValues, indicator /* ind */, + stdair::AirlineStruct& ioAirline) { + /* + iata_code, name + */ + ioAirline.setAirlineCode (iAirlineValues.get<std::string> ("iata_code")); + // The city code will be set to the default value (empty string) + // when the column is null + ioAirline.setAirlineName (iAirlineValues.get<std::string> ("name", "")); + } + + // ////////////////////////////////////////////////////////////////////// + void type_conversion<stdair::AirlineStruct>:: + to_base (const stdair::AirlineStruct& iAirline, values& ioAirlineValues, + indicator& ioIndicator) { + const indicator lNameIndicator = + iAirline.getAirlineName().empty() ? i_null : i_ok; + ioAirlineValues.set ("iata_code", iAirline.getAirlineCode()); + ioAirlineValues.set ("name", iAirline.getAirlineName(), lNameIndicator); + ioIndicator = i_ok; + } + +} + +namespace stdair { + +} Added: trunk/stdair/stdair/dbadaptor/DbaAirline.hpp =================================================================== --- trunk/stdair/stdair/dbadaptor/DbaAirline.hpp (rev 0) +++ trunk/stdair/stdair/dbadaptor/DbaAirline.hpp 2010-02-07 02:14:43 UTC (rev 117) @@ -0,0 +1,37 @@ +#ifndef __STDAIR_DBA_DBAAIRLINE_HPP +#define __STDAIR_DBA_DBAAIRLINE_HPP + +// ////////////////////////////////////////////////////////////////////// +// Import section +// ////////////////////////////////////////////////////////////////////// +// SOCI +#include <soci/core/soci.h> + +// Forward declarations +namespace stdair { + struct AirlineStruct; +} + +namespace soci { + + /** Specify how the AirlineStruct struct can be converted to (resp. from) + values stored into (resp. retrieved from) database, using the SOCI + framework. */ + template <> + struct type_conversion<stdair::AirlineStruct> { + + typedef values base_type; + + /** Fill an Airline object from the database values. */ + static void from_base (values const& iAirlineValues, + indicator /* ind */, + stdair::AirlineStruct& ioAirline); + + + /** Fill the database values from an Airline object. */ + static void to_base (const stdair::AirlineStruct& iAirline, + values& ioAirlineValues, + indicator& ioIndicator); + }; +} +#endif // __STDAIR_DBA_DBAAIRLINE_HPP Added: trunk/stdair/stdair/dbadaptor/Makefile.am =================================================================== --- trunk/stdair/stdair/dbadaptor/Makefile.am (rev 0) +++ trunk/stdair/stdair/dbadaptor/Makefile.am 2010-02-07 02:14:43 UTC (rev 117) @@ -0,0 +1,16 @@ +## dbadaptor sub-directory +include $(top_srcdir)/Makefile.common +include $(srcdir)/sources.mk + +# +noinst_LTLIBRARIES= libdba.la + +libdba_la_SOURCES= $(dba_h_sources) $(dba_cc_sources) +libdba_la_CXXFLAGS = $(SOCI_CFLAGS) +libdba_la_LIBADD = +libdba_la_LDFLAGS = $(SOCI_LIBS) + + +# Header files +pkgincludedir = $(includedir)/stdair/dbadaptor +pkginclude_HEADERS = $(dba_h_sources) Added: trunk/stdair/stdair/dbadaptor/sources.mk =================================================================== --- trunk/stdair/stdair/dbadaptor/sources.mk (rev 0) +++ trunk/stdair/stdair/dbadaptor/sources.mk 2010-02-07 02:14:43 UTC (rev 117) @@ -0,0 +1,6 @@ +dba_h_sources = \ + $(top_srcdir)/stdair/dbadaptor/DbaAbstract.hpp \ + $(top_srcdir)/stdair/dbadaptor/DbaAirline.hpp +dba_cc_sources = \ + $(top_srcdir)/stdair/dbadaptor/DbaAbstract.cpp \ + $(top_srcdir)/stdair/dbadaptor/DbaAirline.cpp Modified: trunk/stdair/stdair/service/DBSessionManager.cpp =================================================================== --- trunk/stdair/stdair/service/DBSessionManager.cpp 2010-02-06 17:57:52 UTC (rev 116) +++ trunk/stdair/stdair/service/DBSessionManager.cpp 2010-02-07 02:14:43 UTC (rev 117) @@ -51,7 +51,7 @@ const std::string lDBSessionConnectionString (oStr.str()); // Instanciate the database session: nothing else is performed at that stage - _dbSession = new DBSession_T(); + _dbSession = new DBSession_T; try { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |