summaryrefslogtreecommitdiff
path: root/server/src/sessionserialiser.cc
diff options
context:
space:
mode:
Diffstat (limited to 'server/src/sessionserialiser.cc')
-rw-r--r--server/src/sessionserialiser.cc47
1 files changed, 46 insertions, 1 deletions
diff --git a/server/src/sessionserialiser.cc b/server/src/sessionserialiser.cc
index 36d0a0d..386a115 100644
--- a/server/src/sessionserialiser.cc
+++ b/server/src/sessionserialiser.cc
@@ -88,7 +88,8 @@ Session *SessionSerialiser::loadStr(const std::string &xml)
j->setPatientID(XDEC(parser.patientid));
std::vector<SessionParser::Entry>::iterator i = parser.entries.begin();
while(i != parser.entries.end()) {
- j->addEntry(XDEC(i->resume), XDEC(i->macro), XDEC(i->user), i->index);
+ j->addEntry(XDEC(i->resume), XDEC(i->macro), XDEC(i->user), i->index,
+ i->oncommit);
i++;
}
@@ -122,6 +123,50 @@ std::string SessionSerialiser::saveStr(Session *session)
" macro=\"" + XENC(i->second.macro) + "\""
" user=\"" + XENC(i->second.user) + "\">\n";
xml += " <resume>" + XENC(i->second.resume) + "</resume>\n";
+ LUAOnCommit *oncommit = i->second.oncommit;
+ if(oncommit != NULL) {
+ xml += " <oncommit>\n";
+
+ xml += " <envs>\n";
+ std::map<LUAScript::env_t, std::string>::iterator ei =
+ oncommit->_env.begin();
+ while(ei != oncommit->_env.end()) {
+ std::string id;
+ switch(ei->first) {
+ case LUAScript::ENV_PATIENTID: id = "ENV_PATIENTID"; break;
+ case LUAScript::ENV_TEMPLATE: id = "ENV_TEMPLATE"; break;
+ case LUAScript::ENV_MACRO: id = "ENV_MACRO"; break;
+ case LUAScript::ENV_USER: id = "ENV_USER"; break;
+ }
+
+ xml += " <env id=\"" + XENC(id) + "\">"+
+ XENC(ei->second) + "</env>\n";
+ ei++;
+ }
+ xml += " </envs>\n";
+
+ xml += " <values>\n";
+ std::map<std::string, std::string>::iterator vi =
+ oncommit->values.begin();
+ while(vi != oncommit->values.end()) {
+ xml += " <value name=\"" + XENC(vi->first) + "\">"+
+ XENC(vi->second) + "</value>\n";
+ vi++;
+ }
+ xml += " </values>\n";
+
+ xml += " <scripts>\n";
+ std::vector<std::pair<std::string, std::string> >::iterator si =
+ oncommit->scripts.begin();
+ while(si != oncommit->scripts.end()) {
+ xml += " <script name=\"" + XENC(si->second) + "\">"+
+ XENC(si->first) + "</script>\n";
+ si++;
+ }
+ xml += " </scripts>\n";
+
+ xml += " </oncommit>\n";
+ }
xml += " </entry>\n";
i++;