00001 //******************************************************************** 00002 //*** ResourcePool/oracle/OptimizedBatchCommand.hh 00003 //*** Copyright (c) 2003-2009 by Markus Winand <mws@fatalmind.com> 00004 //*** $Id: OptimizedBatchCommand.hh,v 1.7 2009-03-02 14:16:45 mws Exp $ 00005 //******************************************************************** 00006 /* 00007 This file is part of ResourcePool. 00008 00009 ResourcePool is free software; you can redistribute it 00010 and/or modify it under the terms of the GNU General Public License 00011 as published by the Free Software Foundation; either version 2 of 00012 the License, or (at your option) any later version. 00013 00014 ResourcePool is distributed in the hope that it will be 00015 useful, but WITHOUT ANY WARRANTY; without even the implied warranty 00016 of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00017 GNU General Public License for more details. 00018 00019 You should have received a copy of the GNU General Public License 00020 along with ResourcePool; if not, write to the Free Software 00021 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 00022 02111-1307 USA */ 00023 00024 #ifndef RESOURCEPOOL_ORACLE_OPTIMIZEDBATCHCOMMAND_HH 00025 #define RESOURCEPOOL_ORACLE_OPTIMIZEDBATCHCOMMAND_HH 00026 00027 #include "ResourcePool/BatchCommand.hh" 00028 #include "SQLExecute.hh" 00029 00030 namespace fatalmind { 00031 namespace oracle { 00032 00038 template<class CommandType> 00039 class OptimizedBatchCommand: public BatchCommand<CommandType> 00040 { 00041 protected: 00042 typedef BatchCommand<CommandType> super; 00043 typedef SQLExecute<typename CommandType::pool_type::ThreadingModell, oracle::SelectListMetaDataCache> optimizeablecommand_t; 00044 public: 00045 OptimizedBatchCommand(const OptimizedBatchCommand& rho); 00046 OptimizedBatchCommand(bool a_cont = false); 00047 OptimizedBatchCommand(const ResourcePool<typename CommandType::pool_type >& p, bool a_cont = false); 00048 00049 virtual void add(const CommandType&); 00050 virtual void add(const optimizeablecommand_t&); 00051 virtual void execute(typename CommandType::pool_type::resource_t&); 00052 00053 virtual void outputoperator(std::ostream&) const; 00054 protected: 00055 virtual Clone* DoClone() const { 00056 return new OptimizedBatchCommand(*this); 00057 } 00058 private: 00059 optimizeablecommand_t* lastcmd; 00060 }; // class OptimizedBatch 00061 00062 } // namespace oracle 00063 } // namespace fatalmind 00064 #endif