From 05182c2214c5983c8ce7376c42805ad9802c75e5 Mon Sep 17 00:00:00 2001 From: Bent Bisballe Nyeng Date: Thu, 9 Aug 2012 12:04:43 +0200 Subject: Added session files to admin session list. --- server/src/sessionserialiser.cc | 53 +++++++++++++++++++++++++++++++++++++---- 1 file changed, 48 insertions(+), 5 deletions(-) (limited to 'server/src/sessionserialiser.cc') diff --git a/server/src/sessionserialiser.cc b/server/src/sessionserialiser.cc index d5150ac..6288ddd 100644 --- a/server/src/sessionserialiser.cc +++ b/server/src/sessionserialiser.cc @@ -216,6 +216,11 @@ void SessionSerialiser::save(Session *session) // write xml to file FILE *fp = fopen(filename.c_str(), "w"); + if(!fp) { + ERR(sessionserialiser, "Could not write session to file %s\n", + filename.c_str()); + return; + } fwrite(xml.data(), xml.size(), 1, fp); fclose(fp); } @@ -256,19 +261,17 @@ Session *SessionSerialiser::findFromTupple(const std::string &patientid, DEBUG(sessionserialiser, "Is xml file\n"); - std::string pid; - std::string tpl; + SessionHeaderParser::Header header; SessionHeaderParser p(filename); try { p.parse(); - pid = p.getPatientID(); - tpl = p.getTemplate(); + header = p.getHeader(); } catch( ... ) { continue; } - if(patientid == pid && templ == tpl) { + if(header.patientid == patientid && header.templ == templ) { // Load session file FILE *fp = fopen(filename.c_str(), "r"); std::string xml; @@ -298,6 +301,46 @@ Session *SessionSerialiser::findFromTupple(const std::string &patientid, return NULL; } +std::map +SessionSerialiser::sessionFiles() +{ + std::map list; + + DIR *dir = opendir(path.c_str()); + if(!dir) { + ERR(sessionserialiser, "Could not open directory: %s - %s\n", + path.c_str(), strerror(errno)); + return list; + } + + struct dirent *dirent; + while( (dirent = readdir(dir)) != NULL ) { + + std::string filename = path+"/"+dirent->d_name; + + if(isxmlfile(filename)) { + + SessionHeaderParser::Header header; + + SessionHeaderParser p(filename); + try { + p.parse(); + header = p.getHeader(); + } catch( ... ) { + continue; + } + + list[filename] = header; + } + } + + closedir(dir); + + return list; + +} + + #ifdef TEST_SESSIONSERIALISER //deps: session.cc journal.cc debug.cc configuration.cc mutex.cc journal_commit.cc sessionparser.cc saxparser.cc xml_encode_decode.cc database.cc pracrodaopgsql.cc pracrodaotest.cc pracrodao.cc journal_uploadserver.cc log.cc environment.cc semaphore.cc artefact.cc macrolist.cc templatelist.cc entitylist.cc inotify.cc versionstr.cc exception.cc macroheaderparser.cc templateheaderparser.cc //cflags: -I.. $(PTHREAD_CFLAGS) $(EXPAT_CFLAGS) $(PQXX_CFLAGS) -DWITHOUT_ARTEFACT -- cgit v1.2.3