00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef RESOURCEPOOL_SQL_RTSQLBATCH_HH
00025 #define RESOURCEPOOL_SQL_RTSQLBATCH_HH
00026
00027 #include "mm/gc_ptr.hh"
00028 #include "ResourcePool/Command.hh"
00029 #include "ResourcePool/SQL/SQLBatchCommand.hh"
00030 #include "ResourcePool/SQL/Resource.hh"
00031
00032 namespace fatalmind {
00033 namespace SQL {
00034
00035 template<class TM> class RTSQLBatch_Impl;
00036
00037 template<class TM>
00038 class RTSQLBatch
00039 : public SQLBatchCommand<Command<ResourceType<TM> > >
00040 {
00041 protected:
00042 typedef SQLBatchCommand<Command<ResourceType<TM> > > super;
00043 public:
00044 typedef typename super::innercommand_t innercommand_t;
00045
00046 typedef typename super::const_iterator const_iterator;
00047
00048 RTSQLBatch(const ResourcePool<ResourceType<TM> >& p, const bool cont = false);
00049 RTSQLBatch(const RTSQLBatch<TM>& rho);
00050 virtual ~RTSQLBatch();
00051
00052 virtual void execute(typename ResourceType<TM>::resource_t & hand);
00053
00054 virtual int getError();
00055 virtual void add(innercommand_t const& cmd);
00056 virtual const_iterator getExecPosition() const;
00057
00058 virtual bool doesContinue() const;
00059 virtual const_iterator end() const;
00060 virtual const_iterator begin() const;
00061
00062 virtual bool empty() const;
00063
00064 virtual void outputoperator(std::ostream&) const;
00065
00066 protected:
00067 virtual Clone* DoClone() const;
00068
00069 private:
00070 typedef RTSQLBatch_Impl<TM> rimpl_t;
00071 typedef typename SQLFactory<TM>::databaseType_t databaseType_t;
00072 databaseType_t dbType;
00073 gc_ptr<rimpl_t> _realSQLBatch;
00074 };
00075
00076
00077 }
00078 }
00079 #endif