From 198b0d886817f2c5bc97cfd11857d4b314dffae3 Mon Sep 17 00:00:00 2001 From: deva Date: Thu, 10 Jun 2010 07:03:06 +0000 Subject: Add transaction support on database pr. pracro session. Makes it possible to discard all edited macros. --- server/src/sessionserialiser.cc | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) (limited to 'server/src/sessionserialiser.cc') diff --git a/server/src/sessionserialiser.cc b/server/src/sessionserialiser.cc index 10d449d..2c35d2a 100644 --- a/server/src/sessionserialiser.cc +++ b/server/src/sessionserialiser.cc @@ -30,6 +30,9 @@ #include "journalwriter.h" #include "sessionparser.h" +#include "database.h" + +#include "xml_encode_decode.h" #include #include @@ -54,19 +57,25 @@ SessionSerialiser::SessionSerialiser(std::string path, Session *session) this->path = path; } +#define XENC(s) xml_encode(s) +#define XDEC(s) xml_decode(s) + void SessionSerialiser::loadStr(const std::string &xml) { // SessionAutolock lock(*session); SessionParser parser; parser.parse(xml.data(), xml.length()); + JournalWriter *j = session->journal(); - j->currentuser = parser.userid; - j->currentcpr = parser.patientid; + j->currentuser = XDEC(parser.userid); + j->currentcpr = XDEC(parser.patientid); std::vector::iterator i = parser.entries.begin(); while(i != parser.entries.end()) { - j->addEntry(i->resume, i->macro, i->index); + j->addEntry(XDEC(i->resume), xml_decode(i->macro), i->index); i++; } + + session->database()->restore(XDEC(parser.database)); } std::string SessionSerialiser::saveStr() @@ -81,8 +90,8 @@ std::string SessionSerialiser::saveStr() JournalWriter *journal = session->journal(); - xml += " currentcpr + - "\" userid=\"" + journal->currentuser + "\">\n"; + xml += " currentcpr) + + "\" userid=\"" + XENC(journal->currentuser) + "\">\n"; std::map< int, JournalWriter::ResumeEntry >::iterator i = journal->entrylist.begin(); @@ -90,13 +99,19 @@ std::string SessionSerialiser::saveStr() xml += " first) + "\"" " macro=\"" + i->second.macro + "\">\n"; - xml += " " + i->second.resume + "\n"; + xml += " " + XENC(i->second.resume) + "\n"; xml += " \n"; i++; } xml += " \n"; + + std::string dbtype = "pgsql"; + xml += " "+ + XENC(session->database()->serialise())+ + "\n"; + xml += "\n"; return xml; -- cgit v1.2.3