BESDapResponse.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 "BESDapResponse.h"
00034 #include "BESContextManager.h"
00035 #include "BESConstraintFuncs.h"
00036 #include "BESDataNames.h"
00037 #include "BESError.h"
00038
00055 void
00056 BESDapResponse::read_contexts()
00057 {
00058 bool found = false;
00059
00060
00061 string context = BESContextManager::TheManager()->get_context("dap_explicit_containers", found);
00062 if (found) {
00063 if (context == "yes")
00064 d_explicit_containers = true;
00065 else if (context == "no")
00066 d_explicit_containers = false;
00067 else
00068 throw BESError("dap_explicit_containers must be yes or no",
00069 BES_SYNTAX_USER_ERROR, __FILE__, __LINE__);
00070 }
00071
00072 if (!found) {
00073 context = BESContextManager::TheManager()->get_context("dap_format", found);
00074 if (found) {
00075 if (context == "dap2")
00076 d_explicit_containers = false;
00077 else
00078 d_explicit_containers = true;
00079 }
00080 }
00081
00082 context = BESContextManager::TheManager()->get_context("xdap_accept", found);
00083 if (found)
00084 d_dap_client_protocol = context;
00085
00086 context = BESContextManager::TheManager()->get_context("xml:base", found);
00087 if (found)
00088 d_request_xml_base = context;
00089
00090 }
00091
00099 bool BESDapResponse::is_dap2()
00100 {
00101 return !d_explicit_containers;
00102 #if 0
00103 bool found = false;
00104 string context = BESContextManager::TheManager()->get_context(
00105 "dap_format", found);
00106 if (found && (context == "dap2" || context == "2.0")) {
00107 return true;
00108 }
00109 return false;
00110 #endif
00111 }
00112
00123 void
00124 BESDapResponse::set_constraint( BESDataHandlerInterface &dhi )
00125 {
00126 if( dhi.container )
00127 {
00128 if( is_dap2() )
00129 {
00130 dhi.data[POST_CONSTRAINT] = dhi.container->get_constraint() ;
00131 }
00132 else
00133 {
00134 BESConstraintFuncs::post_append( dhi ) ;
00135 }
00136 }
00137 }
00138
00146 void
00147 BESDapResponse::dump( ostream &strm ) const
00148 {
00149 strm << BESIndent::LMarg << "BESDapResponse::dump - ("
00150 << (void *)this << ")" << endl ;
00151 BESIndent::Indent();
00152 strm << BESIndent::LMarg << "d_explicit_containers: " << d_explicit_containers << endl;
00153 strm << BESIndent::LMarg << "d_dap_client_protocol: " << d_dap_client_protocol << endl;
00154 BESIndent::UnIndent();
00155
00156 BESIndent::UnIndent();
00157 }
00158