BESDelDefsResponseHandler.cc
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033 #include "BESDelDefsResponseHandler.h"
00034 #include "BESSilentInfo.h"
00035 #include "BESDefinitionStorageList.h"
00036 #include "BESDefinitionStorage.h"
00037 #include "BESDefine.h"
00038 #include "BESContainerStorageList.h"
00039 #include "BESContainerStorage.h"
00040 #include "BESContainer.h"
00041 #include "BESDataNames.h"
00042 #include "BESSyntaxUserError.h"
00043 #include "BESResponseNames.h"
00044
00045 BESDelDefsResponseHandler::BESDelDefsResponseHandler( const string &name )
00046 : BESResponseHandler( name )
00047 {
00048 }
00049
00050 BESDelDefsResponseHandler::~BESDelDefsResponseHandler( )
00051 {
00052 }
00053
00074 void
00075 BESDelDefsResponseHandler::execute( BESDataHandlerInterface &dhi )
00076 {
00077 dhi.action_name = DELETE_DEFINITIONS_STR ;
00078 BESInfo *info = new BESSilentInfo() ;
00079 _response = info ;
00080
00081 string store_name = dhi.data[STORE_NAME] ;
00082 if( store_name == "" )
00083 store_name = PERSISTENCE_VOLATILE ;
00084 BESDefinitionStorage *store =
00085 BESDefinitionStorageList::TheList()->find_persistence( store_name ) ;
00086 if( store )
00087 {
00088 bool deleted = store->del_definitions() ;
00089 if( !deleted )
00090 {
00091 string line = (string)"Unable to delete all definitions "
00092 + "from definition store \"" + store_name + "\"" ;
00093 throw BESSyntaxUserError( line, __FILE__, __LINE__ ) ;
00094 }
00095 }
00096 else
00097 {
00098 string line = (string)"Definition store \""
00099 + store_name
00100 + "\" does not exist. Unable to delete." ;
00101 throw BESSyntaxUserError( line, __FILE__, __LINE__ ) ;
00102 }
00103 }
00104
00117 void
00118 BESDelDefsResponseHandler::transmit( BESTransmitter *transmitter,
00119 BESDataHandlerInterface &dhi )
00120 {
00121 if( _response )
00122 {
00123 BESInfo *info = dynamic_cast<BESInfo *>(_response) ;
00124 if( !info )
00125 throw BESInternalError( "cast error", __FILE__, __LINE__ ) ;
00126 info->transmit( transmitter, dhi ) ;
00127 }
00128 }
00129
00136 void
00137 BESDelDefsResponseHandler::dump( ostream &strm ) const
00138 {
00139 strm << BESIndent::LMarg << "BESDelDefsResponseHandler::dump - ("
00140 << (void *)this << ")" << endl ;
00141 BESIndent::Indent() ;
00142 BESResponseHandler::dump( strm ) ;
00143 BESIndent::UnIndent() ;
00144 }
00145
00146 BESResponseHandler *
00147 BESDelDefsResponseHandler::DelDefsResponseBuilder( const string &name )
00148 {
00149 return new BESDelDefsResponseHandler( name ) ;
00150 }
00151