00001 #ifndef Impala_Persistency_Locator_h
00002 #define Impala_Persistency_Locator_h
00003
00004 #include "Basis/ILog.h"
00005 #include "Basis/CmdOptions.h"
00006
00007 namespace Impala
00008 {
00009 namespace Persistency
00010 {
00011
00012
00024 class Locator
00025 {
00026 public:
00027
00028 Locator()
00029 {
00030 mProtocol = "not_set";
00031 mHost = "not_set";
00032 mDataSet = "not_set";
00033 }
00034
00035 Locator(CString dataSet)
00036 {
00037 mProtocol = "not_set";
00038 mHost = "not_set";
00039 mDataSet = dataSet;
00040 }
00041
00042 Locator(CString protocolAndHost, CString dataSet)
00043 {
00044 mProtocol = StringHead(protocolAndHost, ':', false);
00045 mHost = StringTail(protocolAndHost, ':', false);
00046 mDataSet = dataSet;
00047 }
00048
00049 Locator(CString protocol, CString host, CString dataSet)
00050 {
00051 mProtocol = protocol;
00052 mHost = host;
00053 mDataSet = dataSet;
00054 }
00055
00056 Locator(CString dataSet, CmdOptions& options)
00057 {
00058 mDataSet = dataSet;
00059
00060 String dataServer = options.GetString("dataServer");
00061 String dataServer2 = options.GetString("dataServer::"+mDataSet, "");
00062 if (!dataServer2.empty())
00063 dataServer = dataServer2;
00064 if (!dataServer.empty())
00065 {
00066 mProtocol = "dataServer";
00067 mHost = dataServer;
00068 return;
00069 }
00070
00071 String mapi = options.GetString("mapi");
00072 String mapi2 = options.GetString("mapi::"+mDataSet, "");
00073 if (!mapi2.empty())
00074 mapi = mapi2;
00075 if (!mapi.empty())
00076 {
00077 mProtocol = "mapi";
00078 mHost = mapi;
00079 return;
00080 }
00081
00082 bool inMem = options.GetBool("inMem", false);
00083 bool inMem2 = options.GetBool("inMem::"+mDataSet, false);
00084 if (inMem2)
00085 inMem = inMem2;
00086 if (inMem)
00087 {
00088 mProtocol = "inMem";
00089 mHost = "";
00090 return;
00091 }
00092
00093 mProtocol = "file";
00094 }
00095
00096 virtual
00097 ~Locator()
00098 {
00099 }
00100
00101 String
00102 GetProtocol() const
00103 {
00104 return mProtocol;
00105 }
00106
00107 void
00108 SetProtocol(CString protocol)
00109 {
00110 mProtocol = protocol;
00111 }
00112
00113 String
00114 GetHost() const
00115 {
00116 return mHost;
00117 }
00118
00119 void
00120 SetHost(CString host)
00121 {
00122 mHost = host;
00123 }
00124
00125 String
00126 GetProtocolAndHost() const
00127 {
00128 return mProtocol + ":" + mHost;
00129 }
00130
00131 String
00132 GetDataSet() const
00133 {
00134 return mDataSet;
00135 }
00136
00137 void
00138 SetDataSet(CString dataSet)
00139 {
00140 mDataSet = dataSet;
00141 }
00142
00143 String
00144 ToString() const
00145 {
00146 return "Locator(" + GetProtocol() + "," + GetHost()
00147 + "," + GetDataSet() + ")";
00148 }
00149
00150 private:
00151
00152 String mProtocol;
00153 String mHost;
00154 String mDataSet;
00155
00156 ILOG_VAR_DEC;
00157 };
00158
00159 ILOG_VAR_INIT(Locator, Impala.Persistency);
00160
00161 std::ostream&
00162 operator<< (std::ostream& os, const Locator& loc)
00163 {
00164 os << loc.ToString();
00165 return os;
00166 }
00167
00168 }
00169 }
00170
00171 #endif