diff options
Diffstat (limited to 'server/src/sessionserialiser.cc')
-rw-r--r-- | server/src/sessionserialiser.cc | 47 |
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++; |