diff options
author | Bent Bisballe Nyeng <deva@aasimon.org> | 2012-08-09 12:04:43 +0200 |
---|---|---|
committer | Bent Bisballe Nyeng <deva@aasimon.org> | 2012-08-09 12:04:43 +0200 |
commit | 05182c2214c5983c8ce7376c42805ad9802c75e5 (patch) | |
tree | a6b014773363d9828032056c09e44b3d0f5f830d /server/src/sessionserialiser.cc | |
parent | 40211cd5598c5349358e1d33b6353a4c729b17b3 (diff) |
Added session files to admin session list.
Diffstat (limited to 'server/src/sessionserialiser.cc')
-rw-r--r-- | server/src/sessionserialiser.cc | 53 |
1 files changed, 48 insertions, 5 deletions
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<std::string, SessionHeaderParser::Header> +SessionSerialiser::sessionFiles() +{ + std::map<std::string, SessionHeaderParser::Header> 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 |