util/Destination.cpp

Go to the documentation of this file.
00001 /*-----------------------------------------------------------------------------
00002 Name:      Destination.cpp
00003 Project:   xmlBlaster.org
00004 Copyright: xmlBlaster.org, see xmlBlaster-LICENSE file
00005 Comment:   Holding destination address attributes
00006 -----------------------------------------------------------------------------*/
00007 
00008 #include <util/Destination.h>
00009 #include <util/Global.h>
00010 
00011 using namespace std;
00012 
00013 namespace org { namespace xmlBlaster { namespace util {
00014    
00015 Destination::Destination(Global& global,
00016                          const SessionName& sessionName,
00017                          const string &queryType,
00018                          bool forceQueuing)
00019                        : global_(global),
00020                          log_(global.getLog("org.xmlBlaster.util")),
00021                          sessionName_(0)
00022 {
00023    SessionName *p = new SessionName(global_, sessionName.getAbsoluteName());
00024    SessionNameRef r(p);
00025    sessionName_ = r;
00026 
00027    queryType_     = queryType;
00028    forceQueuing_  = forceQueuing;
00029 }
00030 
00031 Destination::Destination(Global& global,
00032                          const string& address,
00033                          const string &queryType,
00034                          bool forceQueuing)
00035                        : global_(global),
00036                          log_(global.getLog("org.xmlBlaster.util")),
00037                          sessionName_(0)
00038 {
00039    SessionName *p = new SessionName(global_, address);
00040    SessionNameRef r(p);
00041    sessionName_ = r;
00042 
00043    queryType_     = queryType;
00044    forceQueuing_  = forceQueuing;
00045 }
00046 
00047 
00048 Destination::Destination(const Destination& dest)
00049    : global_(dest.global_), log_(dest.log_), sessionName_(0)
00050 {
00051    copy(dest);
00052 }
00053 
00054 Destination& Destination::operator =(const Destination& dest)
00055 {
00056    copy(dest);
00057    return *this;
00058 }
00059 
00060 bool Destination::isXPathQuery() const
00061 {
00062    return queryType_ == "XPATH";
00063 }
00064       
00065 bool Destination::isExactAddress() const
00066 {
00067    return queryType_ == "EXACT";
00068 }
00069 
00070 bool Destination::forceQueuing() const
00071 {
00072    return forceQueuing_;
00073 }
00074 
00075 void Destination::forceQueuing(bool forceQueuing)
00076 {
00077    forceQueuing_ = forceQueuing;
00078 }
00079 
00080 /*
00081 void Destination::setDestination(const SessionName& sessionName)
00082 {
00083    sessionName_ = sessionName;
00084 }
00085 */
00086 
00087 SessionNameRef Destination::getDestination() const
00088 {
00089    return sessionName_;
00090 }
00091 
00092 void Destination::setQueryType(const string &queryType)
00093 {
00094    if (queryType.compare("EXACT") == 0) queryType_ = queryType;
00095    else
00096       if (queryType.compare("XPATH") == 0) {}
00097       else
00098          log_.error(ME, string("Sorry, destination queryType='")
00099                     + queryType_ + string("' is not supported"));
00100 }
00101 
00102 string Destination::toXml(const string &extraOffset) const
00103 {
00104    string offset = Constants::OFFSET + extraOffset;
00105    string ret;
00106    ret += offset + "<destination queryType='" + queryType_ + "'";
00107    ret += " forceQueuing='" + lexical_cast<string>(forceQueuing()) + "'";
00108    ret +=  ">" + sessionName_->getAbsoluteName() + "</destination>";
00109    return ret;
00110 }
00111 
00112 }}} // namespace
00113