Diana Software
QInitFileHandler.cc
Go to the documentation of this file.
1 #include "QInitFileHandler.hh"
2 
3 #include "QBool.hh"
4 #include "QBaseType.hh"
5 #include "QString.hh"
6 
7 
9  fOwner(""),
10  fFileName("")
11 {
12 }
13 
14 
15 QInitFileHandler::QInitFileHandler(const std::string& owner,
16  const std::string& fileName)
17 {
18  SetOwner(owner);
19  SetFileName(fileName);
20 }
21 
22 
23 QError
24 QInitFileHandler::GetBool(const std::string& name, Bool_t& val) const
25 {
26  if(fOwner.empty())
27  return QError(QERR_GLOBAL_HANDLE, __FILE__, __LINE__, "Owner not set");
28  if(fFileName.empty())
29  return QError(QERR_CANNOT_OPEN_FILE, __FILE__, __LINE__,
30  "File name not set");
31 
32  Diana::QGlobalDataManager& dm = Diana::QGlobalDataManager::GetInstance();
33  Diana::GlobalHandle<Diana::QBool> handle(name);
34  QError err = dm.Get(fOwner, &handle, fFileName);
35  if(err != QERR_SUCCESS)
36  return err;
37  if(!handle.IsValid())
38  return QError(QERR_GLOBAL_HANDLE, __FILE__, __LINE__,
39  "Object " + name + " is invalid");
40  val = handle.Get();
41  return QERR_SUCCESS;
42 }
43 
44 
45 QError
46 QInitFileHandler::GetInt(const std::string& name, Int_t& val) const
47 {
48  if(fOwner.empty())
49  return QError(QERR_GLOBAL_HANDLE, __FILE__, __LINE__, "Owner not set");
50  if(fFileName.empty())
51  return QError(QERR_CANNOT_OPEN_FILE, __FILE__, __LINE__,
52  "File name not set");
53 
54  Diana::QGlobalDataManager& dm = Diana::QGlobalDataManager::GetInstance();
55  Diana::GlobalHandle<Diana::QInt> handle(name);
56  QError err = dm.Get(fOwner, &handle, fFileName);
57  if(err != QERR_SUCCESS)
58  return err;
59  if(!handle.IsValid())
60  return QError(QERR_GLOBAL_HANDLE, __FILE__, __LINE__,
61  "Object " + name + " is invalid");
62  val = handle.Get();
63  return QERR_SUCCESS;
64 }
65 
66 
67 QError
68 QInitFileHandler::GetDouble(const std::string& name, Double_t& val) const
69 {
70  if(fOwner.empty())
71  return QError(QERR_GLOBAL_HANDLE, __FILE__, __LINE__, "Owner not set");
72  if(fFileName.empty())
73  return QError(QERR_CANNOT_OPEN_FILE, __FILE__, __LINE__,
74  "File name not set");
75 
76  Diana::QGlobalDataManager& dm = Diana::QGlobalDataManager::GetInstance();
77  Diana::GlobalHandle<Diana::QDouble> handle(name);
78  QError err = dm.Get(fOwner, &handle, fFileName);
79  if(err != QERR_SUCCESS)
80  return err;
81  if(!handle.IsValid())
82  return QError(QERR_GLOBAL_HANDLE, __FILE__, __LINE__,
83  "Object " + name + " is invalid");
84  val = handle.Get();
85  return QERR_SUCCESS;
86 }
87 
88 
89 QError
90 QInitFileHandler::GetString(const std::string& name, std::string& val) const
91 {
92  if(fOwner.empty())
93  return QError(QERR_GLOBAL_HANDLE, __FILE__, __LINE__, "Owner not set");
94  if(fFileName.empty())
95  return QError(QERR_CANNOT_OPEN_FILE, __FILE__, __LINE__,
96  "File name not set");
97 
98  Diana::QGlobalDataManager& dm = Diana::QGlobalDataManager::GetInstance();
99  Diana::GlobalHandle<Diana::QString> handle(name);
100  QError err = dm.Get(fOwner, &handle, fFileName);
101  if(err != QERR_SUCCESS)
102  return err;
103  if(!handle.IsValid())
104  return QError(QERR_GLOBAL_HANDLE, __FILE__, __LINE__,
105  "Object " + name + " is invalid");
106  val = handle.Get();
107  return QERR_SUCCESS;
108 }
109 
110 
111 QError
112 QInitFileHandler::WriteBool(const std::string& name, Bool_t val) const
113 {
114  if(fOwner.empty())
115  return QError(QERR_GLOBAL_HANDLE, __FILE__, __LINE__, "Owner not set");
116  if(fFileName.empty())
117  return QError(QERR_CANNOT_OPEN_FILE, __FILE__, __LINE__,
118  "File name not set");
119 
120  Diana::QGlobalDataManager& dm = Diana::QGlobalDataManager::GetInstance();
121  dm.SetOwner(fOwner.c_str());
122  Diana::GlobalHandle<Diana::QBool> handle(name);
123  handle.Set(val);
124 
125  QError err = dm.Set(&handle, fFileName);
126  if(err != QERR_SUCCESS)
127  return err;
128 
129  return QERR_SUCCESS;
130 }
131 
132 
133 QError
134 QInitFileHandler::WriteInt(const std::string& name, Int_t val) const
135 {
136  if(fOwner.empty())
137  return QError(QERR_GLOBAL_HANDLE, __FILE__, __LINE__, "Owner not set");
138  if(fFileName.empty())
139  return QError(QERR_CANNOT_OPEN_FILE, __FILE__, __LINE__,
140  "File name not set");
141 
142  Diana::QGlobalDataManager& dm = Diana::QGlobalDataManager::GetInstance();
143  dm.SetOwner(fOwner.c_str());
144  Diana::GlobalHandle<Diana::QInt> handle(name);
145  handle.Set(val);
146 
147  QError err = dm.Set(&handle, fFileName);
148  if(err != QERR_SUCCESS)
149  return err;
150 
151  return QERR_SUCCESS;
152 }
153 
154 
155 QError
156 QInitFileHandler::WriteDouble(const std::string& name, Double_t val) const
157 {
158  if(fOwner.empty())
159  return QError(QERR_GLOBAL_HANDLE, __FILE__, __LINE__, "Owner not set");
160  if(fFileName.empty())
161  return QError(QERR_CANNOT_OPEN_FILE, __FILE__, __LINE__,
162  "File name not set");
163 
164  Diana::QGlobalDataManager& dm = Diana::QGlobalDataManager::GetInstance();
165  dm.SetOwner(fOwner.c_str());
166  Diana::GlobalHandle<Diana::QDouble> handle(name);
167  handle.Set(val);
168 
169  QError err = dm.Set(&handle, fFileName);
170  if(err != QERR_SUCCESS)
171  return err;
172 
173  return QERR_SUCCESS;
174 }
175 
176 
177 QError
178 QInitFileHandler::WriteString(const std::string& name,
179  const std::string& val) const
180 {
181  if(fOwner.empty())
182  return QError(QERR_GLOBAL_HANDLE, __FILE__, __LINE__, "Owner not set");
183  if(fFileName.empty())
184  return QError(QERR_CANNOT_OPEN_FILE, __FILE__, __LINE__,
185  "File name not set");
186 
187  Diana::QGlobalDataManager& dm = Diana::QGlobalDataManager::GetInstance();
188  dm.SetOwner(fOwner.c_str());
189  Diana::GlobalHandle<Diana::QString> handle(name);
190  handle.Set(val);
191 
192  QError err = dm.Set(&handle, fFileName);
193  if(err != QERR_SUCCESS)
194  return err;
195 
196  return QERR_SUCCESS;
197 }
198 
199 
200 std::string QInitFileHandler::GetInitFileName(const std::string& baseName,
201  const std::string& extension)
202 {
203  const char *homeDir = getenv("HOME");
204  if(NULL == homeDir)
205  return "";
206  std::string fileName = homeDir;
207  fileName += "/." + baseName + "." + extension;
208  return fileName;
209 }
210 
211 
212 void QInitFileHandler::SetOwner(const std::string& owner)
213 {
214  fOwner = owner;
215  Diana::QGlobalDataManager::GetInstance(fOwner);
216 }
err
Definition: CheckOF.C:114
QGlobalDataManager dm
@ QERR_GLOBAL_HANDLE
Definition: QError.hh:45
@ QERR_CANNOT_OPEN_FILE
Definition: QError.hh:33
@ QERR_SUCCESS
Definition: QError.hh:27
error class with error type and description
Definition: QError.hh:115
void SetOwner(const std::string &owner)
set the module that is accessing this object
QError Set(GlobalHandle< Q > *gh, const std::string &outSource, bool printError=true) const
Set a QObject using a GlobalHandle.
QError Get(const std::string &owner, GlobalHandle< Q > *gh, const std::string &inSource, bool printError=true) const
Get an object using a global handle.
std::string fFileName
static std::string GetInitFileName(const std::string &baseName, const std::string &extension="txt")
QError WriteDouble(const std::string &name, Double_t val) const
void SetFileName(const std::string &fileName)
QError WriteString(const std::string &name, const std::string &val) const
QError GetString(const std::string &name, std::string &val) const
QError WriteBool(const std::string &name, Bool_t val) const
QError GetInt(const std::string &name, Int_t &val) const
void SetOwner(const std::string &owner)
QError GetDouble(const std::string &name, Double_t &val) const
QError GetBool(const std::string &name, Bool_t &val) const
QError WriteInt(const std::string &name, Int_t val) const